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

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

static_library("ntp_tiles") {
  sources = [
    "constants.cc",
    "constants.h",
    "country_code_ios.h",
    "country_code_ios.mm",
    "icon_cacher.cc",
    "icon_cacher.h",
    "metrics.cc",
    "metrics.h",
    "most_visited_sites.cc",
    "most_visited_sites.h",
    "ntp_tile.cc",
    "ntp_tile.h",
    "popular_sites.cc",
    "popular_sites.h",
    "pref_names.cc",
    "pref_names.h",
    "switches.cc",
    "switches.h",
    "webui/popular_sites_internals_message_handler.cc",
    "webui/popular_sites_internals_message_handler.h",
  ]

  public_deps = [
    "//base",
    "//components/history/core/browser",
    "//components/suggestions",
  ]
  deps = [
    "//components/data_use_measurement/core",
    "//components/favicon/core",
    "//components/favicon_base",
    "//components/google/core/browser",
    "//components/image_fetcher",
    "//components/pref_registry",
    "//components/prefs",
    "//components/search_engines",
    "//components/url_formatter",
    "//components/variations",
    "//components/variations/service",
  ]

  if (is_android) {
    deps += [ "android:ntp_tiles_jni_headers" ]
  }
}

source_set("unit_tests") {
  testonly = true
  sources = [
    "icon_cacher_unittest.cc",
    "most_visited_sites_unittest.cc",
    "popular_sites_unittest.cc",
  ]

  deps = [
    ":ntp_tiles",
    "//base/test:test_support",
    "//components/favicon/core",
    "//components/favicon_base",
    "//components/image_fetcher",
    "//components/pref_registry:test_support",
    "//net:test_support",
    "//testing/gmock",
    "//testing/gtest",
    "//ui/gfx:test_support",
  ]
}

if (is_android) {
  java_cpp_enum("ntp_tiles_enums_java") {
    sources = [
      "metrics.h",
      "ntp_tile.h",
    ]
  }
}
