diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-07-16 11:45:35 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-07-17 08:59:23 +0000 |
commit | 552906b0f222c5d5dd11b9fd73829d510980461a (patch) | |
tree | 3a11e6ed0538a81dd83b20cf3a4783e297f26d91 /chromium/android_webview | |
parent | 1b05827804eaf047779b597718c03e7d38344261 (diff) | |
download | qtwebengine-chromium-552906b0f222c5d5dd11b9fd73829d510980461a.tar.gz |
BASELINE: Update Chromium to 83.0.4103.122
Change-Id: Ie3a82f5bb0076eec2a7c6a6162326b4301ee291e
Reviewed-by: Michael BrĂ¼ning <michael.bruning@qt.io>
Diffstat (limited to 'chromium/android_webview')
23 files changed, 720 insertions, 379 deletions
diff --git a/chromium/android_webview/BUILD.gn b/chromium/android_webview/BUILD.gn index 153f6c0a2ad..93b9fb2c0e9 100644 --- a/chromium/android_webview/BUILD.gn +++ b/chromium/android_webview/BUILD.gn @@ -3,6 +3,7 @@ # found in the LICENSE file. import("//android_webview/system_webview_apk_tmpl.gni") +import("//android_webview/system_webview_bundle.gni") import("//android_webview/variables.gni") import("//android_webview/webview_repack_locales.gni") import("//build/android/resource_sizes.gni") @@ -23,63 +24,192 @@ if (enable_resource_whitelist_generation) { "$target_gen_dir/system_webview_pak_whitelist.txt" } -if (public_android_sdk) { +if (define_upstream_webview_targets) { + template("standalone_system_webview_apk_tmpl") { + system_webview_apk_or_module_tmpl(target_name) { + forward_variables_from(invoker, "*") + android_manifest = system_webview_android_manifest + android_manifest_dep = + "//android_webview/nonembedded:system_webview_manifest" + deps = upstream_only_webview_deps + min_sdk_version = 21 + } + } + # Standalone WebView APK. - system_webview_apk_tmpl("system_webview_apk") { - android_manifest = system_webview_android_manifest - android_manifest_dep = - "//android_webview/nonembedded:system_webview_manifest" - deps = upstream_only_webview_deps + standalone_system_webview_apk_tmpl("system_webview_apk") { apk_name = "SystemWebView" - min_sdk_version = 21 + } + + # This version of the WebView APK doesn't include WebLayer java and resources. + # It's used to define the whitelist of resources to be pulled out of language + # splits. See |shared_resources_allowlist_target|. + standalone_system_webview_apk_tmpl("system_webview_no_weblayer_apk") { + exclude_weblayer_java = true + apk_name = "SystemWebViewNoWebLayer" + } + + if (enable_webview_bundles) { + standalone_system_webview_apk_tmpl("system_webview_base_bundle_module") { + target_type = "android_app_bundle_module" + is_base_module = true + } + + system_webview_bundle("system_webview_bundle") { + base_module_target = ":system_webview_base_bundle_module" + bundle_name = "SystemWebView" + min_sdk_version = 21 + } + } + + if (android_64bit_target_cpu) { + # These targets builds a 32-bit only Webview on a 64-bit config, analogous + # to what's built on a 32-bit config. This lets all Webviews build on a + # single configuration. + standalone_system_webview_apk_tmpl("system_webview_32_apk") { + apk_name = "SystemWebView32" + include_64_bit_webview = false + } + + if (enable_webview_bundles) { + standalone_system_webview_apk_tmpl( + "system_webview_32_base_bundle_module") { + target_type = "android_app_bundle_module" + include_64_bit_webview = false + is_base_module = true + } + + system_webview_bundle("system_webview_32_bundle") { + base_module_target = ":system_webview_32_base_bundle_module" + bundle_name = "SystemWebView32" + include_64_bit_webview = false + min_sdk_version = 21 + } + } } android_resource_sizes_test("resource_sizes_system_webview_apk") { apk_name = "SystemWebView" - data_deps = [ - ":system_webview_apk", - ] + data_deps = [ ":system_webview_apk" ] } # Trichrome WebView APK. - system_webview_apk_tmpl("trichrome_webview_apk") { - android_manifest = trichrome_webview_android_manifest - android_manifest_dep = - "//android_webview/nonembedded:trichrome_webview_manifest" - min_sdk_version = 29 + template("trichrome_webview_tmpl") { + system_webview_apk_or_module_tmpl(target_name) { + forward_variables_from(invoker, "*") + android_manifest = trichrome_webview_android_manifest + android_manifest_dep = + "//android_webview/nonembedded:trichrome_webview_manifest" + min_sdk_version = 29 - deps = upstream_only_webview_deps - apk_name = "TrichromeWebView" - use_trichrome_library = true + deps = upstream_only_webview_deps + use_trichrome_library = true - if (android_64bit_target_cpu) { - is_64_bit_browser = false - include_64_bit_webview = true + if (android_64bit_target_cpu) { + is_64_bit_browser = false + include_64_bit_webview = true + } + static_library_provider = "//chrome/android:trichrome_library_apk" } + } + trichrome_webview_tmpl("trichrome_webview_apk") { + apk_name = "TrichromeWebView" uncompress_dex = true - if (trichrome_synchronized_proguard) { + if (!is_java_debug) { + static_library_synchronized_proguard = trichrome_synchronized_proguard + } + } + + if (enable_webview_bundles) { + trichrome_webview_tmpl("trichrome_webview_base_bundle_module") { + target_type = "android_app_bundle_module" + is_base_module = true + } + + system_webview_bundle("trichrome_webview_bundle") { + base_module_target = ":trichrome_webview_base_bundle_module" + bundle_name = "TrichromeWebView" + uncompress_dex = true + min_sdk_version = 29 static_library_provider = "//chrome/android:trichrome_library_apk" } } # Trichrome WebView APK for a 64-bit Chrome. if (android_64bit_target_cpu) { - system_webview_apk_tmpl("trichrome_webview_64_32_apk") { - android_manifest = trichrome_webview_64_32_android_manifest - android_manifest_dep = - "//android_webview/nonembedded:trichrome_webview_64_32_manifest" - use_trichrome_library = true - is_64_bit_browser = true - include_32_bit_webview = true - - min_sdk_version = 29 + template("trichrome_webview_64_32_tmpl") { + system_webview_apk_or_module_tmpl(target_name) { + forward_variables_from(invoker, "*") + android_manifest = trichrome_webview_64_32_android_manifest + android_manifest_dep = + "//android_webview/nonembedded:trichrome_webview_64_32_manifest" + use_trichrome_library = true + is_64_bit_browser = true + include_32_bit_webview = true + + min_sdk_version = 29 + + deps = upstream_only_webview_deps + static_library_provider = "//chrome/android:trichrome_library_64_32_apk" + } + } - deps = upstream_only_webview_deps + trichrome_webview_64_32_tmpl("trichrome_webview_64_32_apk") { apk_name = "TrichromeWebView6432" uncompress_dex = true - if (trichrome_synchronized_proguard) { - static_library_provider = "//chrome/android:trichrome_library_apk" + } + + if (enable_webview_bundles) { + trichrome_webview_64_32_tmpl( + "trichrome_webview_64_32_base_bundle_module") { + target_type = "android_app_bundle_module" + is_base_module = true + } + + system_webview_bundle("trichrome_webview_64_32_bundle") { + base_module_target = ":trichrome_webview_64_32_base_bundle_module" + bundle_name = "TrichromeWebView6432" + uncompress_dex = true + min_sdk_version = 29 + static_library_provider = "//chrome/android:trichrome_library_64_32_apk" + } + } + + template("trichrome_webview_32_tmpl") { + system_webview_apk_or_module_tmpl(target_name) { + forward_variables_from(invoker, "*") + android_manifest = trichrome_webview_32_android_manifest + android_manifest_dep = + "//android_webview/nonembedded:trichrome_webview_32_manifest" + use_trichrome_library = true + is_64_bit_browser = false + include_64_bit_webview = false + + min_sdk_version = 29 + + deps = upstream_only_webview_deps + static_library_provider = "//chrome/android:trichrome_library_32_apk" + } + } + + trichrome_webview_32_tmpl("trichrome_webview_32_apk") { + apk_name = "TrichromeWebView32" + uncompress_dex = true + } + + if (enable_webview_bundles) { + trichrome_webview_32_tmpl("trichrome_webview_32_base_bundle_module") { + target_type = "android_app_bundle_module" + is_base_module = true + } + + system_webview_bundle("trichrome_webview_32_bundle") { + base_module_target = ":trichrome_webview_32_base_bundle_module" + bundle_name = "TrichromeWebView32" + uncompress_dex = true + min_sdk_version = 29 + static_library_provider = "//chrome/android:trichrome_library_32_apk" } } } @@ -139,11 +269,7 @@ if (defined(android_secondary_abi_toolchain)) { } } -# Contains all Java dependencies used by WebView. -# TODO(crbug.com/934152): Rename this to android_webview_java. It has a -# temporary name because GN doesn't allow the direction -# of existing dependencies to be reversed. -java_group("android_webview_step1_java") { +java_group("android_webview_no_weblayer_java") { deps = [ ":browser_java", @@ -155,6 +281,11 @@ java_group("android_webview_step1_java") { "//android_webview/nonembedded:nonembedded_java", "//android_webview/support_library:support_lib_glue_java", ] +} + +# Contains all Java dependencies used by WebView. +java_group("android_webview_java") { + deps = [ ":android_webview_no_weblayer_java" ] if (webview_includes_weblayer) { deps += [ @@ -194,6 +325,7 @@ generate_jni("browser_jni_headers") { "java/src/org/chromium/android_webview/AwFeatureList.java", "java/src/org/chromium/android_webview/AwFormDatabase.java", "java/src/org/chromium/android_webview/AwHttpAuthHandler.java", + "java/src/org/chromium/android_webview/AwPacProcessor.java", "java/src/org/chromium/android_webview/AwPdfExporter.java", "java/src/org/chromium/android_webview/AwProxyController.java", "java/src/org/chromium/android_webview/AwQuotaManagerBridge.java", @@ -208,18 +340,18 @@ generate_jni("browser_jni_headers") { "java/src/org/chromium/android_webview/JsReplyProxy.java", "java/src/org/chromium/android_webview/PopupTouchHandleDrawable.java", "java/src/org/chromium/android_webview/WebMessageListenerHolder.java", + "java/src/org/chromium/android_webview/WebMessageListenerInfo.java", "java/src/org/chromium/android_webview/gfx/AwDrawFnImpl.java", "java/src/org/chromium/android_webview/gfx/AwGLFunctor.java", "java/src/org/chromium/android_webview/gfx/AwPicture.java", "java/src/org/chromium/android_webview/gfx/JavaBrowserViewRendererHelper.java", - "java/src/org/chromium/android_webview/metrics/AwMetricsLogUploader.java", + "java/src/org/chromium/android_webview/gfx/RootBeginFrameSourceWebView.java", "java/src/org/chromium/android_webview/metrics/AwMetricsServiceClient.java", "java/src/org/chromium/android_webview/permission/AwPermissionRequest.java", + "java/src/org/chromium/android_webview/safe_browsing/AwSafeBrowsingConfigHelper.java", ] - deps = [ - ":cancellation_signal_android_jar_jni_headers", - ] + deps = [ ":cancellation_signal_android_jar_jni_headers" ] } generate_jar_jni("cancellation_signal_android_jar_jni_headers") { @@ -227,14 +359,10 @@ generate_jar_jni("cancellation_signal_android_jar_jni_headers") { } android_library("browser_java") { - java_files = [ + sources = [ "java/src/org/chromium/android_webview/AndroidProtocolHandler.java", - "java/src/org/chromium/android_webview/AutofillActionModeCallback.java", "java/src/org/chromium/android_webview/AwActionModeCallback.java", "java/src/org/chromium/android_webview/AwAutofillClient.java", - "java/src/org/chromium/android_webview/AwAutofillManager.java", - "java/src/org/chromium/android_webview/AwAutofillProvider.java", - "java/src/org/chromium/android_webview/AwAutofillUMA.java", "java/src/org/chromium/android_webview/AwBrowserContext.java", "java/src/org/chromium/android_webview/AwBrowserProcess.java", "java/src/org/chromium/android_webview/AwConsoleMessage.java", @@ -247,10 +375,11 @@ android_library("browser_java") { "java/src/org/chromium/android_webview/AwContentsLifecycleNotifier.java", "java/src/org/chromium/android_webview/AwContentsStatics.java", "java/src/org/chromium/android_webview/AwCookieManager.java", + "java/src/org/chromium/android_webview/AwDataDirLock.java", "java/src/org/chromium/android_webview/AwDebug.java", "java/src/org/chromium/android_webview/AwDevToolsServer.java", - "java/src/org/chromium/android_webview/AwFeatures.java", "java/src/org/chromium/android_webview/AwFeatureList.java", + "java/src/org/chromium/android_webview/AwFeatures.java", "java/src/org/chromium/android_webview/AwFirebaseConfig.java", "java/src/org/chromium/android_webview/AwFormDatabase.java", "java/src/org/chromium/android_webview/AwGeolocationPermissions.java", @@ -258,6 +387,7 @@ android_library("browser_java") { "java/src/org/chromium/android_webview/AwHttpAuthHandler.java", "java/src/org/chromium/android_webview/AwLayoutSizer.java", "java/src/org/chromium/android_webview/AwNetworkChangeNotifierRegistrationPolicy.java", + "java/src/org/chromium/android_webview/AwPacProcessor.java", "java/src/org/chromium/android_webview/AwPdfExporter.java", "java/src/org/chromium/android_webview/AwPrintDocumentAdapter.java", "java/src/org/chromium/android_webview/AwProxyController.java", @@ -270,7 +400,6 @@ android_library("browser_java") { "java/src/org/chromium/android_webview/AwServiceWorkerSettings.java", "java/src/org/chromium/android_webview/AwSettings.java", "java/src/org/chromium/android_webview/AwSupportLibIsomorphic.java", - "java/src/org/chromium/android_webview/AwSwitches.java", "java/src/org/chromium/android_webview/AwTracingController.java", "java/src/org/chromium/android_webview/AwVariationsSeedBridge.java", "java/src/org/chromium/android_webview/AwViewAndroidDelegate.java", @@ -302,28 +431,28 @@ android_library("browser_java") { "java/src/org/chromium/android_webview/ViewPositionObserver.java", "java/src/org/chromium/android_webview/WebMessageListener.java", "java/src/org/chromium/android_webview/WebMessageListenerHolder.java", + "java/src/org/chromium/android_webview/WebMessageListenerInfo.java", "java/src/org/chromium/android_webview/WebViewChromiumRunQueue.java", "java/src/org/chromium/android_webview/gfx/AwDrawFnImpl.java", "java/src/org/chromium/android_webview/gfx/AwFunctor.java", "java/src/org/chromium/android_webview/gfx/AwGLFunctor.java", "java/src/org/chromium/android_webview/gfx/AwPicture.java", "java/src/org/chromium/android_webview/gfx/JavaBrowserViewRendererHelper.java", - "java/src/org/chromium/android_webview/metrics/AwMetricsLogUploader.java", + "java/src/org/chromium/android_webview/gfx/RootBeginFrameSourceWebView.java", "java/src/org/chromium/android_webview/metrics/AwMetricsServiceClient.java", - "java/src/org/chromium/android_webview/safe_browsing/AwSafeBrowsingConfigHelper.java", - "java/src/org/chromium/android_webview/safe_browsing/AwSafeBrowsingConversionHelper.java", - "java/src/org/chromium/android_webview/safe_browsing/AwSafeBrowsingResponse.java", "java/src/org/chromium/android_webview/permission/AwGeolocationCallback.java", "java/src/org/chromium/android_webview/permission/AwPermissionRequest.java", "java/src/org/chromium/android_webview/policy/AwPolicyProvider.java", + "java/src/org/chromium/android_webview/safe_browsing/AwSafeBrowsingConfigHelper.java", + "java/src/org/chromium/android_webview/safe_browsing/AwSafeBrowsingConversionHelper.java", + "java/src/org/chromium/android_webview/safe_browsing/AwSafeBrowsingResponse.java", ] deps = [ ":common_aidl_java", - ":common_commandline_java", ":common_crash_java", ":common_java", ":common_platform_services_java", - ":common_variations_utils_java", + ":common_variations_java", ":resources", "//android_webview/nonembedded:system_webview_manifest", "//base:base_java", @@ -334,7 +463,9 @@ android_library("browser_java") { "//components/content_capture/android:java", "//components/crash/android:handler_java", "//components/crash/android:java", + "//components/embedder_support/android:util_java", "//components/embedder_support/android:web_contents_delegate_java", + "//components/embedder_support/android/metrics:java", "//components/minidump_uploader:minidump_uploader_java", "//components/navigation_interception/android:navigation_interception_java", "//components/policy/android:policy_java", @@ -352,6 +483,7 @@ android_library("browser_java") { "//third_party/android_deps:androidx_annotation_annotation_java", "//third_party/blink/public:blink_headers_java", "//ui/android:ui_java", + "//url:gurl_java", ] annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ] @@ -361,20 +493,23 @@ android_library("browser_java") { srcjar_deps = [ "//android_webview/browser:browser_enums", - "//components/safe_browsing/db:sb_threat_values", + "//components/safe_browsing/core/db:sb_threat_values", ] android_manifest_for_lint = system_webview_android_manifest min_sdk_version = 21 } -android_library("common_variations_utils_java") { - java_files = [ "java/src/org/chromium/android_webview/common/variations/VariationsUtils.java" ] +android_library("common_variations_java") { + sources = [ + "java/src/org/chromium/android_webview/common/variations/VariationsServiceMetricsHelper.java", + "java/src/org/chromium/android_webview/common/variations/VariationsUtils.java", + ] deps = [ "//android_webview/proto:aw_variations_seed_proto_java", "//base:base_java", "//components/variations/android:variations_java", - "//third_party/android_deps:com_google_protobuf_protobuf_lite_java", + "//third_party/android_deps:com_google_protobuf_protobuf_javalite_java", ] } @@ -382,13 +517,14 @@ android_library("common_variations_utils_java") { # android_webview_java. It compiles the abstract class; implementations are # compiled separately. android_library("common_platform_services_java") { - java_files = [ + sources = [ "java/src/org/chromium/android_webview/common/PlatformServiceBridge.java", "java/src/org/chromium/android_webview/common/PlatformServiceBridgeImpl.java", ] deps = [ "//base:base_java", + "//components/embedder_support/android/metrics:java", "//third_party/android_deps:androidx_annotation_annotation_java", ] @@ -400,30 +536,37 @@ android_library("common_platform_services_java") { # This target compiles the implementation of PlatformServiceBridge for AOSP targets. android_library("platform_service_bridge_upstream_implementation_java") { - java_files = [ "java/src/org/chromium/android_webview/common/PlatformServiceBridgeImpl.java" ] - deps = [ - ":common_platform_services_java", - ] + sources = [ "java/src/org/chromium/android_webview/common/PlatformServiceBridgeImpl.java" ] + deps = [ ":common_platform_services_java" ] } android_library("common_crash_java") { - java_files = [ + sources = [ "java/src/org/chromium/android_webview/common/crash/AwCrashReporterClient.java", "java/src/org/chromium/android_webview/common/crash/CrashInfo.java", + "java/src/org/chromium/android_webview/common/crash/CrashUploadUtil.java", "java/src/org/chromium/android_webview/common/crash/SystemWideCrashDirectories.java", ] deps = [ + ":common_java", "//base:base_java", "//base:jni_java", + "//components/background_task_scheduler:background_task_scheduler_task_ids_java", + "//components/minidump_uploader:minidump_uploader_java", ] annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ] + min_sdk_version = 21 } android_library("common_java") { - java_files = [ + sources = [ "java/src/org/chromium/android_webview/common/AwResource.java", + "java/src/org/chromium/android_webview/common/AwSwitches.java", + "java/src/org/chromium/android_webview/common/CommandLineUtil.java", + "java/src/org/chromium/android_webview/common/DeveloperModeUtils.java", "java/src/org/chromium/android_webview/common/Flag.java", + "java/src/org/chromium/android_webview/common/FlagOverrideHelper.java", "java/src/org/chromium/android_webview/common/ProductionSupportedFlagList.java", "java/src/org/chromium/android_webview/common/services/ServiceNames.java", ] @@ -433,21 +576,13 @@ android_library("common_java") { ] } -android_library("common_commandline_java") { - java_files = - [ "java/src/org/chromium/android_webview/common/CommandLineUtil.java" ] - - deps = [ - "//base:base_java", - ] -} - android_aidl("common_aidl") { import_include = [ "java/src" ] sources = [ "java/src/org/chromium/android_webview/common/services/ICrashReceiverService.aidl", "java/src/org/chromium/android_webview/common/services/IDeveloperUiService.aidl", "java/src/org/chromium/android_webview/common/services/IVariationsSeedServer.aidl", + "java/src/org/chromium/android_webview/common/services/IVariationsSeedServerCallback.aidl", ] } @@ -466,19 +601,16 @@ generate_product_config_srcjar("webview_product_config") { # level - with the list of pak locales populated by looking at the assets that # are listed in the final APK's .build_config. android_library("android_webview_product_config_java") { - java_files = [ "java/src/org/chromium/android_webview/AwLocaleConfig.java" ] + sources = [ "java/src/org/chromium/android_webview/AwLocaleConfig.java" ] srcjar_deps = [ ":webview_product_config" ] jar_excluded_patterns = [ "*/ProductConfig.class" ] } if (enable_resource_whitelist_generation) { generate_resource_whitelist("system_webview_pak_whitelist") { - deps = [ - ":libwebviewchromium", - ] - inputs = [ - "$root_out_dir/lib.unstripped/libwebviewchromium$shlib_extension", - ] + deps = [ ":libwebviewchromium" ] + inputs = + [ "$root_out_dir/lib.unstripped/libwebviewchromium$shlib_extension" ] output = system_webview_pak_whitelist } } @@ -489,9 +621,7 @@ webview_repack_locales("repack_locales") { if (enable_resource_whitelist_generation) { repack_whitelist = system_webview_pak_whitelist - deps = [ - ":system_webview_pak_whitelist", - ] + deps = [ ":system_webview_pak_whitelist" ] } } @@ -504,9 +634,7 @@ android_assets("locale_pak_assets") { renaming_destinations += [ "stored-locales/$_locale.pak" ] } treat_as_locale_paks = true - deps = [ - ":repack_locales", - ] + deps = [ ":repack_locales" ] } repack("repack_pack") { @@ -524,7 +652,7 @@ repack("repack_pack") { ":generate_components_resources", ":generate_mojo_resources", ":generate_webui_resources", - "//content:resources", + "//content:content_resources", "//net:net_resources", "//third_party/blink/public:resources", ] @@ -594,36 +722,60 @@ if (android_64bit_target_cpu) { } } -# These assets are needed by both monochrome and stand alone WebView, but not by -# Chrome or TrichromeWebView. -android_assets("monochrome_webview_assets") { - deps = [ - "//third_party/icu:icu_assets", - ] +android_assets("webview_primary_abi_assets") { + if (use_v8_context_snapshot) { + deps = [ "//tools/v8_context_snapshot:v8_context_snapshot_assets" ] + } else { + deps = [ "//v8:v8_external_startup_data_assets" ] + } +} + +android_assets("monochrome_webview_primary_abi_assets") { + deps = [ "//third_party/icu:icu_assets" ] if (use_v8_context_snapshot) { deps += [ "//tools/v8_context_snapshot:v8_context_snapshot_assets" ] } else { deps += [ "//v8:v8_external_startup_data_assets" ] } - if (android_64bit_target_cpu) { +} + +if (android_64bit_target_cpu) { + android_assets("webview_secondary_abi_assets") { + deps = [ ":v8_snapshot_secondary_abi_assets" ] + } + + android_assets("monochrome_webview_secondary_abi_assets") { + deps = [ "//third_party/icu:icu_assets" ] deps += [ ":v8_snapshot_secondary_abi_assets" ] } } +android_assets("weblayer_webview_assets") { + deps = [ + ":webview_primary_abi_assets", + "//third_party/icu:icu_assets", + ] + if (android_64bit_target_cpu) { + deps += [ ":webview_secondary_abi_assets" ] + } +} + android_assets("stub_assets") { renaming_sources = [ "$root_gen_dir/components/resources/about_credits.html" ] renaming_destinations = [ "webview_licenses.notice" ] - deps = [ - "//components/resources:about_credits", - ] + deps = [ "//components/resources:about_credits" ] } android_resources("resources") { - resource_dirs = [ "java/res" ] - custom_package = "org.chromium.android_webview" - deps = [ - ":strings_grd", + sources = [ + "java/res/drawable-hdpi/ic_play_circle_outline_black_48dp.png", + "java/res/drawable-mdpi/ic_play_circle_outline_black_48dp.png", + "java/res/drawable-xhdpi/ic_play_circle_outline_black_48dp.png", + "java/res/drawable-xxhdpi/ic_play_circle_outline_black_48dp.png", + "java/res/drawable-xxxhdpi/ic_play_circle_outline_black_48dp.png", ] + custom_package = "org.chromium.android_webview" + deps = [ ":strings_grd" ] } grit("generate_aw_resources") { @@ -636,9 +788,7 @@ grit("generate_aw_resources") { grit("generate_aw_strings") { source = "ui/aw_strings.grd" - outputs = [ - "grit/aw_strings.h", - ] + outputs = [ "grit/aw_strings.h" ] foreach(_locale, locales) { outputs += [ "aw_strings_${_locale}.pak" ] } @@ -647,18 +797,15 @@ grit("generate_aw_strings") { grit("generate_webui_resources") { source = "../ui/webui/resources/webui_resources.grd" - # The .grd contains references to generated files. - source_is_generated = true - - # webui/resources has way too many resources. The whitelist is trim this down + # webui/resources has way too many resources. The allowlist is trim this down # to a reasonable size - _whitelist = "ui/grit_resources_whitelist.txt" - inputs = [ - _whitelist, - ] + _allowlist = "ui/grit_resources_allowlist.txt" + inputs = [ _allowlist ] grit_flags = [ "-w", - rebase_path(_whitelist, root_build_dir), + rebase_path(_allowlist, root_build_dir), + "-E", + "root_gen_dir=" + rebase_path(root_gen_dir, root_build_dir), ] outputs = [ "grit/webui_resources.h", @@ -666,22 +813,22 @@ grit("generate_webui_resources") { "grit/webui_resources_map.h", "webui_resources.pak", ] + deps = [ + "//ui/webui/resources/js:modulize", + "//ui/webui/resources/js/cr:modulize", + "//ui/webui/resources/js/cr/ui:modulize", + ] } grit("generate_mojo_resources") { source = "../mojo/public/js/mojo_bindings_resources.grd" - # The .grd contains references to generated files. - source_is_generated = true - - # See :generate_webui_resources for an explanation of the whitelist - _whitelist = "ui/grit_resources_whitelist.txt" - inputs = [ - _whitelist, - ] + # See :generate_webui_resources for an explanation of the allowlist + _allowlist = "ui/grit_resources_allowlist.txt" + inputs = [ _allowlist ] grit_flags = [ "-w", - rebase_path(_whitelist, root_build_dir), + rebase_path(_allowlist, root_build_dir), "-E", "root_gen_dir=" + rebase_path(root_gen_dir, root_build_dir), ] @@ -693,30 +840,29 @@ grit("generate_mojo_resources") { ] deps = [ "//mojo/public/js:bindings_lite", + "//mojo/public/mojom/base:base_js", ] } grit("generate_components_resources") { + # Note that dev_ui_components_resources.grd is Chrome-only, so excluded. source = "../components/resources/components_resources.grd" - # The .grd contains references to generated files. - source_is_generated = true - use_brotli = true - # See :generate_webui_resources for an explanation of the whitelist - _whitelist = "ui/grit_resources_whitelist.txt" - inputs = [ - _whitelist, - ] + # See :generate_webui_resources for an explanation of the allowlist + _allowlist = "ui/grit_resources_allowlist.txt" + inputs = [ _allowlist ] _about_credits_file = get_label_info("//components/resources", "target_gen_dir") + "/about_credits.html" grit_flags = [ "-w", - rebase_path(_whitelist, root_build_dir), + rebase_path(_allowlist, root_build_dir), "-E", "about_credits_file=" + rebase_path(_about_credits_file, root_build_dir), + "-E", + "root_gen_dir=" + rebase_path(root_gen_dir, root_build_dir), ] outputs = [ "grit/components_resources.h", @@ -725,6 +871,7 @@ grit("generate_components_resources") { deps = [ "//components/resources:about_credits", + "//components/resources/ssl/ssl_error_assistant:make_ssl_error_assistant_protobuf", ] } @@ -733,75 +880,24 @@ grit("generate_components_strings") { # components_strings contains strings from all components. WebView # will never display most of them, so we try to limit the included - # strings. This whitelist trims about 50% more than the compile-based - # whitelist generated by :system_webview_pak_whitelist. - whitelist = rebase_path("ui/grit_strings_whitelist.txt", root_build_dir) - inputs = [ - "//android_webview/ui/grit_strings_whitelist.txt", - ] + # strings. This allowlist trims about 50% more than the compile-based + # allowlist generated by :system_webview_pak_whitelist. + _allowlist = rebase_path("ui/grit_strings_allowlist.txt", root_build_dir) + inputs = [ "//android_webview/ui/grit_strings_allowlist.txt" ] grit_flags = [ "-w", - whitelist, - ] - outputs = [ - "grit/components_strings.h", - "java/res/values-am/components_strings.xml", - "java/res/values-ar/components_strings.xml", - "java/res/values-bg/components_strings.xml", - "java/res/values-bn/components_strings.xml", - "java/res/values-ca/components_strings.xml", - "java/res/values-cs/components_strings.xml", - "java/res/values-da/components_strings.xml", - "java/res/values-de/components_strings.xml", - "java/res/values-el/components_strings.xml", - "java/res/values-en-rGB/components_strings.xml", - "java/res/values-es/components_strings.xml", - "java/res/values-es-rUS/components_strings.xml", - "java/res/values-et/components_strings.xml", - "java/res/values-fa/components_strings.xml", - "java/res/values-fi/components_strings.xml", - "java/res/values-fr/components_strings.xml", - "java/res/values-gu/components_strings.xml", - "java/res/values-hi/components_strings.xml", - "java/res/values-hr/components_strings.xml", - "java/res/values-hu/components_strings.xml", - "java/res/values-in/components_strings.xml", - "java/res/values-it/components_strings.xml", - "java/res/values-iw/components_strings.xml", - "java/res/values-ja/components_strings.xml", - "java/res/values-kn/components_strings.xml", - "java/res/values-ko/components_strings.xml", - "java/res/values-lt/components_strings.xml", - "java/res/values-lv/components_strings.xml", - "java/res/values-ml/components_strings.xml", - "java/res/values-mr/components_strings.xml", - "java/res/values-ms/components_strings.xml", - "java/res/values-nb/components_strings.xml", - "java/res/values-nl/components_strings.xml", - "java/res/values-pl/components_strings.xml", - "java/res/values-pt-rBR/components_strings.xml", - "java/res/values-pt-rPT/components_strings.xml", - "java/res/values-ro/components_strings.xml", - "java/res/values-ru/components_strings.xml", - "java/res/values-sk/components_strings.xml", - "java/res/values-sl/components_strings.xml", - "java/res/values-sr/components_strings.xml", - "java/res/values-sv/components_strings.xml", - "java/res/values-sw/components_strings.xml", - "java/res/values-ta/components_strings.xml", - "java/res/values-te/components_strings.xml", - "java/res/values-th/components_strings.xml", - "java/res/values-tl/components_strings.xml", - "java/res/values-tr/components_strings.xml", - "java/res/values-uk/components_strings.xml", - "java/res/values-vi/components_strings.xml", - "java/res/values-zh-rCN/components_strings.xml", - "java/res/values-zh-rTW/components_strings.xml", - "java/res/values/components_strings.xml", - ] - foreach(_locale, locales_with_fake_bidi) { - outputs += [ "components_strings_${_locale}.pak" ] - } + _allowlist, + ] + outputs = + [ + "grit/components_strings.h", + "java/res/values/components_strings.xml", + ] + + process_file_template( + android_bundle_locales_as_resources, + [ "java/res/values-{{source_name_part}}/components_strings.xml" ]) + + process_file_template(locales_with_fake_bidi, + [ "components_strings_{{source_name_part}}.pak" ]) } java_strings_grd("strings_grd") { diff --git a/chromium/android_webview/browser/BUILD.gn b/chromium/android_webview/browser/BUILD.gn index 643e623bb51..207926d3039 100644 --- a/chromium/android_webview/browser/BUILD.gn +++ b/chromium/android_webview/browser/BUILD.gn @@ -42,8 +42,6 @@ source_set("browser") { "aw_contents_client_bridge.h", "aw_contents_io_thread_client.cc", "aw_contents_io_thread_client.h", - "aw_contents_lifecycle_notifier.cc", - "aw_contents_lifecycle_notifier.h", "aw_contents_statics.cc", "aw_cookie_access_policy.cc", "aw_cookie_access_policy.h", @@ -66,6 +64,8 @@ source_set("browser") { "aw_javascript_dialog_manager.h", "aw_media_url_interceptor.cc", "aw_media_url_interceptor.h", + "aw_pac_processor.cc", + "aw_pac_processor.h", "aw_pdf_exporter.cc", "aw_pdf_exporter.h", "aw_permission_manager.cc", @@ -187,6 +187,7 @@ source_set("browser") { "//android_webview:browser_jni_headers", "//android_webview:generate_components_strings", "//android_webview/browser/gfx", + "//android_webview/browser/lifecycle", "//android_webview/browser/metrics", "//android_webview/common", "//android_webview/common:common_mojom", @@ -199,9 +200,10 @@ source_set("browser") { # Called via JNI in CrashpadMain "//components/crash/android:crashpad_main", - "//components/crash/content/app", "//components/crash/content/browser", + "//components/crash/core/app", "//components/embedder_support/android:web_contents_delegate", + "//components/embedder_support/android/metrics", "//components/google/core/common", "//components/heap_profiling", "//components/metrics", @@ -215,18 +217,20 @@ source_set("browser") { "//components/printing/browser", "//components/printing/common", "//components/printing/common:mojo_interfaces", - "//components/safe_browsing", - "//components/safe_browsing:features", - "//components/safe_browsing:ping_manager", "//components/safe_browsing/android:remote_database_manager", - "//components/safe_browsing/browser", - "//components/safe_browsing/browser:network_context", - "//components/safe_browsing/common", - "//components/safe_browsing/db:database_manager", - "//components/safe_browsing/db:safebrowsing_proto", - "//components/safe_browsing/triggers", - "//components/safe_browsing/web_ui", - "//components/safe_browsing/web_ui:constants", + "//components/safe_browsing/content", + "//components/safe_browsing/content/browser", + "//components/safe_browsing/content/common:interfaces", + "//components/safe_browsing/content/web_ui", + "//components/safe_browsing/core:features", + "//components/safe_browsing/core:ping_manager", + "//components/safe_browsing/core/browser", + "//components/safe_browsing/core/browser:network_context", + "//components/safe_browsing/core/common", + "//components/safe_browsing/core/db:database_manager", + "//components/safe_browsing/core/db:safebrowsing_proto", + "//components/safe_browsing/core/triggers", + "//components/safe_browsing/core/web_ui:constants", "//components/security_interstitials/content:security_interstitial_page", "//components/security_interstitials/core", "//components/services/heap_profiling/public/cpp", @@ -244,10 +248,11 @@ source_set("browser") { "//media/mojo:buildflags", "//printing", "//services/preferences/tracked", + "//services/proxy_resolver:lib", + "//third_party/blink/public/mojom/frame", "//third_party/crashpad/crashpad/client", "//ui/android", "//ui/gl", - "//ui/native_theme", "//ui/resources", "//ui/touch_selection", ] diff --git a/chromium/android_webview/browser/gfx/BUILD.gn b/chromium/android_webview/browser/gfx/BUILD.gn index 227523bece4..5b0d2358fdc 100644 --- a/chromium/android_webview/browser/gfx/BUILD.gn +++ b/chromium/android_webview/browser/gfx/BUILD.gn @@ -7,18 +7,24 @@ import("//build/config/android/rules.gni") source_set("gfx") { sources = [ + "aw_attaching_to_window_recorder.cc", + "aw_attaching_to_window_recorder.h", "aw_draw_fn_impl.cc", "aw_draw_fn_impl.h", "aw_gl_functor.cc", "aw_gl_functor.h", "aw_gl_surface.cc", "aw_gl_surface.h", + "aw_gl_surface_external_stencil.cc", + "aw_gl_surface_external_stencil.h", "aw_picture.cc", "aw_picture.h", "aw_render_thread_context_provider.cc", "aw_render_thread_context_provider.h", "aw_vulkan_context_provider.cc", "aw_vulkan_context_provider.h", + "begin_frame_source_webview.cc", + "begin_frame_source_webview.h", "browser_view_renderer.cc", "browser_view_renderer.h", "browser_view_renderer_client.h", @@ -28,6 +34,8 @@ source_set("gfx") { "compositor_frame_producer.h", "deferred_gpu_command_service.cc", "deferred_gpu_command_service.h", + "display_scheduler_webview.cc", + "display_scheduler_webview.h", "gpu_service_web_view.cc", "gpu_service_web_view.h", "hardware_renderer.cc", @@ -67,6 +75,7 @@ source_set("gfx") { deps = [ "//android_webview:browser_jni_headers", "//android_webview/common", + "//android_webview/public", "//base", "//components/ui_devtools:buildflags", "//components/viz/service", diff --git a/chromium/android_webview/browser/lifecycle/BUILD.gn b/chromium/android_webview/browser/lifecycle/BUILD.gn new file mode 100644 index 00000000000..a7f4f47a46e --- /dev/null +++ b/chromium/android_webview/browser/lifecycle/BUILD.gn @@ -0,0 +1,17 @@ +# Copyright 2020 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +source_set("lifecycle") { + sources = [ + "aw_contents_lifecycle_notifier.cc", + "aw_contents_lifecycle_notifier.h", + "webview_app_state_observer.cc", + "webview_app_state_observer.h", + ] + deps = [ + "//android_webview:browser_jni_headers", + "//base", + "//content/public/browser", + ] +} diff --git a/chromium/android_webview/browser/metrics/BUILD.gn b/chromium/android_webview/browser/metrics/BUILD.gn index 3283d27db92..c2610878a63 100644 --- a/chromium/android_webview/browser/metrics/BUILD.gn +++ b/chromium/android_webview/browser/metrics/BUILD.gn @@ -4,25 +4,20 @@ source_set("metrics") { sources = [ - "aw_metrics_log_uploader.cc", - "aw_metrics_log_uploader.h", "aw_metrics_service_client.cc", "aw_metrics_service_client.h", - "memory_metrics_logger.cc", - "memory_metrics_logger.h", + "aw_stability_metrics_provider.cc", + "aw_stability_metrics_provider.h", ] deps = [ "//android_webview:browser_jni_headers", + "//android_webview/browser/lifecycle", "//android_webview/common", "//base", + "//components/embedder_support/android/metrics", "//components/metrics", - "//components/metrics:gpu", - "//components/metrics:net", - "//components/metrics:ui", "//components/prefs", - "//components/version_info", "//components/version_info/android:channel_getter", "//content/public/browser", - "//services/resource_coordinator/public/cpp/memory_instrumentation:browser", ] } diff --git a/chromium/android_webview/common/BUILD.gn b/chromium/android_webview/common/BUILD.gn index c4f4c5af2a0..f7ba133f517 100644 --- a/chromium/android_webview/common/BUILD.gn +++ b/chromium/android_webview/common/BUILD.gn @@ -7,6 +7,7 @@ import("//mojo/public/tools/bindings/mojom.gni") mojom("common_mojom") { sources = [ + "aw_origin_matcher.mojom", "js_java_interaction/interfaces.mojom", ] @@ -14,6 +15,19 @@ mojom("common_mojom") { "//mojo/public/mojom/base", "//services/network/public/mojom:mojom", ] + + cpp_typemaps = [ + { + types = [ + { + mojom = "android_webview.mojom.AwOriginMatcher" + cpp = "::android_webview::AwOriginMatcher" + }, + ] + traits_headers = + [ "//android_webview/common/aw_origin_matcher_mojom_traits.h" ] + }, + ] } source_set("common") { @@ -29,6 +43,8 @@ source_set("common") { "aw_hit_test_data.h", "aw_media_drm_bridge_client.cc", "aw_media_drm_bridge_client.h", + "aw_origin_matcher.cc", + "aw_origin_matcher.h", "aw_paths.cc", "aw_paths.h", "aw_resource.cc", @@ -51,7 +67,7 @@ source_set("common") { "//android_webview:common_jni_headers", "//base", "//components/cdm/common", - "//components/crash/content/app", + "//components/crash/core/app", "//components/crash/core/common:crash_key", "//components/gwp_asan/common", "//components/services/heap_profiling/public/cpp", diff --git a/chromium/android_webview/common/aw_origin_matcher.mojom b/chromium/android_webview/common/aw_origin_matcher.mojom new file mode 100644 index 00000000000..453aa6693e0 --- /dev/null +++ b/chromium/android_webview/common/aw_origin_matcher.mojom @@ -0,0 +1,10 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +module android_webview.mojom; + +// This corresponds to the string representation of AwOriginMatcher. +struct AwOriginMatcher { + array<string> rules; +};
\ No newline at end of file diff --git a/chromium/android_webview/common/js_java_interaction/interfaces.mojom b/chromium/android_webview/common/js_java_interaction/interfaces.mojom index ee295d5772a..9ee34677f68 100644 --- a/chromium/android_webview/common/js_java_interaction/interfaces.mojom +++ b/chromium/android_webview/common/js_java_interaction/interfaces.mojom @@ -4,18 +4,18 @@ module android_webview.mojom; +import "android_webview/common/aw_origin_matcher.mojom"; import "mojo/public/mojom/base/string16.mojom"; -import "services/network/public/mojom/proxy_config.mojom"; // JsObject struct represents a JavaScript object we will inject in the main // JavaScript world of a frame. |js_object_name| will be used as the name // of the JavaScript object. We will inject the object if the frame's origin -// matches |allowed_origin_rules|. |js_to_java_messaging| will be used for -// that JavaScript object to send message back to browser (hence Java) side. +// matches |origin_matcher|. |js_to_java_messaging| will be used for that +// JavaScript object to send message back to browser (hence Java) side. struct JsObject { mojo_base.mojom.String16 js_object_name; pending_associated_remote<JsToJavaMessaging> js_to_java_messaging; - network.mojom.ProxyBypassRules allowed_origin_rules; + android_webview.mojom.AwOriginMatcher origin_matcher; }; // For JavaScript postMessage() API, implemented by browser. diff --git a/chromium/android_webview/glue/BUILD.gn b/chromium/android_webview/glue/BUILD.gn index 8eccad0a0bc..4074afa7650 100644 --- a/chromium/android_webview/glue/BUILD.gn +++ b/chromium/android_webview/glue/BUILD.gn @@ -11,7 +11,6 @@ android_library("glue") { deps = [ "//android_webview:android_webview_product_config_java", "//android_webview:browser_java", - "//android_webview:common_commandline_java", "//android_webview:common_java", "//android_webview/nonembedded:system_webview_manifest", "//android_webview/support_library/boundary_interfaces:boundary_interface_java", @@ -25,13 +24,14 @@ android_library("glue") { "//content/public/android:content_java", "//net/android:net_java", "//ui/android:ui_java", + "//url:gurl_java", ] annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ] alternative_android_sdk_dep = "//third_party/android_sdk:public_framework_system_java" - java_files = [ + sources = [ "java/src/com/android/webview/chromium/CallbackConverter.java", "java/src/com/android/webview/chromium/ContentSettingsAdapter.java", "java/src/com/android/webview/chromium/CookieManagerAdapter.java", diff --git a/chromium/android_webview/lib/BUILD.gn b/chromium/android_webview/lib/BUILD.gn index 7ae4858e2c6..b018c8b2240 100644 --- a/chromium/android_webview/lib/BUILD.gn +++ b/chromium/android_webview/lib/BUILD.gn @@ -59,12 +59,10 @@ source_set("webview_entry_point") { ":lib", "//base", ] - sources = [ - "webview_entry_point.cc", - ] + sources = [ "webview_entry_point.cc" ] if (webview_includes_weblayer) { defines = [ "WEBVIEW_INCLUDES_WEBLAYER" ] - deps += [ "//weblayer:weblayer_lib" ] + deps += [ "//weblayer:weblayer_lib_webview" ] } } diff --git a/chromium/android_webview/nonembedded/BUILD.gn b/chromium/android_webview/nonembedded/BUILD.gn index fca87703ead..5deebb9bd4c 100644 --- a/chromium/android_webview/nonembedded/BUILD.gn +++ b/chromium/android_webview/nonembedded/BUILD.gn @@ -7,15 +7,13 @@ import("//android_webview/variables.gni") import("//build/config/android/rules.gni") generate_jni("nonembedded_jni_headers") { - sources = [ - "java/src/org/chromium/android_webview/nonembedded/WebViewApkApplication.java", - ] + sources = [ "java/src/org/chromium/android_webview/nonembedded/WebViewApkApplication.java" ] } # Contains classes needed by the webview apk, but not used when loading the apk # as a library. android_library("nonembedded_java") { - java_files = [ + sources = [ "java/src/org/chromium/android_webview/nonembedded/LicenseActivity.java", "java/src/org/chromium/android_webview/nonembedded/LicenseContentProvider.java", "java/src/org/chromium/android_webview/nonembedded/WebViewApkApplication.java", @@ -24,7 +22,7 @@ android_library("nonembedded_java") { ":devui_java", ":services_java", "//android_webview:android_webview_product_config_java", - "//android_webview:common_commandline_java", + "//android_webview:common_java", "//base:base_java", "//base:jni_java", "//components/about_ui/android:aboutui_java", @@ -35,14 +33,14 @@ android_library("nonembedded_java") { } android_library("devui_java") { - java_files = [ - "java/src/org/chromium/android_webview/devui/CrashesListActivity.java", - "java/src/org/chromium/android_webview/devui/FlagsActivity.java", + sources = [ + "java/src/org/chromium/android_webview/devui/CrashesListFragment.java", + "java/src/org/chromium/android_webview/devui/FlagsFragment.java", + "java/src/org/chromium/android_webview/devui/HomeFragment.java", "java/src/org/chromium/android_webview/devui/MainActivity.java", "java/src/org/chromium/android_webview/devui/PersistentErrorView.java", "java/src/org/chromium/android_webview/devui/WebViewPackageError.java", "java/src/org/chromium/android_webview/devui/util/CrashInfoLoader.java", - "java/src/org/chromium/android_webview/devui/util/NavigationMenuHelper.java", "java/src/org/chromium/android_webview/devui/util/UnuploadedFilesStateLoader.java", "java/src/org/chromium/android_webview/devui/util/UploadedCrashesInfoLoader.java", "java/src/org/chromium/android_webview/devui/util/WebViewCrashInfoCollector.java", @@ -53,13 +51,13 @@ android_library("devui_java") { ":devui_resources", ":system_webview_manifest", "//android_webview:common_aidl_java", - "//android_webview:common_commandline_java", "//android_webview:common_crash_java", "//android_webview:common_java", "//android_webview:common_platform_services_java", "//base:base_java", "//components/minidump_uploader:minidump_uploader_java", "//third_party/android_deps:androidx_annotation_annotation_java", + "//third_party/android_deps:com_android_support_support_fragment_java", "//ui/android:ui_java", ] android_manifest_for_lint = system_webview_android_manifest @@ -67,11 +65,12 @@ android_library("devui_java") { } android_library("services_java") { - java_files = [ + sources = [ "java/src/org/chromium/android_webview/services/AwMinidumpUploadJobService.java", "java/src/org/chromium/android_webview/services/AwMinidumpUploaderDelegate.java", "java/src/org/chromium/android_webview/services/AwVariationsSeedFetcher.java", "java/src/org/chromium/android_webview/services/CrashReceiverService.java", + "java/src/org/chromium/android_webview/services/DeveloperModeContentProvider.java", "java/src/org/chromium/android_webview/services/DeveloperUiService.java", "java/src/org/chromium/android_webview/services/VariationsSeedHolder.java", "java/src/org/chromium/android_webview/services/VariationsSeedServer.java", @@ -79,11 +78,10 @@ android_library("services_java") { deps = [ ":system_webview_manifest", "//android_webview:common_aidl_java", - "//android_webview:common_commandline_java", "//android_webview:common_crash_java", "//android_webview:common_java", "//android_webview:common_platform_services_java", - "//android_webview:common_variations_utils_java", + "//android_webview:common_variations_java", "//base:base_java", "//components/background_task_scheduler:background_task_scheduler_task_ids_java", "//components/minidump_uploader:minidump_uploader_java", @@ -95,9 +93,7 @@ android_library("services_java") { } source_set("nonembedded") { - sources = [ - "webview_apk_application.cc", - ] + sources = [ "webview_apk_application.cc" ] deps = [ ":nonembedded_jni_headers", "//android_webview/common", @@ -110,21 +106,55 @@ source_set("nonembedded") { # WebView icon used by upstream SystemWebView and Trichrome. android_resources("icon_resources") { - resource_dirs = [ "java/res_icon" ] + sources = [ + "java/res_icon/drawable-hdpi/icon_webview.png", + "java/res_icon/drawable-mdpi/icon_webview.png", + "java/res_icon/drawable-xhdpi/icon_webview.png", + "java/res_icon/drawable-xxhdpi/icon_webview.png", + ] custom_package = "org.chromium.android_webview.icon" } android_resources("devui_resources") { - resource_dirs = [ "java/res_devui" ] + sources = [ + "java/res_devui/drawable/blue_circle.xml", + "java/res_devui/drawable/ic_action_home.xml", + "java/res_devui/drawable/ic_alert_error.xml", + "java/res_devui/drawable/ic_flag.xml", + "java/res_devui/layout/activity_main.xml", + "java/res_devui/layout/crashes_list_item_body.xml", + "java/res_devui/layout/crashes_list_item_header.xml", + "java/res_devui/layout/flag_states.xml", + "java/res_devui/layout/fragment_crashes_list.xml", + "java/res_devui/layout/fragment_flags.xml", + "java/res_devui/layout/fragment_home.xml", + "java/res_devui/layout/persistent_error_message.xml", + "java/res_devui/layout/toggleable_flag.xml", + "java/res_devui/layout/two_line_list_item.xml", + "java/res_devui/layout/two_line_sublist_item.xml", + "java/res_devui/menu/crashes_options_menu.xml", + "java/res_devui/menu/options_menu.xml", + "java/res_devui/values-night/colors.xml", + "java/res_devui/values-night/styles.xml", + "java/res_devui/values/colors.xml", + "java/res_devui/values/strings.xml", + "java/res_devui/values/styles.xml", + ] custom_package = "org.chromium.android_webview.devui" } android_resources("devui_launcher_icon_resources") { - resource_dirs = [] + sources = [] custom_package = "org.chromium.android_webview.devui.icon" android_manifest = "java/DeveloperUiLauncherManifest.xml" } +android_resources("monochrome_devui_launcher_icon_resources") { + sources = [] + android_manifest = "java/MonochromeDeveloperUiLauncherManifest.xml" + custom_package = "org.chromium.android_webview.devui.icon" +} + jinja_template("system_webview_manifest") { input = "java/AndroidManifest.xml" output = system_webview_android_manifest @@ -152,4 +182,14 @@ if (android_64bit_target_cpu) { "library=libmonochrome_64.so", ] } + + jinja_template("trichrome_webview_32_manifest") { + input = "java/AndroidManifest.xml" + output = trichrome_webview_32_android_manifest + variables = trichrome_jinja_variables + [ + "trichrome_version=$trichrome_32_version_code", + "manifest_package=$system_webview_package_name", + "library=libmonochrome.so", + ] + } } diff --git a/chromium/android_webview/renderer/BUILD.gn b/chromium/android_webview/renderer/BUILD.gn index 6b0d011f25c..720bd42c0a5 100644 --- a/chromium/android_webview/renderer/BUILD.gn +++ b/chromium/android_webview/renderer/BUILD.gn @@ -30,8 +30,6 @@ source_set("renderer") { "js_java_interaction/js_binding.h", "js_java_interaction/js_java_configurator.cc", "js_java_interaction/js_java_configurator.h", - "print_render_frame_observer.cc", - "print_render_frame_observer.h", ] deps = [ @@ -40,6 +38,7 @@ source_set("renderer") { "//android_webview/common", "//android_webview/common:common_mojom", "//base", + "//components/android_system_error_page", "//components/autofill/content/renderer", "//components/cdm/renderer", "//components/content_capture/common", @@ -47,14 +46,17 @@ source_set("renderer") { "//components/page_load_metrics/renderer", "//components/printing/common", "//components/printing/renderer", - "//components/safe_browsing:features", - "//components/safe_browsing/common", - "//components/safe_browsing/renderer:throttles", + "//components/resources", + "//components/safe_browsing/content/common:interfaces", + "//components/safe_browsing/content/renderer:throttles", + "//components/safe_browsing/core:features", + "//components/safe_browsing/core/common", "//components/security_interstitials/content/renderer:security_interstitial_page_controller", "//components/security_interstitials/core", "//components/security_interstitials/core/common/mojom", "//components/spellcheck:buildflags", "//components/spellcheck/renderer", + "//components/strings", "//components/visitedlink/renderer", "//content/public/child", "//content/public/common", diff --git a/chromium/android_webview/support_library/BUILD.gn b/chromium/android_webview/support_library/BUILD.gn index f6e2d235e02..22155c24b92 100644 --- a/chromium/android_webview/support_library/BUILD.gn +++ b/chromium/android_webview/support_library/BUILD.gn @@ -6,7 +6,7 @@ import("//build/config/android/config.gni") import("//build/config/android/rules.gni") android_library("support_lib_glue_java") { - java_files = [ + sources = [ "java/src/org/chromium/support_lib_glue/IsomorphicAdapter.java", "java/src/org/chromium/support_lib_glue/SupportLibJsReplyProxyAdapter.java", "java/src/org/chromium/support_lib_glue/SupportLibProxyControllerAdapter.java", diff --git a/chromium/android_webview/support_library/boundary_interfaces/BUILD.gn b/chromium/android_webview/support_library/boundary_interfaces/BUILD.gn index a6cc4b5649b..e3ed180d1ac 100644 --- a/chromium/android_webview/support_library/boundary_interfaces/BUILD.gn +++ b/chromium/android_webview/support_library/boundary_interfaces/BUILD.gn @@ -6,7 +6,7 @@ import("//build/config/android/config.gni") import("//build/config/android/rules.gni") android_library("boundary_interface_java") { - java_files = [ + sources = [ "src/org/chromium/support_lib_boundary/FeatureFlagHolderBoundaryInterface.java", "src/org/chromium/support_lib_boundary/IsomorphicObjectBoundaryInterface.java", "src/org/chromium/support_lib_boundary/JsReplyProxyBoundaryInterface.java", @@ -41,9 +41,7 @@ android_library("boundary_interface_java") { # build when we mirror this into AndroidX. We are only permitted to depend on # core Android classes and other AndroidX classes (must be in the androidx.* # package name). - deps = [ - "//third_party/android_deps:androidx_annotation_annotation_java", - ] + deps = [ "//third_party/android_deps:androidx_annotation_annotation_java" ] # This is to verify the boundary interfaces compile and lint correctly against # the minSdkVersion of the webkit support library module. As the minSdkVersion diff --git a/chromium/android_webview/support_library/callback/BUILD.gn b/chromium/android_webview/support_library/callback/BUILD.gn index f02fb205a69..a700cc8282b 100644 --- a/chromium/android_webview/support_library/callback/BUILD.gn +++ b/chromium/android_webview/support_library/callback/BUILD.gn @@ -6,7 +6,7 @@ import("//build/config/android/config.gni") import("//build/config/android/rules.gni") android_library("callback_java") { - java_files = [ + sources = [ "java/src/org/chromium/support_lib_callback_glue/SupportLibSafeBrowsingResponse.java", "java/src/org/chromium/support_lib_callback_glue/SupportLibWebResourceError.java", "java/src/org/chromium/support_lib_callback_glue/SupportLibWebViewContentsClientAdapter.java", diff --git a/chromium/android_webview/system_webview_apk_tmpl.gni b/chromium/android_webview/system_webview_apk_tmpl.gni index a8ba27fd891..30cab847096 100644 --- a/chromium/android_webview/system_webview_apk_tmpl.gni +++ b/chromium/android_webview/system_webview_apk_tmpl.gni @@ -3,7 +3,6 @@ # found in the LICENSE file. import("//android_webview/variables.gni") -import("//base/android/proguard/proguard.gni") import("//build/config/android/config.gni") import("//build/config/android/rules.gni") import("//build/config/locales.gni") @@ -18,10 +17,22 @@ declare_args() { # on which you are going to install WebView is configured to load a # different package name than the default used in AOSP. system_webview_package_name = "com.android.webview" + + # Whether to enable standalone and trichrome WebView bundle build targets. + enable_webview_bundles = false } -template("system_webview_apk_tmpl") { - android_apk(target_name) { +template("system_webview_apk_or_module_tmpl") { + if (!defined(invoker.target_type)) { + _is_bundle_module = false + _target_type = "android_apk" + } else { + _is_bundle_module = invoker.target_type == "android_app_bundle_module" + _target_type = invoker.target_type + } + _exclude_weblayer_java = + defined(invoker.exclude_weblayer_java) && invoker.exclude_weblayer_java + target(_target_type, target_name) { forward_variables_from(invoker, "*", [ @@ -31,16 +42,30 @@ template("system_webview_apk_tmpl") { ]) deps += [ - "//android_webview:android_webview_step1_java", "//android_webview:locale_pak_assets", "//android_webview:pak_file_assets", ] + # If the R SDK isn't public yet, include the downstream code to support R. + if (!public_android_sdk && android_sdk_release == "r") { + deps += [ "//clank/android_webview/next:r_sdk_java" ] + } + + if (_exclude_weblayer_java) { + deps += [ "//android_webview:android_webview_no_weblayer_java" ] + } else { + deps += [ "//android_webview:android_webview_java" ] + } + target_sdk_version = android_sdk_version product_config_java_packages = [ webview_product_config_java_package ] if (webview_includes_weblayer) { - deps += [ "//weblayer:locale_pak_assets" ] + if (_is_bundle_module) { + deps += [ "//weblayer:bundle_locale_pak_assets" ] + } else { + deps += [ "//weblayer:locale_pak_assets" ] + } product_config_java_packages += [ weblayer_product_config_java_package ] } @@ -54,23 +79,33 @@ template("system_webview_apk_tmpl") { _use_trichrome_library = defined(use_trichrome_library) && use_trichrome_library + assert( + _use_trichrome_library == defined(invoker.static_library_provider), + "If trichrome library is used, static_library_provider must be set " + + "so that a dep can be added on the library APK.") - if (!_use_trichrome_library) { - deps += [ "//android_webview:monochrome_webview_assets" ] - } + # Pure 32-bit implies a 32-bit only Webview built on a 64-bit configuration. + _pure_32_bit = + android_64bit_target_cpu && defined(invoker.include_64_bit_webview) && + !invoker.include_64_bit_webview + not_needed([ "_pure_32_bit" ]) # Flag whether additional deps and libs should be included for each ABI. _include_primary_support = false _include_secondary_support = false if (!_use_trichrome_library) { - shared_libraries = [ "//android_webview:libwebviewchromium" ] - _include_primary_support = true shared_resources = true + + if (!android_64bit_target_cpu || !_pure_32_bit) { + shared_libraries = [ "//android_webview:libwebviewchromium" ] + _include_primary_support = true + } if (android_64bit_target_cpu) { secondary_abi_shared_libraries = [ "//android_webview:libwebviewchromium($android_secondary_abi_toolchain)" ] _include_secondary_support = true } + deps += [ "//third_party/icu:icu_assets" ] } else { uncompress_shared_libraries = true app_as_shared_lib = true @@ -82,19 +117,12 @@ template("system_webview_apk_tmpl") { native_lib_placeholders = [ "libdummy.so" ] if (invoker.include_32_bit_webview) { secondary_abi_shared_libraries = [ "//android_webview:monochrome_64($android_secondary_abi_toolchain)" ] - deps += [ "//android_webview:v8_snapshot_secondary_abi_assets" ] _include_secondary_support = true } } else { if (invoker.include_64_bit_webview) { shared_libraries = [ "//android_webview:monochrome" ] _include_primary_support = true - if (use_v8_context_snapshot) { - deps += - [ "//tools/v8_context_snapshot:v8_context_snapshot_assets" ] - } else { - deps += [ "//v8:v8_external_startup_data_assets" ] - } } secondary_native_lib_placeholders = [ "libdummy.so" ] } @@ -105,16 +133,30 @@ template("system_webview_apk_tmpl") { if (_include_primary_support) { deps += [ + "//android_webview:webview_primary_abi_assets", "//third_party/crashpad/crashpad/handler:crashpad_handler_trampoline", ] loadable_modules = [ "$root_out_dir/libcrashpad_handler_trampoline.so" ] + if (webview_includes_weblayer) { + deps += [ "//base/android/linker:chromium_android_linker" ] + loadable_modules += + [ "$root_out_dir/libchromium_android_linker$shlib_extension" ] + } } if (_include_secondary_support) { _trampoline = "//third_party/crashpad/crashpad/handler:crashpad_handler_trampoline($android_secondary_abi_toolchain)" - deps += [ _trampoline ] + deps += [ + "//android_webview:webview_secondary_abi_assets", + _trampoline, + ] _secondary_out_dir = get_label_info(_trampoline, "root_out_dir") secondary_abi_loadable_modules = [ "$_secondary_out_dir/libcrashpad_handler_trampoline.so" ] + if (webview_includes_weblayer) { + deps += [ "//base/android/linker:chromium_android_linker($android_secondary_abi_toolchain)" ] + secondary_abi_loadable_modules += + [ "$_secondary_out_dir/libchromium_android_linker$shlib_extension" ] + } } if (!_use_trichrome_library || android_64bit_target_cpu) { @@ -126,19 +168,22 @@ template("system_webview_apk_tmpl") { native_lib_version_arg = "@FileArg($_native_lib_file:full-quoted)" } - aapt_locale_whitelist = locales + aapt_locale_allowlist = locales # Match drawables, but not mipmaps. - resource_blacklist_regex = "drawable[^/]*-xxxhdpi" + resource_exclusion_regex = "drawable[^/]*-xxxhdpi" # Exception rationale in https://crbug.com/691733. - resource_blacklist_exceptions = [ + resource_exclusion_exceptions = [ "*shadow*", # Combination of gradient & transparency cause pixelation. "*.9.*", # Most nine-patches contain shadows. ] - # Used as an additional apk in test scripts. - never_incremental = true + if (!_is_bundle_module) { + # Used as an additional apk in test scripts. + never_incremental = true + command_line_flags_file = "webview-command-line" + } if (!is_java_debug) { proguard_enabled = true @@ -159,7 +204,6 @@ template("system_webview_apk_tmpl") { } png_to_webp = true } - command_line_flags_file = "webview-command-line" if (!defined(version_code)) { if (_use_trichrome_library) { @@ -180,12 +224,26 @@ template("system_webview_apk_tmpl") { } else { version_code = trichrome_version_code } - } else if (android_channel == "dev") { - version_code = webview_dev_version_code - } else if (android_channel == "beta") { - version_code = webview_beta_version_code } else { - version_code = webview_stable_version_code + if (android_channel == "dev") { + if (_pure_32_bit) { + version_code = webview_32_dev_version_code + } else { + version_code = webview_dev_version_code + } + } else if (android_channel == "beta") { + if (_pure_32_bit) { + version_code = webview_32_beta_version_code + } else { + version_code = webview_beta_version_code + } + } else { + if (_pure_32_bit) { + version_code = webview_32_stable_version_code + } else { + version_code = webview_stable_version_code + } + } } } if (!defined(version_name)) { diff --git a/chromium/android_webview/system_webview_bundle.gni b/chromium/android_webview/system_webview_bundle.gni new file mode 100644 index 00000000000..aa7b683fefc --- /dev/null +++ b/chromium/android_webview/system_webview_bundle.gni @@ -0,0 +1,34 @@ +# Copyright 2019 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import("//build/config/android/rules.gni") +import("//build/config/locales.gni") + +template("system_webview_bundle") { + android_app_bundle(target_name) { + command_line_flags_file = "webview-command-line" + proguard_enabled = !is_java_debug + enable_language_splits = true + system_image_locale_allowlist = locales + is_multi_abi = + android_64bit_target_cpu && (!defined(invoker.include_64_bit_webview) || + invoker.include_64_bit_webview) && + (!defined(invoker.include_32_bit_webview) || + invoker.include_32_bit_webview) + + if (!defined(proguard_android_sdk_dep)) { + proguard_android_sdk_dep = webview_framework_dep + } + + # NOTE: Only sign bundle for official builds since this is very slow. + if (enable_chrome_android_internal && use_signing_keys && + is_official_build) { + sign_bundle = true + keystore_path = webview_keystore_path + keystore_name = webview_keystore_name + keystore_password = webview_keystore_password + } + forward_variables_from(invoker, "*") + } +} diff --git a/chromium/android_webview/test/BUILD.gn b/chromium/android_webview/test/BUILD.gn index 4a356ce0a53..80513511dce 100644 --- a/chromium/android_webview/test/BUILD.gn +++ b/chromium/android_webview/test/BUILD.gn @@ -4,6 +4,7 @@ import("//android_webview/variables.gni") import("//build/config/android/rules.gni") +import("//build/config/python.gni") import("//device/vr/buildflags/buildflags.gni") import("//testing/test.gni") import("//tools/v8_context_snapshot/v8_context_snapshot.gni") @@ -19,39 +20,27 @@ group("test") { ] } -if (public_android_sdk) { - group("webview_cts_tests") { - _py_files = - read_file("//android_webview/tools/run_cts.pydeps", "list lines") - deps = [ - "//android_webview:system_webview_apk", - ] - +if (define_upstream_webview_targets) { + python_library("webview_cts_tests") { + pydeps_file = "//android_webview/tools/run_cts.pydeps" + deps = [ "//android_webview:system_webview_apk" ] data_deps = [ "//build/android:logdog_wrapper_py", "//build/android:test_runner_py", "//testing/buildbot/filters:webview_cts_tests_filters", ] - - # Filter out comments. - set_sources_assignment_filter([ "#*" ]) - sources = _py_files - - data = sources - data += [ "//android_webview/tools/cts_config/" ] + data = [ "//android_webview/tools/cts_config/" ] } - group("system_webview_wpt") { + python_library("system_webview_wpt") { testonly = true + pydeps_file = "//testing/scripts/run_android_wpt.pydeps" data_deps = [ "//android_webview:system_webview_apk", "//android_webview/tools/system_webview_shell:system_webview_shell_layout_test_apk", + "//chrome/test/chromedriver:chromedriver($host_toolchain)", + "//third_party/blink/tools:wpt_tests_android_isolate", ] - set_sources_assignment_filter([ "#*" ]) - sources = - read_file("//testing/scripts/run_android_wpt.pydeps", "list lines") - data = sources - data += [ "//third_party/blink/web_tests/external/" ] } } @@ -60,8 +49,8 @@ android_apk("webview_instrumentation_apk") { ":webview_instrumentation_apk_assets", ":webview_instrumentation_apk_resources", ":webview_instrumentation_test_utils_java", + "//android_webview:android_webview_java", "//android_webview:android_webview_product_config_java", - "//android_webview:android_webview_step1_java", "//android_webview:common_java", "//android_webview:locale_pak_assets", "//android_webview:platform_service_bridge_upstream_implementation_java", @@ -73,22 +62,23 @@ android_apk("webview_instrumentation_apk") { "//third_party/android_support_test_runner:runner_java", "//third_party/junit", "//ui/android:ui_java", + "//url:gurl_java", ] apk_name = "WebViewInstrumentation" android_manifest = "shell/AndroidManifest.xml" - java_files = [ + sources = [ "shell/src/org/chromium/android_webview/shell/AwShellActivity.java", "shell/src/org/chromium/android_webview/shell/AwShellApplication.java", "shell/src/org/chromium/android_webview/shell/AwShellResourceProvider.java", "shell/src/org/chromium/android_webview/shell/AwShellSwitches.java", "shell/src/org/chromium/android_webview/shell/DrawFn.java", + "shell/src/org/chromium/android_webview/test/AwJUnit4ClassRunner.java", "shell/src/org/chromium/android_webview/test/AwTestContainerView.java", "shell/src/org/chromium/android_webview/test/AwTestRunnerActivity.java", - "shell/src/org/chromium/android_webview/test/AwJUnit4ClassRunner.java", "shell/src/org/chromium/android_webview/test/NullContentsClient.java", - "shell/src/org/chromium/android_webview/test/SecondBrowserProcess.java", "shell/src/org/chromium/android_webview/test/OnlyRunIn.java", + "shell/src/org/chromium/android_webview/test/SecondBrowserProcess.java", "shell/src/org/chromium/android_webview/test/TestContentProvider.java", ] product_config_java_packages = [ webview_product_config_java_package ] @@ -104,7 +94,12 @@ android_apk("webview_instrumentation_apk") { } android_resources("webview_instrumentation_apk_resources") { - resource_dirs = [ "shell/res" ] + sources = [ + "shell/res/layout/testshell_activity.xml", + "shell/res/raw/resource_file.html", + "shell/res/raw/resource_icon.png", + "shell/res/values/config.xml", + ] custom_package = "org.chromium.android_webview.shell" } @@ -144,15 +139,14 @@ android_assets("webview_instrumentation_apk_assets") { shared_library("libstandalonelibwebviewchromium") { testonly = true - sources = [ - "shell/src/draw_gl/draw_fn.cc", - ] + sources = [ "shell/src/draw_gl/draw_fn.cc" ] ldflags = [ "-Wl,-shared,-Bsymbolic" ] deps = [ ":webview_instrumentation_test_native_jni_impl", "//android_webview/lib", "//android_webview/lib:webview_entry_point", "//android_webview/nonembedded", + "//android_webview/public", "//base", "//components/heap_profiling:test_support", "//content/public/test/android:content_native_test_support", @@ -168,7 +162,7 @@ instrumentation_test_apk("webview_instrumentation_test_apk") { min_sdk_version = 21 deps = [ ":webview_instrumentation_test_utils_java", - "//android_webview:android_webview_step1_java", + "//android_webview:android_webview_java", "//android_webview/test/embedded_test_server:aw_net_java_test_support", "//base:base_java", "//base:base_java_test_support", @@ -193,8 +187,9 @@ instrumentation_test_apk("webview_instrumentation_test_apk") { "//third_party/junit", "//third_party/metrics_proto:metrics_proto_java", "//ui/android:ui_java", + "//url:gurl_java", ] - java_files = [ + sources = [ "../javatests/src/org/chromium/android_webview/test/AcceptLanguageTest.java", "../javatests/src/org/chromium/android_webview/test/AndroidProtocolHandlerTest.java", "../javatests/src/org/chromium/android_webview/test/AndroidScrollIntegrationTest.java", @@ -211,8 +206,8 @@ instrumentation_test_apk("webview_instrumentation_test_apk") { "../javatests/src/org/chromium/android_webview/test/AwContentsClientFullScreenTest.java", "../javatests/src/org/chromium/android_webview/test/AwContentsClientGetDefaultVideoPosterTest.java", "../javatests/src/org/chromium/android_webview/test/AwContentsClientOnFormResubmissionTest.java", - "../javatests/src/org/chromium/android_webview/test/AwContentsClientOnRendererUnresponsiveTest.java", "../javatests/src/org/chromium/android_webview/test/AwContentsClientOnRenderProcessGoneTest.java", + "../javatests/src/org/chromium/android_webview/test/AwContentsClientOnRendererUnresponsiveTest.java", "../javatests/src/org/chromium/android_webview/test/AwContentsClientOnScaleChangedTest.java", "../javatests/src/org/chromium/android_webview/test/AwContentsClientOnUnhandledKeyEventTest.java", "../javatests/src/org/chromium/android_webview/test/AwContentsClientShouldInterceptRequestTest.java", @@ -238,7 +233,7 @@ instrumentation_test_apk("webview_instrumentation_test_apk") { "../javatests/src/org/chromium/android_webview/test/AwSecondBrowserProcessTest.java", "../javatests/src/org/chromium/android_webview/test/AwServiceWorkerClientTest.java", "../javatests/src/org/chromium/android_webview/test/AwSettingsTest.java", - "../javatests/src/org/chromium/android_webview/test/AwStrictModeTest.java", + "../javatests/src/org/chromium/android_webview/test/AwUncaughtExceptionTest.java", "../javatests/src/org/chromium/android_webview/test/AwVariationsSeedFetcherTest.java", "../javatests/src/org/chromium/android_webview/test/AwWebContentsObserverTest.java", "../javatests/src/org/chromium/android_webview/test/AwZoomTest.java", @@ -254,6 +249,7 @@ instrumentation_test_apk("webview_instrumentation_test_apk") { "../javatests/src/org/chromium/android_webview/test/ContentViewMiscTest.java", "../javatests/src/org/chromium/android_webview/test/CookieManagerStartupTest.java", "../javatests/src/org/chromium/android_webview/test/CookieManagerTest.java", + "../javatests/src/org/chromium/android_webview/test/DarkModeTest.java", "../javatests/src/org/chromium/android_webview/test/DisableHardwareAccelerationForTest.java", "../javatests/src/org/chromium/android_webview/test/FullScreenVideoTestAwContentsClient.java", "../javatests/src/org/chromium/android_webview/test/GeolocationTest.java", @@ -273,9 +269,8 @@ instrumentation_test_apk("webview_instrumentation_test_apk") { "../javatests/src/org/chromium/android_webview/test/PopupWindowTest.java", "../javatests/src/org/chromium/android_webview/test/PostMessageTest.java", "../javatests/src/org/chromium/android_webview/test/RenderProcessGoneHelper.java", - "../javatests/src/org/chromium/android_webview/test/SaveRestoreStateTest.java", "../javatests/src/org/chromium/android_webview/test/SafeBrowsingTest.java", - "../javatests/src/org/chromium/android_webview/test/AwUncaughtExceptionTest.java", + "../javatests/src/org/chromium/android_webview/test/SaveRestoreStateTest.java", "../javatests/src/org/chromium/android_webview/test/SslPreferencesTest.java", "../javatests/src/org/chromium/android_webview/test/StandaloneAwQuotaManagerBridgeTest.java", "../javatests/src/org/chromium/android_webview/test/TestAwContents.java", @@ -295,7 +290,7 @@ instrumentation_test_apk("webview_instrumentation_test_apk") { "../javatests/src/org/chromium/android_webview/test/devui/util/WebViewCrashInfoCollectorTest.java", "../javatests/src/org/chromium/android_webview/test/devui/util/WebViewCrashLogParserTest.java", "../javatests/src/org/chromium/android_webview/test/services/CrashReceiverServiceTest.java", - "../javatests/src/org/chromium/android_webview/test/services/MinidumpUploaderTest.java", + "../javatests/src/org/chromium/android_webview/test/services/MinidumpUploadJobTest.java", "../javatests/src/org/chromium/android_webview/test/services/MockVariationsSeedServer.java", "../javatests/src/org/chromium/android_webview/test/services/VariationsSeedServerTest.java", "../javatests/src/org/chromium/android_webview/test/services/VisualStateCallbackTest.java", @@ -312,12 +307,14 @@ instrumentation_test_apk("webview_instrumentation_test_apk") { "../javatests/src/org/chromium/android_webview/test/util/VideoTestUtil.java", "../javatests/src/org/chromium/android_webview/test/util/VideoTestWebServer.java", ] - data = [ - "data/", - ] - data_deps = [ - "//testing/buildbot/filters:webview_instrumentation_test_apk_filters", - ] + + if (!use_jacoco_coverage) { + # Jacoco requires strict mode to be turned off since it writes coverage data to files. + sources += [ "../javatests/src/org/chromium/android_webview/test/AwStrictModeTest.java" ] + } + data = [ "data/" ] + data_deps = + [ "//testing/buildbot/filters:webview_instrumentation_test_apk_filters" ] if (enable_chrome_android_internal) { data_deps += @@ -339,7 +336,7 @@ instrumentation_test_apk("webview_instrumentation_test_apk") { android_library("webview_instrumentation_test_utils_java") { testonly = true - java_files = [ "shell/src/org/chromium/android_webview/test/util/MemoryMetricsLoggerUtils.java" ] + sources = [ "shell/src/org/chromium/android_webview/test/util/MemoryMetricsLoggerUtils.java" ] deps = [ "//base:base_java", "//base:jni_java", @@ -349,22 +346,17 @@ android_library("webview_instrumentation_test_utils_java") { generate_jni("webview_instrumentation_test_native_jni") { testonly = true - sources = [ - "shell/src/org/chromium/android_webview/test/util/MemoryMetricsLoggerUtils.java", - ] + sources = [ "shell/src/org/chromium/android_webview/test/util/MemoryMetricsLoggerUtils.java" ] } source_set("webview_instrumentation_test_native_jni_impl") { - sources = [ - "shell/memory_metrics_logger_utils.cc", - ] + sources = [ "shell/memory_metrics_logger_utils.cc" ] deps = [ ":webview_instrumentation_test_native_jni", - "//android_webview/browser", - "//android_webview/browser/metrics", "//base", "//base/test:test_support", + "//components/embedder_support/android/metrics", ] } @@ -375,7 +367,9 @@ test("android_webview_unittests") { ":android_webview_unittests_jni", "//android_webview/browser", "//android_webview/browser/gfx", + "//android_webview/browser/lifecycle", "//android_webview/browser/metrics", + "//android_webview/common", "//base/test:test_support", "//components/autofill/core/browser", "//components/metrics", @@ -398,14 +392,19 @@ test("android_webview_unittests") { "../browser/aw_contents_client_bridge_unittest.cc", "../browser/aw_form_database_service_unittest.cc", "../browser/aw_media_url_interceptor_unittest.cc", + "../browser/aw_pac_processor_unittest.cc", "../browser/aw_permission_manager_unittest.cc", + "../browser/gfx/aw_attaching_to_window_recorder_unittest.cc", + "../browser/gfx/begin_frame_source_webview_unittest.cc", "../browser/gfx/browser_view_renderer_unittest.cc", "../browser/gfx/test/fake_window.cc", "../browser/gfx/test/fake_window.h", "../browser/gfx/test/rendering_test.cc", "../browser/gfx/test/rendering_test.h", "../browser/input_stream_unittest.cc", + "../browser/lifecycle/aw_contents_lifecycle_notifier_unittest.cc", "../browser/metrics/aw_metrics_service_client_unittest.cc", + "../browser/metrics/aw_stability_metrics_provider_unittest.cc", "../browser/network_service/android_stream_reader_url_loader_unittest.cc", "../browser/network_service/input_stream_reader_unittest.cc", "../browser/permission/media_access_permission_request_unittest.cc", @@ -414,24 +413,25 @@ test("android_webview_unittests") { "../browser/safe_browsing/aw_safe_browsing_whitelist_manager_unittest.cc", "../browser/scoped_add_feature_flags_unittests.cc", "../browser/state_serializer_unittest.cc", + "../common/aw_origin_matcher_unittest.cc", "../lib/webview_tests.cc", ] + + deps += [ "//v8:v8_external_startup_data_assets" ] } android_assets("android_webview_unittests_assets") { - sources = [ - "unittest/assets/asset_file.ogg", - ] + sources = [ "unittest/assets/asset_file.ogg" ] } android_library("android_webview_unittests_java") { testonly = true deps = [ - "//android_webview:android_webview_step1_java", + "//android_webview:android_webview_java", "//base:base_java", "//content/public/test/android:content_java_test_support", ] - java_files = [ + sources = [ "../unittestjava/src/org/chromium/android_webview/unittest/InputStreamUnittest.java", "../unittestjava/src/org/chromium/android_webview/unittest/MockAwContentsClientBridge.java", ] @@ -447,15 +447,16 @@ generate_jni("android_webview_unittests_jni") { # robolectric tests junit_binary("android_webview_junit_tests") { - java_files = [ + sources = [ "../junit/src/org/chromium/android_webview/robolectric/AwLayoutSizerTest.java", - "../junit/src/org/chromium/android_webview/robolectric/FindAddressTest.java", "../junit/src/org/chromium/android_webview/robolectric/AwScrollOffsetManagerTest.java", + "../junit/src/org/chromium/android_webview/robolectric/FindAddressTest.java", + "../junit/src/org/chromium/android_webview/robolectric/common/FlagOverrideHelperTest.java", "../junit/src/org/chromium/android_webview/robolectric/common/services/ServiceNamesTest.java", ] deps = [ - "//android_webview:android_webview_step1_java", + "//android_webview:android_webview_java", "//base:base_java_test_support", "//content/public/test/android:content_java_test_support", "//third_party/android_support_test_runner:runner_java", diff --git a/chromium/android_webview/test/embedded_test_server/BUILD.gn b/chromium/android_webview/test/embedded_test_server/BUILD.gn index e6252b64d77..e9807d77a65 100644 --- a/chromium/android_webview/test/embedded_test_server/BUILD.gn +++ b/chromium/android_webview/test/embedded_test_server/BUILD.gn @@ -7,7 +7,7 @@ import("//build/config/android/rules.gni") android_library("aw_net_java_test_support") { testonly = true - java_files = [ + sources = [ "java/src/org/chromium/android_webview/test/AwEmbeddedTestServer.java", "java/src/org/chromium/android_webview/test/AwEmbeddedTestServerImpl.java", "java/src/org/chromium/android_webview/test/AwEmbeddedTestServerService.java", @@ -37,9 +37,7 @@ source_set("aw_java_test_native_support") { "aw_embedded_test_server.cc", "aw_test_entry_point.cc", ] - deps = [ - "//net:test_support", - ] + deps = [ "//net:test_support" ] public_deps = [ ":aw_net_jni_headers", "//net:net_test_jni_headers", diff --git a/chromium/android_webview/tools/automated_ui_tests/BUILD.gn b/chromium/android_webview/tools/automated_ui_tests/BUILD.gn index 03b3c41b9a7..47fb5daf6d7 100644 --- a/chromium/android_webview/tools/automated_ui_tests/BUILD.gn +++ b/chromium/android_webview/tools/automated_ui_tests/BUILD.gn @@ -23,7 +23,7 @@ android_apk("webview_ui_test_app_apk") { } android_library("webview_ui_test_app_java") { - java_files = + sources = [ "java/src/org/chromium/webview_ui_test/WebViewUiTestActivity.java" ] deps = [ ":webview_ui_test_app_apk_resources", @@ -34,7 +34,11 @@ android_library("webview_ui_test_app_java") { } android_resources("webview_ui_test_app_apk_resources") { - resource_dirs = [ "java/res" ] + sources = [ + "java/res/layout/edittext_webview.xml", + "java/res/layout/fullscreen_webview.xml", + "java/res/values/strings.xml", + ] custom_package = "org.chromium.webview_ui_test" } @@ -42,15 +46,15 @@ instrumentation_test_apk("webview_ui_test_app_test_apk") { apk_name = "WebViewUiTestAppTest" apk_under_test = ":webview_ui_test_app_apk" android_manifest = "javatests/AndroidManifest.xml" - java_files = [ + sources = [ "javatests/src/org/chromium/webview_ui_test/test/ActionModeTest.java", "javatests/src/org/chromium/webview_ui_test/test/DropDownListTest.java", "javatests/src/org/chromium/webview_ui_test/test/WebViewJSTest.java", "javatests/src/org/chromium/webview_ui_test/test/util/Actions.java", "javatests/src/org/chromium/webview_ui_test/test/util/Atoms.java", "javatests/src/org/chromium/webview_ui_test/test/util/UseLayout.java", - "javatests/src/org/chromium/webview_ui_test/test/util/WebViewUiTestRule.java", "javatests/src/org/chromium/webview_ui_test/test/util/WebViewSyncWrapper.java", + "javatests/src/org/chromium/webview_ui_test/test/util/WebViewUiTestRule.java", ] deps = [ ":webview_ui_test_app_apk_resources", @@ -66,8 +70,6 @@ instrumentation_test_apk("webview_ui_test_app_test_apk") { "//third_party/junit", "//third_party/ub-uiautomator:ub_uiautomator_java", ] - data = [ - "test/data/", - ] + data = [ "test/data/" ] use_webview_provider = system_webview_apk_target } diff --git a/chromium/android_webview/tools/system_webview_shell/BUILD.gn b/chromium/android_webview/tools/system_webview_shell/BUILD.gn index 0db7ef53825..454403c5601 100644 --- a/chromium/android_webview/tools/system_webview_shell/BUILD.gn +++ b/chromium/android_webview/tools/system_webview_shell/BUILD.gn @@ -16,9 +16,20 @@ group("system_webview_shell") { ] } +declare_args() { + # Android package name to use for system_webview_shell_apk (the WebView shell + # browser). You can change this package name to work around signing key + # conflicts (INSTALL_FAILED_UPDATE_INCOMPATIBLE) on devices/emulators which + # have the shell browser preinstalled under the default package name. + system_webview_shell_package_name = "org.chromium.webview_shell" +} + +system_webview_shell_android_manifest = + "$root_gen_dir/android_webview/system_webview_shell_apk/AndroidManifest.xml" + android_apk("system_webview_shell_apk") { apk_name = "SystemWebViewShell" - java_files = [ + sources = [ "apk/src/org/chromium/webview_shell/JankActivity.java", "apk/src/org/chromium/webview_shell/PageCyclerTestActivity.java", "apk/src/org/chromium/webview_shell/StartupTimeActivity.java", @@ -27,13 +38,16 @@ android_apk("system_webview_shell_apk") { "apk/src/org/chromium/webview_shell/WebPlatformTestsActivity.java", "apk/src/org/chromium/webview_shell/WebViewAnimationTestActivity.java", "apk/src/org/chromium/webview_shell/WebViewBrowserActivity.java", + "apk/src/org/chromium/webview_shell/WebViewBrowserSecondProcessActivity.java", "apk/src/org/chromium/webview_shell/WebViewCreateDestroyActivity.java", "apk/src/org/chromium/webview_shell/WebViewLayoutTestActivity.java", "apk/src/org/chromium/webview_shell/WebViewPackageHelper.java", "apk/src/org/chromium/webview_shell/WebViewThreadTestActivity.java", "apk/src/org/chromium/webview_shell/WebViewTracingActivity.java", + "apk/src/org/chromium/webview_shell/WebViewWithClipPath.java", ] - android_manifest = "apk/AndroidManifest.xml" + android_manifest = system_webview_shell_android_manifest + android_manifest_dep = ":system_webview_shell_manifest" target_sdk_version = 29 deps = [ ":system_webview_shell_apk_resources", @@ -43,19 +57,40 @@ android_apk("system_webview_shell_apk") { ] } +jinja_template("system_webview_shell_manifest") { + input = "apk/AndroidManifest.xml" + output = system_webview_shell_android_manifest + variables = [ "manifest_package=$system_webview_shell_package_name" ] +} + android_resources("system_webview_shell_apk_resources") { - resource_dirs = [ "apk/res" ] - custom_package = "org.chromium.webview_shell" - deps = [ - "//third_party/android_deps:android_support_v7_appcompat_java", + sources = [ + "apk/res/drawable-mdpi/breadcrumb_arrow_black.png", + "apk/res/drawable-mdpi/ic_launcher.png", + "apk/res/layout/activity_empty.xml", + "apk/res/layout/activity_web_platform_tests.xml", + "apk/res/layout/activity_web_platform_tests_child.xml", + "apk/res/layout/activity_webview.xml", + "apk/res/layout/activity_webview_animation_test.xml", + "apk/res/layout/activity_webview_browser.xml", + "apk/res/menu/main_menu.xml", + "apk/res/values-night/colors.xml", + "apk/res/values-v17/styles.xml", + "apk/res/values-v29/styles.xml", + "apk/res/values/colors.xml", + "apk/res/values/strings.xml", + "apk/res/values/styles.xml", + "apk/res/xml/network_security_config.xml", ] + custom_package = "org.chromium.webview_shell" + deps = [ "//third_party/android_deps:android_support_v7_appcompat_java" ] } instrumentation_test_apk("system_webview_shell_page_cycler_apk") { apk_name = "SystemWebViewShellPageCycler" apk_under_test = ":system_webview_shell_apk" android_manifest = "page_cycler/AndroidManifest.xml" - java_files = [ "page_cycler/src/org/chromium/webview_shell/page_cycler/PageCyclerTest.java" ] + sources = [ "page_cycler/src/org/chromium/webview_shell/page_cycler/PageCyclerTest.java" ] deps = [ "//base:base_java", "//base:base_java_test_support", @@ -72,7 +107,7 @@ instrumentation_test_apk("system_webview_shell_layout_test_apk") { apk_name = "SystemWebViewShellLayoutTest" apk_under_test = ":system_webview_shell_apk" android_manifest = "layout_tests/AndroidManifest.xml" - java_files = [ + sources = [ "layout_tests/src/org/chromium/webview_shell/test/WebPlatformTestsActivityTest.java", "layout_tests/src/org/chromium/webview_shell/test/WebViewLayoutTest.java", "layout_tests/src/org/chromium/webview_shell/test/WebViewThreadTest.java", diff --git a/chromium/android_webview/tools/webview_log_verbosifier/BUILD.gn b/chromium/android_webview/tools/webview_log_verbosifier/BUILD.gn index aca64663bf1..082186ebf39 100644 --- a/chromium/android_webview/tools/webview_log_verbosifier/BUILD.gn +++ b/chromium/android_webview/tools/webview_log_verbosifier/BUILD.gn @@ -7,14 +7,28 @@ import("//build/config/android/rules.gni") android_apk("webview_log_verbosifier_apk") { apk_name = "WebViewLogVerbosifier" android_manifest = "AndroidManifest.xml" - deps = [ - ":webview_log_verbosifier_resources", - ] + deps = [ ":webview_log_verbosifier_resources" ] min_sdk_version = 21 target_sdk_version = 28 } android_resources("webview_log_verbosifier_resources") { - resource_dirs = [ "res" ] + sources = [ + "res/drawable-v24/ic_launcher_foreground.xml", + "res/drawable/ic_launcher_background.xml", + "res/mipmap-anydpi-v26/ic_launcher.xml", + "res/mipmap-anydpi-v26/ic_launcher_round.xml", + "res/mipmap-hdpi/ic_launcher.png", + "res/mipmap-hdpi/ic_launcher_round.png", + "res/mipmap-mdpi/ic_launcher.png", + "res/mipmap-mdpi/ic_launcher_round.png", + "res/mipmap-xhdpi/ic_launcher.png", + "res/mipmap-xhdpi/ic_launcher_round.png", + "res/mipmap-xxhdpi/ic_launcher.png", + "res/mipmap-xxhdpi/ic_launcher_round.png", + "res/mipmap-xxxhdpi/ic_launcher.png", + "res/mipmap-xxxhdpi/ic_launcher_round.png", + "res/values/ic_launcher_background.xml", + ] custom_package = "org.chromium.webview_log_verbosifier" } diff --git a/chromium/android_webview/variables.gni b/chromium/android_webview/variables.gni index 299b2092e01..3b6ec8010ae 100644 --- a/chromium/android_webview/variables.gni +++ b/chromium/android_webview/variables.gni @@ -2,11 +2,16 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. +import("//build/config/android/channel.gni") +import("//build/config/android/config.gni") import("//weblayer/variables.gni") declare_args() { - # Show a launcher icon to open WebView developer UI, off by default. - webview_devui_show_icon = false + # Show a launcher icon to open WebView developer UI. This is enabled by + # default for all prestable builds. The icon for Monochrome is shown + # dynamically at runtime if Monochrome is the current selected system WebView + # implementation or hidden otherwise. + webview_devui_show_icon = android_channel != "stable" } system_webview_android_manifest = @@ -14,6 +19,14 @@ system_webview_android_manifest = trichrome_webview_android_manifest = "$root_gen_dir/android_webview/trichrome_webview_apk/AndroidManifest.xml" trichrome_webview_64_32_android_manifest = "$root_gen_dir/android_webview/trichrome_webview_64_32_apk/AndroidManifest.xml" +trichrome_webview_32_android_manifest = + "$root_gen_dir/android_webview/trichrome_webview_32_apk/AndroidManifest.xml" + +# TODO(crbug/760187): We're in the process of migrating to always defining the +# WebView targets upstream. Remove this once it's always true. +if (!defined(define_upstream_webview_targets)) { + define_upstream_webview_targets = public_android_sdk +} upstream_only_webview_deps = [ "//android_webview:platform_service_bridge_upstream_implementation_java", |