# Copyright 2020 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//mojo/public/tools/bindings/mojom.gni")
import("//ui/webui/webui_features.gni")

assert(is_linux || is_chromeos || is_win || is_mac)
assert(!is_fuchsia, "Fuchsia shouldn't use anything in //chrome")

mojom("mojo_bindings") {
  sources = [ "tab_search.mojom" ]
  public_deps = [
    "//components/tab_groups/public/mojom:mojo_bindings",
    "//components/tabs/public/mojom",
    "//mojo/public/mojom/base",
    "//url/mojom:url_mojom_gurl",
  ]
  webui_module_path = "/"
}

source_set("tab_search") {
  sources = [
    "search_handler.cc",
    "tab_search_page_handler.cc",
    "tab_search_prefs.cc",
    "tab_search_sync_handler.cc",
    "tab_search_ui.cc",
  ]
  public = [
    "search_handler.h",
    "tab_search_page_handler.h",
    "tab_search_prefs.h",
    "tab_search_sync_handler.h",
    "tab_search_ui.h",
  ]
  public_deps = [ "//chrome/browser:browser_public_dependencies" ]
  deps = [
    ":mojo_bindings",
    "//base",
    "//base:i18n",
    "//chrome/app:command_ids",
    "//chrome/browser/favicon",
    "//chrome/browser/glic/resources:grit",
    "//chrome/browser/profiles:profile",
    "//chrome/browser/resources/tab_search:resources",
    "//chrome/browser/sessions",
    "//chrome/browser/signin",
    "//chrome/browser/sync",
    "//chrome/browser/ui:ui_features",
    "//chrome/browser/ui/interaction",
    "//chrome/browser/ui/navigator",
    "//chrome/browser/ui/tabs:tab_strip",
    "//chrome/browser/ui/tabs/alert:tab_alert",
    "//chrome/browser/ui/tabs/tab_strip_api",
    "//chrome/browser/ui/tabs/tab_strip_api/tab_strip_model_impl",
    "//chrome/browser/ui/webui:favicon_source",
    "//chrome/browser/ui/webui:plural_string_handler",
    "//chrome/browser/ui/webui:theme_source",
    "//chrome/browser/ui/webui:webui_load_timer",
    "//chrome/browser/ui/webui:webui_util",
    "//chrome/browser/ui/webui/metrics_reporter",
    "//chrome/browser/ui/webui/top_chrome",
    "//chrome/browser/ui/webui/util",
    "//chrome/browser/user_education",
    "//chrome/common",
    "//components/browser_apis/tab_strip:mojom",
    "//components/browser_apis/tab_strip/aggregation",
    "//components/browser_apis/tab_strip/observation",
    "//components/favicon_base",
    "//components/prefs",
    "//components/sessions",
    "//components/signin/public/identity_manager",
    "//components/strings:components_strings",
    "//components/sync/service",
    "//components/tabs:public",
    "//content/public/browser",
    "//ui/base",
    "//ui/views",
    "//ui/webui",
    "//url",
  ]
}

source_set("browser_tests") {
  testonly = true
  defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ]
  sources = [
    "tab_search_page_handler_browsertest.cc",
    "tab_search_ui_browsertest.cc",
  ]
  deps = [
    ":tab_search",
    "//chrome/browser/tab_group_sync:factories",
    "//chrome/browser/ui",
    "//chrome/browser/ui:recently_audible_helper",
    "//chrome/browser/ui/tabs/saved_tab_groups:test_support",
    "//chrome/browser/ui/webui:webui_util",
    "//chrome/browser/ui/webui/metrics_reporter:test_support",
    "//chrome/browser/vr",
    "//chrome/test:test_support",
    "//chrome/test:test_support_ui",
    "//components/metrics:content",
    "//components/metrics/mapping",
    "//components/metrics/mapping:metrics_name_mapping_proto",
    "//components/os_crypt/browser:test_support",
    "//components/variations:test_support",
    "//content/test:test_support",
    "//testing/gmock",
    "//testing/gtest",
    "//ui/webui:buildflags",
  ]
  if (enable_webui_generate_code_cache) {
    deps += [ "//ui/webui/resources:code_cache_resources" ]
  }
}
