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

source_set("spotlight") {
  sources = [
    "actions_spotlight_manager.h",
    "actions_spotlight_manager.mm",
    "base_spotlight_manager.h",
    "base_spotlight_manager.mm",
    "bookmarks_spotlight_manager.h",
    "bookmarks_spotlight_manager.mm",
    "spotlight_manager.h",
    "spotlight_manager.mm",
    "spotlight_util.h",
    "spotlight_util.mm",
    "topsites_spotlight_manager.h",
    "topsites_spotlight_manager.mm",
  ]
  deps = [
    "//base",
    "//components/bookmarks/browser",
    "//components/browser_sync",
    "//components/favicon/core",
    "//components/favicon_base",
    "//components/history/core/browser",
    "//components/suggestions",
    "//ios/chrome/app/strings",
    "//ios/chrome/browser",
    "//ios/chrome/browser/bookmarks",
    "//ios/chrome/browser/favicon",
    "//ios/chrome/browser/history",
    "//ios/chrome/browser/suggestions",
    "//ios/chrome/browser/sync",
    "//ios/chrome/browser/ui/ntp:ntp_internal",
    "//ios/chrome/common/app_group",
    "//ios/public/provider/chrome/browser",
    "//ios/public/provider/chrome/browser/spotlight",
    "//ios/third_party/material_components_ios",
    "//net",
    "//skia",
    "//ui/base",
    "//url",
  ]
  libs = [
    "CoreSpotlight.framework",
    "UIKit.framework",
  ]
}

source_set("unit_tests") {
  testonly = true
  sources = [
    "spotlight_manager_unittest.mm",
  ]
  deps = [
    ":spotlight",
    "//base",
    "//components/bookmarks/browser",
    "//components/bookmarks/test",
    "//components/favicon/core",
    "//components/favicon_base",
    "//ios/chrome/browser/bookmarks",
    "//ios/public/provider/chrome/browser",
    "//ios/public/provider/chrome/browser/spotlight",
    "//net",
    "//testing/gtest",
  ]
  libs = [ "CoreSpotlight.framework" ]
}
