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.
5 import("//android_webview/system_webview_apk_tmpl.gni")
6 import("//android_webview/system_webview_bundle.gni")
7 import("//android_webview/variables.gni")
8 import("//android_webview/webview_repack_locales.gni")
9 import("//build/android/resource_sizes.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/spellcheck/spellcheck_build_features.gni")
17 import("//tools/grit/repack.gni")
18 import("//tools/resources/generate_resource_whitelist.gni")
19 import("//tools/v8_context_snapshot/v8_context_snapshot.gni")
20 import("//weblayer/variables.gni")
22 if (enable_resource_whitelist_generation) {
23 system_webview_pak_whitelist =
24 "$target_gen_dir/system_webview_pak_whitelist.txt"
27 # Having //clank present causes different flags because of how play services
29 # The channel is required because manifest entries vary based on channel.
30 _verify_android_configuration =
31 !is_java_debug && !enable_chrome_android_internal &&
32 android_channel == "stable"
34 template("standalone_system_webview_apk_tmpl") {
35 system_webview_apk_or_module_tmpl(target_name) {
36 forward_variables_from(invoker, "*")
37 android_manifest = system_webview_android_manifest
38 android_manifest_dep =
39 "//android_webview/nonembedded:system_webview_manifest"
40 deps = upstream_only_webview_deps
45 # Standalone WebView APK.
46 standalone_system_webview_apk_tmpl("system_webview_apk") {
47 apk_name = "SystemWebView"
50 # This version of the WebView APK doesn't include WebLayer java and resources.
51 # It's used to define the whitelist of resources to be pulled out of language
52 # splits. See |shared_resources_allowlist_target|.
53 standalone_system_webview_apk_tmpl("system_webview_no_weblayer_apk") {
54 exclude_weblayer_java = true
55 apk_name = "SystemWebViewNoWebLayer"
58 if (enable_webview_bundles) {
59 standalone_system_webview_apk_tmpl("system_webview_base_bundle_module") {
60 target_type = "android_app_bundle_module"
63 if (_verify_android_configuration) {
64 expected_android_manifest =
65 "expectations/system_webview_bundle.AndroidManifest.expected"
69 system_webview_bundle("system_webview_bundle") {
70 base_module_target = ":system_webview_base_bundle_module"
71 bundle_name = "SystemWebView"
73 compress_shared_libraries = true
76 if (is_official_build) {
77 # Used for binary size monitoring.
78 create_app_bundle_minimal_apks("system_webview_minimal_apks") {
79 deps = [ ":system_webview_bundle" ]
80 bundle_path = "$root_build_dir/apks/SystemWebView.aab"
83 android_resource_sizes_test("resource_sizes_system_webview_bundle") {
84 file_path = "$root_build_dir/apks/SystemWebView.minimal.apks"
85 data_deps = [ ":system_webview_minimal_apks" ]
90 if (android_64bit_target_cpu) {
91 # These targets builds a 32-bit only Webview on a 64-bit config, analogous
92 # to what's built on a 32-bit config. This lets all Webviews build on a
93 # single configuration.
94 standalone_system_webview_apk_tmpl("system_webview_32_apk") {
95 apk_name = "SystemWebView32"
96 include_64_bit_webview = false
99 if (enable_webview_bundles) {
100 standalone_system_webview_apk_tmpl("system_webview_32_base_bundle_module") {
101 target_type = "android_app_bundle_module"
102 include_64_bit_webview = false
103 is_base_module = true
106 system_webview_bundle("system_webview_32_bundle") {
107 base_module_target = ":system_webview_32_base_bundle_module"
108 bundle_name = "SystemWebView32"
109 include_64_bit_webview = false
111 compress_shared_libraries = true
116 # Trichrome WebView APK.
117 template("trichrome_webview_tmpl") {
118 system_webview_apk_or_module_tmpl(target_name) {
119 forward_variables_from(invoker, "*")
120 android_manifest = trichrome_webview_android_manifest
121 android_manifest_dep =
122 "//android_webview/nonembedded:trichrome_webview_manifest"
125 deps = upstream_only_webview_deps
126 use_trichrome_library = true
128 if (android_64bit_target_cpu) {
129 is_64_bit_browser = false
130 include_64_bit_webview = true
132 static_library_provider = "//chrome/android:trichrome_library_apk"
136 trichrome_webview_tmpl("trichrome_webview_apk") {
137 apk_name = "TrichromeWebView"
138 uncompress_dex = true
139 if (!is_java_debug) {
140 static_library_synchronized_proguard = trichrome_synchronized_proguard
144 if (enable_webview_bundles) {
145 trichrome_webview_tmpl("trichrome_webview_base_bundle_module") {
146 target_type = "android_app_bundle_module"
147 is_base_module = true
149 if (_verify_android_configuration) {
150 expected_android_manifest =
151 "expectations/trichrome_webview_bundle.AndroidManifest.expected"
155 system_webview_bundle("trichrome_webview_bundle") {
156 base_module_target = ":trichrome_webview_base_bundle_module"
157 bundle_name = "TrichromeWebView"
158 uncompress_dex = true
160 static_library_provider = "//chrome/android:trichrome_library_apk"
163 if (is_official_build) {
164 # Used for binary size monitoring.
165 create_app_bundle_minimal_apks("trichrome_webview_minimal_apks") {
166 deps = [ ":trichrome_webview_bundle" ]
167 bundle_path = "$root_build_dir/apks/TrichromeWebView.aab"
170 android_resource_sizes_test("resource_sizes_trichrome_webview_bundle") {
171 file_path = "$root_build_dir/apks/TrichromeWebView.minimal.apks"
172 data_deps = [ ":trichrome_webview_minimal_apks" ]
177 # Trichrome WebView APK for a 64-bit Chrome.
178 if (android_64bit_target_cpu) {
179 template("trichrome_webview_64_32_tmpl") {
180 system_webview_apk_or_module_tmpl(target_name) {
181 forward_variables_from(invoker, "*")
182 android_manifest = trichrome_webview_64_32_android_manifest
183 android_manifest_dep =
184 "//android_webview/nonembedded:trichrome_webview_64_32_manifest"
185 use_trichrome_library = true
186 is_64_bit_browser = true
187 include_32_bit_webview = true
191 deps = upstream_only_webview_deps
192 static_library_provider = "//chrome/android:trichrome_library_64_32_apk"
196 trichrome_webview_64_32_tmpl("trichrome_webview_64_32_apk") {
197 apk_name = "TrichromeWebView6432"
198 uncompress_dex = true
201 if (enable_webview_bundles) {
202 trichrome_webview_64_32_tmpl("trichrome_webview_64_32_base_bundle_module") {
203 target_type = "android_app_bundle_module"
204 is_base_module = true
207 system_webview_bundle("trichrome_webview_64_32_bundle") {
208 base_module_target = ":trichrome_webview_64_32_base_bundle_module"
209 bundle_name = "TrichromeWebView6432"
210 uncompress_dex = true
212 static_library_provider = "//chrome/android:trichrome_library_64_32_apk"
216 template("trichrome_webview_32_tmpl") {
217 system_webview_apk_or_module_tmpl(target_name) {
218 forward_variables_from(invoker, "*")
219 android_manifest = trichrome_webview_32_android_manifest
220 android_manifest_dep =
221 "//android_webview/nonembedded:trichrome_webview_32_manifest"
222 use_trichrome_library = true
223 is_64_bit_browser = false
224 include_64_bit_webview = false
228 deps = upstream_only_webview_deps
229 static_library_provider = "//chrome/android:trichrome_library_32_apk"
233 trichrome_webview_32_tmpl("trichrome_webview_32_apk") {
234 apk_name = "TrichromeWebView32"
235 uncompress_dex = true
238 if (enable_webview_bundles) {
239 trichrome_webview_32_tmpl("trichrome_webview_32_base_bundle_module") {
240 target_type = "android_app_bundle_module"
241 is_base_module = true
244 system_webview_bundle("trichrome_webview_32_bundle") {
245 base_module_target = ":trichrome_webview_32_base_bundle_module"
246 bundle_name = "TrichromeWebView32"
247 uncompress_dex = true
249 static_library_provider = "//chrome/android:trichrome_library_32_apk"
254 # The shared library used by standalone WebView.
255 template("libwebviewchromium_tmpl") {
256 shared_library(target_name) {
257 forward_variables_from(invoker, "*")
259 "//android_webview/lib",
260 "//android_webview/lib:webview_entry_point",
261 "//android_webview/nonembedded",
262 "//third_party/blink/public:blink",
264 configs -= [ "//build/config/android:hide_all_but_jni_onload" ]
265 configs += [ "//build/config/android:hide_all_but_jni" ]
269 libwebviewchromium_tmpl("libwebviewchromium") {
272 # This template is used to define WebView's alternate-ABI libraries, which are
273 # used by Monochrome and Trichrome on 64-bit devices which support both 32 and
274 # 64-bit ABIs. WebView's browser process must use the same ABI as the embedding
275 # app (renderer processes used the ABI defined in the WebView APK manifest),
276 # which requires us to have two copies of the library available, one for each
277 # ABI. The primary library is the one shared with Chrome, and the alternate is
278 # a WebView-specific library defined here for whichever ABI isn't used by
281 # Note that this library only includes code needed for the embedded usecase,
282 # as all non-embedded code uses the primary library.
283 template("webview_alternate_library") {
284 chrome_common_shared_library(target_name) {
285 forward_variables_from(invoker, "*")
287 "//android_webview/lib",
288 "//android_webview/lib:webview_entry_point",
294 if (defined(android_secondary_abi_toolchain)) {
295 # Note here that on a given system, the webview-only library needs the same
296 # library name as the browser library, since the system webview factory will
297 # differentiate only by ABI.
298 if (current_toolchain == android_secondary_abi_toolchain) {
299 # This target is the 32-bit WebView library that pairs with a 64-bit
300 # browser. It is suffixed with _64 because its name must match the 64-bit
302 webview_alternate_library("monochrome_64") {
305 # Inverse of above, for the original 32-bit case.
306 webview_alternate_library("monochrome") {
310 # 32-bit WebView library used in 32-bit only builds of 64/32 targets.
311 webview_alternate_library("monochrome_64") {
315 java_group("android_webview_no_weblayer_java") {
319 # This includes AwResource, which may be called via JNI. We're including it
320 # here because there's currently no good way to enforce that it gets included
321 # when it's depended on via JNI.
323 "//android_webview/glue:glue_java",
324 "//android_webview/nonembedded:nonembedded_java",
325 "//android_webview/support_library:support_lib_glue_java",
329 # Contains all Java dependencies used by WebView.
330 java_group("android_webview_java") {
331 deps = [ ":android_webview_no_weblayer_java" ]
333 if (webview_includes_weblayer) {
334 deps += [ "//weblayer/browser/java" ]
338 # An empty group included in //BUILD.gn to make this and other WebView build
339 # files reachable by GN.
340 group("empty_group") {
343 generate_jni("common_jni_headers") {
345 "java/src/org/chromium/android_webview/common/AwResource.java",
346 "java/src/org/chromium/android_webview/common/crash/AwCrashReporterClient.java",
350 generate_jni("browser_jni_headers") {
352 "java/src/org/chromium/android_webview/AndroidProtocolHandler.java",
353 "java/src/org/chromium/android_webview/AwAutofillClient.java",
354 "java/src/org/chromium/android_webview/AwBrowserContext.java",
355 "java/src/org/chromium/android_webview/AwBrowserProcess.java",
356 "java/src/org/chromium/android_webview/AwContents.java",
357 "java/src/org/chromium/android_webview/AwContentsBackgroundThreadClient.java",
358 "java/src/org/chromium/android_webview/AwContentsClientBridge.java",
359 "java/src/org/chromium/android_webview/AwContentsIoThreadClient.java",
360 "java/src/org/chromium/android_webview/AwContentsLifecycleNotifier.java",
361 "java/src/org/chromium/android_webview/AwContentsStatics.java",
362 "java/src/org/chromium/android_webview/AwCookieManager.java",
363 "java/src/org/chromium/android_webview/AwDebug.java",
364 "java/src/org/chromium/android_webview/AwDevToolsServer.java",
365 "java/src/org/chromium/android_webview/AwFeatureList.java",
366 "java/src/org/chromium/android_webview/AwFormDatabase.java",
367 "java/src/org/chromium/android_webview/AwHttpAuthHandler.java",
368 "java/src/org/chromium/android_webview/AwPacProcessor.java",
369 "java/src/org/chromium/android_webview/AwPdfExporter.java",
370 "java/src/org/chromium/android_webview/AwProxyController.java",
371 "java/src/org/chromium/android_webview/AwQuotaManagerBridge.java",
372 "java/src/org/chromium/android_webview/AwRenderProcess.java",
373 "java/src/org/chromium/android_webview/AwSettings.java",
374 "java/src/org/chromium/android_webview/AwTracingController.java",
375 "java/src/org/chromium/android_webview/AwWebContentsDelegate.java",
376 "java/src/org/chromium/android_webview/AwWebResourceInterceptResponse.java",
377 "java/src/org/chromium/android_webview/AwWebResourceResponse.java",
378 "java/src/org/chromium/android_webview/InputStreamUtil.java",
379 "java/src/org/chromium/android_webview/JsReplyProxy.java",
380 "java/src/org/chromium/android_webview/PopupTouchHandleDrawable.java",
381 "java/src/org/chromium/android_webview/VariationsSeedLoader.java",
382 "java/src/org/chromium/android_webview/WebMessageListenerHolder.java",
383 "java/src/org/chromium/android_webview/WebMessageListenerInfo.java",
384 "java/src/org/chromium/android_webview/gfx/AwDrawFnImpl.java",
385 "java/src/org/chromium/android_webview/gfx/AwGLFunctor.java",
386 "java/src/org/chromium/android_webview/gfx/AwPicture.java",
387 "java/src/org/chromium/android_webview/gfx/JavaBrowserViewRendererHelper.java",
388 "java/src/org/chromium/android_webview/gfx/RootBeginFrameSourceWebView.java",
389 "java/src/org/chromium/android_webview/metrics/AwMetricsServiceClient.java",
390 "java/src/org/chromium/android_webview/permission/AwPermissionRequest.java",
391 "java/src/org/chromium/android_webview/safe_browsing/AwSafeBrowsingConfigHelper.java",
394 deps = [ ":cancellation_signal_android_jar_jni_headers" ]
397 generate_jar_jni("cancellation_signal_android_jar_jni_headers") {
398 classes = [ "android/os/CancellationSignal.class" ]
401 android_library("browser_java") {
403 "java/src/org/chromium/android_webview/AndroidProtocolHandler.java",
404 "java/src/org/chromium/android_webview/AwActionModeCallback.java",
405 "java/src/org/chromium/android_webview/AwAutofillClient.java",
406 "java/src/org/chromium/android_webview/AwBrowserContext.java",
407 "java/src/org/chromium/android_webview/AwBrowserProcess.java",
408 "java/src/org/chromium/android_webview/AwConsoleMessage.java",
409 "java/src/org/chromium/android_webview/AwContents.java",
410 "java/src/org/chromium/android_webview/AwContentsBackgroundThreadClient.java",
411 "java/src/org/chromium/android_webview/AwContentsClient.java",
412 "java/src/org/chromium/android_webview/AwContentsClientBridge.java",
413 "java/src/org/chromium/android_webview/AwContentsClientCallbackHelper.java",
414 "java/src/org/chromium/android_webview/AwContentsIoThreadClient.java",
415 "java/src/org/chromium/android_webview/AwContentsLifecycleNotifier.java",
416 "java/src/org/chromium/android_webview/AwContentsStatics.java",
417 "java/src/org/chromium/android_webview/AwCookieManager.java",
418 "java/src/org/chromium/android_webview/AwDataDirLock.java",
419 "java/src/org/chromium/android_webview/AwDebug.java",
420 "java/src/org/chromium/android_webview/AwDevToolsServer.java",
421 "java/src/org/chromium/android_webview/AwFeatureList.java",
422 "java/src/org/chromium/android_webview/AwFormDatabase.java",
423 "java/src/org/chromium/android_webview/AwGeolocationPermissions.java",
424 "java/src/org/chromium/android_webview/AwHistogramRecorder.java",
425 "java/src/org/chromium/android_webview/AwHttpAuthHandler.java",
426 "java/src/org/chromium/android_webview/AwLayoutSizer.java",
427 "java/src/org/chromium/android_webview/AwNetworkChangeNotifierRegistrationPolicy.java",
428 "java/src/org/chromium/android_webview/AwPacProcessor.java",
429 "java/src/org/chromium/android_webview/AwPdfExporter.java",
430 "java/src/org/chromium/android_webview/AwPrintDocumentAdapter.java",
431 "java/src/org/chromium/android_webview/AwProxyController.java",
432 "java/src/org/chromium/android_webview/AwQuotaManagerBridge.java",
433 "java/src/org/chromium/android_webview/AwRenderProcess.java",
434 "java/src/org/chromium/android_webview/AwRenderProcessGoneDetail.java",
435 "java/src/org/chromium/android_webview/AwScrollOffsetManager.java",
436 "java/src/org/chromium/android_webview/AwServiceWorkerClient.java",
437 "java/src/org/chromium/android_webview/AwServiceWorkerController.java",
438 "java/src/org/chromium/android_webview/AwServiceWorkerSettings.java",
439 "java/src/org/chromium/android_webview/AwSettings.java",
440 "java/src/org/chromium/android_webview/AwSupportLibIsomorphic.java",
441 "java/src/org/chromium/android_webview/AwThreadUtils.java",
442 "java/src/org/chromium/android_webview/AwTracingController.java",
443 "java/src/org/chromium/android_webview/AwViewAndroidDelegate.java",
444 "java/src/org/chromium/android_webview/AwViewMethods.java",
445 "java/src/org/chromium/android_webview/AwWebContentsDelegate.java",
446 "java/src/org/chromium/android_webview/AwWebContentsDelegateAdapter.java",
447 "java/src/org/chromium/android_webview/AwWebContentsObserver.java",
448 "java/src/org/chromium/android_webview/AwWebResourceInterceptResponse.java",
449 "java/src/org/chromium/android_webview/AwWebResourceResponse.java",
450 "java/src/org/chromium/android_webview/AwZoomControls.java",
451 "java/src/org/chromium/android_webview/CleanupReference.java",
452 "java/src/org/chromium/android_webview/ClientCertLookupTable.java",
453 "java/src/org/chromium/android_webview/DefaultVideoPosterRequestHandler.java",
454 "java/src/org/chromium/android_webview/ErrorCodeConversionHelper.java",
455 "java/src/org/chromium/android_webview/FindAddress.java",
456 "java/src/org/chromium/android_webview/FullScreenView.java",
457 "java/src/org/chromium/android_webview/HttpAuthDatabase.java",
458 "java/src/org/chromium/android_webview/InputStreamUtil.java",
459 "java/src/org/chromium/android_webview/JsPromptResultReceiver.java",
460 "java/src/org/chromium/android_webview/JsReplyProxy.java",
461 "java/src/org/chromium/android_webview/JsResultHandler.java",
462 "java/src/org/chromium/android_webview/JsResultReceiver.java",
463 "java/src/org/chromium/android_webview/NullAwViewMethods.java",
464 "java/src/org/chromium/android_webview/OverScrollGlow.java",
465 "java/src/org/chromium/android_webview/PopupTouchHandleDrawable.java",
466 "java/src/org/chromium/android_webview/ScriptReference.java",
467 "java/src/org/chromium/android_webview/ScrollAccessibilityHelper.java",
468 "java/src/org/chromium/android_webview/SslUtil.java",
469 "java/src/org/chromium/android_webview/VariationsSeedLoader.java",
470 "java/src/org/chromium/android_webview/ViewPositionObserver.java",
471 "java/src/org/chromium/android_webview/WebMessageListener.java",
472 "java/src/org/chromium/android_webview/WebMessageListenerHolder.java",
473 "java/src/org/chromium/android_webview/WebMessageListenerInfo.java",
474 "java/src/org/chromium/android_webview/WebViewChromiumRunQueue.java",
475 "java/src/org/chromium/android_webview/gfx/AwDrawFnImpl.java",
476 "java/src/org/chromium/android_webview/gfx/AwFunctor.java",
477 "java/src/org/chromium/android_webview/gfx/AwGLFunctor.java",
478 "java/src/org/chromium/android_webview/gfx/AwPicture.java",
479 "java/src/org/chromium/android_webview/gfx/JavaBrowserViewRendererHelper.java",
480 "java/src/org/chromium/android_webview/gfx/RootBeginFrameSourceWebView.java",
481 "java/src/org/chromium/android_webview/metrics/AwMetricsServiceClient.java",
482 "java/src/org/chromium/android_webview/metrics/AwNonembeddedUmaReplayer.java",
483 "java/src/org/chromium/android_webview/permission/AwGeolocationCallback.java",
484 "java/src/org/chromium/android_webview/permission/AwPermissionRequest.java",
485 "java/src/org/chromium/android_webview/policy/AwPolicyProvider.java",
486 "java/src/org/chromium/android_webview/safe_browsing/AwSafeBrowsingConfigHelper.java",
487 "java/src/org/chromium/android_webview/safe_browsing/AwSafeBrowsingConversionHelper.java",
488 "java/src/org/chromium/android_webview/safe_browsing/AwSafeBrowsingResponse.java",
492 ":common_crash_java",
494 ":common_platform_services_java",
495 ":common_variations_java",
497 "//android_webview/nonembedded:system_webview_manifest",
498 "//android_webview/proto:metrics_bridge_records_proto_java",
501 "//components/autofill/android:autofill_java",
502 "//components/autofill/android/provider:java",
503 "//components/background_task_scheduler:background_task_scheduler_task_ids_java",
504 "//components/content_capture/android:java",
505 "//components/crash/android:handler_java",
506 "//components/crash/android:java",
507 "//components/embedder_support/android:util_java",
508 "//components/embedder_support/android:web_contents_delegate_java",
509 "//components/embedder_support/android/metrics:java",
510 "//components/minidump_uploader:minidump_uploader_java",
511 "//components/navigation_interception/android:navigation_interception_java",
512 "//components/policy/android:policy_java",
513 "//components/safe_browsing/android:safe_browsing_java",
514 "//components/variations:load_seed_result_enum_java",
515 "//components/variations/android:variations_java",
516 "//components/version_info/android:version_constants_java",
517 "//components/viz/common:common_java",
518 "//components/viz/service:service_java",
519 "//content/public/android:content_java",
520 "//device/gamepad:java",
521 "//mojo/public/java:system_java",
522 "//mojo/public/java/system:system_impl_java",
523 "//net/android:net_java",
524 "//services/network/public/mojom:mojom_java",
525 "//third_party/android_deps:androidx_annotation_annotation_java",
526 "//third_party/android_deps:com_google_protobuf_protobuf_javalite_java",
527 "//third_party/blink/public:blink_headers_java",
528 "//ui/android:ui_java",
531 annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
533 if (enable_spellcheck) {
534 deps += [ "//components/spellcheck/browser/android:java" ]
538 "//android_webview/browser:browser_enums",
539 "//components/safe_browsing/core/db:sb_threat_values",
543 android_library("common_variations_java") {
545 "java/src/org/chromium/android_webview/common/variations/VariationsServiceMetricsHelper.java",
546 "java/src/org/chromium/android_webview/common/variations/VariationsUtils.java",
549 "//android_webview/proto:aw_variations_seed_proto_java",
551 "//components/variations/android:variations_java",
552 "//third_party/android_deps:com_google_protobuf_protobuf_javalite_java",
556 # Separate target to allow for a dependency on GmsCore without pulling in all of
557 # android_webview_java. It compiles the abstract class; implementations are
558 # compiled separately.
559 android_library("common_platform_services_java") {
561 "java/src/org/chromium/android_webview/common/PlatformServiceBridge.java",
562 "java/src/org/chromium/android_webview/common/PlatformServiceBridgeImpl.java",
567 "//components/embedder_support/android/metrics:java",
568 "//third_party/android_deps:androidx_annotation_annotation_java",
571 # The appropriate .class file will be loaded via a dependency to a library
572 # like :platform_service_bridge_upstream_implementation_java below. We only include the
573 # .java file because other files in the target depend on it.
574 jar_excluded_patterns = [ "*/PlatformServiceBridgeImpl.class" ]
577 # This target compiles the implementation of PlatformServiceBridge for AOSP targets.
578 android_library("platform_service_bridge_upstream_implementation_java") {
579 sources = [ "java/src/org/chromium/android_webview/common/PlatformServiceBridgeImpl.java" ]
580 deps = [ ":common_platform_services_java" ]
583 android_library("common_crash_java") {
585 "java/src/org/chromium/android_webview/common/crash/AwCrashReporterClient.java",
586 "java/src/org/chromium/android_webview/common/crash/CrashInfo.java",
587 "java/src/org/chromium/android_webview/common/crash/CrashUploadUtil.java",
588 "java/src/org/chromium/android_webview/common/crash/SystemWideCrashDirectories.java",
595 "//components/background_task_scheduler:background_task_scheduler_task_ids_java",
596 "//components/minidump_uploader:minidump_uploader_java",
598 annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
601 android_library("common_java") {
603 "java/src/org/chromium/android_webview/common/AwFeatures.java",
604 "java/src/org/chromium/android_webview/common/AwResource.java",
605 "java/src/org/chromium/android_webview/common/AwSwitches.java",
606 "java/src/org/chromium/android_webview/common/CommandLineUtil.java",
607 "java/src/org/chromium/android_webview/common/DeveloperModeUtils.java",
608 "java/src/org/chromium/android_webview/common/Flag.java",
609 "java/src/org/chromium/android_webview/common/FlagOverrideHelper.java",
610 "java/src/org/chromium/android_webview/common/ProductionSupportedFlagList.java",
611 "java/src/org/chromium/android_webview/common/services/ServiceNames.java",
615 "//components/metrics:metrics_java",
616 "//third_party/android_deps:androidx_annotation_annotation_java",
620 android_aidl("common_aidl") {
621 import_include = [ "java/src" ]
623 "java/src/org/chromium/android_webview/common/services/ICrashReceiverService.aidl",
624 "java/src/org/chromium/android_webview/common/services/IDeveloperUiService.aidl",
625 "java/src/org/chromium/android_webview/common/services/IMetricsBridgeService.aidl",
626 "java/src/org/chromium/android_webview/common/services/IVariationsSeedServer.aidl",
627 "java/src/org/chromium/android_webview/common/services/IVariationsSeedServerCallback.aidl",
631 android_library("common_aidl_java") {
632 srcjar_deps = [ ":common_aidl" ]
635 # Generate ProductConfig.java so that android_webview_product_config_java's
636 # compile step works.
637 generate_product_config_srcjar("webview_product_config") {
638 java_package = webview_product_config_java_package
641 # ProductConfig.java is excluded from the generated .jar
642 # (via. jar_excluded_patterns) and the final version is inserted at the APK
643 # level - with the list of pak locales populated by looking at the assets that
644 # are listed in the final APK's .build_config.
645 android_library("android_webview_product_config_java") {
646 sources = [ "java/src/org/chromium/android_webview/AwLocaleConfig.java" ]
647 srcjar_deps = [ ":webview_product_config" ]
648 jar_excluded_patterns = [ "*/ProductConfig.class" ]
651 if (enable_resource_whitelist_generation) {
652 libwebviewchromium_tmpl("system_webview_pak_whitelist_inputs") {
653 ldflags = [ "--collect-inputs-only" ]
655 generate_resource_whitelist("system_webview_pak_whitelist") {
656 deps = [ ":system_webview_pak_whitelist_inputs" ]
657 inputs = [ "$root_out_dir/lib.unstripped/libsystem_webview_pak_whitelist_inputs$shlib_extension" ]
658 output = system_webview_pak_whitelist
662 webview_repack_locales("repack_locales") {
663 input_locales = locales
664 output_locales = locales
666 if (enable_resource_whitelist_generation) {
667 repack_whitelist = system_webview_pak_whitelist
668 deps = [ ":system_webview_pak_whitelist" ]
672 android_assets("locale_pak_assets") {
673 disable_compression = true
674 renaming_sources = []
675 renaming_destinations = []
676 foreach(_locale, locales) {
677 renaming_sources += [ "$root_out_dir/android_webview/locales/$_locale.pak" ]
678 renaming_destinations += [ "stored-locales/$_locale.pak" ]
680 treat_as_locale_paks = true
681 deps = [ ":repack_locales" ]
684 repack("repack_pack") {
686 "$root_gen_dir/content/content_resources.pak",
687 "$root_gen_dir/net/net_resources.pak",
688 "$root_gen_dir/third_party/blink/public/resources/blink_resources.pak",
689 "$target_gen_dir/aw_resources.pak",
690 "$target_gen_dir/components_resources.pak",
691 "$target_gen_dir/mojo_bindings_resources.pak",
692 "$target_gen_dir/webui_resources.pak",
695 ":generate_aw_resources",
696 ":generate_components_resources",
697 ":generate_mojo_resources",
698 ":generate_webui_resources",
699 "//content:content_resources",
700 "//net:net_resources",
701 "//third_party/blink/public:resources",
703 output = "$target_gen_dir/resources.pak"
705 if (enable_resource_whitelist_generation) {
706 repack_whitelist = system_webview_pak_whitelist
707 deps += [ ":system_webview_pak_whitelist" ]
710 if (webview_includes_weblayer) {
711 sources += [ "$root_gen_dir/weblayer/weblayer_resources.pak" ]
712 deps += [ "//weblayer:resources" ]
716 repack("repack_100_percent") {
718 "$root_gen_dir/content/app/resources/content_resources_100_percent.pak",
719 "$root_gen_dir/third_party/blink/public/resources/blink_scaled_resources_100_percent.pak",
720 "$root_gen_dir/ui/resources/ui_resources_100_percent.pak",
723 "//content/app/resources",
724 "//third_party/blink/public:scaled_resources_100_percent",
727 output = "$target_gen_dir/chrome_100_percent.pak"
729 if (enable_resource_whitelist_generation) {
730 repack_whitelist = system_webview_pak_whitelist
731 deps += [ ":system_webview_pak_whitelist" ]
733 if (webview_includes_weblayer) {
734 sources += [ "$target_gen_dir/components_resources_100_percent.pak" ]
735 deps += [ ":generate_components_scaled_resources" ]
739 android_assets("pak_file_assets") {
741 "$target_gen_dir/chrome_100_percent.pak",
742 "$target_gen_dir/resources.pak",
745 ":repack_100_percent",
748 disable_compression = true
751 if (android_64bit_target_cpu) {
752 android_assets("v8_snapshot_secondary_abi_assets") {
753 _secondary_abi_out_dir =
754 get_label_info("//v8($android_secondary_abi_toolchain)", "root_out_dir")
755 assert(android_64bit_target_cpu,
756 "32-bit targets shouldn't have secondary abi")
758 if (use_v8_context_snapshot) {
759 renaming_sources = [ "$_secondary_abi_out_dir/v8_context_snapshot.bin" ]
760 renaming_destinations = [ "v8_context_snapshot_$arch_suffix.bin" ]
762 renaming_sources = [ "$_secondary_abi_out_dir/snapshot_blob.bin" ]
763 renaming_destinations = [ "snapshot_blob_$arch_suffix.bin" ]
765 disable_compression = true
767 "//tools/v8_context_snapshot($android_secondary_abi_toolchain)",
768 "//v8($android_secondary_abi_toolchain)",
773 android_assets("webview_primary_abi_assets") {
774 if (use_v8_context_snapshot) {
775 deps = [ "//tools/v8_context_snapshot:v8_context_snapshot_assets" ]
777 deps = [ "//v8:v8_external_startup_data_assets" ]
781 android_assets("monochrome_webview_primary_abi_assets") {
782 deps = [ "//third_party/icu:icu_assets" ]
783 if (use_v8_context_snapshot) {
784 deps += [ "//tools/v8_context_snapshot:v8_context_snapshot_assets" ]
786 deps += [ "//v8:v8_external_startup_data_assets" ]
790 if (android_64bit_target_cpu) {
791 android_assets("webview_secondary_abi_assets") {
792 deps = [ ":v8_snapshot_secondary_abi_assets" ]
795 android_assets("monochrome_webview_secondary_abi_assets") {
796 deps = [ "//third_party/icu:icu_assets" ]
797 deps += [ ":v8_snapshot_secondary_abi_assets" ]
801 android_assets("weblayer_webview_assets") {
803 ":webview_primary_abi_assets",
804 "//third_party/icu:icu_assets",
806 if (android_64bit_target_cpu) {
807 deps += [ ":webview_secondary_abi_assets" ]
811 android_assets("stub_assets") {
812 renaming_sources = [ "$root_gen_dir/components/resources/about_credits.html" ]
813 renaming_destinations = [ "webview_licenses.notice" ]
814 deps = [ "//components/resources:about_credits" ]
817 android_resources("resources") {
819 "java/res/drawable-hdpi/ic_play_circle_outline_black_48dp.png",
820 "java/res/drawable-mdpi/ic_play_circle_outline_black_48dp.png",
821 "java/res/drawable-xhdpi/ic_play_circle_outline_black_48dp.png",
822 "java/res/drawable-xxhdpi/ic_play_circle_outline_black_48dp.png",
823 "java/res/drawable-xxxhdpi/ic_play_circle_outline_black_48dp.png",
825 custom_package = "org.chromium.android_webview"
826 deps = [ ":strings_grd" ]
829 grit("generate_aw_resources") {
830 source = "ui/aw_resources.grd"
832 "grit/aw_resources.h",
837 grit("generate_aw_strings") {
838 source = "ui/aw_strings.grd"
839 outputs = [ "grit/aw_strings.h" ]
840 foreach(_locale, locales) {
841 outputs += [ "aw_strings_${_locale}.pak" ]
845 grit("generate_webui_resources") {
846 source = "../ui/webui/resources/webui_resources.grd"
848 # webui/resources has way too many resources. The allowlist is trim this down
849 # to a reasonable size
850 _allowlist = "ui/grit_resources_allowlist.txt"
851 inputs = [ _allowlist ]
854 rebase_path(_allowlist, root_build_dir),
856 "root_gen_dir=" + rebase_path(root_gen_dir, root_build_dir),
859 "grit/webui_resources.h",
860 "grit/webui_resources_map.cc",
861 "grit/webui_resources_map.h",
862 "webui_resources.pak",
865 "//ui/webui/resources/js:modulize",
866 "//ui/webui/resources/js/cr:modulize",
867 "//ui/webui/resources/js/cr/ui:modulize",
871 grit("generate_mojo_resources") {
872 source = "../mojo/public/js/mojo_bindings_resources.grd"
874 # See :generate_webui_resources for an explanation of the allowlist
875 _allowlist = "ui/grit_resources_allowlist.txt"
876 inputs = [ _allowlist ]
879 rebase_path(_allowlist, root_build_dir),
881 "root_gen_dir=" + rebase_path(root_gen_dir, root_build_dir),
884 "grit/mojo_bindings_resources.h",
885 "grit/mojo_bindings_resources_map.cc",
886 "grit/mojo_bindings_resources_map.h",
887 "mojo_bindings_resources.pak",
890 "//mojo/public/js:bindings_lite",
891 "//mojo/public/mojom/base:base_js",
895 action("concatenate_resources_allowlists") {
896 script = "//mojo/public/tools/bindings/concatenate-files.py"
897 inputs = [ "//android_webview/ui/grit_resources_allowlist.txt" ]
899 if (webview_includes_weblayer) {
900 inputs += [ "//weblayer/grit_resources_allowlist.txt" ]
903 outputs = [ "$target_gen_dir/grit_resources_allowlist.txt" ]
905 rebase_path(inputs, root_build_dir) + rebase_path(outputs, root_build_dir)
908 grit("generate_components_resources") {
909 # Note that dev_ui_components_resources.grd is Chrome-only, so excluded.
910 source = "../components/resources/components_resources.grd"
914 # See :generate_webui_resources for an explanation of the allowlist
915 _allowlist = rebase_path("$target_gen_dir/grit_resources_allowlist.txt",
917 _about_credits_file = get_label_info("//components/resources",
918 "target_gen_dir") + "/about_credits.html"
924 "about_credits_file=" + rebase_path(_about_credits_file, root_build_dir),
926 "root_gen_dir=" + rebase_path(root_gen_dir, root_build_dir),
929 "grit/components_resources.h",
930 "components_resources.pak",
934 ":concatenate_resources_allowlists",
935 "//components/resources:about_credits",
936 "//components/resources/ssl/ssl_error_assistant:make_ssl_error_assistant_protobuf",
940 grit("generate_components_scaled_resources") {
941 source = "../components/resources/components_scaled_resources.grd"
943 # See :generate_webui_resources for an explanation of the allowlist
944 _allowlist = rebase_path("$target_gen_dir/grit_resources_allowlist.txt",
952 "grit/components_scaled_resources.h",
953 "grit/components_scaled_resources_map.cc",
954 "grit/components_scaled_resources_map.h",
955 "components_resources_100_percent.pak",
956 "components_resources_200_percent.pak",
957 "components_resources_300_percent.pak",
960 deps = [ ":concatenate_resources_allowlists" ]
963 grit("generate_components_strings") {
964 source = "../components/components_strings.grd"
966 # components_strings contains strings from all components. WebView
967 # will never display most of them, so we try to limit the included
968 # strings. This allowlist trims about 50% more than the compile-based
969 # allowlist generated by :system_webview_pak_whitelist.
970 _allowlist = rebase_path("ui/grit_strings_allowlist.txt", root_build_dir)
971 inputs = [ "//android_webview/ui/grit_strings_allowlist.txt" ]
978 "grit/components_strings.h",
979 "java/res/values/components_strings.xml",
981 process_file_template(
982 android_bundle_locales_as_resources,
983 [ "java/res/values-{{source_name_part}}/components_strings.xml" ]) +
984 process_file_template(locales_with_fake_bidi,
985 [ "components_strings_{{source_name_part}}.pak" ])
988 java_strings_grd("strings_grd") {
989 grd_file = "java/strings/android_webview_strings.grd"
990 outputs = [ "values/android_webview_strings.xml" ] +
991 process_file_template(
992 android_bundle_locales_as_resources,
993 [ "values-{{source_name_part}}/android_webview_strings.xml" ])