# Copyright 2017 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("content") {
  sources = [
    "hint_cache.cc",
    "hint_cache.h",
    "hint_cache_store.cc",
    "hint_cache_store.h",
    "hint_update_data.cc",
    "hint_update_data.h",
    "hints_fetcher.cc",
    "hints_fetcher.h",
    "previews_decider_impl.cc",
    "previews_decider_impl.h",
    "previews_hints.cc",
    "previews_hints.h",
    "previews_hints_util.cc",
    "previews_hints_util.h",
    "previews_optimization_guide.cc",
    "previews_optimization_guide.h",
    "previews_top_host_provider.h",
    "previews_ui_service.cc",
    "previews_ui_service.h",
    "previews_user_data.cc",
    "previews_user_data.h",
  ]

  deps = [
    "//base",
    "//components/blacklist/opt_out_blacklist",
    "//components/optimization_guide",
    "//components/optimization_guide/proto:optimization_guide_proto",
    "//components/previews/content/proto:hint_cache_proto",
    "//components/previews/core",
    "//components/url_matcher",
    "//components/variations",
    "//content/public/common",
    "//net",
    "//services/network:network_service",
  ]
}

source_set("unit_tests") {
  testonly = true
  sources = [
    "hint_cache_store_unittest.cc",
    "hint_cache_unittest.cc",
    "hint_update_data_unittest.cc",
    "hints_fetcher_unittest.cc",
    "previews_decider_impl_unittest.cc",
    "previews_hints_unittest.cc",
    "previews_hints_util_unittest.cc",
    "previews_optimization_guide_unittest.cc",
    "previews_ui_service_unittest.cc",
    "previews_user_data_unittest.cc",
  ]

  deps = [
    ":content",
    "//base",
    "//components/blacklist/opt_out_blacklist",
    "//components/leveldb_proto:test_support",
    "//components/optimization_guide",
    "//components/optimization_guide/proto:optimization_guide_proto",
    "//components/previews/content/proto:hint_cache_proto",
    "//components/previews/core",
    "//components/variations",
    "//content/public/common",
    "//net:test_support",
    "//services/network:network_service",
    "//services/network:test_support",
    "//testing/gtest",
  ]
}
