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

assert(is_win || is_mac || is_linux || is_chromeos)

import("//build/config/ozone.gni")
import("//build/config/ui.gni")
import("//chrome/common/features.gni")

source_set("location_bar") {
  public = []

  if (toolkit_views) {
    public += [
      "content_setting_image_view.h",
      "custom_tab_bar_view.h",
      "lens_overlay_homework_page_action_controller.h",
      "location_bar_bubble_delegate_view.h",
      "location_bar_layout.h",
      "location_bar_view.h",
      "location_icon_state_helper.h",
      "location_icon_view.h",
      "omnibox_chip_button.h",
      "omnibox_chip_theme.h",
      "omnibox_popup_file_selector.h",
      "record_replay_page_action_controller.h",
      "selected_keyword_view.h",
      "webui_content_setting_image_control.h",
      "webui_location_bar.h",
      "zoom_bubble_coordinator.h",
      "zoom_bubble_manager.h",
      "zoom_bubble_view.h",
    ]

    public_deps = [
      ":icon_label_bubble",
      "//base",
      "//chrome/browser/lens/region_search",
      "//chrome/browser/ui:layout_constants",
      "//chrome/browser/ui/color:color_headers",
      "//chrome/browser/ui/exclusive_access",
      "//chrome/browser/ui/immersive:immersive_mode_controller",
      "//chrome/browser/ui/location_bar",
      "//chrome/browser/ui/page_action:icon_type",
      "//chrome/browser/ui/views/bubble",
      "//chrome/browser/ui/views/omnibox",
      "//chrome/browser/ui/views/page_action",
      "//chrome/browser/ui/web_applications",
      "//components/browser_apis/ui_controllers/toolbar:mojom",
      "//components/browser_apis/ui_controllers/toolbar:mojom_data_model",
      "//components/browser_apis/ui_controllers/toolbar:types",
      "//components/omnibox/browser:location_bar",
      "//components/page_info/core",
      "//components/record_replay/core/browser",
      "//components/sessions:session_id",
      "//content/public/browser",
      "//extensions/browser",
      "//services/device/public/cpp/geolocation",
      "//skia:skia_core_public_headers",
      "//ui/base/interaction",
      "//ui/base/metadata",
      "//ui/gfx/geometry",
      "//ui/views",
    ]
  }
}

