# Copyright 2014 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("web_resource") {
  sources = [
    "eula_accepted_notifier.cc",
    "eula_accepted_notifier.h",
    "resource_request_allowed_notifier.cc",
    "resource_request_allowed_notifier.h",
    "web_resource_pref_names.cc",
    "web_resource_pref_names.h",
    "web_resource_service.cc",
    "web_resource_service.h",
  ]

  deps = [
    "//base",
    "//components/data_use_measurement/core",
    "//components/google/core/browser",
    "//components/pref_registry",
    "//components/prefs",
    "//components/version_info",
    "//net",
    "//services/network/public/cpp",
    "//ui/base",
  ]
}

static_library("test_support") {
  sources = [
    "resource_request_allowed_notifier_test_util.cc",
    "resource_request_allowed_notifier_test_util.h",
  ]

  deps = [
    ":web_resource",
    "//base",
    "//services/network/public/cpp",
  ]
}

source_set("unit_tests") {
  testonly = true
  sources = [
    "eula_accepted_notifier_unittest.cc",
    "resource_request_allowed_notifier_unittest.cc",
    "web_resource_service_unittest.cc",
  ]

  deps = [
    ":test_support",
    ":web_resource",
    "//base",
    "//components/prefs:test_support",
    "//components/version_info",
    "//net:test_support",
    "//services/network:test_support",
    "//services/network/public/cpp",
    "//testing/gtest",
    "//third_party/icu",
  ]
}
