# Copyright 2015 The Chromium Authors
# 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("//testing/test.gni")
# Mark all targets as test only.
testonly = true
group("system_webview_shell") {
deps = [
":system_webview_shell_apk",
":system_webview_shell_layout_test_apk",
":system_webview_shell_page_cycler_apk",
]
}
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"
layout_tests_android_manifest = "$root_gen_dir/android_webview/system_webview_shell_apk/layout_tests/AndroidManifest.xml"
page_cycler_tests_android_manifest = "$root_gen_dir/android_webview/system_webview_shell_apk/page_cycler/AndroidManifest.xml"
android_apk("system_webview_shell_apk") {
apk_name = "SystemWebViewShell"
android_manifest = system_webview_shell_android_manifest
android_manifest_dep = ":system_webview_shell_manifest"
deps = [
":system_webview_shell_apk_java",
":system_webview_shell_apk_resources",
]
enable_lint = true
min_sdk_version = min_supported_sdk_version
lint_baseline_file = "lint-baseline.xml"
lint_suppressions_file = "lint-suppressions.xml"
}
android_library("system_webview_shell_apk_java") {
testonly = true
sources = [
"apk/src/org/chromium/webview_shell/JankActivity.java",
"apk/src/org/chromium/webview_shell/MultiFileSelector.java",
"apk/src/org/chromium/webview_shell/PageCyclerTestActivity.java",
"apk/src/org/chromium/webview_shell/StartupTimeActivity.java",
"apk/src/org/chromium/webview_shell/TelemetryActivity.java",
"apk/src/org/chromium/webview_shell/TelemetryMemoryPressureActivity.java",
"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/WebViewBrowserFragment.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/WebViewMultiProfileBrowserActivity.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",
]
deps = [
":system_webview_shell_apk_resources",
"//base:base_java",
"//net/android:net_java",
"//third_party/android_deps:guava_android_java",
"//third_party/androidx:androidx_activity_activity_java",
"//third_party/androidx:androidx_annotation_annotation_java",
"//third_party/androidx:androidx_appcompat_appcompat_java",
"//third_party/androidx:androidx_core_core_java",
"//third_party/androidx:androidx_fragment_fragment_java",
"//third_party/androidx:androidx_savedstate_savedstate_java",
"//third_party/androidx:androidx_webkit_webkit_java",
]
resources_package = "org.chromium.webview_shell"
}
jinja_template("system_webview_shell_manifest") {
input = "apk/AndroidManifest.xml"
output = system_webview_shell_android_manifest
variables = [ "manifest_package=$system_webview_shell_package_name" ]
}
jinja_template("layout_tests_manifest") {
input = "layout_tests/AndroidManifest.xml"
output = layout_tests_android_manifest
variables = [ "target_package=$system_webview_shell_package_name" ]
}
jinja_template("page_cycler_tests_manifest") {
input = "page_cycler/AndroidManifest.xml"
output = page_cycler_tests_android_manifest
variables = [ "target_package=$system_webview_shell_package_name" ]
}
android_resources("system_webview_shell_apk_resources") {
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/layout/activity_webview_multi_profile.xml",
"apk/res/layout/fragment_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/ids.xml",
"apk/res/values/strings.xml",
"apk/res/values/styles.xml",
"apk/res/xml/ad_services_config.xml",
"apk/res/xml/network_security_config.xml",
]
}
instrumentation_test_apk("system_webview_shell_page_cycler_apk") {
apk_name = "SystemWebViewShellPageCycler"
apk_under_test = ":system_webview_shell_apk"
android_manifest = page_cycler_tests_android_manifest
android_manifest_dep = ":page_cycler_tests_manifest"
sources = [ "page_cycler/src/org/chromium/webview_shell/page_cycler/PageCyclerTest.java" ]
deps = [
":system_webview_shell_apk_java",
"//base:base_java_test_support",
"//content/public/android:content_java",
"//content/public/test/android:content_java_test_support",
"//third_party/androidx:androidx_test_monitor_java",
"//third_party/androidx:androidx_test_runner_java",
"//third_party/junit",
]
}
copy("copy_webview_js_test_script_to_blink") {
sources = [ "test/data/resources/js-test.js" ]
outputs =
[ "$root_build_dir/third_party/blink/web_tests/resources/js-test.js" ]
}
instrumentation_test_apk("system_webview_shell_layout_test_apk") {
apk_name = "SystemWebViewShellLayoutTest"
apk_under_test = ":system_webview_shell_apk"
android_manifest = layout_tests_android_manifest
android_manifest_dep = ":layout_tests_manifest"
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",
]
deps = [
":copy_webview_js_test_script_to_blink",
":system_webview_shell_apk_java",
"//base:base_java",
"//base:base_java_test_support",
"//third_party/androidx:androidx_test_monitor_java",
"//third_party/androidx:androidx_test_runner_java",
"//third_party/junit",
]
data = [
"test/data/",
"//third_party/blink/web_tests/virtual/stable/webexposed/",
"//third_party/blink/web_tests/platform/linux/virtual/stable/webexposed/",
"//third_party/blink/web_tests/platform/mac/virtual/stable/webexposed/",
"//third_party/blink/web_tests/platform/win/virtual/stable/webexposed/",
"//third_party/blink/web_tests/resources/global-interface-listing.js",
"//third_party/blink/web_tests/virtual/stable/webexposed/",
"//third_party/blink/web_tests/webexposed/global-interface-listing.html",
"//third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt",
"//third_party/chromium-variations",
"$root_build_dir/third_party/blink/web_tests/resources/js-test.js",
]
# Tell GN to ignore 'incremental_install' even if the user has it in their GN
# args because it's incompatible with 'use_webview_provider'.
never_incremental = true
use_webview_provider = system_webview_apk_target
}