source_set("impl") {
  sources = []
  public = []
  deps = [
    ":icon_label_bubble",
    ":location_bar",
    "//chrome/browser:defaults",
    "//chrome/browser/ui/dialogs",
    "//chrome/browser/ui/select_file_policy",
  ]

  if (toolkit_views) {
    public += [
      "location_bar_actions.h",
      "zoom_bubble_manager_views.h",
    ]
    sources += [
      "content_setting_image_view.cc",
      "custom_tab_bar_view.cc",
      "lens_overlay_homework_page_action_controller.cc",
      "location_bar_actions.cc",
      "location_bar_bubble_delegate_view.cc",
      "location_bar_layout.cc",
      "location_bar_view.cc",
      "location_icon_state_helper.cc",
      "location_icon_view.cc",
      "omnibox_chip_button.cc",
      "omnibox_popup_file_selector.cc",
      "record_replay_page_action_controller.cc",
      "selected_keyword_view.cc",
      "webui_content_setting_image_control.cc",
      "webui_location_bar.cc",
      "zoom_bubble_coordinator.cc",
      "zoom_bubble_manager_views.cc",
      "zoom_bubble_view.cc",
    ]

    public_deps = [ "//chrome/browser:browser_public_dependencies" ]

    deps += [
      "//chrome/app:generated_resources",
      "//chrome/app/vector_icons",
      "//chrome/browser:primitives",
      "//chrome/browser/actor/ui",
      "//chrome/browser/autocomplete",
      "//chrome/browser/autocomplete:aim_eligibility_service",
      "//chrome/browser/contextual_search",
      "//chrome/browser/extensions",
      "//chrome/browser/extensions/api/omnibox",
      "//chrome/browser/glic",
      "//chrome/browser/history_embeddings",
      "//chrome/browser/page_info",
      "//chrome/browser/resources/omnibox_popup:resources_grit",
      "//chrome/browser/search_engines",
      "//chrome/browser/sharing_hub",
      "//chrome/browser/signin",
      "//chrome/browser/themes",
      "//chrome/browser/translate",
      "//chrome/browser/ui:browser_actions",
      "//chrome/browser/ui:bubble_anchor_util",
      "//chrome/browser/ui:ui_features",
      "//chrome/browser/ui:view_ids",
      "//chrome/browser/ui/actions",
      "//chrome/browser/ui/autofill/payments",
      "//chrome/browser/ui/browser_window",
      "//chrome/browser/ui/call_to_action",
      "//chrome/browser/ui/color:color_headers",
      "//chrome/browser/ui/contextual_search",
      "//chrome/browser/ui/find_bar",
      "//chrome/browser/ui/lens",
      "//chrome/browser/ui/omnibox",
      "//chrome/browser/ui/passwords",
      "//chrome/browser/ui/record_replay",
      "//chrome/browser/ui/search",
      "//chrome/browser/ui/tabs:tabs_public",
      "//chrome/browser/ui/tabs/saved_tab_groups",
      "//chrome/browser/ui/user_education",
      "//chrome/browser/ui/views:bubble_anchor_util_views",
      "//chrome/browser/ui/views:content_setting_bubble_contents",
      "//chrome/browser/ui/views:layout_provider",
      "//chrome/browser/ui/views/frame:toolbar_button_provider",
      "//chrome/browser/ui/views/interaction",
      "//chrome/browser/ui/views/page_action",
      "//chrome/browser/ui/views/page_info",
      "//chrome/browser/ui/views/record_replay",
      "//chrome/browser/ui/views/sharing_hub",
      "//chrome/browser/ui/views/toolbar",
      "//chrome/browser/ui/views/user_education:impl",
      "//chrome/browser/ui/views/zoom",
      "//chrome/browser/ui/web_applications",
      "//chrome/browser/ui/webui:webui_util",
      "//chrome/browser/ui/webui/cr_components/composebox",
      "//chrome/browser/ui/webui/omnibox_popup",
      "//chrome/browser/ui/window_metadata",
      "//chrome/browser/web_applications",
      "//chrome/browser/web_applications:features",
      "//components/autofill/core/common:features",
      "//components/commerce/core:feature_list",
      "//components/contextual_search:public",
      "//components/dom_distiller/core",
      "//components/favicon/content",
      "//components/feature_engagement/public:feature_constants",
      "//components/history_embeddings/content",
      "//components/history_embeddings/core",
      "//components/lens",
      "//components/omnibox/browser",
      "//components/omnibox/browser:vector_icons",
      "//components/omnibox/common",
      "//components/performance_manager",
      "//components/record_replay/core/browser",
      "//components/record_replay/core/common",
      "//components/safe_browsing/core/common:features",
      "//components/search",
      "//components/security_interstitials/content:security_interstitial_page",
      "//components/security_state/content",
      "//components/security_state/core",
      "//components/strings:components_strings",
      "//components/user_education/common",
      "//components/zoom",
      "//extensions:extensions_browser_resources",
      "//extensions/browser",
      "//extensions/common",
      "//extensions/common:extension_features",
      "//third_party/blink/public/common",
      "//ui/accessibility",
      "//ui/actions",
      "//ui/color",
      "//ui/gfx",
      "//ui/native_theme",
      "//ui/strings:ui_strings_grit",
    ]
    if (is_mac) {
      deps += [ "//chrome/browser/ui:fullscreen_util_mac" ]
    }
  }
}

source_set("icon_label_bubble") {
  sources = []

  if (toolkit_views) {
    sources += [
      "icon_label_bubble_view.cc",
      "icon_label_bubble_view.h",
      "location_bar_util.cc",
      "location_bar_util.h",
      "slide_and_crossfade_icon_label_bubble_layout_strategy.cc",
      "slide_and_crossfade_icon_label_bubble_layout_strategy.h",
      "standard_icon_label_bubble_layout_strategy.cc",
      "standard_icon_label_bubble_layout_strategy.h",
    ]

    public_deps = [
      "//base",
      "//chrome/browser/ui/color:color_headers",
      "//skia:skia_core_public_headers",
      "//ui/base",
      "//ui/base/metadata",
      "//ui/gfx/geometry",
      "//ui/views",
    ]

    deps = [
      "//chrome/browser/ui:layout_constants",
      "//chrome/browser/ui/omnibox",
      "//components/omnibox/common",
      "//components/user_education/common",
      "//ui/gfx",
    ]
  }
}

source_set("omnibox_popup_file_selector_browsertest") {
  testonly = true
  defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ]
  sources = [ "omnibox_popup_file_selector_browsertest.cc" ]
  deps = [
    ":location_bar",
    "//chrome/browser/ui",
    "//chrome/browser/ui/omnibox",
    "//chrome/browser/ui/webui:webui_util",
    "//chrome/browser/ui/webui/searchbox:searchbox_test_utils",
    "//chrome/test:test_support",
    "//content/test:test_support",
    "//testing/gmock",
    "//ui/shell_dialogs:test_support",
  ]
}

