# 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/config.gni") import("//build/config/android/rules.gni") android_library("weblayer_java_tests") { testonly = true sources = [ "src/org/chromium/weblayer/test/BrowserFragmentLifecycleTest.java", "src/org/chromium/weblayer/test/BrowserTest.java", "src/org/chromium/weblayer/test/CookieManagerTest.java", "src/org/chromium/weblayer/test/CrashReporterTest.java", "src/org/chromium/weblayer/test/DataClearingTest.java", "src/org/chromium/weblayer/test/DisplayCutoutTest.java", "src/org/chromium/weblayer/test/DowngradeTest.java", "src/org/chromium/weblayer/test/DownloadCallbackTest.java", "src/org/chromium/weblayer/test/ErrorPageCallbackTest.java", "src/org/chromium/weblayer/test/ExecuteScriptTest.java", "src/org/chromium/weblayer/test/ExternalNavigationTest.java", "src/org/chromium/weblayer/test/FaviconFetcherTest.java", "src/org/chromium/weblayer/test/FindInPageTest.java", "src/org/chromium/weblayer/test/FullscreenCallbackTest.java", "src/org/chromium/weblayer/test/FullscreenSizeTest.java", "src/org/chromium/weblayer/test/GoogleAccountsTest.java", "src/org/chromium/weblayer/test/InputTypesTest.java", "src/org/chromium/weblayer/test/NavigationTest.java", "src/org/chromium/weblayer/test/NewTabCallbackTest.java", "src/org/chromium/weblayer/test/OnTabRemovedTabListCallbackImpl.java", "src/org/chromium/weblayer/test/PrerenderControllerTest.java", "src/org/chromium/weblayer/test/ProfileTest.java", "src/org/chromium/weblayer/test/RegisterExternalExperimentIdsTest.java", "src/org/chromium/weblayer/test/RenderingTest.java", "src/org/chromium/weblayer/test/ScrollOffsetCallbackTest.java", "src/org/chromium/weblayer/test/SmokeTest.java", "src/org/chromium/weblayer/test/TabCallbackTest.java", "src/org/chromium/weblayer/test/TabListCallbackTest.java", "src/org/chromium/weblayer/test/TabTest.java", "src/org/chromium/weblayer/test/TopControlsTest.java", "src/org/chromium/weblayer/test/WebLayerLoadingTest.java", "src/org/chromium/weblayer/test/WebLayerTest.java", "src/org/chromium/weblayer/test/WebMessageTest.java", "src/org/chromium/weblayer/test/WebViewCompatibilityTest.java", ] deps = [ ":weblayer_java_test_support", "//base:base_java", "//base:base_java_test_support", "//components/safe_browsing/android:safe_browsing_java", "//content/public/test/android:content_java_test_support", "//net/android:net_java_test_support", "//third_party/android_deps:android_support_v4_java", "//third_party/android_deps:androidx_core_core_java", "//third_party/android_deps:androidx_fragment_fragment_java", "//third_party/android_deps:androidx_test_runner_java", "//third_party/android_deps:espresso_java", "//third_party/android_support_test_runner:rules_java", "//third_party/android_support_test_runner:runner_java", "//third_party/hamcrest:hamcrest_java", "//third_party/junit:junit", "//weblayer/browser/java:interfaces_java", "//weblayer/public/java", "//weblayer/public/javatests:weblayer_public_javatests", "//weblayer/shell/android:weblayer_shell_java", ] } android_library("weblayer_private_java_tests") { testonly = true sources = [ "src/org/chromium/weblayer/test/BrowserControlsOffsetCallbackTest.java", "src/org/chromium/weblayer/test/BrowserControlsTest.java", "src/org/chromium/weblayer/test/FullscreenCallbackPrivateTest.java", "src/org/chromium/weblayer/test/GeolocationTest.java", "src/org/chromium/weblayer/test/InfoBarTest.java", "src/org/chromium/weblayer/test/MediaCaptureTest.java", "src/org/chromium/weblayer/test/MediaRouterTest.java", "src/org/chromium/weblayer/test/NetworkChangeNotifierTest.java", "src/org/chromium/weblayer/test/PageInfoTest.java", "src/org/chromium/weblayer/test/PopupTest.java", "src/org/chromium/weblayer/test/ResourceLoadingTest.java", "src/org/chromium/weblayer/test/SiteSettingsTest.java", "src/org/chromium/weblayer/test/TabPrivateTest.java", "src/org/chromium/weblayer/test/TranslateTest.java", "src/org/chromium/weblayer/test/UrlBarControllerTest.java", ] deps = [ ":weblayer_java_private_test_support", ":weblayer_java_test_support", "//base:base_java", "//base:base_java_test_support", "//content/public/android:content_java", "//content/public/test/android:content_java_test_support", "//net/android:net_java_test_support", "//third_party/android_deps:android_support_v4_java", "//third_party/android_deps:androidx_fragment_fragment_java", "//third_party/android_deps:androidx_test_runner_java", "//third_party/android_deps:espresso_java", "//third_party/android_sdk:android_test_base_java", "//third_party/android_support_test_runner:rules_java", "//third_party/android_support_test_runner:runner_java", "//third_party/hamcrest:hamcrest_java", "//third_party/junit:junit", "//ui/android:ui_java_test_support", "//weblayer/public/java", "//weblayer/public/javatestutil:test_java", "//weblayer/shell/android:weblayer_shell_java", ] } android_library("weblayer_java_test_support") { testonly = true sources = [ "src/org/chromium/weblayer/test/BoundedCountDownLatch.java", "src/org/chromium/weblayer/test/EventUtils.java", "src/org/chromium/weblayer/test/InstrumentationActivityTestRule.java", "src/org/chromium/weblayer/test/MinWebLayerVersion.java", "src/org/chromium/weblayer/test/MinWebLayerVersionSkipCheck.java", "src/org/chromium/weblayer/test/NavigationWaiter.java", "src/org/chromium/weblayer/test/NewTabCallbackImpl.java", "src/org/chromium/weblayer/test/ResourceUtil.java", "src/org/chromium/weblayer/test/TestFullscreenCallback.java", "src/org/chromium/weblayer/test/WebLayerActivityTestRule.java", "src/org/chromium/weblayer/test/WebLayerJUnit4ClassRunner.java", ] deps = [ "//base:base_java", "//base:base_java_test_support", "//content/public/test/android:content_java_test_support", "//net/android:net_java_test_support", "//third_party/android_deps:androidx_core_core_java", "//third_party/android_deps:androidx_fragment_fragment_java", "//third_party/android_support_test_runner:rules_java", "//third_party/android_support_test_runner:runner_java", "//third_party/hamcrest:hamcrest_java", "//third_party/junit:junit", "//weblayer/public/java", "//weblayer/shell/android:weblayer_shell_java", ] } android_library("weblayer_java_private_test_support") { testonly = true sources = [ "src/org/chromium/weblayer/test/BrowserControlsHelper.java", "src/org/chromium/weblayer/test/SiteSettingsActivityTestRule.java", ] deps = [ ":weblayer_java_test_support", "//base:base_java", "//base:base_java_test_support", "//content/public/test/android:content_java_test_support", "//third_party/android_support_test_runner:runner_java", "//third_party/hamcrest:hamcrest_java", "//third_party/junit:junit", "//weblayer/public/java", "//weblayer/public/javatestutil:test_java", "//weblayer/shell/android:weblayer_shell_java", ] } template("weblayer_instrumentation") { instrumentation_test_apk(target_name) { forward_variables_from(invoker, "*") android_manifest = "AndroidManifest.xml" min_sdk_version = 21 if (!defined(additional_apks)) { additional_apks = [] } additional_apks += [ "//net/android:net_test_support_apk" ] data = [ "//weblayer/test/data/" ] } } # Runs the instrumentation tests loading the implementation from the default # WebView provider. This is the loading path that is used in production. # TODO(crbug.com/1033070): Figure out why the test infrastructure fails on some # Android versions. weblayer_instrumentation("weblayer_instrumentation_test_apk") { apk_name = "WebLayerInstrumentationTest" apk_under_test = "//weblayer/shell/android:weblayer_shell_system_webview_apk" use_webview_provider = system_webview_apk_target deps = [ ":weblayer_java_tests" ] } # Runs the instrumentation tests loading the implementation from the WebLayer # support library. weblayer_instrumentation("weblayer_support_instrumentation_test_apk") { apk_name = "WebLayerSupportInstrumentationTest" apk_under_test = "//weblayer/shell/android:weblayer_shell_apk" additional_apks = [ "//weblayer/shell/android:weblayer_support_apk" ] deps = [ ":weblayer_java_tests" ] } weblayer_instrumentation("weblayer_private_instrumentation_test_apk") { apk_name = "WebLayerPrivateInstrumentationTest" apk_under_test = "//weblayer/shell/android:weblayer_shell_apk" additional_apks = [ "//weblayer/shell/android:weblayer_support_apk", "//components/media_router/test/android/media_router_test_support:media_router_test_support_apk", ] deps = [ ":weblayer_private_java_tests" ] } # Runs WebLayer instrumentation tests against arbitrary versions of tests, the # client, and the implementation. # # Example usage, testing M80 tests and client against master implementation: # autoninja -C out/Release weblayer_instrumentation_test_versions_apk # cipd install --root /tmp/M80 chromium/testing/weblayer-x86 m80 # out/Release/bin/run_weblayer_instrumentation_tests_versions_apk \ # --test-runner-outdir out/Release # --client-outdir /tmp/M80/out/Release # --implementation-outdir out/Release copy("weblayer_instrumentation_test_versions_apk") { testonly = true sources = [ "weblayer_instrumentation_test_versions.py" ] outputs = [ "$root_build_dir/bin/run_weblayer_instrumentation_test_versions_apk" ] # Also explicitly list the output as data so it gets isolated on bots. data = [ "$root_build_dir/bin/run_weblayer_instrumentation_test_versions_apk", "//third_party/catapult/third_party/typ/", "//weblayer/browser/android/javatests/skew/expectations.txt", ] deps = [ ":weblayer_instrumentation_test_apk" ] data_deps = [ ":weblayer_instrumentation_test_apk" ] } android_test_apk("weblayer_bundle_test_apk") { apk_name = "WebLayerBundleTest" android_manifest = "AndroidManifest_bundle.xml" sources = [ "src/org/chromium/weblayer/test/BundleLanguageTest.java", # This is run both in the bundle tests and the standard instrumentation # tests to make sure bundles don't do anything weird with WebLayer/WebView # compatibility. "src/org/chromium/weblayer/test/WebViewCompatibilityTest.java", ] deps = [ ":weblayer_java_test_support", "//base:base_java", "//base:base_java_test_support", "//content/public/test/android:content_java_test_support", "//third_party/android_deps:androidx_test_runner_java", "//third_party/android_support_test_runner:rules_java", "//third_party/android_support_test_runner:runner_java", "//third_party/junit:junit", "//weblayer/public/java", "//weblayer/public/javatestutil:test_java", "//weblayer/shell/android:weblayer_shell_java", ] never_incremental = true } instrumentation_test_runner("weblayer_bundle_test") { apk_under_test = "//android_webview:system_webview_bundle_apks" # TODO(cduvall): use_webview_provider is needed to make sure a custom WebView # is installable. Unfortunately, bundles are not currently supported for the # use_webview_provider arg, so the APK is specified. It will end up being # replaced by the bundle in apk_under_test. use_webview_provider = system_webview_apk_target data_deps = [ system_webview_apk_target ] additional_locales = [ "es-ES", "fr-CA", ] android_test_apk = ":weblayer_bundle_test_apk" android_test_apk_name = "WebLayerBundleTest" additional_apks = [ "//net/android:net_test_support_apk" ] data = [ "//weblayer/test/data/" ] never_incremental = true }