123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405 |
- # 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("//android_webview/system_webview_apk_tmpl.gni")
- import("//build/config/android/abi.gni")
- import("//build/config/android/config.gni")
- import("//build/config/android/rules.gni")
- import("//build/config/python.gni")
- import("//device/vr/buildflags/buildflags.gni")
- import("//third_party/icu/config.gni")
- import("//tools/v8_context_snapshot/v8_context_snapshot.gni")
- import("//weblayer/variables.gni")
- android_assets("weblayer_shell_assets") {
- testonly = true
- sources = [ "$root_out_dir/weblayer_shell.pak" ]
- disable_compression = true
- deps = [ "//weblayer/shell:shell_pak" ]
- }
- android_resources("weblayer_shell_resources") {
- sources = [
- "shell_apk/res/drawable-mdpi/avatar_sunglasses.png",
- "shell_apk/res/layout/alt_shell_browser_controls.xml",
- "shell_apk/res/layout/bottom_controls.xml",
- "shell_apk/res/layout/main.xml",
- "shell_apk/res/layout/shell_browser_controls.xml",
- "shell_apk/res/menu/app_menu.xml",
- "shell_apk/res/menu/controls_menu.xml",
- "shell_apk/res/values/strings.xml",
- "shell_apk/res/values/styles.xml",
- ]
- }
- android_library("weblayer_shell_java") {
- testonly = true
- resources_package = "org.chromium.weblayer.shell"
- # The google_play_services_base_java dependency is necessary for the
- # google_play_services_version definition in the manifest.
- deps = [
- ":weblayer_shell_resources",
- "$google_play_services_package:google_play_services_base_java",
- "//base:base_java",
- "//components/strictmode/android:java",
- "//third_party/androidx:androidx_annotation_annotation_java",
- "//third_party/androidx:androidx_appcompat_appcompat_java",
- "//third_party/androidx:androidx_fragment_fragment_java",
- "//weblayer/public/java",
- ]
- sources = [
- "shell_apk/src/org/chromium/weblayer/shell/InstrumentationActivity.java",
- "shell_apk/src/org/chromium/weblayer/shell/TelemetryActivity.java",
- "shell_apk/src/org/chromium/weblayer/shell/WebLayerShellActivity.java",
- ]
- }
- template("weblayer_shell_apk_helper") {
- _weblayer_shell_manifest =
- "$target_gen_dir/manifest_$target_name/AndroidManifest.xml"
- _manifest_target = target_name + "_manifest"
- jinja_template(_manifest_target) {
- input = "shell_apk/AndroidManifest.xml"
- output = _weblayer_shell_manifest
- if (defined(invoker.weblayer_package)) {
- variables = [ "weblayer_package=" + invoker.weblayer_package ]
- }
- }
- android_apk(target_name + "_apk") {
- testonly = true
- deps = [
- ":$_manifest_target",
- ":weblayer_shell_assets",
- ":weblayer_shell_java",
- ]
- apk_name = invoker.apk_name
- # Adding an "_incremental" suffix to the APK name confuses wrapper scripts
- # so for simplicity just disable incremental builds for WebLayer Shell.
- never_incremental = true
- android_manifest = _weblayer_shell_manifest
- min_sdk_version = default_min_sdk_version
- target_sdk_version = 28
- android_manifest_dep = ":$_manifest_target"
- command_line_flags_file = "weblayer-command-line"
- proguard_enabled = !is_java_debug
- # Add a native lib so the ABI is compatible with the implementation APK.
- native_lib_placeholders = [ "libdummy.so" ]
- }
- }
- weblayer_shell_apk_helper("weblayer_shell") {
- weblayer_package = "org.chromium.weblayer.support"
- apk_name = "WebLayerShell"
- }
- weblayer_shell_apk_helper("weblayer_shell_system_webview") {
- apk_name = "WebLayerShellSystemWebView"
- }
- generate_wrapper("run_browserfragment_shell") {
- testonly = true
- wrapper_script = "$root_out_dir/bin/run_browserfragment_shell"
- executable = "//weblayer/tools/run_weblayer_shell.py"
- executable_args = [
- "--shell-apk-path",
- "@WrappedPath(apks/BFShell.apk)",
- "--support-apk-path",
- "@WrappedPath(apks/BFSandbox.apk)",
- "--support-apk-path",
- "@WrappedPath(apks/WebLayerSupport.apk)",
- ]
- deps = [
- ":browser_sandbox_apk",
- ":browserfragment_shell_apk",
- ":weblayer_support_apk",
- ]
- }
- generate_wrapper("run_weblayer_shell") {
- testonly = true
- wrapper_script = "$root_out_dir/bin/run_weblayer_shell"
- executable = "//weblayer/tools/run_weblayer_shell.py"
- executable_args = [
- "--shell-apk-path",
- "@WrappedPath(apks/WebLayerShell.apk)",
- "--support-apk-path",
- "@WrappedPath(apks/WebLayerSupport.apk)",
- ]
- deps = [
- ":weblayer_shell_apk",
- ":weblayer_support_apk",
- ]
- }
- generate_wrapper("run_weblayer_shell_trichrome") {
- testonly = true
- wrapper_script = "$root_out_dir/bin/run_weblayer_shell_trichrome"
- executable = "//weblayer/tools/run_weblayer_shell.py"
- executable_args = [
- "--shell-apk-path",
- "@WrappedPath(apks/WebLayerShellSystemWebView.apk)",
- "--support-apk-path",
- "@WrappedPath(apks/TrichromeLibrary.apk)",
- "--switch-webview-to",
- "@WrappedPath(apks/TrichromeWebView.apk)",
- ]
- deps = [
- ":weblayer_shell_system_webview_apk",
- "//android_webview:trichrome_webview_apk",
- "//chrome/android:trichrome_library_apk",
- ]
- }
- if (enable_chrome_android_internal) {
- generate_wrapper("run_weblayer_shell_monochrome") {
- testonly = true
- wrapper_script = "$root_out_dir/bin/run_weblayer_shell_monochrome"
- executable = "//weblayer/tools/run_weblayer_shell.py"
- executable_args = [
- "--shell-apk-path",
- "@WrappedPath(apks/WebLayerShellSystemWebView.apk)",
- "--switch-webview-to",
- "@WrappedPath(apks/Monochrome.apk)",
- ]
- deps = [
- ":weblayer_shell_system_webview_apk",
- "//clank/java:monochrome_apk",
- ]
- }
- generate_wrapper("run_weblayer_shell_webview_google") {
- testonly = true
- wrapper_script = "$root_out_dir/bin/run_weblayer_shell_webview_google"
- executable = "//weblayer/tools/run_weblayer_shell.py"
- executable_args = [
- "--shell-apk-path",
- "@WrappedPath(apks/WebLayerShellSystemWebView.apk)",
- "--switch-webview-to",
- "@WrappedPath(apks/SystemWebViewGoogle.apk)",
- ]
- deps = [
- ":weblayer_shell_system_webview_apk",
- "//clank/android_webview:system_webview_google_apk",
- ]
- }
- generate_wrapper("run_weblayer_shell_trichrome_google") {
- testonly = true
- wrapper_script = "$root_out_dir/bin/run_weblayer_shell_trichrome_google"
- executable = "//weblayer/tools/run_weblayer_shell.py"
- executable_args = [
- "--shell-apk-path",
- "@WrappedPath(apks/WebLayerShellSystemWebView.apk)",
- "--support-apk-path",
- "@WrappedPath(apks/TrichromeLibraryGoogle.apk)",
- "--switch-webview-to",
- "@WrappedPath(apks/TrichromeWebViewGoogle.apk)",
- ]
- deps = [
- ":weblayer_shell_system_webview_apk",
- "//clank/android_webview:trichrome_webview_google_apk",
- "//clank/java:trichrome_library_google_apk",
- ]
- }
- }
- generate_wrapper("run_weblayer_shell_webview") {
- testonly = true
- wrapper_script = "$root_out_dir/bin/run_weblayer_shell_webview"
- executable = "//weblayer/tools/run_weblayer_shell.py"
- executable_args = [
- "--shell-apk-path",
- "@WrappedPath(apks/WebLayerShellSystemWebView.apk)",
- "--switch-webview-to",
- "@WrappedPath(apks/SystemWebView.apk)",
- ]
- deps = [
- ":weblayer_shell_system_webview_apk",
- "//android_webview:system_webview_apk",
- ]
- }
- weblayer_support_manifest =
- "$target_gen_dir/weblayer_support_manifest/AndroidManifest.xml"
- jinja_template("weblayer_support_manifest") {
- input = "support_apk/AndroidManifest.xml"
- output = weblayer_support_manifest
- }
- android_apk("weblayer_support_apk") {
- testonly = true
- # Test runner does not support having "additional apks" that are incremental.
- never_incremental = true
- deps = [
- ":weblayer_support_manifest",
- "//android_webview:locale_pak_assets",
- "//android_webview:pak_file_assets",
- "//android_webview:weblayer_webview_assets",
- "//weblayer:locale_pak_assets",
- "//weblayer/browser/java",
- "//weblayer/browser/java:test_java",
- ]
- # Transitive dependencies
- deps += [
- "//components/safe_browsing/android:safe_browsing_java",
- "//components/viz/service:service_java",
- "//media/base/android:media_java",
- "//media/capture/video/android:capture_java",
- "//mojo/public/java:system_java",
- "//net/android:net_java",
- ]
- # default upstream classes
- deps += [ "//weblayer/browser/java:upstream_java" ]
- # Add the Chromium linker for WebView compatibility support on L-M.
- deps += [ "//base/android/linker:chromium_android_linker" ]
- loadable_modules =
- [ "$root_out_dir/libchromium_android_linker$shlib_extension" ]
- if (enable_arcore) {
- _libarcore_dir = get_label_info(
- "//third_party/arcore-android-sdk-client:com_google_ar_core_java($default_toolchain)",
- "target_out_dir") + "/com_google_ar_core_java/jni"
- loadable_modules +=
- [ "$_libarcore_dir/$android_app_abi/libarcore_sdk_c.so" ]
- deps += [
- "//third_party/arcore-android-sdk-client:com_google_ar_core_J__unpack_aar",
- "//third_party/arcore-android-sdk-client:com_google_ar_core_java__ignored_manifest",
- ]
- }
- apk_name = "WebLayerSupport"
- android_manifest = weblayer_support_manifest
- min_sdk_version = default_min_sdk_version
- target_sdk_version = 28
- android_manifest_dep = ":weblayer_support_manifest"
- shared_resources = true
- version_name = chrome_version_name
- version_code = webview_stable_version_code
- product_config_java_packages = [ weblayer_product_config_java_package ]
- shared_libraries = [ "//weblayer:libweblayer_test" ]
- }
- script_test("weblayer_shell_wpt") {
- script = "//testing/scripts/run_wpt_tests.py"
- args = [
- "--product",
- "android_weblayer",
- "--browser-apk",
- "@WrappedPath(apks/WebLayerShell.apk)",
- "--additional-apk",
- "@WrappedPath(apks/WebLayerSupport.apk)",
- "--webdriver-binary",
- "@WrappedPath(clang_x64/chromedriver)",
- "-v",
- ]
- data_deps = [
- ":weblayer_shell_apk",
- ":weblayer_support_apk",
- "//chrome/test/chromedriver:chromedriver($host_toolchain)",
- "//third_party/blink/tools:wpt_tests_android_isolate",
- ]
- }
- # TODO(rayankans): Update `run_weblayer_shell` to also deploy the browserfragment shell with a
- # browser sandbox APK.
- browserfragment_shell_manifest =
- "$target_gen_dir/browserfragment_shell_manifest/AndroidManifest.xml"
- jinja_template("browserfragment_shell_manifest") {
- input = "browserfragment_shell_apk/AndroidManifest.xml"
- output = browserfragment_shell_manifest
- }
- android_resources("browserfragment_shell_resources") {
- sources = [
- "browserfragment_shell_apk/res/layout/main.xml",
- "browserfragment_shell_apk/res/values/styles.xml",
- ]
- }
- android_library("browserfragment_shell_java") {
- testonly = true
- resources_package = "org.chromium.browserfragment.shell"
- sources = [ "browserfragment_shell_apk/src/org/chromium/browserfragment/shell/BrowserFragmentShellActivity.java" ]
- deps = [
- ":browserfragment_shell_resources",
- "//base:base_java",
- "//third_party/android_deps:com_google_guava_guava_android_java",
- "//third_party/androidx:androidx_appcompat_appcompat_java",
- "//third_party/androidx:androidx_fragment_fragment_java",
- "//weblayer/public/java:browserfragment_java",
- ]
- }
- android_apk("browserfragment_shell_apk") {
- testonly = true
- # Test runner does not support having "additional apks" that are incremental.
- never_incremental = true
- deps = [
- ":browserfragment_shell_java",
- ":browserfragment_shell_manifest",
- ]
- apk_name = "BFShell"
- android_manifest = browserfragment_shell_manifest
- min_sdk_version = default_min_sdk_version
- target_sdk_version = 28
- android_manifest_dep = ":browserfragment_shell_manifest"
- }
- browser_sandbox_manifest =
- "$target_gen_dir/browser_sandbox_manifest/AndroidManifest.xml"
- jinja_template("browser_sandbox_manifest") {
- input = "browser_sandbox_apk/AndroidManifest.xml"
- output = browser_sandbox_manifest
- }
- android_apk("browser_sandbox_apk") {
- testonly = true
- # Test runner does not support having "additional apks" that are incremental.
- never_incremental = true
- deps = [
- ":browser_sandbox_manifest",
- "//weblayer/public/java:browserfragment_sandbox_java",
- ]
- apk_name = "BFSandbox"
- android_manifest = browser_sandbox_manifest
- min_sdk_version = default_min_sdk_version
- target_sdk_version = 28
- android_manifest_dep = ":browser_sandbox_manifest"
- shared_resources = true
- }
|