# Copyright 2016 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.

static_library("browser") {
  sources = [
    "activation_state_computing_navigation_throttle.cc",
    "activation_state_computing_navigation_throttle.h",
    "async_document_subresource_filter.cc",
    "async_document_subresource_filter.h",
    "content_activation_list_utils.cc",
    "content_activation_list_utils.h",
    "content_subresource_filter_throttle_manager.cc",
    "content_subresource_filter_throttle_manager.h",
    "navigation_console_logger.cc",
    "navigation_console_logger.h",
    "page_load_statistics.cc",
    "page_load_statistics.h",
    "ruleset_publisher.h",
    "ruleset_publisher_impl.cc",
    "ruleset_publisher_impl.h",
    "ruleset_service.cc",
    "ruleset_service.h",
    "ruleset_version.cc",
    "ruleset_version.h",
    "subframe_navigation_filtering_throttle.cc",
    "subframe_navigation_filtering_throttle.h",
    "subresource_filter_client.h",
    "subresource_filter_observer.h",
    "subresource_filter_observer_manager.cc",
    "subresource_filter_observer_manager.h",
    "subresource_filter_safe_browsing_activation_throttle.cc",
    "subresource_filter_safe_browsing_activation_throttle.h",
    "subresource_filter_safe_browsing_client.cc",
    "subresource_filter_safe_browsing_client.h",
    "subresource_filter_safe_browsing_client_request.cc",
    "subresource_filter_safe_browsing_client_request.h",
    "verified_ruleset_dealer.cc",
    "verified_ruleset_dealer.h",
  ]
  deps = [
    "//base",
    "//components/prefs:prefs",
    "//components/safe_browsing/db:database_manager",
    "//components/safe_browsing/db:util",
    "//components/subresource_filter/content/common",
    "//components/subresource_filter/core/browser",
    "//components/subresource_filter/core/common",
    "//components/ukm:ukm",
    "//content/public/browser",
    "//content/public/common",
    "//ipc",
    "//net",
    "//url",
  ]
  public_deps = [
    "//components/subresource_filter/content/mojom",
    "//third_party/flatbuffers:flatbuffers",
    "//ui/base",
  ]
}

static_library("test_support") {
  testonly = true
  sources = [
    "async_document_subresource_filter_test_utils.cc",
    "async_document_subresource_filter_test_utils.h",
    "fake_safe_browsing_database_manager.cc",
    "fake_safe_browsing_database_manager.h",
    "subresource_filter_observer_test_utils.cc",
    "subresource_filter_observer_test_utils.h",
  ]
  deps = [
    ":browser",
    "//base/test:test_support",
    "//components/subresource_filter/core/common",
    "//content/public/browser",
    "//testing/gtest:gtest",
    "//url",
  ]
  public_deps = [
    "//components/safe_browsing/db:test_database_manager",
    "//components/safe_browsing/db:util",
  ]
}

source_set("unit_tests") {
  testonly = true
  sources = [
    "activation_state_computing_navigation_throttle_unittest.cc",
    "async_document_subresource_filter_unittest.cc",
    "content_activation_list_utils_unittest.cc",
    "content_subresource_filter_throttle_manager_unittest.cc",
    "navigation_console_logger_unittest.cc",
    "ruleset_publisher_impl_unittest.cc",
    "ruleset_service_unittest.cc",
    "subframe_navigation_filtering_throttle_unittest.cc",
    "subresource_filter_safe_browsing_activation_throttle_unittest.cc",
    "verified_ruleset_dealer_unittest.cc",
  ]
  deps = [
    ":browser",
    ":test_support",
    "//base/test:test_support",
    "//components/prefs:test_support",
    "//components/safe_browsing/db:util",
    "//components/subresource_filter/content/common",
    "//components/subresource_filter/core/browser",
    "//components/subresource_filter/core/browser:test_support",
    "//components/subresource_filter/core/common",
    "//components/subresource_filter/core/common:test_support",
    "//components/ukm:test_support",
    "//components/ukm/content:content",
    "//content/test:test_support",
    "//ipc",
    "//ipc:test_support",
    "//testing/gtest",
  ]
  public_deps = [
    "//components/subresource_filter/content/mojom",
  ]
}