source_set("browser_tests") {
  testonly = true
  defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ]
  sources = [
    "content_setting_bubble_dialog_browsertest.cc",
    "custom_tab_bar_view_browsertest.cc",
    "intent_chip_button_browsertest.cc",
    "intent_chip_button_test_base.cc",
    "intent_chip_button_test_base.h",
    "location_bar_view_browsertest.cc",
    "location_icon_view_browsertest.cc",
    "webui_location_bar_browsertest.cc",
    "zoom_bubble_view_browsertest.cc",
  ]
  deps = [
    ":location_bar",
    "//chrome/browser:chrome_content_browser_client",
    "//chrome/browser/apps/app_service",
    "//chrome/browser/apps/app_service:app_registry_cache_waiter",
    "//chrome/browser/apps/link_capturing",
    "//chrome/browser/apps/link_capturing:test_support",
    "//chrome/browser/content_settings",
    "//chrome/browser/ui:browser_actions",
    "//chrome/browser/ui:ui_features",
    "//chrome/browser/ui/browser_web_contents_delegate",
    "//chrome/browser/ui/views/frame",
    "//chrome/browser/ui/views/frame:toolbar_button_provider",
    "//chrome/browser/ui/views/page_action",
    "//chrome/browser/ui/views/toolbar",
    "//chrome/browser/ui/web_applications",
    "//chrome/browser/web_applications",
    "//chrome/browser/web_applications:web_applications_test_support",
    "//chrome/test:test_support",
    "//chrome/test:test_support_ui",
    "//components/content_settings/core/test:test_support",
    "//components/security_interstitials/content:security_interstitial_page",
    "//components/security_state/content",
    "//components/zoom",
    "//content/test:test_support",
    "//testing/gmock",
    "//testing/gtest",
    "//ui/base:ozone_buildflags",
    "//ui/base/clipboard:clipboard_test_support",
    "//ui/views:test_support",
  ]
  if (use_ozone) {
    deps += [ "//ui/ozone" ]
  }
  if (is_chromeos) {
    deps += [ "//chromeos/ui/frame:test_support" ]
  }
}

source_set("unit_tests") {
  testonly = true
  sources = [
    "icon_label_bubble_view_unittest.cc",
    "location_icon_state_helper_unittest.cc",
    "location_icon_view_unittest.cc",
    "webui_content_setting_image_control_unittest.cc",
  ]
  deps = [
    ":icon_label_bubble",
    ":location_bar",
    "//chrome/app:generated_resources",
    "//chrome/test:test_support",
    "//components/omnibox/browser",
    "//components/omnibox/browser:vector_icons",
    "//components/strings:components_strings",
    "//content/test:test_support",
    "//extensions/common:extension_features",
    "//testing/gmock",
    "//testing/gtest",
    "//ui/events:gesture_detection",
    "//ui/events:test_support",
    "//ui/views:test_support",
  ]
}

source_set("interactive_ui_tests") {
  testonly = true
  defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ]
  sources = [
    "content_setting_image_view_interactive_uitest.cc",
    "content_setting_interactive_uitest.cc",
    "find_bar_interactive_uitest.cc",
    "lens_overlay_page_action_icon_view_interactive_uitest.cc",
    "location_icon_view_interactive_uitest.cc",
    "record_replay_page_action_controller_interactive_uitest.cc",
    "selected_keyword_view_interactive_uitest.cc",
  ]

  deps = [
    ":location_bar",
    "//chrome/browser/ui:ui_features",
    "//chrome/browser/ui/lens",
    "//chrome/browser/ui/views:content_setting_bubble_contents",
    "//chrome/browser/ui/views/frame",
    "//chrome/browser/ui/views/page_action",
    "//chrome/browser/ui/views/page_info",
    "//chrome/browser/ui/views/record_replay",
    "//chrome/browser/ui/views/toolbar",
    "//chrome/browser/ui/views/translate",
    "//chrome/browser/ui/views/web_apps/frame_toolbar:test_support",
    "//chrome/browser/web_applications:web_applications_test_support",
    "//chrome/test:test_support",
    "//chrome/test:test_support_ui",
    "//chrome/test/user_education:impl",
    "//components/commerce/core:proto",
    "//content/test:test_support",
    "//testing/gtest",
    "//ui/events:test_support",
    "//ui/views:test_support",
  ]
}

source_set("test_support") {
  testonly = true

  sources = [ "location_icon_test_accessor.cc" ]
  public = [ "location_icon_test_accessor.h" ]

  deps = [
    ":location_bar",
    "//chrome/browser/ui",
    "//chrome/browser/ui:bubble_anchor_util",
    "//chrome/browser/ui/page_info",
    "//chrome/browser/ui/views/frame:toolbar_button_provider",
    "//chrome/browser/ui/views/page_info",
    "//chrome/browser/ui/views/toolbar",
    "//ui/events:test_support",
  ]
  public_deps = [ "//base" ]
}
