910e62b5创建于 1月15日历史提交
# Copyright 2023 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/variables.gni")
import("//build/config/android/rules.gni")

# Upstream and Downstream WebView both have instrumentation tests.
# These templates enables a shared basis for these test, ensuring that they use
# the same instrumentation.

# These templates are for test only
testonly = true

# Build the webview_instrumentation_apk with extra dependencies.
# Args:
#   deps: extra dependencies to add - platform-specific libraries.
#   apk_name: Desired apk name.
template("base_webview_instrumentation_apk") {
  android_apk(target_name) {
    apk_name = invoker.apk_name
    deps = [
             "//android_webview:android_webview_java",
             "//android_webview:android_webview_product_config_java",
             "//android_webview:common_java",
             "//android_webview:locale_pak_assets",
             "//android_webview/test:base_webview_instrumentation_java",
             "//android_webview/test:draw_fn_impl_java",
             "//android_webview/test:webview_instrumentation_apk_assets",
             "//android_webview/test:webview_instrumentation_apk_resources",
             "//android_webview/test:webview_instrumentation_test_mock_services_java",
             "//android_webview/test:webview_instrumentation_test_utils_java",
             "//base:base_java",
             "//base:base_java_test_support",
             "//components/android_autofill/browser/test_support:java",
             "//components/content_capture/android/test_support:java",
             "//components/embedder_support/android:util_java",
             "//components/heap_profiling/multi_process:heap_profiling_java_test_support",
             "//components/policy/android:policy_java_test_support",
             "//content/public/android:content_java",
             "//third_party/androidx:androidx_annotation_annotation_java",
             "//third_party/androidx:androidx_core_core_java",
             "//third_party/androidx:androidx_test_monitor_java",
             "//third_party/androidx_javascriptengine:javascriptengine_java",
             "//third_party/jni_zero:jni_zero_java",
             "//third_party/junit",
             "//ui/android:ui_java",
             "//url:gurl_java",
           ] + invoker.deps

    android_manifest = "//android_webview/test/shell/AndroidManifest.xml"

    product_config_java_packages = [ webview_product_config_java_package ]

    shared_libraries =
        [ "//android_webview/test:libstandalonelibwebviewchromium" ]
    srcjar_deps = [ "//android_webview/test:libstandalonelibwebviewchromium__jni_registration" ]

    command_line_flags_file = "android-webview-command-line"
  }
}

# Builds the WebView instrumentation test APK
# This template provides the base shared test instrumentation.
# Targets should contain sources and dependencies that are tests, while this
# template should contain sources and dependencies that support multiple tests.
# Args:
#   apk_name: Test APK name
#   apk_under_test: Target APK for tests.
#   sources: Test sources
#   deps: Additional deps for test sources
template("base_webview_instrumentation_test_apk") {
  instrumentation_test_apk(target_name) {
    apk_name = invoker.apk_name
    apk_under_test = invoker.apk_under_test
    android_manifest = "//android_webview/javatests/AndroidManifest.xml"

    deps = [
      "//android_webview:android_webview_java",
      "//android_webview:common_platform_services_java",
      "//android_webview/test:base_webview_instrumentation_java",
      "//android_webview/test:base_webview_instrumentation_test_java",
      "//base:base_java",
      "//base:base_java_test_support",
      "//third_party/android_deps:com_googlecode_java_diff_utils_diffutils_java",
      "//third_party/androidx:androidx_annotation_annotation_java",
      "//third_party/androidx:androidx_test_runner_java",
      "//third_party/junit",
      "//third_party/mockito:mockito_java",
      "//url:gurl_java",
    ]
    if (defined(invoker.deps)) {
      deps += invoker.deps
    }

    forward_variables_from(invoker,
                           [
                             "sources",
                             "data",
                             "data_deps",
                             "srcjar_deps",
                           ])

    additional_apks = [
      "//android_webview/test/embedded_test_server:aw_net_test_support_apk",
      "//net/android:net_test_support_apk",
    ]
  }
}