BUILD.gn 47 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214
  1. # Copyright 2015 The Chromium Authors. All rights reserved.
  2. # Use of this source code is governed by a BSD-style license that can be
  3. # found in the LICENSE file.
  4. import("//android_webview/system_webview_apk_tmpl.gni")
  5. import("//android_webview/system_webview_bundle.gni")
  6. import("//android_webview/variables.gni")
  7. import("//android_webview/webview_repack_locales.gni")
  8. import("//build/android/resource_sizes.gni")
  9. import("//build/config/android/channel.gni")
  10. import("//build/config/android/config.gni")
  11. import("//build/config/android/rules.gni")
  12. import("//build/config/locales.gni")
  13. import("//chrome/android/chrome_common_shared_library.gni")
  14. import("//chrome/android/chrome_public_apk_tmpl.gni")
  15. import("//chrome/android/trichrome.gni")
  16. import("//components/safe_browsing/buildflags.gni")
  17. import("//components/spellcheck/spellcheck_build_features.gni")
  18. import("//device/vr/buildflags/buildflags.gni")
  19. import("//pdf/features.gni")
  20. import("//printing/buildflags/buildflags.gni")
  21. import("//tools/grit/repack.gni")
  22. import("//tools/resources/generate_resource_allowlist.gni")
  23. import("//tools/v8_context_snapshot/v8_context_snapshot.gni")
  24. import("//weblayer/variables.gni")
  25. if (android_64bit_target_cpu && skip_secondary_abi_for_cq) {
  26. assert(current_toolchain != android_secondary_abi_toolchain)
  27. }
  28. if (enable_resource_allowlist_generation) {
  29. system_webview_pak_allowlist =
  30. "$target_gen_dir/system_webview_pak_allowlist.txt"
  31. }
  32. # Having //clank present causes different flags because of how play services
  33. # is wired up.
  34. # The channel is required because manifest entries vary based on channel.
  35. _verify_android_configuration =
  36. !is_java_debug && !enable_chrome_android_internal &&
  37. android_channel == "stable"
  38. template("standalone_system_webview_apk_tmpl") {
  39. system_webview_apk_or_module_tmpl(target_name) {
  40. forward_variables_from(invoker, "*")
  41. deps = upstream_only_webview_deps
  42. min_sdk_version = default_min_sdk_version
  43. if (android_64bit_target_cpu && defined(include_32_bit_webview) &&
  44. !include_32_bit_webview) {
  45. android_manifest = system_webview_64_android_manifest
  46. android_manifest_dep =
  47. "//android_webview/nonembedded:system_webview_64_manifest"
  48. } else {
  49. android_manifest = system_webview_android_manifest
  50. android_manifest_dep =
  51. "//android_webview/nonembedded:system_webview_manifest"
  52. }
  53. }
  54. }
  55. # Standalone WebView APK.
  56. if (android_64bit_target_cpu && skip_secondary_abi_for_cq) {
  57. group("system_webview_apk") {
  58. deps = [ ":system_webview_64_apk" ]
  59. }
  60. } else {
  61. standalone_system_webview_apk_tmpl("system_webview_apk") {
  62. apk_name = "SystemWebView"
  63. }
  64. }
  65. # This version of the WebView APK doesn't include WebLayer.
  66. # It's used to define the allowlist of resources to be pulled out of language
  67. # splits. See |shared_resources_allowlist_target|.
  68. standalone_system_webview_apk_tmpl("system_webview_no_weblayer_apk") {
  69. exclude_weblayer_java = true
  70. apk_name = "SystemWebViewNoWebLayer"
  71. # Don't include any code to speed up compilation. This is used only for the
  72. # resources allowlist.
  73. include_32_bit_webview = false
  74. include_64_bit_webview = false
  75. omit_dex = true
  76. # Adding deps on recycler view in the base WebView APK will end up keeping the
  77. # Java in the base APK instead of the WebLayer DFM, even though it is not
  78. # needed in the base APK.
  79. #
  80. # If you hit this check and are adding a dep to //ui/android:ui_java, use
  81. # //ui/android:ui_no_recycler_view instead. If you hit this check because you
  82. # are adding //third_party/android_deps:android_support_*, use the androidx
  83. # version of the dep instead.
  84. # TODO(b/165810905): Use per-feature -keep rules in R8 once supported, then
  85. # this can be removed.
  86. assert_no_deps =
  87. [ "//third_party/androidx:androidx_recyclerview_recyclerview_java" ]
  88. }
  89. if (android_64bit_target_cpu && skip_secondary_abi_for_cq) {
  90. group("system_webview_bundle") {
  91. deps = [ ":system_webview_64_bundle" ]
  92. }
  93. } else {
  94. if (enable_webview_bundles) {
  95. standalone_system_webview_apk_tmpl("system_webview_base_bundle_module") {
  96. target_type = "android_app_bundle_module"
  97. is_base_module = true
  98. bundle_target = ":system_webview_bundle"
  99. if (_verify_android_configuration) {
  100. expected_android_manifest =
  101. "expectations/system_webview_bundle.AndroidManifest.expected"
  102. }
  103. }
  104. system_webview_bundle("system_webview_bundle") {
  105. base_module_target = ":system_webview_base_bundle_module"
  106. bundle_name = "SystemWebView"
  107. min_sdk_version = default_min_sdk_version
  108. compress_shared_libraries = true
  109. }
  110. if (is_official_build) {
  111. # Used for binary size monitoring.
  112. create_app_bundle_minimal_apks("system_webview_minimal_apks") {
  113. deps = [ ":system_webview_bundle" ]
  114. bundle_path = "$root_build_dir/apks/SystemWebView.aab"
  115. }
  116. android_resource_sizes_test("resource_sizes_system_webview_bundle") {
  117. file_path = "$root_build_dir/apks/SystemWebView.minimal.apks"
  118. data_deps = [ ":system_webview_minimal_apks" ]
  119. }
  120. }
  121. }
  122. }
  123. if (android_64bit_target_cpu) {
  124. standalone_system_webview_apk_tmpl("system_webview_64_apk") {
  125. apk_name = "SystemWebView64"
  126. include_32_bit_webview = false
  127. include_64_bit_webview = true
  128. }
  129. if (enable_webview_bundles) {
  130. standalone_system_webview_apk_tmpl("system_webview_64_base_bundle_module") {
  131. target_type = "android_app_bundle_module"
  132. is_base_module = true
  133. bundle_target = ":system_webview_64_bundle"
  134. include_32_bit_webview = false
  135. }
  136. system_webview_bundle("system_webview_64_bundle") {
  137. base_module_target = ":system_webview_64_base_bundle_module"
  138. bundle_name = "SystemWebView64"
  139. min_sdk_version = default_min_sdk_version
  140. compress_shared_libraries = true
  141. include_32_bit_webview = false
  142. }
  143. }
  144. if (!skip_secondary_abi_for_cq) {
  145. # These targets builds a 32-bit only Webview on a 64-bit config, analogous
  146. # to what's built on a 32-bit config. This lets all Webviews build on a
  147. # single configuration.
  148. standalone_system_webview_apk_tmpl("system_webview_32_apk") {
  149. apk_name = "SystemWebView32"
  150. include_64_bit_webview = false
  151. }
  152. if (enable_webview_bundles) {
  153. standalone_system_webview_apk_tmpl(
  154. "system_webview_32_base_bundle_module") {
  155. target_type = "android_app_bundle_module"
  156. include_64_bit_webview = false
  157. is_base_module = true
  158. bundle_target = ":system_webview_32_bundle"
  159. }
  160. system_webview_bundle("system_webview_32_bundle") {
  161. base_module_target = ":system_webview_32_base_bundle_module"
  162. bundle_name = "SystemWebView32"
  163. include_64_bit_webview = false
  164. min_sdk_version = default_min_sdk_version
  165. compress_shared_libraries = true
  166. }
  167. }
  168. }
  169. }
  170. # Trichrome WebView APK.
  171. template("trichrome_webview_tmpl") {
  172. system_webview_apk_or_module_tmpl(target_name) {
  173. forward_variables_from(invoker, "*")
  174. min_sdk_version = 29
  175. deps = upstream_only_webview_deps
  176. use_trichrome_library = true
  177. }
  178. }
  179. if (android_64bit_target_cpu && skip_secondary_abi_for_cq) {
  180. group("trichrome_webview_apk") {
  181. deps = [ ":trichrome_webview_64_apk" ]
  182. }
  183. } else {
  184. trichrome_webview_tmpl("trichrome_webview_apk") {
  185. apk_name = "TrichromeWebView"
  186. uncompress_dex = true
  187. if (!is_java_debug) {
  188. static_library_synchronized_proguard = trichrome_synchronized_proguard
  189. }
  190. if (android_64bit_target_cpu) {
  191. is_64_bit_browser = false
  192. include_64_bit_webview = true
  193. }
  194. android_manifest = trichrome_webview_android_manifest
  195. android_manifest_dep =
  196. "//android_webview/nonembedded:trichrome_webview_manifest"
  197. static_library_provider = "//chrome/android:trichrome_library_apk"
  198. }
  199. }
  200. if (android_64bit_target_cpu) {
  201. trichrome_webview_tmpl("trichrome_webview_64_apk") {
  202. apk_name = "TrichromeWebView64"
  203. uncompress_dex = true
  204. if (!is_java_debug) {
  205. static_library_synchronized_proguard = trichrome_synchronized_proguard
  206. }
  207. is_64_bit_browser = true
  208. include_32_bit_webview = false
  209. android_manifest = trichrome_webview_64_android_manifest
  210. android_manifest_dep =
  211. "//android_webview/nonembedded:trichrome_webview_64_manifest"
  212. static_library_provider = "//chrome/android:trichrome_library_64_apk"
  213. }
  214. }
  215. if (enable_webview_bundles) {
  216. if (android_64bit_target_cpu && skip_secondary_abi_for_cq) {
  217. group("trichrome_webview_bundle") {
  218. deps = [ ":trichrome_webview_64_bundle" ]
  219. }
  220. } else {
  221. trichrome_webview_tmpl("trichrome_webview_base_bundle_module") {
  222. target_type = "android_app_bundle_module"
  223. is_base_module = true
  224. bundle_target = ":trichrome_webview_bundle"
  225. if (android_64bit_target_cpu) {
  226. is_64_bit_browser = false
  227. include_64_bit_webview = true
  228. }
  229. android_manifest = trichrome_webview_android_manifest
  230. android_manifest_dep =
  231. "//android_webview/nonembedded:trichrome_webview_manifest"
  232. if (_verify_android_configuration) {
  233. expected_android_manifest =
  234. "expectations/trichrome_webview_bundle.AndroidManifest.expected"
  235. }
  236. static_library_provider = "//chrome/android:trichrome_library_apk"
  237. }
  238. system_webview_bundle("trichrome_webview_bundle") {
  239. base_module_target = ":trichrome_webview_base_bundle_module"
  240. bundle_name = "TrichromeWebView"
  241. uncompress_dex = true
  242. min_sdk_version = 29
  243. static_library_provider = "//chrome/android:trichrome_library_apk"
  244. }
  245. }
  246. if (android_64bit_target_cpu) {
  247. system_webview_bundle("trichrome_webview_64_bundle") {
  248. base_module_target = ":trichrome_webview_64_base_bundle_module"
  249. bundle_name = "TrichromeWebView64"
  250. uncompress_dex = true
  251. min_sdk_version = 29
  252. static_library_provider = "//chrome/android:trichrome_library_64_apk"
  253. }
  254. trichrome_webview_tmpl("trichrome_webview_64_base_bundle_module") {
  255. target_type = "android_app_bundle_module"
  256. is_base_module = true
  257. bundle_target = ":trichrome_webview_64_bundle"
  258. is_64_bit_browser = true
  259. include_32_bit_webview = false
  260. android_manifest = trichrome_webview_64_android_manifest
  261. android_manifest_dep =
  262. "//android_webview/nonembedded:trichrome_webview_64_manifest"
  263. static_library_provider = "//chrome/android:trichrome_library_64_apk"
  264. }
  265. }
  266. if (is_official_build) {
  267. # Used for binary size monitoring.
  268. create_app_bundle_minimal_apks("trichrome_webview_minimal_apks") {
  269. deps = [ ":trichrome_webview_bundle" ]
  270. bundle_path = "$root_build_dir/apks/TrichromeWebView.aab"
  271. }
  272. android_resource_sizes_test("resource_sizes_trichrome_webview_bundle") {
  273. file_path = "$root_build_dir/apks/TrichromeWebView.minimal.apks"
  274. data_deps = [ ":trichrome_webview_minimal_apks" ]
  275. }
  276. }
  277. }
  278. # Trichrome WebView APK for a 64-bit Chrome.
  279. if (android_64bit_target_cpu && !skip_secondary_abi_for_cq) {
  280. template("trichrome_webview_64_32_tmpl") {
  281. system_webview_apk_or_module_tmpl(target_name) {
  282. forward_variables_from(invoker, "*")
  283. android_manifest = trichrome_webview_64_32_android_manifest
  284. android_manifest_dep =
  285. "//android_webview/nonembedded:trichrome_webview_64_32_manifest"
  286. use_trichrome_library = true
  287. is_64_bit_browser = true
  288. include_32_bit_webview = true
  289. min_sdk_version = 29
  290. deps = upstream_only_webview_deps
  291. static_library_provider = "//chrome/android:trichrome_library_64_32_apk"
  292. }
  293. }
  294. trichrome_webview_64_32_tmpl("trichrome_webview_64_32_apk") {
  295. apk_name = "TrichromeWebView6432"
  296. uncompress_dex = true
  297. }
  298. if (enable_webview_bundles) {
  299. trichrome_webview_64_32_tmpl("trichrome_webview_64_32_base_bundle_module") {
  300. target_type = "android_app_bundle_module"
  301. is_base_module = true
  302. bundle_target = ":trichrome_webview_64_32_bundle"
  303. }
  304. system_webview_bundle("trichrome_webview_64_32_bundle") {
  305. base_module_target = ":trichrome_webview_64_32_base_bundle_module"
  306. bundle_name = "TrichromeWebView6432"
  307. uncompress_dex = true
  308. min_sdk_version = 29
  309. static_library_provider = "//chrome/android:trichrome_library_64_32_apk"
  310. }
  311. }
  312. template("trichrome_webview_32_tmpl") {
  313. system_webview_apk_or_module_tmpl(target_name) {
  314. forward_variables_from(invoker, "*")
  315. android_manifest = trichrome_webview_32_android_manifest
  316. android_manifest_dep =
  317. "//android_webview/nonembedded:trichrome_webview_32_manifest"
  318. use_trichrome_library = true
  319. is_64_bit_browser = false
  320. include_64_bit_webview = false
  321. min_sdk_version = 29
  322. deps = upstream_only_webview_deps
  323. static_library_provider = "//chrome/android:trichrome_library_32_apk"
  324. }
  325. }
  326. trichrome_webview_32_tmpl("trichrome_webview_32_apk") {
  327. apk_name = "TrichromeWebView32"
  328. uncompress_dex = true
  329. }
  330. if (enable_webview_bundles) {
  331. trichrome_webview_32_tmpl("trichrome_webview_32_base_bundle_module") {
  332. target_type = "android_app_bundle_module"
  333. is_base_module = true
  334. bundle_target = ":trichrome_webview_32_bundle"
  335. }
  336. system_webview_bundle("trichrome_webview_32_bundle") {
  337. base_module_target = ":trichrome_webview_32_base_bundle_module"
  338. bundle_name = "TrichromeWebView32"
  339. uncompress_dex = true
  340. min_sdk_version = 29
  341. static_library_provider = "//chrome/android:trichrome_library_32_apk"
  342. }
  343. }
  344. }
  345. # The shared library used by standalone WebView.
  346. template("libwebviewchromium_tmpl") {
  347. shared_library(target_name) {
  348. forward_variables_from(invoker, "*")
  349. deps = [
  350. "//android_webview/lib",
  351. "//android_webview/lib:webview_entry_point",
  352. "//android_webview/nonembedded",
  353. "//third_party/blink/public:blink",
  354. ]
  355. configs -= [ "//build/config/android:hide_all_but_jni_onload" ]
  356. configs += [
  357. "//build/config/android:hide_all_but_jni",
  358. "//build/config/compiler:chrome_orderfile_config",
  359. ]
  360. }
  361. }
  362. libwebviewchromium_tmpl("libwebviewchromium") {
  363. }
  364. # This template is used to define WebView's alternate-ABI libraries, which are
  365. # used by Monochrome and Trichrome on 64-bit devices which support both 32 and
  366. # 64-bit ABIs. WebView's browser process must use the same ABI as the embedding
  367. # app (renderer processes used the ABI defined in the WebView APK manifest),
  368. # which requires us to have two copies of the library available, one for each
  369. # ABI. The primary library is the one shared with Chrome, and the alternate is
  370. # a WebView-specific library defined here for whichever ABI isn't used by
  371. # Chrome.
  372. #
  373. # Note that this library does also include code needed for the embedded usecase,
  374. # because even though it's not used in normal circumstances, it is required on
  375. # a 64-bit-only device where the nonembedded process will also be 64-bit.
  376. template("webview_alternate_library") {
  377. chrome_common_shared_library(target_name) {
  378. forward_variables_from(invoker, "*")
  379. deps = [
  380. "//android_webview/lib",
  381. "//android_webview/lib:webview_entry_point",
  382. "//android_webview/nonembedded",
  383. ]
  384. is_webview = true
  385. }
  386. }
  387. if (defined(android_secondary_abi_toolchain)) {
  388. # Note here that on a given system, the webview-only library needs the same
  389. # library name as the browser library, since the system webview factory will
  390. # differentiate only by ABI.
  391. if (current_toolchain == android_secondary_abi_toolchain) {
  392. # This target is the 32-bit WebView library that pairs with a 64-bit
  393. # browser. It is suffixed with _64 because its name must match the 64-bit
  394. # browser library.
  395. webview_alternate_library("monochrome_64") {
  396. }
  397. } else {
  398. # Inverse of above, for the original 32-bit case.
  399. webview_alternate_library("monochrome") {
  400. }
  401. }
  402. } else {
  403. # 32-bit WebView library used in 32-bit only builds of 64/32 targets.
  404. webview_alternate_library("monochrome_64") {
  405. }
  406. }
  407. java_group("android_webview_no_weblayer_java") {
  408. deps = [
  409. ":browser_java",
  410. "//android_webview/js_sandbox:js_sandbox_service_java",
  411. # This includes AwResource, which may be called via JNI. We're including it
  412. # here because there's currently no good way to enforce that it gets included
  413. # when it's depended on via JNI.
  414. ":common_java",
  415. "//android_webview/glue:glue_java",
  416. "//android_webview/nonembedded:nonembedded_java",
  417. "//android_webview/support_library:support_lib_glue_java",
  418. ]
  419. # If the T SDK isn't public yet, include the downstream code to support T.
  420. if (!public_android_sdk && android_sdk_release == "t") {
  421. deps += [ "//clank/android_webview/next:t_sdk_java" ]
  422. }
  423. }
  424. # Contains all Java dependencies used by WebView.
  425. java_group("android_webview_java") {
  426. deps = [ ":android_webview_no_weblayer_java" ]
  427. if (webview_includes_weblayer) {
  428. deps += [ "//weblayer/browser/java" ]
  429. }
  430. }
  431. # An empty group included in //BUILD.gn to make this and other WebView build
  432. # files reachable by GN.
  433. group("empty_group") {
  434. }
  435. generate_jni("common_jni_headers") {
  436. sources = [
  437. "java/src/org/chromium/android_webview/common/AwResource.java",
  438. "java/src/org/chromium/android_webview/common/crash/AwCrashReporterClient.java",
  439. ]
  440. }
  441. generate_jni("browser_jni_headers") {
  442. sources = [
  443. "java/src/org/chromium/android_webview/AndroidProtocolHandler.java",
  444. "java/src/org/chromium/android_webview/AwAutofillClient.java",
  445. "java/src/org/chromium/android_webview/AwBrowserContext.java",
  446. "java/src/org/chromium/android_webview/AwBrowserProcess.java",
  447. "java/src/org/chromium/android_webview/AwContents.java",
  448. "java/src/org/chromium/android_webview/AwContentsBackgroundThreadClient.java",
  449. "java/src/org/chromium/android_webview/AwContentsClientBridge.java",
  450. "java/src/org/chromium/android_webview/AwContentsIoThreadClient.java",
  451. "java/src/org/chromium/android_webview/AwContentsLifecycleNotifier.java",
  452. "java/src/org/chromium/android_webview/AwContentsStatics.java",
  453. "java/src/org/chromium/android_webview/AwCookieManager.java",
  454. "java/src/org/chromium/android_webview/AwDarkMode.java",
  455. "java/src/org/chromium/android_webview/AwDebug.java",
  456. "java/src/org/chromium/android_webview/AwDevToolsServer.java",
  457. "java/src/org/chromium/android_webview/AwFeatureList.java",
  458. "java/src/org/chromium/android_webview/AwFormDatabase.java",
  459. "java/src/org/chromium/android_webview/AwHttpAuthHandler.java",
  460. "java/src/org/chromium/android_webview/AwPacProcessor.java",
  461. "java/src/org/chromium/android_webview/AwPdfExporter.java",
  462. "java/src/org/chromium/android_webview/AwProxyController.java",
  463. "java/src/org/chromium/android_webview/AwQuotaManagerBridge.java",
  464. "java/src/org/chromium/android_webview/AwRenderProcess.java",
  465. "java/src/org/chromium/android_webview/AwSettings.java",
  466. "java/src/org/chromium/android_webview/AwTracingController.java",
  467. "java/src/org/chromium/android_webview/AwWebContentsDelegate.java",
  468. "java/src/org/chromium/android_webview/AwWebResourceInterceptResponse.java",
  469. "java/src/org/chromium/android_webview/JsReplyProxy.java",
  470. "java/src/org/chromium/android_webview/PopupTouchHandleDrawable.java",
  471. "java/src/org/chromium/android_webview/WebMessageListenerHolder.java",
  472. "java/src/org/chromium/android_webview/WebMessageListenerInfo.java",
  473. "java/src/org/chromium/android_webview/gfx/AwDrawFnImpl.java",
  474. "java/src/org/chromium/android_webview/gfx/AwGLFunctor.java",
  475. "java/src/org/chromium/android_webview/gfx/AwPicture.java",
  476. "java/src/org/chromium/android_webview/gfx/JavaBrowserViewRendererHelper.java",
  477. "java/src/org/chromium/android_webview/gfx/RootBeginFrameSourceWebView.java",
  478. "java/src/org/chromium/android_webview/metrics/AwMetricsServiceClient.java",
  479. "java/src/org/chromium/android_webview/permission/AwPermissionRequest.java",
  480. "java/src/org/chromium/android_webview/safe_browsing/AwSafeBrowsingConfigHelper.java",
  481. "java/src/org/chromium/android_webview/variations/VariationsSeedLoader.java",
  482. ]
  483. deps = [ ":cancellation_signal_android_jar_jni_headers" ]
  484. }
  485. generate_jar_jni("cancellation_signal_android_jar_jni_headers") {
  486. classes = [ "android/os/CancellationSignal.class" ]
  487. }
  488. android_library("browser_java") {
  489. sources = [
  490. "java/src/org/chromium/android_webview/AndroidProtocolHandler.java",
  491. "java/src/org/chromium/android_webview/AwActionModeCallback.java",
  492. "java/src/org/chromium/android_webview/AwAutofillClient.java",
  493. "java/src/org/chromium/android_webview/AwBrowserContext.java",
  494. "java/src/org/chromium/android_webview/AwBrowserProcess.java",
  495. "java/src/org/chromium/android_webview/AwConsoleMessage.java",
  496. "java/src/org/chromium/android_webview/AwContents.java",
  497. "java/src/org/chromium/android_webview/AwContentsBackgroundThreadClient.java",
  498. "java/src/org/chromium/android_webview/AwContentsClient.java",
  499. "java/src/org/chromium/android_webview/AwContentsClientBridge.java",
  500. "java/src/org/chromium/android_webview/AwContentsClientCallbackHelper.java",
  501. "java/src/org/chromium/android_webview/AwContentsIoThreadClient.java",
  502. "java/src/org/chromium/android_webview/AwContentsLifecycleNotifier.java",
  503. "java/src/org/chromium/android_webview/AwContentsStatics.java",
  504. "java/src/org/chromium/android_webview/AwCookieManager.java",
  505. "java/src/org/chromium/android_webview/AwDarkMode.java",
  506. "java/src/org/chromium/android_webview/AwDataDirLock.java",
  507. "java/src/org/chromium/android_webview/AwDebug.java",
  508. "java/src/org/chromium/android_webview/AwDevToolsServer.java",
  509. "java/src/org/chromium/android_webview/AwDisplayCutoutController.java",
  510. "java/src/org/chromium/android_webview/AwDisplayModeController.java",
  511. "java/src/org/chromium/android_webview/AwFeatureList.java",
  512. "java/src/org/chromium/android_webview/AwFormDatabase.java",
  513. "java/src/org/chromium/android_webview/AwGeolocationPermissions.java",
  514. "java/src/org/chromium/android_webview/AwHistogramRecorder.java",
  515. "java/src/org/chromium/android_webview/AwHttpAuthHandler.java",
  516. "java/src/org/chromium/android_webview/AwLayoutSizer.java",
  517. "java/src/org/chromium/android_webview/AwNetworkChangeNotifierRegistrationPolicy.java",
  518. "java/src/org/chromium/android_webview/AwPacProcessor.java",
  519. "java/src/org/chromium/android_webview/AwPdfExporter.java",
  520. "java/src/org/chromium/android_webview/AwPrintDocumentAdapter.java",
  521. "java/src/org/chromium/android_webview/AwProxyController.java",
  522. "java/src/org/chromium/android_webview/AwQuotaManagerBridge.java",
  523. "java/src/org/chromium/android_webview/AwRenderProcess.java",
  524. "java/src/org/chromium/android_webview/AwRenderProcessGoneDetail.java",
  525. "java/src/org/chromium/android_webview/AwScrollOffsetManager.java",
  526. "java/src/org/chromium/android_webview/AwServiceWorkerClient.java",
  527. "java/src/org/chromium/android_webview/AwServiceWorkerController.java",
  528. "java/src/org/chromium/android_webview/AwServiceWorkerSettings.java",
  529. "java/src/org/chromium/android_webview/AwSettings.java",
  530. "java/src/org/chromium/android_webview/AwSupportLibIsomorphic.java",
  531. "java/src/org/chromium/android_webview/AwThreadUtils.java",
  532. "java/src/org/chromium/android_webview/AwTracingController.java",
  533. "java/src/org/chromium/android_webview/AwViewAndroidDelegate.java",
  534. "java/src/org/chromium/android_webview/AwViewMethods.java",
  535. "java/src/org/chromium/android_webview/AwWebContentsDelegate.java",
  536. "java/src/org/chromium/android_webview/AwWebContentsDelegateAdapter.java",
  537. "java/src/org/chromium/android_webview/AwWebContentsMetricsRecorder.java",
  538. "java/src/org/chromium/android_webview/AwWebContentsObserver.java",
  539. "java/src/org/chromium/android_webview/AwWebResourceInterceptResponse.java",
  540. "java/src/org/chromium/android_webview/AwZoomControls.java",
  541. "java/src/org/chromium/android_webview/BrowserSafeModeActionList.java",
  542. "java/src/org/chromium/android_webview/CleanupReference.java",
  543. "java/src/org/chromium/android_webview/ClientCertLookupTable.java",
  544. "java/src/org/chromium/android_webview/DarkModeHelper.java",
  545. "java/src/org/chromium/android_webview/DefaultVideoPosterRequestHandler.java",
  546. "java/src/org/chromium/android_webview/ErrorCodeConversionHelper.java",
  547. "java/src/org/chromium/android_webview/FileModeConversionHelper.java",
  548. "java/src/org/chromium/android_webview/FindAddress.java",
  549. "java/src/org/chromium/android_webview/FullScreenView.java",
  550. "java/src/org/chromium/android_webview/HttpAuthDatabase.java",
  551. "java/src/org/chromium/android_webview/JsPromptResultReceiver.java",
  552. "java/src/org/chromium/android_webview/JsReplyProxy.java",
  553. "java/src/org/chromium/android_webview/JsResultHandler.java",
  554. "java/src/org/chromium/android_webview/JsResultReceiver.java",
  555. "java/src/org/chromium/android_webview/NullAwViewMethods.java",
  556. "java/src/org/chromium/android_webview/OverScrollGlow.java",
  557. "java/src/org/chromium/android_webview/PopupTouchHandleDrawable.java",
  558. "java/src/org/chromium/android_webview/ScriptHandler.java",
  559. "java/src/org/chromium/android_webview/ScrollAccessibilityHelper.java",
  560. "java/src/org/chromium/android_webview/SslUtil.java",
  561. "java/src/org/chromium/android_webview/ViewPositionObserver.java",
  562. "java/src/org/chromium/android_webview/WebAddressParser.java",
  563. "java/src/org/chromium/android_webview/WebMessageListener.java",
  564. "java/src/org/chromium/android_webview/WebMessageListenerHolder.java",
  565. "java/src/org/chromium/android_webview/WebMessageListenerInfo.java",
  566. "java/src/org/chromium/android_webview/WebViewChromiumRunQueue.java",
  567. "java/src/org/chromium/android_webview/WebviewErrorCode.java",
  568. "java/src/org/chromium/android_webview/gfx/AwDrawFnImpl.java",
  569. "java/src/org/chromium/android_webview/gfx/AwFunctor.java",
  570. "java/src/org/chromium/android_webview/gfx/AwGLFunctor.java",
  571. "java/src/org/chromium/android_webview/gfx/AwPicture.java",
  572. "java/src/org/chromium/android_webview/gfx/JavaBrowserViewRendererHelper.java",
  573. "java/src/org/chromium/android_webview/gfx/RectUtils.java",
  574. "java/src/org/chromium/android_webview/gfx/RootBeginFrameSourceWebView.java",
  575. "java/src/org/chromium/android_webview/metrics/AwMetricsLogUploader.java",
  576. "java/src/org/chromium/android_webview/metrics/AwMetricsServiceClient.java",
  577. "java/src/org/chromium/android_webview/metrics/AwNonembeddedUmaReplayer.java",
  578. "java/src/org/chromium/android_webview/metrics/AwOriginVisitLogger.java",
  579. "java/src/org/chromium/android_webview/metrics/AwSiteVisitLogger.java",
  580. "java/src/org/chromium/android_webview/permission/AwGeolocationCallback.java",
  581. "java/src/org/chromium/android_webview/permission/AwPermissionRequest.java",
  582. "java/src/org/chromium/android_webview/policy/AwPolicyProvider.java",
  583. "java/src/org/chromium/android_webview/safe_browsing/AwSafeBrowsingConfigHelper.java",
  584. "java/src/org/chromium/android_webview/safe_browsing/AwSafeBrowsingConversionHelper.java",
  585. "java/src/org/chromium/android_webview/safe_browsing/AwSafeBrowsingResponse.java",
  586. "java/src/org/chromium/android_webview/variations/VariationsSeedLoader.java",
  587. "java/src/org/chromium/android_webview/variations/VariationsSeedSafeModeAction.java",
  588. ]
  589. deps = [
  590. ":common_aidl_java",
  591. ":common_crash_java",
  592. ":common_java",
  593. ":common_platform_services_java",
  594. ":common_variations_java",
  595. ":resources",
  596. "//android_webview:common_platform_services_java",
  597. "//android_webview/nonembedded:system_webview_manifest",
  598. "//android_webview/proto:metrics_bridge_records_proto_java",
  599. "//base:base_java",
  600. "//base:jni_java",
  601. "//build/android:build_java",
  602. "//components/android_autofill/browser:java",
  603. "//components/autofill/android:autofill_java",
  604. "//components/background_task_scheduler:background_task_scheduler_task_ids_java",
  605. "//components/component_updater/android:embedded_component_loader_java",
  606. "//components/content_capture/android:java",
  607. "//components/crash/android:handler_java",
  608. "//components/crash/android:java",
  609. "//components/embedder_support/android:util_java",
  610. "//components/embedder_support/android:web_contents_delegate_java",
  611. "//components/embedder_support/android/metrics:java",
  612. "//components/minidump_uploader:minidump_uploader_java",
  613. "//components/navigation_interception/android:navigation_interception_java",
  614. "//components/policy/android:policy_java",
  615. "//components/safe_browsing/android:safe_browsing_java",
  616. "//components/stylus_handwriting/android:java",
  617. "//components/url_formatter/android:url_formatter_java",
  618. "//components/variations:variations_java",
  619. "//components/variations/android:variations_java",
  620. "//components/version_info/android:version_constants_java",
  621. "//components/viz/common:common_java",
  622. "//components/viz/service:service_java",
  623. "//content/public/android:content_java",
  624. "//device/gamepad:java",
  625. "//mojo/public/java:system_java",
  626. "//mojo/public/java/system:system_impl_java",
  627. "//net/android:net_java",
  628. "//services/network/public/mojom:mojom_java",
  629. "//services/network/public/mojom:url_loader_base_java",
  630. "//third_party/android_deps:protobuf_lite_runtime_java",
  631. "//third_party/androidx:androidx_annotation_annotation_java",
  632. "//third_party/androidx:androidx_core_core_java",
  633. "//third_party/blink/public:blink_headers_java",
  634. "//third_party/blink/public/common:common_java",
  635. "//third_party/blink/public/mojom:mojom_platform_java",
  636. "//ui/android:ui_no_recycler_view_java",
  637. "//url:gurl_java",
  638. ]
  639. annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
  640. if (enable_spellcheck) {
  641. deps += [ "//components/spellcheck/browser/android:java" ]
  642. }
  643. srcjar_deps = [
  644. "//android_webview/browser:browser_enums",
  645. "//components/safe_browsing/core/browser/db:sb_threat_values",
  646. ]
  647. resources_package = "org.chromium.android_webview"
  648. }
  649. android_library("common_variations_java") {
  650. sources = [
  651. "java/src/org/chromium/android_webview/common/variations/VariationsServiceMetricsHelper.java",
  652. "java/src/org/chromium/android_webview/common/variations/VariationsUtils.java",
  653. ]
  654. deps = [
  655. "//android_webview/proto:aw_variations_seed_proto_java",
  656. "//base:base_java",
  657. "//components/variations/android:variations_java",
  658. "//third_party/android_deps:protobuf_lite_runtime_java",
  659. "//third_party/androidx:androidx_annotation_annotation_java",
  660. ]
  661. }
  662. # Separate target to allow for a dependency on GmsCore without pulling in all of
  663. # android_webview_java. It compiles the abstract class; implementations are
  664. # compiled separately.
  665. android_library("common_platform_services_java") {
  666. sources = [
  667. "java/src/org/chromium/android_webview/common/PlatformServiceBridge.java",
  668. "java/src/org/chromium/android_webview/common/PlatformServiceBridgeImpl.java",
  669. ]
  670. deps = [
  671. "//base:base_java",
  672. "//components/embedder_support/android/metrics:java",
  673. "//content/public/android:content_full_java",
  674. "//third_party/androidx:androidx_annotation_annotation_java",
  675. ]
  676. # The appropriate .class file will be loaded via a dependency to a library
  677. # like :platform_service_bridge_upstream_implementation_java below. We only include the
  678. # .java file because other files in the target depend on it.
  679. jar_excluded_patterns = [ "*/PlatformServiceBridgeImpl.class" ]
  680. }
  681. # This target compiles the implementation of PlatformServiceBridge for AOSP targets.
  682. android_library("platform_service_bridge_upstream_implementation_java") {
  683. sources = [ "java/src/org/chromium/android_webview/common/PlatformServiceBridgeImpl.java" ]
  684. deps = [ ":common_platform_services_java" ]
  685. }
  686. android_library("common_crash_java") {
  687. sources = [
  688. "java/src/org/chromium/android_webview/common/crash/AwCrashReporterClient.java",
  689. "java/src/org/chromium/android_webview/common/crash/CrashInfo.java",
  690. "java/src/org/chromium/android_webview/common/crash/CrashUploadUtil.java",
  691. "java/src/org/chromium/android_webview/common/crash/SystemWideCrashDirectories.java",
  692. ]
  693. deps = [
  694. ":common_java",
  695. "//base:base_java",
  696. "//base:jni_java",
  697. "//components/background_task_scheduler:background_task_scheduler_task_ids_java",
  698. "//components/minidump_uploader:minidump_uploader_java",
  699. "//third_party/androidx:androidx_annotation_annotation_java",
  700. ]
  701. annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
  702. }
  703. java_cpp_strings("common_java_switches_srcjar") {
  704. # External code should depend on "common_java" instead.
  705. visibility = [ ":*" ]
  706. sources = [ "common/aw_switches.cc" ]
  707. template = "java/src/org/chromium/android_webview/common/AwSwitches.java.tmpl"
  708. }
  709. java_cpp_features("common_java_features_srcjar") {
  710. # External code should depend on "common_java" instead.
  711. visibility = [ ":*" ]
  712. sources = [ "common/aw_features.cc" ]
  713. template = "java/src/org/chromium/android_webview/common/AwFeatures.java.tmpl"
  714. }
  715. android_library("common_java") {
  716. sources = [
  717. "java/src/org/chromium/android_webview/common/AwResource.java",
  718. "java/src/org/chromium/android_webview/common/CommandLineUtil.java",
  719. "java/src/org/chromium/android_webview/common/DeveloperModeUtils.java",
  720. "java/src/org/chromium/android_webview/common/Flag.java",
  721. "java/src/org/chromium/android_webview/common/FlagOverrideHelper.java",
  722. "java/src/org/chromium/android_webview/common/ProductionSupportedFlagList.java",
  723. "java/src/org/chromium/android_webview/common/SafeModeAction.java",
  724. "java/src/org/chromium/android_webview/common/SafeModeController.java",
  725. "java/src/org/chromium/android_webview/common/services/ServiceHelper.java",
  726. "java/src/org/chromium/android_webview/common/services/ServiceNames.java",
  727. ]
  728. deps = [
  729. "//base:base_java",
  730. "//base:jni_java",
  731. "//build/android:build_java",
  732. "//cc/base:cc_base_java",
  733. "//components/autofill/android:autofill_features_java",
  734. "//components/feature_engagement/public:public_java",
  735. "//components/metrics:metrics_java",
  736. "//components/network_session_configurator/android:network_session_configurator_java",
  737. "//components/variations:variations_java",
  738. "//components/viz:viz_java",
  739. "//content/public/android:content_java",
  740. "//content/public/common:common_java",
  741. "//gpu/config:config_java",
  742. "//net/base:features_java",
  743. "//services/network/public:features_java",
  744. "//third_party/androidx:androidx_annotation_annotation_java",
  745. "//third_party/blink/public/common:common_java",
  746. "//third_party/blink/renderer/platform/scheduler:blink_scheduler_java",
  747. ]
  748. srcjar_deps = [
  749. ":common_java_features_srcjar",
  750. ":common_java_switches_srcjar",
  751. ]
  752. }
  753. android_aidl("common_aidl") {
  754. # External code should depend on "common_aidl_java" instead.
  755. visibility = [ ":*" ]
  756. import_include = [ "java/src" ]
  757. sources = [
  758. "java/src/org/chromium/android_webview/common/services/ICrashReceiverService.aidl",
  759. "java/src/org/chromium/android_webview/common/services/IDeveloperUiService.aidl",
  760. "java/src/org/chromium/android_webview/common/services/IMetricsBridgeService.aidl",
  761. "java/src/org/chromium/android_webview/common/services/IMetricsUploadService.aidl",
  762. "java/src/org/chromium/android_webview/common/services/ISafeModeService.aidl",
  763. "java/src/org/chromium/android_webview/common/services/IVariationsSeedServer.aidl",
  764. "java/src/org/chromium/android_webview/common/services/IVariationsSeedServerCallback.aidl",
  765. ]
  766. }
  767. android_library("common_aidl_java") {
  768. srcjar_deps = [ ":common_aidl" ]
  769. }
  770. # Generate ProductConfig.java so that android_webview_product_config_java's
  771. # compile step works.
  772. generate_product_config_srcjar("webview_product_config") {
  773. java_package = webview_product_config_java_package
  774. }
  775. # ProductConfig.java is excluded from the generated .jar
  776. # (via. jar_excluded_patterns) and the final version is inserted at the APK
  777. # level - with the list of pak locales populated by looking at the assets that
  778. # are listed in the final APK's .build_config.json.
  779. android_library("android_webview_product_config_java") {
  780. sources = [ "java/src/org/chromium/android_webview/AwLocaleConfig.java" ]
  781. srcjar_deps = [ ":webview_product_config" ]
  782. jar_excluded_patterns = [ "*/ProductConfig.class" ]
  783. }
  784. if (enable_resource_allowlist_generation) {
  785. libwebviewchromium_tmpl("system_webview_pak_allowlist_inputs") {
  786. ldflags = [ "--collect-inputs-only" ]
  787. }
  788. generate_resource_allowlist("system_webview_pak_allowlist") {
  789. deps = [ ":system_webview_pak_allowlist_inputs" ]
  790. inputs = [ "$root_out_dir/lib.unstripped/libsystem_webview_pak_allowlist_inputs$shlib_extension" ]
  791. output = system_webview_pak_allowlist
  792. }
  793. }
  794. webview_repack_locales("repack_locales") {
  795. input_locales = platform_pak_locales
  796. output_locales = platform_pak_locales
  797. if (enable_resource_allowlist_generation) {
  798. repack_allowlist = system_webview_pak_allowlist
  799. deps = [ ":system_webview_pak_allowlist" ]
  800. }
  801. }
  802. android_assets("locale_pak_assets") {
  803. disable_compression = true
  804. renaming_sources = []
  805. renaming_destinations = []
  806. foreach(_locale, platform_pak_locales) {
  807. renaming_sources += [ "$root_out_dir/android_webview/locales/$_locale.pak" ]
  808. renaming_destinations += [ "stored-locales/$_locale.pak" ]
  809. }
  810. treat_as_locale_paks = true
  811. deps = [ ":repack_locales" ]
  812. }
  813. repack("repack_pack") {
  814. sources = [
  815. "$root_gen_dir/content/content_resources.pak",
  816. "$root_gen_dir/net/net_resources.pak",
  817. "$root_gen_dir/third_party/blink/public/resources/blink_resources.pak",
  818. "$root_gen_dir/third_party/blink/public/resources/inspector_overlay_resources.pak",
  819. "$target_gen_dir/components_resources.pak",
  820. "$target_gen_dir/mojo_bindings_resources.pak",
  821. "$target_gen_dir/webui_generated_resources.pak",
  822. ]
  823. deps = [
  824. ":generate_components_resources",
  825. ":generate_mojo_resources",
  826. ":generate_webui_resources",
  827. "//content:content_resources",
  828. "//net:net_resources",
  829. "//third_party/blink/public:devtools_inspector_resources",
  830. "//third_party/blink/public:resources",
  831. ]
  832. output = "$target_gen_dir/resources.pak"
  833. if (enable_resource_allowlist_generation) {
  834. repack_allowlist = system_webview_pak_allowlist
  835. deps += [ ":system_webview_pak_allowlist" ]
  836. }
  837. if (webview_includes_weblayer) {
  838. sources += [ "$root_gen_dir/weblayer/weblayer_resources.pak" ]
  839. deps += [ "//weblayer:resources" ]
  840. # These resources are primarily useful for developers. To avoid increasing
  841. # the size of WebView they are only included in non-stable channels.
  842. if (android_channel != "stable") {
  843. sources += [ "$root_gen_dir/content/dev_ui_content_resources.pak" ]
  844. deps += [ "//content:dev_ui_content_resources" ]
  845. }
  846. }
  847. }
  848. repack("repack_100_percent") {
  849. sources = [
  850. "$root_gen_dir/third_party/blink/public/resources/blink_scaled_resources_100_percent.pak",
  851. "$root_gen_dir/ui/resources/ui_resources_100_percent.pak",
  852. ]
  853. deps = [
  854. "//third_party/blink/public:scaled_resources_100_percent",
  855. "//ui/resources",
  856. ]
  857. output = "$target_gen_dir/chrome_100_percent.pak"
  858. if (enable_resource_allowlist_generation) {
  859. repack_allowlist = system_webview_pak_allowlist
  860. deps += [ ":system_webview_pak_allowlist" ]
  861. }
  862. if (webview_includes_weblayer) {
  863. sources += [ "$target_gen_dir/components_resources_100_percent.pak" ]
  864. deps += [ ":generate_components_scaled_resources" ]
  865. }
  866. }
  867. android_assets("pak_file_assets") {
  868. sources = [
  869. "$target_gen_dir/chrome_100_percent.pak",
  870. "$target_gen_dir/resources.pak",
  871. ]
  872. deps = [
  873. ":repack_100_percent",
  874. ":repack_pack",
  875. ]
  876. disable_compression = true
  877. }
  878. if (android_64bit_target_cpu && !skip_secondary_abi_for_cq) {
  879. android_assets("v8_snapshot_secondary_abi_assets") {
  880. assert(android_64bit_target_cpu,
  881. "32-bit targets shouldn't have secondary abi")
  882. arch_suffix = "32"
  883. renaming_sources = []
  884. renaming_destinations = []
  885. if (use_v8_context_snapshot) {
  886. renaming_sources += [ "$root_out_dir/v8_context_snapshot_32.bin" ]
  887. renaming_destinations += [ "v8_context_snapshot_$arch_suffix.bin" ]
  888. } else {
  889. _secondary_abi_out_dir =
  890. get_label_info("//v8($android_secondary_abi_toolchain)",
  891. "root_out_dir")
  892. renaming_sources = [ "$_secondary_abi_out_dir/snapshot_blob.bin" ]
  893. renaming_destinations = [ "snapshot_blob_$arch_suffix.bin" ]
  894. }
  895. disable_compression = true
  896. deps = [
  897. "//tools/v8_context_snapshot($android_secondary_abi_toolchain)",
  898. "//v8($android_secondary_abi_toolchain)",
  899. ]
  900. }
  901. }
  902. android_assets("webview_primary_abi_assets") {
  903. deps = []
  904. if (use_v8_context_snapshot) {
  905. deps += [ "//tools/v8_context_snapshot:v8_context_snapshot_assets" ]
  906. } else {
  907. deps += [ "//v8:v8_external_startup_data_assets" ]
  908. }
  909. }
  910. android_assets("monochrome_webview_primary_abi_assets") {
  911. deps = [ "//third_party/icu:icu_assets" ]
  912. if (use_v8_context_snapshot) {
  913. deps += [ "//tools/v8_context_snapshot:v8_context_snapshot_assets" ]
  914. } else {
  915. deps += [ "//v8:v8_external_startup_data_assets" ]
  916. }
  917. }
  918. if (android_64bit_target_cpu && !skip_secondary_abi_for_cq) {
  919. android_assets("webview_secondary_abi_assets") {
  920. deps = [ ":v8_snapshot_secondary_abi_assets" ]
  921. }
  922. android_assets("monochrome_webview_secondary_abi_assets") {
  923. deps = [ "//third_party/icu:icu_assets" ]
  924. deps += [ ":v8_snapshot_secondary_abi_assets" ]
  925. }
  926. }
  927. android_assets("weblayer_webview_assets") {
  928. deps = [
  929. ":webview_primary_abi_assets",
  930. "//third_party/icu:icu_assets",
  931. ]
  932. if (android_64bit_target_cpu && !skip_secondary_abi_for_cq) {
  933. deps += [ ":webview_secondary_abi_assets" ]
  934. }
  935. }
  936. android_assets("stub_assets") {
  937. renaming_sources = [ "$root_gen_dir/components/resources/about_credits.html" ]
  938. renaming_destinations = [ "webview_licenses.notice" ]
  939. deps = [ "//components/resources:about_credits" ]
  940. }
  941. android_resources("resources") {
  942. sources = [
  943. "java/res/drawable-hdpi/ic_play_circle_outline_black_48dp.png",
  944. "java/res/drawable-mdpi/ic_play_circle_outline_black_48dp.png",
  945. "java/res/drawable-xhdpi/ic_play_circle_outline_black_48dp.png",
  946. "java/res/drawable-xxhdpi/ic_play_circle_outline_black_48dp.png",
  947. "java/res/drawable-xxxhdpi/ic_play_circle_outline_black_48dp.png",
  948. ]
  949. deps = [ ":strings_grd" ]
  950. }
  951. grit("generate_webui_resources") {
  952. enable_input_discovery_for_gn_analyze = false
  953. defines =
  954. [ "SHARED_INTERMEDIATE_DIR=" + rebase_path(root_gen_dir, root_build_dir) ]
  955. source = "$root_gen_dir/ui/webui/resources/webui_generated_resources.grd"
  956. deps = [ "//ui/webui/resources:build_grd" ]
  957. outputs = [
  958. "grit/webui_generated_resources.h",
  959. "grit/webui_generated_resources_map.cc",
  960. "grit/webui_generated_resources_map.h",
  961. "webui_generated_resources.pak",
  962. ]
  963. # webui/resources has way too many resources. The allowlist is trim this down
  964. # to a reasonable size
  965. _allowlist = "ui/grit_resources_allowlist.txt"
  966. inputs = [ _allowlist ]
  967. grit_flags = [
  968. "-w",
  969. rebase_path(_allowlist, root_build_dir),
  970. "-E",
  971. "root_gen_dir=" + rebase_path(root_gen_dir, root_build_dir),
  972. "-E",
  973. "root_src_dir=" + rebase_path("//", root_build_dir),
  974. ]
  975. }
  976. grit("generate_mojo_resources") {
  977. source = "../mojo/public/js/mojo_bindings_resources.grd"
  978. # See :generate_webui_resources for an explanation of the allowlist
  979. _allowlist = "ui/grit_resources_allowlist.txt"
  980. inputs = [ _allowlist ]
  981. grit_flags = [
  982. "-w",
  983. rebase_path(_allowlist, root_build_dir),
  984. ]
  985. outputs = [
  986. "grit/mojo_bindings_resources.h",
  987. "grit/mojo_bindings_resources_map.cc",
  988. "grit/mojo_bindings_resources_map.h",
  989. "mojo_bindings_resources.pak",
  990. ]
  991. deps = [
  992. "//mojo/public/js:bindings_lite",
  993. "//mojo/public/js:bindings_module",
  994. "//mojo/public/mojom/base:base_js",
  995. ]
  996. }
  997. action("concatenate_resources_allowlists") {
  998. script = "//mojo/public/tools/bindings/concatenate-files.py"
  999. inputs = [ "//android_webview/ui/grit_resources_allowlist.txt" ]
  1000. if (webview_includes_weblayer) {
  1001. inputs += [ "//weblayer/grit_resources_allowlist.txt" ]
  1002. }
  1003. outputs = [ "$target_gen_dir/grit_resources_allowlist.txt" ]
  1004. args =
  1005. rebase_path(inputs, root_build_dir) + rebase_path(outputs, root_build_dir)
  1006. }
  1007. grit("generate_components_resources") {
  1008. # Note that dev_ui_components_resources.grd is Chrome-only, so excluded.
  1009. source = "../components/resources/components_resources.grd"
  1010. use_brotli = true
  1011. defines = [
  1012. "enable_basic_printing=$enable_basic_printing",
  1013. "safe_browsing_mode=$safe_browsing_mode",
  1014. ]
  1015. # See :generate_webui_resources for an explanation of the allowlist
  1016. _allowlist = rebase_path("$target_gen_dir/grit_resources_allowlist.txt",
  1017. root_build_dir)
  1018. _about_credits_file = get_label_info("//components/resources",
  1019. "target_gen_dir") + "/about_credits.html"
  1020. grit_flags = [
  1021. "-w",
  1022. _allowlist,
  1023. "-E",
  1024. "about_credits_file=" + rebase_path(_about_credits_file, root_build_dir),
  1025. ]
  1026. outputs = [
  1027. "grit/components_resources.h",
  1028. "components_resources.pak",
  1029. ]
  1030. deps = [
  1031. ":concatenate_resources_allowlists",
  1032. "//components/flags_ui/resources:build_ts",
  1033. "//components/resources:about_credits",
  1034. "//components/resources/ssl/ssl_error_assistant:make_ssl_error_assistant_protobuf",
  1035. "//components/security_interstitials/content/resources:build_ts",
  1036. ]
  1037. if (safe_browsing_mode != 0) {
  1038. deps += [
  1039. "//components/safe_browsing/content/resources:make_file_types_protobuf",
  1040. ]
  1041. }
  1042. }
  1043. grit("generate_components_scaled_resources") {
  1044. source = "../components/resources/components_scaled_resources.grd"
  1045. # See :generate_webui_resources for an explanation of the allowlist
  1046. _allowlist = rebase_path("$target_gen_dir/grit_resources_allowlist.txt",
  1047. root_build_dir)
  1048. grit_flags = [
  1049. "-w",
  1050. _allowlist,
  1051. ]
  1052. outputs = [
  1053. "grit/components_scaled_resources.h",
  1054. "grit/components_scaled_resources_map.cc",
  1055. "grit/components_scaled_resources_map.h",
  1056. "components_resources_100_percent.pak",
  1057. "components_resources_200_percent.pak",
  1058. "components_resources_300_percent.pak",
  1059. ]
  1060. deps = [ ":concatenate_resources_allowlists" ]
  1061. }
  1062. grit("generate_components_strings") {
  1063. source = "../components/components_strings.grd"
  1064. defines = [
  1065. "enable_arcore=$enable_arcore",
  1066. "enable_pdf=$enable_pdf",
  1067. "enable_print_preview=$enable_print_preview",
  1068. "enable_vr=$enable_vr",
  1069. ]
  1070. # components_strings contains strings from all components. WebView
  1071. # will never display most of them, so we try to limit the included
  1072. # strings. This allowlist trims about 50% more than the compile-based
  1073. # allowlist generated by :system_webview_pak_allowlist.
  1074. _allowlist = rebase_path("ui/grit_strings_allowlist.txt", root_build_dir)
  1075. inputs = [ "//android_webview/ui/grit_strings_allowlist.txt" ]
  1076. grit_flags = [
  1077. "-w",
  1078. _allowlist,
  1079. ]
  1080. outputs =
  1081. [
  1082. "grit/components_strings.h",
  1083. "java/res/values/components_strings.xml",
  1084. ] +
  1085. process_file_template(
  1086. android_bundle_locales_as_resources,
  1087. [ "java/res/values-{{source_name_part}}/components_strings.xml" ]) +
  1088. process_file_template(all_chrome_locales,
  1089. [ "components_strings_{{source_name_part}}.pak" ])
  1090. }
  1091. java_strings_grd("strings_grd") {
  1092. grd_file = "java/strings/android_webview_strings.grd"
  1093. outputs = [ "values/android_webview_strings.xml" ] +
  1094. process_file_template(
  1095. android_bundle_locales_as_resources,
  1096. [ "values-{{source_name_part}}/android_webview_strings.xml" ])
  1097. }