# Copyright 2017 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/config.gni")
import("//build/config/android/rules.gni")

android_library("boundary_interface_java") {
  sources = [
    "src/org/chromium/support_lib_boundary/DropDataContentProviderBoundaryInterface.java",
    "src/org/chromium/support_lib_boundary/ExecuteJavaScriptCallbackBoundaryInterface.java",
    "src/org/chromium/support_lib_boundary/FeatureFlagHolderBoundaryInterface.java",
    "src/org/chromium/support_lib_boundary/HttpCacheBoundaryInterface.java",
    "src/org/chromium/support_lib_boundary/IsomorphicObjectBoundaryInterface.java",
    "src/org/chromium/support_lib_boundary/JsReplyProxyBoundaryInterface.java",
    "src/org/chromium/support_lib_boundary/NavigationParametersBoundaryInterface.java",
    "src/org/chromium/support_lib_boundary/NoVarySearchDataBoundaryInterface.java",
    "src/org/chromium/support_lib_boundary/OriginMatchedHeaderBoundaryInterface.java",
    "src/org/chromium/support_lib_boundary/PrefetchOperationCallbackBoundaryInterface.java",
    "src/org/chromium/support_lib_boundary/ProcessGlobalConfigConstants.java",
    "src/org/chromium/support_lib_boundary/ProfileBoundaryInterface.java",
    "src/org/chromium/support_lib_boundary/ProfileStoreBoundaryInterface.java",
    "src/org/chromium/support_lib_boundary/ProxyControllerBoundaryInterface.java",
    "src/org/chromium/support_lib_boundary/SafeBrowsingResponseBoundaryInterface.java",
    "src/org/chromium/support_lib_boundary/ScriptHandlerBoundaryInterface.java",
    "src/org/chromium/support_lib_boundary/ServiceWorkerClientBoundaryInterface.java",
    "src/org/chromium/support_lib_boundary/ServiceWorkerControllerBoundaryInterface.java",
    "src/org/chromium/support_lib_boundary/ServiceWorkerWebSettingsBoundaryInterface.java",
    "src/org/chromium/support_lib_boundary/SpeculativeLoadingConfigBoundaryInterface.java",
    "src/org/chromium/support_lib_boundary/SpeculativeLoadingParametersBoundaryInterface.java",
    "src/org/chromium/support_lib_boundary/StaticsBoundaryInterface.java",
    "src/org/chromium/support_lib_boundary/TracingControllerBoundaryInterface.java",
    "src/org/chromium/support_lib_boundary/VisualStateCallbackBoundaryInterface.java",
    "src/org/chromium/support_lib_boundary/WebContentBoundaryInterface.java",
    "src/org/chromium/support_lib_boundary/WebContentConfig.java",
    "src/org/chromium/support_lib_boundary/WebMessageBoundaryInterface.java",
    "src/org/chromium/support_lib_boundary/WebMessageCallbackBoundaryInterface.java",
    "src/org/chromium/support_lib_boundary/WebMessageListenerBoundaryInterface.java",
    "src/org/chromium/support_lib_boundary/WebMessagePayloadBoundaryInterface.java",
    "src/org/chromium/support_lib_boundary/WebMessagePortBoundaryInterface.java",
    "src/org/chromium/support_lib_boundary/WebResourceErrorBoundaryInterface.java",
    "src/org/chromium/support_lib_boundary/WebResourceRequestBoundaryInterface.java",
    "src/org/chromium/support_lib_boundary/WebSettingsBoundaryInterface.java",
    "src/org/chromium/support_lib_boundary/WebStorageBoundaryInterface.java",
    "src/org/chromium/support_lib_boundary/WebViewBackForwardCacheSettingsBoundaryInterface.java",
    "src/org/chromium/support_lib_boundary/WebViewBuilderBoundaryInterface.java",
    "src/org/chromium/support_lib_boundary/WebViewClientBoundaryInterface.java",
    "src/org/chromium/support_lib_boundary/WebViewCookieManagerBoundaryInterface.java",
    "src/org/chromium/support_lib_boundary/WebViewNavigationBoundaryInterface.java",
    "src/org/chromium/support_lib_boundary/WebViewNavigationClientBoundaryInterface.java",
    "src/org/chromium/support_lib_boundary/WebViewNavigationListenerBoundaryInterface.java",
    "src/org/chromium/support_lib_boundary/WebViewPageBoundaryInterface.java",
    "src/org/chromium/support_lib_boundary/WebViewProviderBoundaryInterface.java",
    "src/org/chromium/support_lib_boundary/WebViewProviderFactoryBoundaryInterface.java",
    "src/org/chromium/support_lib_boundary/WebViewRendererBoundaryInterface.java",
    "src/org/chromium/support_lib_boundary/WebViewRendererClientBoundaryInterface.java",
    "src/org/chromium/support_lib_boundary/WebViewStartUpCallbackBoundaryInterface.java",
    "src/org/chromium/support_lib_boundary/WebViewStartUpConfigBoundaryInterface.java",
    "src/org/chromium/support_lib_boundary/WebViewStartUpResultBoundaryInterface.java",
    "src/org/chromium/support_lib_boundary/WebkitToCompatConverterBoundaryInterface.java",
    "src/org/chromium/support_lib_boundary/util/BoundaryInterfaceReflectionUtil.java",
    "src/org/chromium/support_lib_boundary/util/Contract.java",
    "src/org/chromium/support_lib_boundary/util/Features.java",
  ]

  proguard_configs = [
    # Include rules that should not be copied to AndroidX.
    "../proguard.flags",
  ]

  # Our choice of deps is limited, because boundary_interfaces/ must continue to
  # 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:org_jspecify_jspecify_java",
    "//third_party/androidx:androidx_annotation_annotation_java",
    "//third_party/androidx:androidx_core_core_java",
  ]

  # Prevent automatic dep on build_java.
  chromium_code = false

  # Do not let chromium_code = false disable Error Prone.
  enable_errorprone = true
}

android_apk("boundary_interface_example_apk") {
  apk_name = "BoundaryInterfaceExample"

  # Use a custom AndroidManifest.xml to specify minSdkVersion.
  android_manifest = "AndroidManifest.xml"

  # Explicitly enable lint for this apk.
  enable_lint = true

  deps = [ ":boundary_interface_java" ]
}
