# Copyright 2019 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

source_set("subresource_filter") {
  public = [
    "chrome_content_subresource_filter_web_contents_helper_factory.h",
    "subresource_filter_history_observer.h",
    "subresource_filter_navigation_download_policy.h",
    "subresource_filter_profile_context_factory.h",
  ]

  sources = [
    "chrome_content_subresource_filter_web_contents_helper_factory.cc",
    "subresource_filter_history_observer.cc",
    "subresource_filter_navigation_download_policy.cc",
    "subresource_filter_profile_context_factory.cc",
  ]

  public_deps = [
    "//base",
    "//chrome/browser/profiles:profile",
    "//components/history/core/browser",
    "//components/subresource_filter/content/browser",
  ]

  deps = [
    "//chrome/browser:browser_process",
    "//chrome/browser/content_settings:content_settings_factory",
    "//chrome/browser/history",
    "//chrome/browser/safe_browsing",
    "//components/content_settings/core/browser:cookie_settings",
    "//components/keyed_service/core",
    "//components/safe_browsing/core/browser/db:database_manager",
    "//components/safe_browsing/core/browser/db:v5_get_hash_protocol_manager",
    "//components/subresource_filter/content/browser",
    "//components/subresource_filter/core/browser",
    "//content/public/browser",
    "//third_party/blink/public/common",
    "//url",
  ]
}

if (is_android) {
  import("//build/config/android/rules.gni")
  import("//third_party/jni_zero/jni_zero.gni")

  generate_jni("jni_headers") {
    sources = [ "../../android/javatests/src/org/chromium/chrome/browser/subresource_filter/TestRulesetPublisher.java" ]
  }

  android_library("subresource_filter_java_test_support") {
    testonly = true

    srcjar_deps = [ ":jni_headers" ]
    sources = [ "../../android/javatests/src/org/chromium/chrome/browser/subresource_filter/TestRulesetPublisher.java" ]
    deps = [ "//third_party/jni_zero:jni_zero_java" ]
  }

  android_library("subresource_filter_javatests") {
    testonly = true
    resources_package = "org.chromium.chrome.browser.subresource_filter"
    sources = [ "../../android/javatests/src/org/chromium/chrome/browser/subresource_filter/SubresourceFilterTest.java" ]
    deps = [
      ":subresource_filter_java_test_support",
      "//base:base_java_test_support",
      "//chrome/android:chrome_java",
      "//chrome/android/javatests:chrome_test_java_helper",
      "//chrome/browser/flags:java",
      "//chrome/browser/tab:java",
      "//chrome/browser/tabmodel:java",
      "//chrome/browser/ui/messages/android:java",
      "//chrome/test/android:chrome_java_integration_test_support",
      "//components/browser_ui/modaldialog/android:java",
      "//components/browser_ui/modaldialog/android:java_resources",
      "//components/messages/android:java",
      "//components/messages/android/internal:java",
      "//components/messages/android/test:test_support_java",
      "//components/safe_browsing/android:safe_browsing_java",
      "//components/subresource_filter/android:java",
      "//content/public/test/android:content_java_test_support",
      "//net/android:net_java_test_support",
      "//third_party/android_deps:espresso_java",
      "//third_party/androidx:androidx_test_runner_java",
      "//third_party/hamcrest:hamcrest_core_java",
      "//third_party/hamcrest:hamcrest_library_java",
      "//third_party/junit",
      "//ui/android:ui_java_test_support",
      "//ui/android:ui_no_recycler_view_java",
      "//url:gurl_java",
    ]
  }

  source_set("android_test_support") {
    testonly = true
    sources = [ "android_test_ruleset_publisher.cc" ]
    deps = [
      ":jni_headers",
      "//base",
      "//chrome/browser:after_startup_task_utils",
      "//chrome/browser:browser_process",
      "//chrome/browser:test_support",
      "//components/subresource_filter/content/browser",
      "//components/subresource_filter/core/common:test_support",
    ]
  }
}

source_set("unit_tests") {
  testonly = true

  sources = [ "subresource_filter_history_observer_unittest.cc" ]

  deps = [
    ":subresource_filter",
    "//base",
    "//chrome/browser/history",
    "//chrome/test:test_support",
    "//components/history/core/browser",
    "//components/history/core/test",
    "//components/subresource_filter/content/browser",
    "//content/test:test_support",
    "//testing/gtest",
  ]
}

source_set("test_support") {
  testonly = true

  defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ]

  public = [ "subresource_filter_browser_test_harness.h" ]

  sources = [ "subresource_filter_browser_test_harness.cc" ]

  public_deps = [
    ":subresource_filter",
    "//base",
    "//chrome/test:test_support",
    "//components/infobars/content",
    "//components/infobars/core",
    "//components/safe_browsing/core/browser/db:util",
    "//components/subresource_filter/content/browser",
    "//components/subresource_filter/content/browser:test_support",
    "//components/subresource_filter/core/browser:test_support",
    "//components/subresource_filter/core/common:test_support",
    "//components/url_pattern_index/proto:url_pattern_index",
    "//content/test:test_support",
  ]

  deps = [
    "//chrome/browser/safe_browsing",
    "//chrome/common",
    "//components/blocked_content",
    "//components/content_settings/browser",
    "//components/subresource_filter/core/browser",
    "//components/subresource_filter/core/common",
    "//content/public/browser",
  ]

  if (is_android) {
    public_deps += [ "//chrome/test:test_support_ui_android" ]
  } else {
    public_deps += [ "//chrome/test:test_support_ui" ]
  }
}

if (!is_android) {
  source_set("browser_tests") {
    testonly = true

    # ruleset_browsertest.cc has file-scope statics of non-trivial-destructor
    # types, which -Wexit-time-destructors rejects.
    configs += [ "//build/config/compiler:no_exit_time_destructors" ]

    defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ]

    sources = [
      "ad_navigation_entry_browsertest.cc",
      "ad_tagging_browsertest.cc",
      "ads_intervention_manager_browsertest.cc",
      "ruleset_browsertest.cc",
      "subresource_filter_browsertest.cc",
      "subresource_filter_devtools_browsertest.cc",
      "subresource_filter_disabled_reason_uma_browsertest.cc",
      "subresource_filter_dns_alias_browsertest.cc",
      "subresource_filter_fenced_frame_browsertest.cc",
      "subresource_filter_intercepting_browsertest.cc",
      "subresource_filter_popup_browsertest.cc",
      "subresource_filter_prerender_browsertest.cc",
      "subresource_filter_settings_browsertest.cc",
      "subresource_filter_special_subframe_navigations_browsertest.cc",
      "subresource_filter_web_socket_browsertest.cc",
      "subresource_filter_worker_browsertest.cc",
    ]

    deps = [
      ":subresource_filter",
      "//base",
      "//chrome/browser/preloading",
      "//chrome/browser/subresource_filter:test_support",
      "//chrome/browser/ui",
      "//chrome/test:test_support",
      "//chrome/test:test_support_ui",
      "//components/embedder_support",
      "//components/page_load_metrics/browser:test_support",
      "//components/page_load_metrics/browser/observers/ad_metrics",
      "//components/subresource_filter/content/browser",
      "//content/test:test_support",
      "//testing/gtest",
    ]

    # Some of these tests have pre-existing size_t-vs-int comparisons that only
    # compiled in //chrome/test because it transitively depends on
    # //third_party/fuzztest, whose public config propagates -Wno-sign-compare.
    # Depend on it here to inherit that suppression. Remove once
    # crbug.com/527094632 is fixed.
    deps += [ "//third_party/fuzztest" ]
  }
}
