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

import("//build/config/buildflags_paint_preview.gni")
import("//build/config/chrome_build.gni")
import("//build/config/compiler/compiler.gni")
import("//build/config/features.gni")
import("//build/config/ozone.gni")
import("//build/config/ui.gni")
import("//chrome/browser/buildflags.gni")
import("//chrome/common/features.gni")
import("//components/captive_portal/core/features.gni")
import("//components/compose/features.gni")
import("//components/enterprise/buildflags/buildflags.gni")
import("//components/lens/features.gni")
import("//components/offline_pages/buildflags/features.gni")
import("//content/browser/devtools/features.gni")
import("//crypto/features.gni")
import("//device/vr/buildflags/buildflags.gni")
import("//extensions/buildflags/buildflags.gni")
import("//pdf/features.gni")
import("//printing/buildflags/buildflags.gni")
import("//rlz/buildflags/buildflags.gni")
import("//services/screen_ai/buildflags/features.gni")
import("//third_party/protobuf/proto_library.gni")
import("//tools/metrics/generate_allowlist_from_histograms_file.gni")
import("//ui/base/ui_features.gni")
import("//ui/views/features.gni")

assert(enable_supervised_users)
assert(!is_fuchsia, "Fuchsia shouldn't use anything in //chrome")

generate_allowlist_from_histograms_file("webui_name_variants") {
  namespace = "views_metrics"
  input_xml_file = "//tools/metrics/histograms/metadata/page/histograms.xml"
  tag = "variant"
  output_file = "webui_name_variants.h"
  allow_list_name = "WebUIName"
}

source_set("accelerator_utils_headers") {
  public = [ "accelerator_utils.h" ]
}

source_set("simple_message_box_headers") {
  public = [ "simple_message_box.h" ]
  public_deps = [
    "//base",
    "//ui/gfx",
  ]
}

# Header-only target so non-:ui targets (e.g.
# //chrome/browser:repost_form_warning_controller) can include this header
# without depending on :ui. The .cc file remains in :ui.
source_set("tab_modal_confirm_dialog_delegate") {
  public = [ "tab_modal_confirm_dialog_delegate.h" ]
  sources = [ "tab_modal_confirm_dialog_delegate.cc" ]
  deps = [
    "//base",
    "//components/strings:components_strings",
    "//content/public/browser",
    "//ui/base",
    "//ui/base:types",
  ]
}

source_set("tab_modal_confirm_dialog") {
  public = [ "tab_modal_confirm_dialog.h" ]
  public_deps = [
    ":tab_modal_confirm_dialog_delegate",
    "//content/public/browser",
  ]
  if (toolkit_views) {
    public += [ "views/tab_modal_confirm_dialog_views.h" ]
    sources = [ "views/tab_modal_confirm_dialog_views.cc" ]
    deps = [
      "//base",
      "//chrome/browser/ui/views:layout_provider",
      "//chrome/common:constants",
      "//components/constrained_window",
      "//ui/base",
      "//ui/views",
    ]
  }
}

if (!is_android) {
  source_set("chrome_web_modal_dialog_manager_delegate") {
    public = [ "chrome_web_modal_dialog_manager_delegate.h" ]
    sources = [ "chrome_web_modal_dialog_manager_delegate.cc" ]
    public_deps = [ "//components/web_modal" ]
    deps = [
      "//chrome/browser:primitives",
      "//content/public/browser",
    ]
  }

  source_set("browser_actions") {
    public = [ "browser_actions.h" ]
    public_deps = [
      "//base",
      "//ui/base/unowned_user_data",
    ]
  }

  source_set("browser_actions_impl") {
    sources = [ "browser_actions.cc" ]
    public_deps = [ "//base" ]
    deps = [
      ":browser_actions",
      ":browser_select_file_dialog_controller",
      ":bubble_anchor_util",
      ":chrome_pages",
      ":ui",
      "//build:branding_buildflags",
      "//chrome/app:command_ids",
      "//chrome/app/vector_icons",
      "//chrome/browser/browsing_data",
      "//chrome/browser/contextual_cueing",
      "//chrome/browser/contextual_tasks:ui",
      "//chrome/browser/devtools",
      "//chrome/browser/geic",
      "//chrome/browser/glic",
      "//chrome/browser/glic:mojo_bindings",
      "//chrome/browser/glic/browser_ui",
      "//chrome/browser/indigo",
      "//chrome/browser/indigo/resources:indigo_strings",
      "//chrome/browser/media/router:media_router_feature",
      "//chrome/browser/multistep_filter/ui",
      "//chrome/browser/prefs",
      "//chrome/browser/resources/omnibox_popup:resources_grit",
      "//chrome/browser/search_engines",
      "//chrome/browser/sharing_hub",
      "//chrome/browser/spellchecker",
      "//chrome/browser/ui:accelerator_table",
      "//chrome/browser/ui:browser_action_prefs_listener",
      "//chrome/browser/ui:browser_element_identifiers",
      "//chrome/browser/ui:ui_features",
      "//chrome/browser/ui/actions",
      "//chrome/browser/ui/actions:actions_util",
      "//chrome/browser/ui/ai_overlay_dialog",
      "//chrome/browser/ui/autofill",
      "//chrome/browser/ui/autofill/payments",
      "//chrome/browser/ui/bookmarks",
      "//chrome/browser/ui/commerce",
      "//chrome/browser/ui/customize_chrome",
      "//chrome/browser/ui/fuzzy_search",
      "//chrome/browser/ui/interaction",
      "//chrome/browser/ui/lens",
      "//chrome/browser/ui/page_info",
      "//chrome/browser/ui/passwords",
      "//chrome/browser/ui/performance_controls",
      "//chrome/browser/ui/profiles",
      "//chrome/browser/ui/qrcode_generator",
      "//chrome/browser/ui/read_anything",
      "//chrome/browser/ui/search",
      "//chrome/browser/ui/send_tab_to_self",
      "//chrome/browser/ui/side_panel",
      "//chrome/browser/ui/side_panel:side_panel_views_dependent",
      "//chrome/browser/ui/tabs/organizer",
      "//chrome/browser/ui/tabs/saved_tab_groups",
      "//chrome/browser/ui/toolbar/cast",
      "//chrome/browser/ui/toolbar/chrome_labs",
      "//chrome/browser/ui/user_education",
      "//chrome/browser/ui/views/bookmarks",
      "//chrome/browser/ui/views/commerce",
      "//chrome/browser/ui/views/download",
      "//chrome/browser/ui/views/file_system_access",
      "//chrome/browser/ui/views/frame:app_menu_button_observer",
      "//chrome/browser/ui/views/frame:toolbar_button_provider",
      "//chrome/browser/ui/views/js_optimization",
      "//chrome/browser/ui/views/location_bar/cookie_controls",
      "//chrome/browser/ui/views/media_router",
      "//chrome/browser/ui/views/page_info",
      "//chrome/browser/ui/views/send_tab_to_self",
      "//chrome/browser/ui/views/side_panel",
      "//chrome/browser/ui/views/tabs/groups",
      "//chrome/browser/ui/views/tabs/organizer",
      "//chrome/browser/ui/views/toolbar",
      "//chrome/browser/ui/views/zoom",
      "//chrome/browser/ui/web_applications:launch_utils",
      "//chrome/browser/ui/webid",
      "//chrome/browser/ui/webui/inspect",
      "//chrome/browser/ui/webui/omnibox_popup",
      "//chrome/browser/undo",
      "//components/commerce/core:metrics",
      "//components/multistep_filter/core:features",
      "//components/omnibox/common:features",
      "//components/spellcheck/browser",
      "//components/undo",
    ]
    if (is_mac) {
      deps += [ "//chrome/browser:global_keyboard_shortcuts_mac" ]
    }
    if (is_chromeos) {
      deps += [
        ":browser_commands_chromeos",
        "//chrome/browser/ui/ash/multi_user",
      ]
    }
    if (is_win || is_mac || is_linux) {
      deps += [ "//chrome/browser/ui/startup/default_browser_prompt" ]
    }
  }
}

# Leaf targets carved out of the //chrome/browser/ui:ui monolith. Each is a
# self-contained component with explicit dependencies and no circular includes
# back into :ui. Splitting these out shrinks the monolith (which will
# eventually be removed) and lets consumers depend on just what they need.
source_set("recently_audible_helper") {
  public = [ "recently_audible_helper.h" ]
  sources = [ "recently_audible_helper.cc" ]
  public_deps = [
    "//base",
    "//content/public/browser",
  ]
}

source_set("simple_message_box_internal") {
  public = [ "simple_message_box_internal.h" ]
  sources = [ "simple_message_box_internal.cc" ]
}

source_set("incognito_allowed_url") {
  public = [ "incognito_allowed_url.h" ]
  sources = [ "incognito_allowed_url.cc" ]
  deps = [
    "//chrome/browser/signin:signin_promo",
    "//chrome/common",
    "//components/password_manager/content/common",
    "//components/signin/public/base",
    "//url",
  ]
  if (is_chromeos) {
    deps += [ "//ash/constants" ]
  }
}

source_set("browser_ui_prefs") {
  public = [ "browser_ui_prefs.h" ]
  sources = [ "browser_ui_prefs.cc" ]
  deps = [
    "//chrome/browser/profiles:profile",
    "//chrome/browser/ui:ui_features",
    "//chrome/browser/upgrade_detector",
    "//chrome/common",
    "//components/policy/core/common",
    "//components/pref_registry",
    "//components/prefs",
    "//components/sharing_message",
    "//components/translate/core/browser:translate_pref_names",
  ]
  if (is_win && is_chrome_branded) {
    deps += [ "//chrome/browser/win/installer_downloader:prefs" ]
  }
}

source_set("browser_otr_state") {
  public = [ "browser_otr_state.h" ]
  if (is_android) {
    sources = [ "browser_otr_state_android.cc" ]
    deps = [ "//chrome/browser/ui/android/tab_model" ]
  } else {
    sources = [ "browser_otr_state.cc" ]
    deps = [
      "//chrome/browser/profiles:profile",
      "//chrome/browser/ui/browser_window",
    ]
  }
}

if (!is_android) {
  source_set("browser_action_prefs_listener") {
    public = [ "browser_action_prefs_listener.h" ]
    sources = [ "browser_action_prefs_listener.cc" ]
    deps = [
      "//base",
      "//chrome/browser:browser_process",
      "//chrome/browser/profiles:profile",
      "//chrome/browser/ui:browser_actions",
      "//chrome/browser/ui/actions:actions_headers",
      "//chrome/common:constants",
      "//components/prefs",
      "//ui/actions",
    ]
  }

  source_set("focus_tab_after_navigation_helper") {
    public = [ "focus_tab_after_navigation_helper.h" ]
    sources = [ "focus_tab_after_navigation_helper.cc" ]
    deps = [
      "//base",
      "//chrome/browser/profiles:profile",
      "//chrome/browser/search",
      "//chrome/browser/ui/browser_window",
      "//chrome/browser/ui/tabs:tab_strip",
      "//chrome/common",
      "//content/public/browser",
      "//ui/base",
    ]
  }
}

if (!is_android) {
  source_set("accelerator_table") {
    public = [ "accelerator_table.h" ]
    sources = [ "accelerator_table.cc" ]
    deps = [
      "//chrome/app:command_ids",
      "//chrome/browser/ui:ui_features",
      "//chrome/browser/ui/tabs",
      "//components/lens:buildflags",
      "//components/lens:features",
      "//ui/base",
      "//ui/base:features",
      "//ui/events:event_constants",
      "//ui/events:events_base",
    ]
    if (is_mac) {
      deps += [ "//chrome/browser:global_keyboard_shortcuts_mac" ]
    }
  }

  source_set("breadcrumb_manager_browser_agent") {
    public = [ "breadcrumb_manager_browser_agent.h" ]
    sources = [ "breadcrumb_manager_browser_agent.cc" ]
    deps = [
      "//chrome/browser/breadcrumbs",
      "//chrome/browser/ui/tabs:tab_strip",
      "//chrome/browser/ui/tabs:tab_strip_model_observer",
      "//components/breadcrumbs/core",
    ]
  }

  source_set("browser_instant_controller") {
    public = [ "browser_instant_controller.h" ]
    sources = [ "browser_instant_controller.cc" ]
    deps = [
      "//chrome/browser/profiles:profile",
      "//chrome/browser/search",
      "//chrome/browser/search_engines",
      "//chrome/browser/ui/search",
      "//chrome/browser/ui/tabs:tab_strip",
      "//chrome/common",
      "//components/infobars/content",
      "//content/public/browser",
      "//content/public/common",
      "//ui/base",
    ]
  }

  source_set("browser_location_bar_model_delegate") {
    public = [ "browser_location_bar_model_delegate.h" ]
    sources = [ "browser_location_bar_model_delegate.cc" ]
    deps = [
      "//chrome/browser/ui/tabs:tab_strip",
      "//chrome/browser/ui/toolbar",
    ]
  }

  source_set("browser_select_file_dialog_controller") {
    public = [ "browser_select_file_dialog_controller.h" ]
    sources = [ "browser_select_file_dialog_controller.cc" ]
    public_deps = [ "//ui/base/unowned_user_data" ]
    deps = [
      "//chrome/browser/profiles:profile",
      "//chrome/browser/ui/browser_window",
      "//chrome/browser/ui/select_file_policy",
      "//chrome/browser/ui/tabs:tab_strip",
      "//content/public/browser",
      "//ui/base",
      "//ui/gfx",
      "//ui/shell_dialogs",
    ]
  }

  source_set("ui_controller_factory") {
    public = [ "ui_controller_factory.h" ]
    sources = [ "ui_controller_factory.cc" ]
    public_deps = [ "//ui/base/unowned_user_data" ]
    deps = [
      "//chrome/browser/ui/bookmarks/controllers:impl",
      "//chrome/browser/ui/browser_window",
    ]
  }

  source_set("browser_tab_strip_tracker") {
    sources = [ "browser_tab_strip_tracker.cc" ]
    deps = [
      "//chrome/browser/ui:browser_tab_strip",
      "//chrome/browser/ui/browser_window",
      "//chrome/browser/ui/tabs:tab_strip",
    ]
  }

  source_set("browser_view_prefs") {
    public = [ "browser_view_prefs.h" ]
    sources = [ "browser_view_prefs.cc" ]
    deps = [
      "//chrome/common:constants",
      "//components/pref_registry",
    ]
    if (use_ozone) {
      deps += [ "//ui/ozone" ]
    }
  }
  source_set("collected_cookies_infobar_delegate") {
    public = [ "collected_cookies_infobar_delegate.h" ]
    sources = [ "collected_cookies_infobar_delegate.cc" ]
    deps = [
      "//chrome/app:generated_resources",
      "//chrome/browser/infobars",
      "//components/infobars/content",
      "//components/infobars/core",
      "//components/vector_icons",
      "//content/public/browser",
      "//ui/base",
      "//ui/base:features",
    ]
  }
}
source_set("enterprise_startup_dialog") {
  public = [ "enterprise_startup_dialog.h" ]
  public_deps = [ "//base" ]
}

source_set("uninstall_browser_prompt") {
  public = [ "uninstall_browser_prompt.h" ]
}

source_set("view_ids") {
  public = [ "view_ids.h" ]
}

source_set("bubble_anchor_util") {
  public = [ "bubble_anchor_util.h" ]
  public_deps = [
    "//chrome/browser/ui/browser_window",
    "//ui/gfx",
  ]
}

source_set("managed_ui") {
  public = [ "managed_ui.h" ]
  sources = [ "managed_ui.cc" ]
  public_deps = [
    "//base",
    "//extensions/buildflags",
  ]
  deps = [
    ":ui_features",
    "//chrome:strings",
    "//chrome/browser:browser_features",
    "//chrome/browser/enterprise",
    "//chrome/browser/enterprise/browser_management:management_identity",
    "//chrome/browser/profiles:profile",
    "//chrome/common",
    "//components/policy/core/common",
    "//components/strings:components_strings",
    "//components/supervised_user/core/browser",
    "//components/supervised_user/core/common",
    "//components/vector_icons",
    "//ui/base",
    "//ui/gfx",
    "//url",
  ]
  if (is_chromeos) {
    deps += [
      "//chrome/browser/ui/webui/management",
      "//chromeos/ash/components/demo_mode",
      "//ui/chromeos",
    ]
  }
}

source_set("crypto_module_password_dialog") {
  public = [ "crypto_module_password_dialog.h" ]

  public_deps = [
    "//base",
    "//ui/gfx",
  ]

  if (use_nss_certs) {
    public += [ "crypto_module_delegate_nss.h" ]
    sources = [
      "crypto_module_delegate_nss.cc",
      "crypto_module_password_dialog_nss.cc",
      "crypto_module_password_dialog_nss.h",
    ]

    deps = [
      "//chrome/browser/profiles:profile",
      "//content/public/browser",
      "//crypto",
      "//net",
    ]

    if (use_aura) {
      public += [ "views/crypto_module_password_dialog_view.h" ]
      sources += [ "views/crypto_module_password_dialog_view.cc" ]

      deps += [
        "//chrome/app:generated_resources",
        "//chrome/browser/ui/views:layout_provider",
        "//components/strings:components_strings",
        "//ui/base",
        "//ui/views",
      ]
    }
  }
}

source_set("tab_dialogs") {
  public = [ "tab_dialogs.h" ]
  sources = [ "tab_dialogs.cc" ]
  public_deps = [
    "//base",
    "//ui/gfx",
  ]
  deps = [ "//content/public/browser" ]
  if (enable_extensions_core) {
    public_deps += [ "//extensions/common" ]
  }
}

# Use a static library here because many test binaries depend on this but don't
# require many files from it. This makes linking more efficient.
# TODO(https://crbug.com/353332589): Once //chrome/browser is properly
# modularized, this target should be folded in with //chrome/browser:browser.
# The two are already semantically a part of the same target as they allow
# circular includes from each other.
static_library("ui") {
  sources = [
    "tab_helpers.cc",
    "tab_helpers.h",
  ]

  defines = []
  libs = []

  configs += [
    "//build/config:precompiled_headers",
    "//build/config/compiler:wexit_time_destructors",
  ]

  public_deps = [
    # WARNING WARNING WARNING
    # New dependencies outside of //chrome/browser should be added to
    # ui_public_dependencies.
    # New dependencies inside of //chrome/browser that generate header files
    # should be added to //chrome/browser:browser_generated_files.
    ":accelerator_utils_headers",
    ":crypto_module_password_dialog",
    ":enterprise_startup_dialog",
    ":screen_capture_notification_ui",
    ":simple_message_box_headers",
    ":tab_dialogs",
    ":tab_modal_confirm_dialog",
    "//chrome/browser:browser_public_dependencies",
    "//chrome/browser/feedback",
    "//chrome/browser/headless",
    "//chrome/browser/history",
    "//chrome/browser/history:impl",
    "//chrome/browser/loader",
    "//chrome/browser/media",
    "//chrome/browser/media:impl",
    "//chrome/browser/media/webrtc",
    "//chrome/browser/memory",
    "//chrome/browser/net",
    "//chrome/browser/net:impl",
    "//chrome/browser/notifications",
    "//chrome/browser/notifications:impl",
    "//chrome/browser/tab_contents",
    "//chrome/browser/task_manager",
    "//chrome/browser/ui/dialogs",
    "//chrome/browser/ui/webui/chrome_finds_internals",
    "//chrome/browser/ui/webui/flags",
    "//chrome/browser/ui/webui/subresource_filter",
  ]

  deps = [
    ":browser_element_identifiers",
    ":browser_otr_state",
    ":browser_ui_prefs",
    ":bubble_anchor_util",
    ":incognito_allowed_url",
    ":managed_ui",
    ":recently_audible_helper",
    ":session_crashed_bubble",
    ":simple_message_box_internal",
    ":status_bubble",
    ":tab_modal_confirm_dialog_delegate",
    ":ui_features",
    ":url_identity",
    "//base",
    "//chrome:resources",
    "//chrome:strings",
    "//chrome/app:chrome_dll_resources",
    "//chrome/app/resources:platform_locale_settings",
    "//chrome/app/theme:chrome_unscaled_resources",
    "//chrome/browser:chained_back_navigation_tracker",
    "//chrome/browser:chrome_content_browser_client",
    "//chrome/browser:font_pref",
    "//chrome/browser:renderer_preferences_util",
    "//chrome/browser:resources_util",
    "//chrome/browser/ai",
    "//chrome/browser/banners",
    "//chrome/browser/bookmarks",
    "//chrome/browser/bookmarks:impl",
    "//chrome/browser/breadcrumbs",
    "//chrome/browser/commerce",
    "//chrome/browser/complex_tasks",
    "//chrome/browser/component_updater",
    "//chrome/browser/content_settings",
    "//chrome/browser/content_settings:content_settings_factory_impl",
    "//chrome/browser/content_settings:content_settings_util",
    "//chrome/browser/content_settings:content_settings_util_impl",
    "//chrome/browser/contextual_tasks:ui",
    "//chrome/browser/data_sharing",
    "//chrome/browser/device_reauth",
    "//chrome/browser/device_reauth:impl",
    "//chrome/browser/devtools",
    "//chrome/browser/enterprise",
    "//chrome/browser/enterprise:impl",
    "//chrome/browser/external_protocol",
    "//chrome/browser/favicon",
    "//chrome/browser/feedback:feedback_impl",
    "//chrome/browser/finds",
    "//chrome/browser/first_run",
    "//chrome/browser/first_run:impl",
    "//chrome/browser/gcm",
    "//chrome/browser/geic",
    "//chrome/browser/glic",
    "//chrome/browser/glic:impl",
    "//chrome/browser/google",
    "//chrome/browser/history",
    "//chrome/browser/history_clusters",
    "//chrome/browser/history_embeddings",
    "//chrome/browser/image_fetcher",
    "//chrome/browser/language",
    "//chrome/browser/lifetime",
    "//chrome/browser/lifetime:impl",
    "//chrome/browser/login_detection",
    "//chrome/browser/lookalikes",
    "//chrome/browser/media/router:media_router_feature",
    "//chrome/browser/metrics",
    "//chrome/browser/metrics:impl",
    "//chrome/browser/new_tab_page/chrome_colors:selected_colors_info",
    "//chrome/browser/omnibox",
    "//chrome/browser/optimization_guide",
    "//chrome/browser/optimization_guide:impl",
    "//chrome/browser/page_content_annotations",
    "//chrome/browser/page_image_service",
    "//chrome/browser/page_info",
    "//chrome/browser/page_load_metrics",
    "//chrome/browser/page_load_metrics:impl",
    "//chrome/browser/password_manager",
    "//chrome/browser/password_manager:impl",
    "//chrome/browser/payments",
    "//chrome/browser/performance_manager",
    "//chrome/browser/performance_manager:impl",
    "//chrome/browser/permissions",
    "//chrome/browser/picture_in_picture",
    "//chrome/browser/picture_in_picture:impl",
    "//chrome/browser/policy",
    "//chrome/browser/policy:impl",
    "//chrome/browser/predictors",
    "//chrome/browser/prefs",
    "//chrome/browser/prefs:impl",
    "//chrome/browser/preloading/prefetch/no_state_prefetch",
    "//chrome/browser/private_ai",
    "//chrome/browser/profiles:misc",
    "//chrome/browser/profiles:profile_manager_impl",
    "//chrome/browser/profiles:profile_util_impl",
    "//chrome/browser/renderer_host",
    "//chrome/browser/resources",
    "//chrome/browser/resources:dev_ui_resources",
    "//chrome/browser/safe_browsing",
    "//chrome/browser/search_engine_choice",
    "//chrome/browser/search_engine_choice:impl",
    "//chrome/browser/search_engines",
    "//chrome/browser/search_provider_logos",
    "//chrome/browser/segmentation_platform",
    "//chrome/browser/sessions",
    "//chrome/browser/sessions:impl",
    "//chrome/browser/signin",
    "//chrome/browser/signin:impl",
    "//chrome/browser/site_protection",
    "//chrome/browser/ssl",
    "//chrome/browser/ssl:impl",
    "//chrome/browser/status_icons",
    "//chrome/browser/storage_access_api",
    "//chrome/browser/subresource_filter",
    "//chrome/browser/supervised_user:impl",
    "//chrome/browser/sync",
    "//chrome/browser/task_manager/common",
    "//chrome/browser/task_manager/common:impl",
    "//chrome/browser/translate:impl",
    "//chrome/browser/trusted_vault",
    "//chrome/browser/trusted_vault:impl",
    "//chrome/browser/ui/autofill",
    "//chrome/browser/ui/autofill:impl",
    "//chrome/browser/ui/autofill/payments",
    "//chrome/browser/ui/autofill/payments:impl",
    "//chrome/browser/ui/blocked_content",
    "//chrome/browser/ui/blocked_content:impl",
    "//chrome/browser/ui/bluetooth",
    "//chrome/browser/ui/bluetooth:impl",
    "//chrome/browser/ui/browser_window",
    "//chrome/browser/ui/browser_window:create_browser_window",
    "//chrome/browser/ui/browser_window/internal",
    "//chrome/browser/ui/file_system_access",
    "//chrome/browser/ui/file_system_access:impl",
    "//chrome/browser/ui/find_bar",
    "//chrome/browser/ui/find_bar:impl",
    "//chrome/browser/ui/hats",
    "//chrome/browser/ui/javascript_dialogs",
    "//chrome/browser/ui/javascript_dialogs:impl",
    "//chrome/browser/ui/login",
    "//chrome/browser/ui/omnibox",
    "//chrome/browser/ui/omnibox:impl",
    "//chrome/browser/ui/page_info",
    "//chrome/browser/ui/page_info:impl",
    "//chrome/browser/ui/passwords",
    "//chrome/browser/ui/passwords:impl",
    "//chrome/browser/ui/prefs",
    "//chrome/browser/ui/prefs:impl",
    "//chrome/browser/ui/profiles",
    "//chrome/browser/ui/profiles:impl",
    "//chrome/browser/ui/safety_hub",
    "//chrome/browser/ui/search_engines",
    "//chrome/browser/ui/select_file_policy",
    "//chrome/browser/ui/serial",
    "//chrome/browser/ui/serial:impl",
    "//chrome/browser/ui/startup",
    "//chrome/browser/ui/startup:impl",
    "//chrome/browser/ui/sync",
    "//chrome/browser/ui/sync:impl",
    "//chrome/browser/ui/tab_contents",
    "//chrome/browser/ui/tab_contents:impl",
    "//chrome/browser/ui/toolbar",
    "//chrome/browser/ui/toolbar:impl",
    "//chrome/browser/ui/translate",
    "//chrome/browser/ui/views/eye_dropper",
    "//chrome/browser/ui/views/file_system_access",
    "//chrome/browser/ui/views/file_system_access:impl",
    "//chrome/browser/ui/views/permissions:permission_prompt_observer",
    "//chrome/browser/ui/views/status_icons",
    "//chrome/browser/ui/webauthn",
    "//chrome/browser/ui/webui/about",
    "//chrome/browser/ui/webui/about:impl",
    "//chrome/browser/ui/webui/accessibility",
    "//chrome/browser/ui/webui/accessibility:impl",
    "//chrome/browser/ui/webui/history",
    "//chrome/browser/undo",
    "//chrome/browser/updates/announcement_notification",
    "//chrome/browser/updates/announcement_notification:impl",
    "//chrome/browser/v8_compile_hints",
    "//chrome/browser/vr",
    "//chrome/browser/vr:impl",
    "//chrome/browser/webauthn",
    "//chrome/browser/webauthn:impl",
    "//chrome/common",
    "//components/affiliations/core/browser:affiliations",
    "//components/autofill/content/browser",
    "//components/autofill/core/common:credit_card_number_validation",
    "//components/breadcrumbs/core:status",
    "//components/browser_sync",
    "//components/captive_portal/content",
    "//components/client_hints/browser",
    "//components/commerce/content/browser",
    "//components/commerce/core:feature_list",
    "//components/commerce/core:shopping_service",
    "//components/consent_auditor/",
    "//components/content_capture/common",
    "//components/crash/core/app",
    "//components/dom_distiller/content/browser",
    "//components/download/content/factory",
    "//components/embedder_support:user_agent",
    "//components/enterprise",
    "//components/facilitated_payments/core/features",
    "//components/feature_engagement",
    "//components/find_in_page",
    "//components/gcm_driver",
    "//components/history/content/browser",
    "//components/history_clusters/core",
    "//components/input",
    "//components/javascript_dialogs",
    "//components/keyed_service/content",
    "//components/keyed_service/core",
    "//components/language_detection/core",
    "//components/lens",
    "//components/lens:buildflags",
    "//components/lens:enterprise_policy",
    "//components/metrics/debug:resources",
    "//components/metrics/private_metrics",
    "//components/omnibox/browser:vector_icons",
    "//components/optimization_guide/content/browser",
    "//components/password_manager/content/browser",
    "//components/password_manager/content/common",
    "//components/password_manager/core/browser",
    "//components/performance_manager",
    "//components/permissions",
    "//components/policy/core/browser",
    "//components/qr_code_generator:bitmap_generator",
    "//components/resources",
    "//components/safe_browsing/content/browser",
    "//components/search_engines",
    "//components/security_interstitials/content:security_interstitial_page",
    "//components/signin/public/identity_manager",
    "//components/site_engagement/content",
    "//components/startup_metric_utils",
    "//components/strings",
    "//components/sync",
    "//components/sync_preferences",
    "//components/tab_groups",
    "//components/ui_devtools",
    "//components/ukm/content",
    "//components/update_client",
    "//components/url_formatter",
    "//components/variations",
    "//components/viz/host",
    "//components/webapps/browser",
    "//content/public/common",
    "//media",
    "//net",
    "//services/device/public/cpp:device_features",
    "//services/device/public/cpp/geolocation",
    "//services/metrics/public/cpp:ukm_builders",
    "//storage/browser",
    "//third_party/blink/public:resources",
    "//third_party/blink/public/common",
    "//third_party/brotli:dec",
    "//third_party/icu",
    "//third_party/leveldatabase",
    "//third_party/zlib",
    "//ui/accessibility",
    "//ui/base",
    "//ui/base/accelerators/global_accelerator_listener",
    "//ui/base/clipboard",
    "//ui/base/unowned_user_data",
    "//ui/content_accelerators",
    "//ui/gfx",
    "//ui/message_center",
    "//ui/native_theme",
    "//ui/resources",
    "//ui/shell_dialogs",
    "//ui/strings",
    "//ui/webui",
  ]

  allow_circular_includes_from = [
    # page_load_metrics's :impl includes headers from //chrome/browser/ui that
    # can't be split out yet.
    "//chrome/browser/page_load_metrics:impl",

    # profiles:misc includes headers from //chrome/browser/ui that can't be
    # split out yet (e.g. browser.h).
    "//chrome/browser/profiles:misc",
    "//chrome/browser/profiles:profile_manager_impl",

    # sessions includes headers from //chrome/browser/ui that can't be
    # split out yet (e.g. browser.h).
    "//chrome/browser/sessions",
    "//chrome/browser/sessions:impl",

    # TODO(crbug.com/353332589): Remove this circular dependency when
    # the following headers get modularized:
    # - c/b/ui/browser_window.h
    # - c/b/ui/browser.h
    # - c/b/ui/views/frame/browser_view.h
    "//chrome/browser/ui/views/file_system_access:impl",
  ]

  # Desktop-Android-only dependencies.
  if (is_desktop_android) {
    deps += [ "//chrome/browser/ui/android/extensions/windowing/internal" ]
  }

  if (enable_captive_portal_detection) {
    deps += [ "//chrome/browser/captive_portal" ]
  }

  if (enable_offline_pages) {
    deps += [ "//chrome/browser/offline_pages" ]
  }

  if (enable_compose) {
    deps += [ "//chrome/browser/compose" ]
  }

  if (enable_rlz) {
    deps += [ "//chrome/browser/rlz" ]
  }

  if (enable_extensions_core) {
    deps += [
      "//chrome/browser/ui/extensions",
      "//chrome/browser/ui/extensions:impl",
    ]
    allow_circular_includes_from += [
      # TODO(crbug.com/420905611): Remove this circular dependency when
      # c/b/ui/browser_dialogs.h gets componentized.
      "//chrome/browser/ui/extensions:impl",
    ]
  }

  if (!is_android) {
    deps += [
      ":ui_controller_factory",
      "//chrome/browser/ui/browser_active_state_manager",
      "//chrome/browser/ui/infobars",
      "//chrome/browser/ui/views/frame:glass_frame_service",
      "//chrome/browser/ui/views/relaunch_notification",
      "//chrome/browser/ui/views/relaunch_notification:impl",
      "//chrome/browser/ui/views/search_engines",
      "//chrome/browser/ui/views/search_engines:impl",
      "//chrome/browser/ui/webui:chrome_web_contents_handler",
    ]
  }

  if (is_win) {
    deps += [
      ":accessibility_util",
      "//chrome/browser/ui/webui/default_browser:visual_guided_setter",
    ]
  }

  # //chrome/browser/ui/views/relaunch_notification:impl sources include
  # :ui headers (browser.h, views/frame/browser_view.h).
  if (!is_android && !is_chromeos) {
    deps += [
      "//chrome/browser/ui/webui/default_browser:default_browser_modal",
      "//chrome/browser/ui/webui/default_browser:modal_mojo_bindings",
      "//chrome/browser/ui/webui/feature_showcase:mojo_bindings",
      "//chrome/browser/ui/webui/updater:mojo_bindings",
    ]
    allow_circular_includes_from +=
        [ "//chrome/browser/ui/views/relaunch_notification:impl" ]
  }

  # TODO(crbug.com/41437292): Remove this circular dependency. Any circular
  # includes must depend on the target
  # "//chrome/browser:browser_public_dependencies". These are all-platform
  # circular includes.
  if (!is_android) {
    # //chrome/browser/download:impl sources include headers from
    # //chrome/browser/ui.
    allow_circular_includes_from += [
      # views/search_engines:impl includes headers still built as part of this
      # target (views/frame/browser_view.h, etc.) that can't be split out yet.
      "//chrome/browser/ui/views/search_engines:impl",
      "//chrome/browser/download:impl",
      "//chrome/browser/geic:ui",
      "//chrome/browser/ui/browser_web_contents_delegate",

      # bookmarks includes headers from //chrome/browser/ui (e.g. browser.h,
      # browser_window_interface.h) that can't be split out yet.
      "//chrome/browser/ui/webui/bookmarks",

      # chrome_web_contents_handler includes headers from //chrome/browser/ui
      # (e.g. browser.h, browser_window.h) that can't be split out yet.
      "//chrome/browser/ui/webui:chrome_web_contents_handler",

      # TODO(crbug.com/504627103): Remove this circular dependency.
      "//chrome/browser/new_tab_page:impl",

      # views/data_sharing:impl includes headers still built as part of this
      # target (browser_element_identifiers.h and
      # views/frame/browser_view.h) that can't be split out yet.
      "//chrome/browser/ui/views/data_sharing:impl",

      # downloads includes headers from //chrome/browser/ui (e.g.
      # browser_window.h) that can't be split out yet.
      "//chrome/browser/ui/webui/downloads",

      # web_app_internals includes headers from //chrome/browser/ui (e.g.
      # browser.h) that can't be split out yet.
      "//chrome/browser/ui/webui/web_app_internals",
    ]
  }

  allow_circular_includes_from += [
    # enterprise headers include from //chrome/browser/ui (e.g. idle_dialog.h).
    # enterprise:impl includes headers from //chrome/browser/ui that can't be
    # split out yet.
    "//chrome/browser/enterprise",
    "//chrome/browser/enterprise:impl",

    # TODO(crbug.com/353332589): Remove this circular dependency whent the
    # following headers get modularized:
    # - c/b/ui/browser.h
    # - c/b/ui/views/media_rounter/media_remoting_dialog_view.h
    "//chrome/browser/media:impl",

    # TODO(crbug.com/353332589): Remove this circular dependency when the
    # following headers get componentized:
    # c/b/ui/browser.h, browser_window.h
    "//chrome/browser/ui/autofill/payments:impl",

    # TODO(crbug.com/502936350): Remove this circular dependency.
    # device_reauth's :impl includes headers from //chrome/browser/ui
    # that can't be split out yet.
    "//chrome/browser/device_reauth:impl",

    # TODO(crbug.com/40161499): Remove this circular dependency.
    "//chrome/browser/devtools",

    # glic's :impl includes headers from //chrome/browser/ui (e.g. browser.h,
    # browser_window.h, side_panel/side_panel_ui.h) that can't be split out
    # yet.
    "//chrome/browser/glic:impl",

    # TODO(crbug.com/353332589): Remove this circular dependency when the
    # following headers get componentized:
    # c/b/ui/browser.h, browser_commands.h, browser_window.h
    # c/b/ui/scoped_tabbed_browser_displayer.h
    # c/b/ui/views/frame/browser_view.h
    "//chrome/browser/safe_browsing",

    # TODO(crbug.com/364667551): Remove this circular dependency when
    # c/b/ui/webui/feedback/feedback_dialog.h gets componentized.
    # feedback_impl includes headers from //chrome/browser/ui (e.g. browser.h,
    # browser_tabstrip.h, browser_window.h) that can't be split out yet.
    "//chrome/browser/feedback:feedback_impl",

    # lifetime:impl includes headers from //chrome/browser/ui that can't be
    # split out yet (e.g. browser_window.h).
    "//chrome/browser/lifetime:impl",

    # notifications:impl includes headers from //chrome/browser/ui that can't
    # be split out yet (e.g. browser.h, browser_window.h,
    # scoped_tabbed_browser_displayer.h, settings_window_manager_chromeos.h).
    "//chrome/browser/notifications:impl",

    # TODO(crbug.com/353332589): Remove this circular dependency when the
    # following headers get componentized:
    # c/b/ui/browser.h, browser_window.h
    "//chrome/browser/password_manager:impl",

    # TODO(crbug.com/353332589): Remove this circular dependency when the
    # following header gets componentized:
    # c/b/ui/browser.h
    "//chrome/browser/permissions",

    # TODO(crbug.com/353332589): Remove this circular dependency when the
    # following headers get componentized:
    # c/b/ui/browser.h, browser_commands.h, browser_window.h
    # c/b/ui/views/frame/browser_view.h
    # c/b/ui/views/omnibox/omnibox_popup_closer.h
    # c/b/ui/views/omnibox/rounded_omnibox_results_frame.h
    "//chrome/browser/ui/omnibox:impl",

    # TODO(crbug.com/344921703): Remove circular dependencies.
    "//chrome/browser/sync",

    # TODO(crbug.com/353284909): Remove this circular dependency.
    "//chrome/browser/media/webrtc",

    # metrics:impl includes headers from //chrome/browser/ui that can't be
    # split out yet.
    "//chrome/browser/metrics:impl",

    # TODO(crbug.com/360599255): popunder_preventer.cc includes browser.h
    "//chrome/browser/ui/blocked_content:impl",

    # TODO(crbug.com/353332589): Remove this circular dependency when the
    # following headers get componentized:
    # c/b/ui/browser_window.h
    # c/b/ui/views/frame/browser_view.h
    "//chrome/browser/picture_in_picture:impl",

    # TODO(crbug.com/353332589): Remove this circular dependency when the
    # following headers get componentized:
    # c/b/ui/browser.h, browser_window.h, singleton_tabs.h
    # c/b/ui/views/autofill/popup/email_verifier/email_verification_popup_view.h
    # c/b/ui/views/frame/browser_view.h
    "//chrome/browser/ui/autofill:impl",

    # TODO(crbug.com/353332589): Remove this circular dependency when the
    # following headers get componentized:
    # c/b/ui/scoped_tabbed_browser_displayer.h
    # c/b/ui/settings_window_manager_chromeos.h
    "//chrome/browser/ui/bluetooth:impl",

    # TODO(crbug.com/353332589): Remove this circular dependency when the
    # following header gets componentized:
    # c/b/ui/browser_command_controller.h
    "//chrome/browser/ui/exclusive_access",

    # TODO(crbug.com/353332589): Remove this circular dependency when the
    # following headers get componentized:
    # c/b/ui/browser.h, browser_window.h
    "//chrome/browser/ui/profiles:impl",

    # TODO(crbug.com/353332589): Remove this circular dependency when the
    # following headers get componentized:
    # c/b/ui/scoped_tabbed_browser_displayer.h
    # c/b/ui/settings_window_manager_chromeos.h
    "//chrome/browser/ui/serial:impl",

    # TODO(crbug.com/353332589): Remove this circular dependency when the
    # following headers get componentized:
    # c/b/ui/browser.h, browser_commands.h, browser_tabstrip.h, browser_window.h
    "//chrome/browser/ui/startup:impl",

    # TODO(crbug.com/353332589): Remove this circular dependency when the
    # following header gets componentized:
    # c/b/ui/browser_command_controller.h
    "//chrome/browser/ui/tab_contents:impl",

    # TODO(crbug.com/353332589): Remove this circular dependency when the
    # following headers get componentized:
    # c/b/ui/browser.h, browser_commands.h, browser_window.h, managed_ui.h
    # c/b/ui/singleton_tabs.h
    "//chrome/browser/ui/toolbar:impl",

    # TODO(crbug.com/353332589): Remove this circular dependency when the
    # following headers get componentized:
    # c/b/ui/browser.h
    # c/b/ui/views/profiles/profile_customization_bubble_sync_controller.h
    "//chrome/browser/search_engine_choice:impl",

    # TODO(crbug.com/353332589): Remove this circular dependency when the
    # following header gets componentized:
    # c/b/ui/views/dotted_icon.h
    "//chrome/browser/profiles:profile_util_impl",

    # TODO(crbug.com/353332589): Remove this circular dependency when the
    # following headers get componentized:
    # c/b/ui/browser_commands.h, browser_window.h
    # c/b/ui/scoped_tabbed_browser_displayer.h
    "//chrome/browser/signin:impl",

    # TODO(crbug.com/353332589): Remove this circular dependency when the
    # following headers get componentized:
    # c/b/ui/browser.h, tab_modal_confirm_dialog.h
    "//chrome/browser/ui/javascript_dialogs:impl",

    # TODO(crbug.com/353332589): Remove this circular dependency when the
    # following headers get componentized:
    # c/b/ui/browser.h, bubble_anchor_util.h, tab_dialogs.h
    "//chrome/browser/ui/page_info:impl",

    # TODO(crbug.com/353332589): Remove this circular dependency when the
    # following headers get componentized:
    # c/b/ui/browser.h, browser_window.h
    # c/b/ui/views/frame/browser_view.h, picture_in_picture_browser_frame_view.h
    "//chrome/browser/content_settings:content_settings_util_impl",

    # TODO(crbug.com/353332589): Remove this circular dependency when the
    # following header gets componentized:
    # c/b/ui/browser.h
    "//chrome/browser/updates/announcement_notification:impl",

    # TODO(crbug.com/353332589): Remove this circular dependency when the
    # following header gets componentized:
    # c/b/ui/network_profile_bubble.h
    "//chrome/browser/prefs:impl",

    # TODO(crbug.com/437811373): Remove this circular dependency when the
    # following headers get componentized:
    # - c/b/ui/browser.h
    "//chrome/browser/ui/passwords:impl",

    # ssl:impl includes headers from //chrome/browser/ui that can't be
    # split out yet (e.g. browser.h).
    "//chrome/browser/ssl:impl",

    # TODO(crbug.com/353332589): Remove this circular dependency when
    # translate's impl no longer includes headers from //chrome/browser/ui.
    "//chrome/browser/translate:impl",

    # policy's impl includes headers from //chrome/browser/ui that can't
    # be split out yet.
    "//chrome/browser/policy:impl",

    # vr_tab_helper.cc includes //c/b/ui/browser.h.
    "//chrome/browser/vr:impl",

    # webauthn:impl includes headers from //chrome/browser/ui that can't be
    # split out yet.
    "//chrome/browser/webauthn:impl",
  ]

  if (!is_android) {
    deps += [
      ":chrome_pages",
      ":chrome_web_modal_dialog_manager_delegate",
      "//chrome/browser:certificate_viewer",
      "//chrome/browser/accessibility/phrase_segmentation",
      "//chrome/browser/apps/intent_helper:intent_chip_display_prefs",
      "//chrome/browser/ui/sessions",
      "//chrome/browser/ui/views/drive_picker_host",
      "//chrome/browser/ui/web_modal:browser_window_modal_dialog_delegate",
      "//chrome/browser/ui/webui/webui_gallery",
      "//chrome/browser/ui/zoom:browser_window_zoom_observer",
    ]
  }

  if (!is_android || enable_webui_ntp) {
    deps += [
      "//chrome/browser/desktop_to_mobile_promos:utils",
      "//chrome/browser/preloading/new_tab_page_preload",
      "//chrome/browser/ui/color:mixers",
    ]
  }

  if (enterprise_data_controls) {
    deps += [ "//chrome/browser/enterprise/data_controls" ]
  }

  if (is_android) {
    deps += [
      ":screen_capture_notification_ui_stub",
      "//chrome/android:jni_headers",
      "//chrome/browser/android/webapk:webapk_sources",
      "//chrome/browser/autofill/android:jni_headers",
      "//chrome/browser/facilitated_payments",
      "//chrome/browser/keyboard_accessory/android",
      "//chrome/browser/keyboard_accessory/android:impl",
      "//chrome/browser/ui/android/hats",
      "//chrome/browser/ui/android/hats:impl",
      "//chrome/browser/ui/android/tab_model",
      "//chrome/browser/ui/android/tab_model:impl",
      "//chrome/browser/ui/android/toolbar:adaptive_jni_headers",
      "//chrome/browser/ui/android/toolbar:jni_headers",
      "//chrome/browser/ui/exclusive_access",
      "//chrome/browser/ui/webui/notifications_internals",
      "//chrome/browser/ui/webui/notifications_internals:impl",
      "//components/android_autofill/browser:android",
      "//components/autofill/android:payments_jni_headers",
      "//components/browser_ui/accessibility/android",
      "//components/browser_ui/client_certificate/android",
      "//components/embedder_support/android:context_menu",
      "//components/embedder_support/android:web_contents_delegate",
      "//components/javascript_dialogs/android:jni_headers",
      "//components/messages/android:feature_flags",
      "//components/navigation_interception",
      "//components/page_info/android",
      "//components/password_manager/core/browser",
      "//components/resources:android_resources",
      "//components/security_state/content/android",
      "//components/sensitive_content",
      "//components/webauthn/android",
      "//content/public/browser",
      "//third_party/jni_zero",
      "//ui/android",
      "//url",
    ]

    deps += [
      "//chrome/browser/ui/android",
      "//chrome/browser/ui/android:context_menu_helper",
    ]
  } else {
    # !is_android
    sources += [
      # This file physically lives in //chrome/browser but is compiled here so
      # that //chrome/browser:browser has no remaining sources. It registers
      # WebUI interface binders for desktop, which need this target's headers.
      "//chrome/browser/chrome_browser_interface_binders_webui_parts_desktop.cc",
      "browser.cc",
      "browser.h",
      "browser_command_controller.cc",
      "browser_command_controller.h",
      "browser_commands.cc",
      "browser_commands.h",
      "browser_content_setting_bubble_model_delegate.cc",
      "browser_content_setting_bubble_model_delegate.h",
      "browser_live_tab_context.cc",
      "browser_live_tab_context.h",
      "browser_manager_service.cc",
      "browser_manager_service.h",
      "browser_manager_service_factory.cc",
      "browser_manager_service_factory.h",
      "browser_tab_menu_model_delegate.cc",
      "browser_tab_menu_model_delegate.h",
      "browser_tab_restorer.cc",
      "browser_tab_strip_model_delegate.cc",
      "browser_tabrestore.cc",
      "browser_tabrestore.h",
      "browser_tabstrip.cc",
      "browser_tabstrip.h",
      "browser_window.h",
      "browser_window_deleter.cc",
      "browser_window_deleter.h",
      "browser_window_state.cc",
      "browser_window_state.h",
      "browser_window_theme_observer.cc",
      "browser_window_theme_observer.h",
      "chrome_pages.cc",
      "intent_picker_tab_helper.cc",
      "intent_picker_tab_helper.h",
      "scoped_tabbed_browser_displayer.cc",
      "scoped_tabbed_browser_displayer.h",
      "singleton_tabs.cc",
      "singleton_tabs.h",
      "tab_ui_helper.cc",
      "tab_ui_helper.h",
      "unload_controller.cc",
      "unload_controller.h",
      "views/search_engine_choice/search_engine_choice_dialog_view.cc",
      "views/search_engine_choice/search_engine_choice_dialog_view.h",
    ]

    if (enable_dice_support) {
      deps += [
        "//chrome/browser/ui/views/search_ai_mode",
        "//chrome/browser/ui/views/search_ai_mode:impl",
      ]
      allow_circular_includes_from += [
        # TODO(crbug.com/364667551): Remove this circular dependency when
        # the following headers get modularized:
        # - c/b/ui/browser.h
        # - c/b/ui/views/frame/browser_view.h
        "//chrome/browser/ui/views/search_ai_mode:impl",
      ]
    }

    # Non-android deps for "ui" target.
    deps += [
      ":accelerator_table",
      ":browser_actions",
      ":browser_select_file_dialog_controller",
      ":collected_cookies_infobar_delegate",
      ":confirm_bubble_model",
      ":focus_tab_after_navigation_helper",
      ":layout_constants",
      ":uma_browsing_activity_observer",
      "//base",
      "//chrome/browser:chrome_browser_interface_binders_webui_parts",
      "//chrome/browser/actor/ui:actor_overlay",
      "//chrome/browser/actor/ui:actor_overlay_web_view",
      "//chrome/browser/actor/ui/task_list_bubble:controller",
      "//chrome/browser/app_mode",
      "//chrome/browser/apps/app_service",
      "//chrome/browser/apps/app_service/app_icon",
      "//chrome/browser/apps/link_capturing",
      "//chrome/browser/background",
      "//chrome/browser/background/glic",
      "//chrome/browser/bluetooth",
      "//chrome/browser/custom_handlers",
      "//chrome/browser/device_api",
      "//chrome/browser/dictation",
      "//chrome/browser/first_party_sets",
      "//chrome/browser/geic:ui",
      "//chrome/browser/glic/browser_ui:glow",
      "//chrome/browser/glic/browser_ui:glow_controller",
      "//chrome/browser/glic/browser_ui:glow_controller_impl",
      "//chrome/browser/glic/browser_ui:glow_impl",
      "//chrome/browser/indigo",
      "//chrome/browser/lifetime:termination_notification",
      "//chrome/browser/password_manager/actor_login:factories",
      "//chrome/browser/record_replay",
      "//chrome/browser/record_replay:impl",
      "//chrome/browser/speech",
      "//chrome/browser/subscription_eligibility",
      "//chrome/browser/ui/browser_ui_controller",
      "//chrome/browser/ui/browser_ui_controller:impl",
      "//chrome/browser/ui/browser_web_contents_delegate",
      "//chrome/browser/ui/browser_window:create_browser_window",
      "//chrome/browser/ui/desktop_to_mobile_promos:controller",
      "//chrome/browser/ui/desktop_to_mobile_promos:service",
      "//chrome/browser/ui/focus",
      "//chrome/browser/ui/focus:impl",
      "//chrome/browser/ui/fullscreen",
      "//chrome/browser/ui/fullscreen:impl",
      "//chrome/browser/ui/passwords/bubble_controllers",
      "//chrome/browser/ui/passwords/bubble_controllers:impl",
      "//chrome/browser/ui/passwords/settings",
      "//chrome/browser/ui/passwords/settings:impl",
      "//chrome/browser/ui/performance_controls",
      "//chrome/browser/ui/performance_controls:impl",
      "//chrome/browser/ui/search_engine_choice",
      "//chrome/browser/ui/search_engine_choice:impl",
      "//chrome/browser/ui/shared_highlighting",
      "//chrome/browser/ui/tab_sharing",
      "//chrome/browser/ui/tab_sharing:impl",
      "//chrome/browser/ui/tabs/saved_tab_groups",
      "//chrome/browser/ui/tabs/saved_tab_groups:impl",
      "//chrome/browser/ui/task_manager",
      "//chrome/browser/ui/thumbnails",
      "//chrome/browser/ui/translate:impl",
      "//chrome/browser/ui/views/data_sharing",
      "//chrome/browser/ui/views/data_sharing:impl",
      "//chrome/browser/ui/views/glic",
      "//chrome/browser/ui/views/tabs/glic",
      "//chrome/browser/ui/views/tabs/glic:impl",
      "//chrome/browser/ui/waap:window_metrics_manager",
      "//chrome/browser/ui/web_applications",
      "//chrome/browser/ui/web_applications:impl",
      "//chrome/browser/ui/web_applications:launch_utils",
      "//chrome/browser/ui/webui/access_code_cast",
      "//chrome/browser/ui/webui/access_code_cast:impl",
      "//chrome/browser/ui/webui/bookmarks",
      "//chrome/browser/ui/webui/data_sharing:impl",
      "//chrome/browser/ui/webui/drive_picker_host",
      "//chrome/browser/ui/webui/drive_picker_host/untrusted",
      "//chrome/browser/ui/webui/iwa_dev",
      "//chrome/browser/ui/webui/iwa_dev:mojo_bindings",
      "//chrome/browser/ui/webui/new_tab_page_third_party",
      "//chrome/browser/ui/webui/new_tab_page_third_party:impl",
      "//chrome/browser/ui/webui/ntp:ntp_resource_cache",
      "//chrome/browser/ui/webui/ntp_microsoft_auth",
      "//chrome/browser/ui/webui/omnibox",
      "//chrome/browser/ui/webui/omnibox/logging:mojo_bindings",
      "//chrome/browser/ui/webui/omnibox_everywhere",
      "//chrome/browser/ui/webui/omnibox_popup",
      "//chrome/browser/ui/webui/page_action_internals:mojo_bindings",
      "//chrome/browser/ui/webui/side_panel/history:impl",
      "//chrome/browser/ui/webui/side_panel/history_clusters:impl",
      "//chrome/browser/ui/webui/tab_search",
      "//chrome/browser/ui/webui/user_education_internals",
      "//chrome/browser/ui/webui/util:impl",
      "//chrome/browser/ui/webui/web_app_internals",
      "//chrome/browser/ui/window_feature_controller",
      "//chrome/browser/usb",
      "//components/privacy_sandbox:features",

      # No reason for this dependencies be out of alphabetical order.
      "//chrome/browser/context_hub",
      "//chrome/browser/download",
      "//chrome/browser/download:impl",
      "//chrome/browser/hid",
      "//chrome/browser/hid:impl",
      "//chrome/browser/lens/region_search",
      "//chrome/browser/reading_list",
      "//chrome/browser/safe_browsing",
      "//chrome/browser/screen_ai:screen_ai_service_router_factory",
      "//chrome/browser/smart_card",
      "//chrome/browser/support_tool",
      "//chrome/browser/tab_group_sync:utils",
      "//chrome/browser/themes",
      "//chrome/browser/ui/apps",
      "//chrome/browser/ui/apps:impl",
      "//chrome/browser/ui/bookmarks",
      "//chrome/browser/ui/bookmarks:impl",
      "//chrome/browser/ui/commerce",
      "//chrome/browser/ui/content_settings",
      "//chrome/browser/ui/content_settings:impl",
      "//chrome/browser/ui/customize_chrome",
      "//chrome/browser/ui/exclusive_access",
      "//chrome/browser/ui/extensions:extensions_menu_handler",
      "//chrome/browser/ui/feature_first_run",
      "//chrome/browser/ui/feature_first_run:impl",
      "//chrome/browser/ui/global_error",
      "//chrome/browser/ui/global_media_controls",
      "//chrome/browser/ui/global_media_controls:impl",
      "//chrome/browser/ui/media_router",
      "//chrome/browser/ui/media_router:impl",
      "//chrome/browser/ui/permission_bubble",
      "//chrome/browser/ui/signin",
      "//chrome/browser/ui/signin:impl",
      "//chrome/browser/ui/tabs",
      "//chrome/browser/ui/tabs:favicon_theming",
      "//chrome/browser/ui/tabs:impl",
      "//chrome/browser/ui/tabs:tab_group_impl",
      "//chrome/browser/ui/tabs:tab_menu",
      "//chrome/browser/ui/tabs:tab_menu_impl",
      "//chrome/browser/ui/tabs:tab_model_impl",
      "//chrome/browser/ui/tabs:tab_strip_impl",
      "//chrome/browser/ui/tabs:tab_strip_model_observer_impl",
      "//chrome/browser/ui/tabs/alert:impl",
      "//chrome/browser/ui/tabs/back_to_opener",
      "//chrome/browser/ui/tabs/tab_drag_api",
      "//chrome/browser/ui/tabs/tab_strip_api",
      "//chrome/browser/ui/toasts",
      "//chrome/browser/ui/toasts:impl",
      "//chrome/browser/ui/toolbar/cast",
      "//chrome/browser/ui/toolbar/cast:impl",
      "//chrome/browser/ui/toolbar/pinned_toolbar",
      "//chrome/browser/ui/toolbar/pinned_toolbar:impl",
      "//chrome/browser/ui/user_education",
      "//chrome/browser/ui/user_education:impl",
      "//chrome/browser/ui/views/app_menu",
      "//chrome/browser/ui/views/app_menu:impl",
      "//chrome/browser/ui/views/contextual_tasks",
      "//chrome/browser/ui/views/contextual_tasks:impl",
      "//chrome/browser/ui/views/js_optimization",
      "//chrome/browser/ui/views/location_bar",
      "//chrome/browser/ui/views/new_tab_footer",
      "//chrome/browser/ui/views/picture_in_picture",
      "//chrome/browser/ui/views/toolbar",
      "//chrome/browser/ui/views/toolbar:impl",
      "//chrome/browser/ui/views/zoom",
      "//chrome/browser/ui/webui/app_management",
      "//chrome/browser/ui/webui/browser_command",
      "//chrome/browser/ui/webui/color_pipeline_internals",
      "//chrome/browser/ui/webui/commerce",
      "//chrome/browser/ui/webui/commerce:impl",
      "//chrome/browser/ui/webui/cr_components/history_clusters",
      "//chrome/browser/ui/webui/cr_components/history_embeddings",
      "//chrome/browser/ui/webui/customize_buttons",
      "//chrome/browser/ui/webui/customize_buttons:impl",
      "//chrome/browser/ui/webui/infobar_internals",
      "//chrome/browser/ui/webui/inspect",
      "//chrome/browser/ui/webui/metrics_reporter",
      "//chrome/browser/ui/webui/metrics_reporter:impl",
      "//chrome/browser/ui/webui/new_tab_footer",
      "//chrome/browser/ui/webui/new_tab_footer:impl",
      "//chrome/browser/ui/webui/page_action_internals",
      "//chrome/browser/ui/webui/settings",
      "//chrome/browser/ui/webui/settings:impl",
      "//chrome/browser/ui/webui/side_panel/bookmarks:impl",
      "//chrome/browser/ui/webui/side_panel/comments:impl",
      "//chrome/browser/ui/webui/side_panel/customize_chrome:impl",
      "//chrome/browser/ui/webui/side_panel/reading_list:impl",
      "//chrome/browser/ui/webui/side_panel/tabs_from_other_devices:impl",
      "//chrome/browser/ui/webui/signin",
      "//chrome/browser/ui/webui/signin:login_ui_service_impl",
      "//chrome/browser/ui/webui/signin:signin_impl",
      "//chrome/browser/ui/webui/top_chrome",
      "//chrome/browser/ui/webui/top_chrome:impl",
      "//chrome/browser/ui/webui/util",
      "//chrome/browser/ui/webui/webui_toolbar",
      "//chrome/browser/ui/webui/webui_toolbar:impl",
      "//chrome/browser/ui/webui/webui_toolbar/adapters:impl",
      "//chrome/browser/ui/webui/whats_new",
      "//chrome/browser/ui/webui/whats_new:impl",
      "//chrome/browser/ui/webui_browser",
      "//chrome/browser/ui/webui_browser:impl",
      "//chrome/browser/ui/window_sizer",
      "//chrome/browser/ui/window_sizer:impl",
      "//chrome/browser/visited_url_ranking:impl",
      "//chrome/browser/web_applications",
      "//chrome/browser/web_applications:features",
      "//components/app_constants",
      "//components/autofill/core/browser",
      "//components/commerce/core:feature_list",
      "//components/commerce/core:shopping_service",
      "//components/multistep_filter/core:features",
      "//components/notebooks/internals/webui",
      "//components/paint_preview/public",
      "//components/password_manager/content/common",
      "//components/password_manager/core/browser/leak_detection",
      "//components/private_ai",
      "//components/services/app_service",
      "//components/ui_metrics",
      "//components/url_formatter",
      "//components/user_education/webui",
      "//components/webapps/isolated_web_apps",
      "//device/bluetooth",
      "//device/bluetooth/strings:strings_grit",
      "//device/fido",
      "//services/preferences/tracked",
      "//third_party/blink/public/common:headers",
      "//ui/color/dynamic_color",
      "//ui/events",
    ]

    if (is_win || is_chromeos) {
      deps += [
        "//chrome/browser/ui/webui/signin:inline_login",
        "//chrome/browser/ui/webui/signin:inline_login_impl",
      ]
    }

    # Non-android public_deps for "ui" target.
    public_deps += [
      "//chrome/browser/contextual_cueing/internals",
      "//chrome/browser/importer",
      "//chrome/browser/importer:impl",
      "//chrome/browser/personal_context/first_run",
      "//chrome/browser/ui/commerce",
      "//chrome/browser/ui/read_anything",
      "//chrome/browser/ui/views/side_panel",
      "//chrome/browser/ui/waap:manager",
      "//chrome/browser/ui/webui/data_sharing",
      "//chrome/browser/ui/webui/feedback",
      "//chrome/browser/ui/webui/feedback:impl",
      "//chrome/browser/ui/webui/indigo_internals",
      "//chrome/browser/ui/webui/media_router",
      "//chrome/browser/ui/webui/multistep_filter_internals",
      "//chrome/browser/ui/webui/on_device_internals",
      "//chrome/browser/ui/webui/password_manager:password_manager_ui",
      "//chrome/browser/ui/webui/search_engine_choice",
      "//chrome/browser/ui/webui/side_panel/bookmarks",
      "//chrome/browser/ui/webui/side_panel/comments",
      "//chrome/browser/ui/webui/side_panel/customize_chrome:customize_chrome_ui",
      "//chrome/browser/ui/webui/side_panel/customize_chrome/customize_toolbar",
      "//chrome/browser/ui/webui/side_panel/customize_chrome/wallpaper_search",
      "//chrome/browser/ui/webui/side_panel/history",
      "//chrome/browser/ui/webui/side_panel/history_clusters",
      "//chrome/browser/ui/webui/side_panel/read_anything",
      "//chrome/browser/ui/webui/side_panel/reading_list",
      "//chrome/browser/ui/webui/side_panel/tabs_from_other_devices",
      "//chrome/browser/ui/webui/util",
      "//chrome/browser/ui/webui/webnn_internals",
    ]

    if (use_aura) {
      public_deps += [ "//chrome/browser/ui:overscroll_pref_manager" ]
    }

    if (is_chromeos) {
      deps += [ "//chrome/browser/apps/app_service" ]
    }

    if (!is_chromeos && !is_android) {
      deps += [
        "//chrome/browser/download/bubble",
        "//chrome/browser/download/bubble:impl",
      ]
    }

    # Any circular includes must depend on the target
    # "//chrome/browser:browser_public_dependencies". Non-android circular
    # dependencies
    allow_circular_includes_from += [
      # history_embeddings includes headers from //chrome/browser/ui (e.g.
      # browser.h, browser_window.h) that can't be split out yet.
      "//chrome/browser/ui/webui/cr_components/history_embeddings",

      # history includes headers from //chrome/browser/ui (e.g. browser.h)
      # that can't be split out yet.
      "//chrome/browser/ui/webui/history",

      # browser_command_handler.cc includes browser.h, browser_commands.h,
      # etc. from //chrome/browser/ui:ui.
      "//chrome/browser/ui/webui/browser_command",

      # inspect_ui.cc includes browser.h, singleton_tabs.h.
      "//chrome/browser/ui/webui/inspect",

      # These side panel UIs include loose headers that remain in
      # //chrome/browser/ui:ui (browser.h, browser_window.h, browser_commands.h,
      # views/frame/browser_view.h).
      "//chrome/browser/ui/webui/side_panel/bookmarks:impl",
      "//chrome/browser/ui/webui/side_panel/reading_list:impl",
      "//chrome/browser/ui/webui/side_panel/customize_chrome:impl",
      "//chrome/browser/ui/webui/side_panel/customize_chrome/customize_toolbar",
      "//chrome/browser/ui/webui/side_panel/customize_chrome/wallpaper_search",

      # //chrome/browser/ui/webui/util/webui_util_desktop.h is included by
      # :ui and its implementation is in //chrome/browser/ui/webui/util:impl.
      "//chrome/browser/ui/webui/util:impl",

      # TODO(crbug.com/40110173): Resolve circular dependencies.
      "//chrome/browser/ui/desktop_to_mobile_promos:service",

      # TODO(crbug.com/40251079): Remove circular dependencies.
      "//chrome/browser/apps/app_service",

      # TODO(crbug.com/345487716): Remove circular dependencies.
      "//chrome/browser/ui/read_anything",
      "//chrome/browser/ui/views/side_panel",

      # TODO(crbug/com/387527798): Remove circular dependencies.
      "//chrome/browser/ui/views/download",

      # TODO(crbug.com/40246046): Remove allow_circular_includes_from when
      # dependencies for controller are fixed.
      "//chrome/browser/lens/region_search",

      # TODO(crbug.com/359593415): Remove allow_circular_includes_from.
      # //c/b/ui/apps/directory_access_confirmation_dialog.cc includes
      # //c/b/ui/tab_modal_confirm_dialog_delegate.h.
      "//chrome/browser/ui/apps:impl",
      "//chrome/browser/ui/browser_ui_controller:impl",
      "//chrome/browser/ui/browser_window/internal",
      "//chrome/browser/ui/find_bar:impl",
      "//chrome/browser/ui/focus:impl",
      "//chrome/browser/ui/fullscreen:impl",
      "//chrome/browser/ui/performance_controls:impl",
      "//chrome/browser/ui/tabs/saved_tab_groups:impl",
      "//chrome/browser/ui/toasts:impl",
      "//chrome/browser/ui/views/contextual_tasks:impl",
      "//chrome/browser/ui/webui/customize_buttons:impl",
      "//chrome/browser/ui/views/toolbar",
      "//chrome/browser/ui/views/toolbar:impl",
      "//chrome/browser/ui/views/new_tab_footer",
      "//chrome/browser/ui/webui/searchbox",
      "//chrome/browser/ui/webui/top_chrome:impl",
      "//chrome/browser/ui/webui_browser",
      "//chrome/browser/ui/webui_browser:impl",

      # TODO(crbug.com/382237520): Remove this once NTP code is modularized.
      "//chrome/browser/ui/lens:impl",

      "//chrome/browser/ui/signin:impl",
      "//chrome/browser/ui/webui/commerce:impl",
      "//chrome/browser/ui/webui/signin:signin_impl",
      "//chrome/browser/ui/webui/webui_toolbar:impl",
      "//chrome/browser/ui/webui/webui_toolbar/adapters:impl",
      "//chrome/browser/ui/webui/whats_new:impl",

      "//chrome/browser/glic/browser_ui:glow_impl",
      "//chrome/browser/glic/browser_ui:glow_controller_impl",
      "//chrome/browser/ui/views/glic",
      "//chrome/browser/ui/views/tabs/glic",
      "//chrome/browser/ui/views/tabs/glic:impl",

      "//chrome/browser/ui/media_router:impl",
      "//chrome/browser/ui/window_sizer:impl",
      "//chrome/browser/ui/webui/settings:impl",
      "//chrome/browser/ui/search_engine_choice:impl",
      "//chrome/browser/ui/global_media_controls:impl",
      "//chrome/browser/ui/toolbar/cast:impl",
      "//chrome/browser/ui/tabs:impl",
      "//chrome/browser/ui/tabs:tab_group_impl",
      "//chrome/browser/ui/tabs:tab_model_impl",
      "//chrome/browser/ui/tabs:tab_strip_impl",
      "//chrome/browser/ui/bookmarks:impl",
      "//chrome/browser/ui/desktop_to_mobile_promos:controller",

      # TODO(crbug.com/353332589): Remove this circular dependency when
      # c/b/ui/browser.h gets componentized.
      "//chrome/browser/visited_url_ranking:impl",

      # TODO(crbug.com/364667551): It includes quite a few files from //c/b/ui's
      # subdirectories such as views and webui which are not modularized yet.
      "//chrome/browser/ui/webui/access_code_cast:impl",

      # TODO(crbug.com/364667551): It includes //c/b/ui/browser.h and
      # //c/b/ui/browser_window.h.
      "//chrome/browser/ui/webui/accessibility:impl",

      # TODO(crbug.com/430013958): Remove this circular dependency when
      # `translate_bubble_factory.cc` stop including c/b/ui/browser_window.h.
      "//chrome/browser/ui/translate:impl",

      # TODO(crbug.com/430078439): Remove this circular dependency when .cc
      # files stop including browser.h, browser_window.h.
      "//chrome/browser/ui/user_education:impl",

      # TODO(crbug.com/432421124): Remove when the following headers aren't
      # included or get componentized: c/b/ui/browser_dialogs.h,
      # browser_navigation.h, browser.h.
      "//chrome/browser/ui/sync:impl",

      # TODO(crbug.com/438226511): Remove this circular dependency when the
      # following headers get componentized:
      # - c/b/ui/browser.h, browser_window.h, browser_window_state.h,
      #   browser_commands.h,
      #   browser_tabstrip.h, intent_picker_tab_helper.h.
      "//chrome/browser/ui/web_applications:impl",

      # TODO(crbug.com/438226511): Remove this circular dependency when
      # c/b/ui/browser.h gets componentized.
      "//chrome/browser/ui/web_applications:launch_utils",

      # TODO(crbug.com/542827630): Remove this circular dependency when
      # c/b/ui/browser.h gets componentized.
      "//chrome/browser/ui/sessions",

      # ntp and ntp_resource_cache include browser_window.h and
      # layout_constants.h from //chrome/browser/ui.
      "//chrome/browser/ui/webui/ntp:ntp_resource_cache",

      # omnibox_popup includes browser_window.h and other headers from
      # //chrome/browser/ui.
      "//chrome/browser/ui/webui/omnibox_everywhere",
      "//chrome/browser/ui/webui/omnibox_popup",

      # tab_search includes browser.h, browser_window.h,
      # plural_string_handler.h, and tab_ui_helper.h from //chrome/browser/ui.
      "//chrome/browser/ui/webui/tab_search",
    ]

    if (is_win || is_chromeos) {
      allow_circular_includes_from +=
          [ "//chrome/browser/ui/webui/signin:inline_login_impl" ]
    }

    if (use_ozone && !is_chromeos) {
      deps += [ "//ui/ozone" ]
    }

    if (is_linux) {
      deps += [ "//ui/base/ime/linux" ]
    }

    if (enable_dice_support || is_chromeos) {
      deps += [
        "//chrome/browser/profiles/batch_upload",
        "//chrome/browser/profiles/batch_upload:impl",
        "//chrome/browser/ui/webui/batch_upload_promo",
      ]
      allow_circular_includes_from += [
        "//chrome/browser/ui/webui/batch_upload_promo",
        "//chrome/browser/profiles/batch_upload:impl",
      ]
    }
    if (enable_dice_support) {
      deps += [
        "//chrome/browser/ui/webui/signin/signout_confirmation",
        "//chrome/browser/ui/webui/signin/signout_confirmation:signout_confirmation_impl",
      ]
      allow_circular_includes_from += [ "//chrome/browser/ui/webui/signin/signout_confirmation:signout_confirmation_impl" ]
    }

    if (enable_extensions) {
      deps += [ "//chrome/browser/web_applications/extensions" ]
    }
  }

  if (enable_webui_ntp) {
    deps += [
      "//chrome/browser/new_tab_page:impl",
      "//chrome/browser/ui/search",
      "//chrome/browser/ui/search:impl",
      "//chrome/browser/ui/webui/cr_components/searchbox",
      "//chrome/browser/ui/webui/new_tab_page:impl",
      "//chrome/browser/ui/webui/searchbox",
    ]
    public_deps += [ "//chrome/browser/ui/webui/new_tab_page" ]
    allow_circular_includes_from += [
      # search:impl includes headers from //chrome/browser/ui (e.g.
      # browser_window.h, tab_modal_confirm_dialog.h) that can't be split out
      # yet.
      "//chrome/browser/ui/search:impl",

      # new_tab_page and new_tab_page:impl files include headers from
      # //chrome/browser/ui:ui that haven't been extracted yet.
      "//chrome/browser/ui/webui/new_tab_page:impl",
    ]
  }

  if (enable_extensions) {
    deps += [
      "//chrome/browser/extensions/api/web_navigation",
      "//chrome/browser/ui/views/supervised_user",
      "//chrome/browser/ui/views/supervised_user:impl",
      "//chromeos/ui/vector_icons",
    ]

    allow_circular_includes_from += [
      # parent_permission_dialog_view:impl includes headers from
      # //chrome/browser/ui (e.g. extension_permissions_view.h) that can't be
      # split out yet.
      "//chrome/browser/ui/views/supervised_user:impl",
    ]
  }

  if (is_chromeos) {
    assert(enable_extensions)
    assert(enable_supervised_users)
    assert(toolkit_views)
    sources += [
      "settings_window_manager_chromeos.cc",
      "settings_window_manager_chromeos.h",
      "views/chrome_views_delegate_ash.cc",
      "views/frame/browser_frame_header_chromeos.cc",
      "views/frame/browser_frame_header_chromeos.h",
      "views/frame/browser_frame_view_chromeos.cc",
      "views/frame/browser_frame_view_chromeos.h",
      "views/frame/browser_frame_view_factory_chromeos.cc",
      "views/frame/browser_native_widget_ash.cc",
      "views/frame/browser_native_widget_ash.h",
      "views/frame/browser_native_widget_factory_chromeos.cc",
      "views/frame/browser_view_ash.cc",
      "views/frame/browser_view_ash.h",
      "views/frame/immersive_mode_controller_chromeos.cc",
      "views/frame/immersive_mode_controller_chromeos.h",
      "views/frame/picture_in_picture_browser_frame_view_ash.cc",
      "views/frame/picture_in_picture_browser_frame_view_ash.h",
      "views/frame/top_controls_slide_controller_chromeos.cc",
      "views/frame/top_controls_slide_controller_chromeos.h",
    ]

    deps += [
      ":browser_commands_chromeos",
      "//ash",
      "//ash/keyboard/ui",
      "//ash/public/cpp",
      "//ash/style",
      "//ash/webui/common/resources/office_fallback:resources",
      "//ash/webui/diagnostics_ui",
      "//ash/webui/firmware_update_ui",
      "//ash/webui/graduation",
      "//ash/webui/help_app_ui",
      "//ash/webui/mall:app_id",
      "//ash/webui/mall:url_constants",
      "//ash/webui/os_feedback_ui",
      "//ash/webui/print_management",
      "//ash/webui/sanitize_ui",
      "//ash/webui/shortcut_customization_ui",
      "//ash/webui/vc_background_ui",
      "//chrome/browser:browser_process_platform_part_ash",
      "//chrome/browser:platform_util_ash",
      "//chrome/browser/apps/app_preload_service",
      "//chrome/browser/apps/browser_instance",
      "//chrome/browser/ash/accessibility/live_caption",
      "//chrome/browser/ash/app_list",
      "//chrome/browser/ash/app_list/reorder",
      "//chrome/browser/ash/app_list/search",
      "//chrome/browser/ash/app_list/search/games",
      "//chrome/browser/ash/app_list/search/local_image_search",
      "//chrome/browser/ash/app_list/search/system_info",
      "//chrome/browser/ash/app_restore",
      "//chrome/browser/ash/apps",
      "//chrome/browser/ash/arc:arc_util",
      "//chrome/browser/ash/arc/accessibility",
      "//chrome/browser/ash/arc/auth",
      "//chrome/browser/ash/arc/bluetooth",
      "//chrome/browser/ash/arc/fileapi",
      "//chrome/browser/ash/arc/input_method_manager",
      "//chrome/browser/ash/arc/input_overlay",
      "//chrome/browser/ash/arc/instance_throttle",
      "//chrome/browser/ash/arc/intent_helper",
      "//chrome/browser/ash/arc/metrics",
      "//chrome/browser/ash/arc/nearby_share",
      "//chrome/browser/ash/arc/notification",
      "//chrome/browser/ash/arc/pip",
      "//chrome/browser/ash/arc/policy",
      "//chrome/browser/ash/arc/print_spooler",
      "//chrome/browser/ash/arc/session",
      "//chrome/browser/ash/arc/sharesheet",
      "//chrome/browser/ash/arc/survey",
      "//chrome/browser/ash/arc/tracing",
      "//chrome/browser/ash/arc/wallpaper",
      "//chrome/browser/ash/boca/on_task",
      "//chrome/browser/ash/boot_times_recorder",
      "//chrome/browser/ash/borealis",
      "//chrome/browser/ash/browser_delegate:impl",
      "//chrome/browser/ash/bruschetta",
      "//chrome/browser/ash/cert_provisioning",
      "//chrome/browser/ash/certificate_provider",
      "//chrome/browser/ash/child_accounts",
      "//chrome/browser/ash/child_accounts/on_device_controls",
      "//chrome/browser/ash/child_accounts/time_limits",
      "//chrome/browser/ash/eche_app",
      "//chrome/browser/ash/extensions",
      "//chrome/browser/ash/file_suggest",
      "//chrome/browser/ash/floating_workspace",
      "//chrome/browser/ash/growth",
      "//chrome/browser/ash/guest_os",
      "//chrome/browser/ash/guest_os/public",
      "//chrome/browser/ash/input_method",
      "//chrome/browser/ash/kcer",
      "//chrome/browser/ash/kerberos",
      "//chrome/browser/ash/login",
      "//chrome/browser/ash/login/enrollment",
      "//chrome/browser/ash/login/lock/online_reauth",
      "//chrome/browser/ash/login/quick_unlock",
      "//chrome/browser/ash/login/signin",
      "//chrome/browser/ash/login/smart_lock",
      "//chrome/browser/ash/login/users/avatar",
      "//chrome/browser/ash/mahi/media_app",
      "//chrome/browser/ash/mahi/web_contents",
      "//chrome/browser/ash/multidevice_setup",
      "//chrome/browser/ash/nearby",
      "//chrome/browser/ash/nearby/presence",
      "//chrome/browser/ash/net",
      "//chrome/browser/ash/notifications",
      "//chrome/browser/ash/ownership",
      "//chrome/browser/ash/phonehub",
      "//chrome/browser/ash/platform_keys",
      "//chrome/browser/ash/platform_keys/key_permissions",
      "//chrome/browser/ash/policy/dlp",
      "//chrome/browser/ash/policy/skyvault",
      "//chrome/browser/ash/printing/oauth2",
      "//chrome/browser/ash/printing/print_management",
      "//chrome/browser/ash/remote_apps",
      "//chrome/browser/ash/scanning",
      "//chrome/browser/ash/smb_client",
      "//chrome/browser/ash/sync",
      "//chrome/browser/ash/system_web_apps",
      "//chrome/browser/ash/system_web_apps/apps/personalization_app",
      "//chrome/browser/ash/tether",
      "//chrome/browser/chromeos/app_mode",
      "//chrome/browser/chromeos/arc",
      "//chrome/browser/chromeos/extensions/login_screen/login/cleanup",
      "//chrome/browser/chromeos/extensions/vpn_provider",
      "//chrome/browser/chromeos/gemini_app",
      "//chrome/browser/chromeos/office_web_app",
      "//chrome/browser/chromeos/platform_keys",
      "//chrome/browser/chromeos/policy/dlp",
      "//chrome/browser/nearby_sharing",
      "//chrome/browser/nearby_sharing:impl",
      "//chrome/browser/push_notification",
      "//chrome/browser/ui/ash/arc/arc_app_dialog_view",
      "//chrome/browser/ui/ash/arc/arc_data_removal_dialog_view",
      "//chrome/browser/ui/ash/assistant",
      "//chrome/browser/ui/ash/birch",
      "//chrome/browser/ui/ash/capture_mode",
      "//chrome/browser/ui/ash/desks",
      "//chrome/browser/ui/ash/editor_menu",
      "//chrome/browser/ui/ash/global_media_controls",
      "//chrome/browser/ui/ash/google_one",
      "//chrome/browser/ui/ash/holding_space",
      "//chrome/browser/ui/ash/in_session_auth",
      "//chrome/browser/ui/ash/keyboard",
      "//chrome/browser/ui/ash/login",
      "//chrome/browser/ui/ash/main_extra_parts",
      "//chrome/browser/ui/ash/multi_user",
      "//chrome/browser/ui/ash/network",
      "//chrome/browser/ui/ash/new_window",
      "//chrome/browser/ui/ash/security_token_restriction",
      "//chrome/browser/ui/ash/session",
      "//chrome/browser/ui/ash/shelf",
      "//chrome/browser/ui/ash/shell_delegate",
      "//chrome/browser/ui/ash/system",
      "//chrome/browser/ui/ash/system_web_apps",
      "//chrome/browser/ui/ash/wallpaper",
      "//chrome/browser/ui/ash/wm",
      "//chrome/browser/ui/chromeos/locked_state",
      "//chrome/browser/ui/views:external_protocol_handler_ash",
      "//chrome/browser/ui/views:platform_keys_certificate_selector_chromeos",
      "//chrome/browser/ui/views/apps/app_dialog",
      "//chrome/browser/ui/views/extensions:media_galleries_dialog_views",
      "//chrome/browser/ui/views/extensions:media_gallery_checkbox_view",
      "//chrome/browser/ui/views/extensions/dialogs:document_scanner_discovery_confirmation_dialog",
      "//chrome/browser/ui/views/extensions/dialogs:document_scanner_start_scan_confirmation_dialog",
      "//chrome/browser/ui/views/extensions/dialogs:print_job_confirmation_dialog",
      "//chrome/browser/ui/views/extensions/dialogs:request_file_system_dialog",
      "//chrome/browser/ui/views/profiles:profile_indicator_icon",
      "//chrome/browser/ui/views/select_file_dialog_extension",
      "//chrome/browser/ui/views/web_apps:protocol_handler_picker_coordinator",
      "//chrome/browser/ui/views/web_apps:protocol_handler_picker_dialog",
      "//chrome/browser/ui/webui/ash/add_supervision",
      "//chrome/browser/ui/webui/ash/app_install",
      "//chrome/browser/ui/webui/ash/bluetooth",
      "//chrome/browser/ui/webui/ash/cloud_upload",
      "//chrome/browser/ui/webui/ash/curtain_ui",
      "//chrome/browser/ui/webui/ash/emoji",
      "//chrome/browser/ui/webui/ash/extended_updates",
      "//chrome/browser/ui/webui/ash/internet",
      "//chrome/browser/ui/webui/ash/login",
      "//chrome/browser/ui/webui/ash/multidevice_setup",
      "//chrome/browser/ui/webui/ash/office_fallback",
      "//chrome/browser/ui/webui/ash/os_feedback_dialog",
      "//chrome/browser/ui/webui/ash/set_time",
      "//chrome/browser/ui/webui/ash/settings",
      "//chrome/browser/ui/webui/ash/settings/pages/date_time",
      "//chrome/browser/ui/webui/ash/settings/pages/files",
      "//chrome/browser/ui/webui/ash/settings/pages/main",
      "//chrome/browser/ui/webui/ash/settings/pages/search",
      "//chrome/browser/ui/webui/ash/skyvault",
      "//chrome/browser/ui/webui/ash/system_web_dialog",
      "//chrome/browser/ui/webui/nearby_share",
      "//chrome/browser/ui/webui/signin/ash",
      "//chrome/browser/web_applications",
      "//chromeos/ash/components/account_manager",
      "//chromeos/ash/components/dbus/hermes",
      "//chromeos/ash/components/dbus/printscanmgr",
      "//chromeos/ash/components/dbus/printscanmgr:printscanmgr_proto",
      "//chromeos/ash/components/emoji:resources",
      "//chromeos/ash/components/local_search_service/public/cpp",
      "//chromeos/ash/components/mojo_service_manager",
      "//chromeos/ash/components/system_web_apps:system_web_app_type",
      "//chromeos/ash/experiences/arc",
      "//chromeos/ash/experiences/arc:arc_app_constants",
      "//chromeos/ash/experiences/arc/intent_helper",
      "//chromeos/ash/experiences/arc/intent_helper:arc_intent_helper_constants",
      "//chromeos/ash/experiences/arc/touch_selection_menu",
      "//chromeos/ash/experiences/arc/vector_icons",
      "//chromeos/ash/experiences/isolated_web_app",
      "//chromeos/ash/experiences/settings_ui",
      "//chromeos/ash/resources",
      "//chromeos/components/kiosk",
      "//chromeos/components/mgs",
      "//chromeos/components/sharesheet:constants",
      "//chromeos/strings",
      "//chromeos/ui/vector_icons",
      "//chromeos/ui/wm",
      "//components/app_constants",
      "//components/content_relationship_verification",
      "//components/media_gallery_util",
      "//components/metrics/structured:structured_events",
      "//components/services/app_service",
      "//components/tab_groups",
      "//content/public/common",
      "//media/capture:capture_lib",
      "//mojo/public/js:resources_grit",
      "//services/device/public/cpp:device_features",
      "//ui/chromeos",
      "//ui/chromeos/resources",
      "//ui/chromeos/styles:cros_styles_resources",
      "//ui/chromeos/styles:cros_styles_views",
      "//ui/chromeos/styles:cros_tokens_color_mappings",
      "//ui/events/ozone/evdev",
      "//ui/file_manager",
      "//ui/ozone",
    ]

    public_deps += [
      "//chrome/browser/ash/accessibility",
      "//chrome/browser/ash/account_manager",
      "//chrome/browser/ash/usb",
      "//chrome/browser/ui/ash/login",
      "//chrome/browser/ui/webui/ash/login",
    ]

    # Any circular includes must depend on the target
    # "//chrome/browser:browser_public_dependencies".
    allow_circular_includes_from += [
      # browser_process_platform_part_ash.cc and platform_util_ash.cc include
      # //chrome/browser/ui headers (e.g. browser.h, browser_window.h) that
      # can't be split out of this target yet.
      "//chrome/browser:browser_process_platform_part_ash",
      "//chrome/browser:platform_util_ash",

      "//chrome/browser/apps/browser_instance",
      "//chrome/browser/ash/accessibility",
      "//chrome/browser/ash/app_list",
      "//chrome/browser/ash/arc/session",
      "//chrome/browser/ash/boca/on_task",
      "//chrome/browser/ash/browser_delegate:impl",
      "//chrome/browser/ash/login/users/avatar",
      "//chrome/browser/nearby_sharing:impl",
      "//chrome/browser/ash/notifications",
      "//chrome/browser/ash/sync",
      "//chrome/browser/ash/system_web_apps/apps/personalization_app",
      "//chrome/browser/chromeos/app_mode",
      "//chrome/browser/chromeos/arc",
      "//chrome/browser/chromeos/extensions/login_screen/login/cleanup",
      "//chrome/browser/chromeos/platform_keys",
      "//chrome/browser/chromeos/policy/dlp",
      "//chrome/browser/ui/ash/assistant",
      "//chrome/browser/ui/ash/desks",
      "//chrome/browser/ui/ash/in_session_auth",
      "//chrome/browser/ui/ash/main_extra_parts",
      "//chrome/browser/ui/ash/network",
      "//chrome/browser/ui/ash/new_window",
      "//chrome/browser/ui/ash/shell_delegate",
      "//chrome/browser/ui/ash/system",
      "//chrome/browser/ui/ash/wallpaper",
      "//chrome/browser/ui/ash/wm",
      "//chrome/browser/ui/chromeos/locked_state",
      "//chrome/browser/ui/webui/ash/add_supervision",
      "//chrome/browser/ui/webui/ash/cloud_upload",
      "//chrome/browser/ui/webui/ash/settings/pages/main",
      "//chrome/browser/ui/webui/ash/system_web_dialog",
      "//chrome/browser/ui/webui/nearby_share",
      "//chrome/browser/ui/webui/signin/ash",
    ]

    if (is_chrome_branded) {
      deps += [
        "//chrome/browser/nearby_sharing/internal/icons",
        "//chrome/browser/nearby_sharing/internal/resources:nearby_share_internal_strings",
        "//chromeos/ash/resources/internal/strings",
      ]
    }
  }

  if (is_win || is_mac || is_linux || is_chromeos) {
    sources += [
      "views/profiles/incognito_menu_view.cc",
      "views/profiles/incognito_menu_view.h",
      "views/profiles/profile_menu_coordinator.cc",
      "views/profiles/profile_menu_coordinator.h",
      "views/profiles/profile_menu_view_base.cc",
      "views/profiles/profile_menu_view_base.h",
      "views/profiles/signin_view_controller_delegate_views.cc",
      "views/profiles/signin_view_controller_delegate_views.h",
    ]
    deps += [
      "//chrome/browser/lifetime:termination_notification",
      "//chrome/browser/themes",
      "//chrome/browser/ui/autofill/payments",
      "//chrome/browser/ui/frame",
      "//chrome/browser/ui/frame:impl",
      "//chrome/browser/ui/lens",
      "//chrome/browser/ui/lens:impl",
      "//chrome/browser/ui/views:close_bubble_on_tab_activation_helper",
      "//chrome/browser/ui/views/hats",
      "//chrome/browser/ui/views/hats:impl",
      "//chrome/browser/ui/views/profiles:avatar_badge_view",
      "//chrome/browser/ui/wallet",
    ]

    allow_circular_includes_from += [
      "//chrome/browser/ui/wallet",
      "//chrome/browser/ui/views/hats:impl",
    ]
  }

  if (!is_android || is_desktop_android) {
    public_deps += [ "//chrome/browser/ui/webui/ai_overlay_dialog" ]
  }

  if (!is_android) {
    deps += [ "//chrome/browser/ui/webui/downloads" ]
  }

  if (is_win || is_mac || is_linux) {
    sources += [
      "views/profiles/profile_customization_bubble_sync_controller.cc",
      "views/profiles/profile_customization_bubble_sync_controller.h",
      "views/profiles/profile_management_flow_controller.cc",
      "views/profiles/profile_management_flow_controller.h",
      "views/profiles/profile_management_flow_controller_impl.cc",
      "views/profiles/profile_management_flow_controller_impl.h",
      "views/profiles/profile_management_step_controller.cc",
      "views/profiles/profile_management_step_controller.h",
      "views/profiles/profile_menu_view.cc",
      "views/profiles/profile_menu_view.h",
      "views/profiles/profile_picker_feature_promo_controller.cc",
      "views/profiles/profile_picker_feature_promo_controller.h",
      "views/profiles/profile_picker_flow_controller.cc",
      "views/profiles/profile_picker_flow_controller.h",
      "views/profiles/profile_picker_post_sign_in_adapter.cc",
      "views/profiles/profile_picker_post_sign_in_adapter.h",
      "views/profiles/profile_picker_turn_sync_on_delegate.cc",
      "views/profiles/profile_picker_turn_sync_on_delegate.h",
      "views/profiles/profile_picker_view.cc",
      "views/profiles/profile_picker_view.h",
      "views/profiles/profile_picker_widget.cc",
      "views/profiles/profile_picker_widget.h",
    ]

    deps += [
      "//chrome/browser/default_browser",
      "//chrome/browser/ui/download",
      "//chrome/browser/ui/download:impl",
      "//chrome/browser/ui/shortcuts",
      "//chrome/browser/ui/startup/default_browser_prompt",
      "//chrome/browser/ui/startup/default_browser_prompt:impl",
      "//chrome/browser/ui/views/profiles:badged_profile_photo",
      "//chrome/browser/ui/views/profiles:profile_management_types",
      "//chrome/browser/ui/views/profiles:profile_picker_web_contents_host",
      "//chrome/browser/ui/webui/app_home",
      "//chrome/browser/ui/webui/app_home:impl",
      "//chrome/browser/ui/webui/app_settings",
      "//chrome/browser/ui/webui/app_settings:impl",
      "//chrome/browser/ui/webui/browser_switch",
      "//chrome/browser/ui/webui/intro",
      "//chrome/browser/ui/webui/on_device_translation_internals",
      "//chrome/browser/ui/webui/signin:profile",
      "//chrome/browser/ui/webui/signin:profile_impl",
      "//chrome/browser/ui/webui/updater",
    ]

    # Any circular includes must depend on the target
    # "//chrome/browser:browser_public_dependencies". Non-android and
    # non-chromeos-ash circular deps.
    allow_circular_includes_from += [
      "//chrome/browser/ui/startup/default_browser_prompt:impl",
      "//chrome/browser/ui/webui/signin:profile_impl",

      # TODO(crbug.com/364667551): It includes quite a few files from //c/b/ui's
      # subdirectories such as views and webui which are not modularized yet.
      "//chrome/browser/ui/webui/app_home:impl",

      # TODO(crbug.com/364667551): It includes quite a few files from //c/b/ui's
      # such as browser_window.h, browser.h and other files.
      "//chrome/browser/ui/webui/app_settings:impl",

      # TODO(crbug.com/364667551): browser_switch_ui.cc includes browser.h from
      # //chrome/browser/ui:ui.
      "//chrome/browser/ui/webui/browser_switch",
    ]

    if (enable_dice_support) {
      sources += [
        "views/profiles/cross_device_signin_qr_bubble_views.cc",
        "views/profiles/dice_web_signin_interception_bubble_view.cc",
        "views/profiles/dice_web_signin_interception_bubble_view.h",
        "views/profiles/first_run_flow_controller.cc",
        "views/profiles/first_run_flow_controller.h",
        "views/profiles/profile_picker_glic_flow_controller.cc",
        "views/profiles/profile_picker_glic_flow_controller.h",
        "views/profiles/profile_picker_omnibox_everywhere_flow_controller.cc",
        "views/profiles/profile_picker_omnibox_everywhere_flow_controller.h",
        "views/profiles/profile_picker_reauth_provider.cc",
        "views/profiles/profile_picker_reauth_provider.h",
        "views/profiles/profile_picker_sign_in_provider.cc",
        "views/profiles/profile_picker_sign_in_provider.h",
        "views/profiles/profile_picker_utils.cc",
        "views/profiles/profile_picker_utils.h",
      ]
      deps += [
        "webui/signin/batch_upload:mojo_bindings",
        "//chrome/browser/ui/views/profiles:profile_picker_toolbar",
        "//chrome/browser/ui/views/profiles/feature_showcase",
        "//chrome/browser/ui/views/profiles/feature_showcase:metrics",
        "//chrome/browser/ui/webui/feature_showcase",
        "//services/audio/public/cpp",
      ]

      # batch_upload includes headers from //chrome/browser/ui (e.g. browser.h)
      # that can't be split out yet.
      allow_circular_includes_from +=
          [ "//chrome/browser/ui/webui/signin:batch_upload" ]
    }
  }

  if (is_win || is_mac || is_linux || is_chromeos || is_android) {
    deps += [ "//components/enterprise/device_trust/core:metrics" ]

    if (enterprise_client_certificates) {
      deps += [ "//components/enterprise/client_certificates/core" ]
    }
  }

  if (enable_dice_support || is_chromeos) {
    deps += [
      "webui/signin:batch_upload",
      "webui/signin/batch_upload:mojo_bindings",
    ]

    if (is_chromeos) {
      # batch_upload includes headers from //chrome/browser/ui (e.g.
      # browser.h) that can't be split out yet.
      allow_circular_includes_from +=
          [ "//chrome/browser/ui/webui/signin:batch_upload" ]
    }
  }

  if (is_mac) {
    sources += [
      "browser_commands_mac.h",
      "browser_commands_mac.mm",
      "views/frame/browser_frame_view_factory_mac.mm",
      "views/frame/browser_frame_view_mac.h",
      "views/frame/browser_frame_view_mac.mm",
      "views/frame/browser_native_widget_factory_mac.mm",
      "views/frame/browser_native_widget_mac.h",
      "views/frame/browser_native_widget_mac.mm",
      "views/frame/immersive_mode_controller_mac.h",
      "views/frame/immersive_mode_controller_mac.mm",
      "views/frame/immersive_mode_overlay_views_mac.h",
      "views/frame/immersive_mode_overlay_views_mac.mm",
    ]

    deps += [
      ":browser_mac",
      ":fullscreen_util_mac",
      "//chrome/browser/apps/app_shim",
      "//chrome/browser/ui/cocoa",
      "//chrome/browser/ui/views:certificate_viewer_mac_views",
    ]

    # Any circular includes must depend on the target
    # "//chrome/browser:browser_public_dependencies".
    allow_circular_includes_from += [
      "//chrome/browser/apps/app_shim",
      "//chrome/browser/ui/cocoa",
    ]

    deps += [
      "//chrome/browser:app_controller_mac",
      "//chrome/browser:chrome_browser_application_mac",
      "//chrome/browser:global_keyboard_shortcuts_mac",
      "//chrome/browser/mac",
      "//chrome/browser/renderer_host:delegate",
      "//chrome/browser/renderer_host:history_swiping_control",
      "//chrome/browser/web_applications/extensions",
      "//components/remote_cocoa/app_shim",
      "//components/remote_cocoa/app_shim:features",
      "//components/remote_cocoa/browser",
    ]
    include_dirs = [ "$target_gen_dir" ]
    frameworks = [
      "Carbon.framework",
      "Quartz.framework",
    ]
  }

  if (is_win) {
    assert(toolkit_views)
    assert(use_aura)

    sources += [
      "network_profile_bubble.cc",
      "network_profile_bubble.h",
      "views/frame/browser_caption_button_container_win.cc",
      "views/frame/browser_caption_button_container_win.h",
      "views/frame/browser_desktop_window_tree_host_win.cc",
      "views/frame/browser_desktop_window_tree_host_win.h",
      "views/frame/browser_frame_view_win.cc",
      "views/frame/browser_frame_view_win.h",
      "views/frame/browser_native_widget_factory_aura.cc",
      "views/frame/browser_window_property_manager_win.cc",
      "views/frame/browser_window_property_manager_win.h",
      "views/frame/windows_caption_button.cc",
      "views/frame/windows_caption_button.h",
      "views/frame/windows_taskbar_icon_updater.cc",
      "views/frame/windows_taskbar_icon_updater.h",
      "views/network_profile_bubble_view.cc",
    ]

    public_deps += [
      "//chrome/browser/ui/search_promotion",
      "//chrome/browser/win",
      "//chrome/browser/win:jumplist",
    ]

    allow_circular_includes_from += [ "//chrome/browser/win:impl" ]

    deps += [
      "//chrome/browser:font_prewarmer_tab_helper",
      "//chrome/browser:titlebar_config",
      "//chrome/browser/taskbar",
      "//chrome/browser/ui/views:certificate_viewer_win",
      "//chrome/browser/ui/views:critical_notification_bubble_view",
      "//chrome/browser/ui/views:uninstall_browser_prompt",
      "//chrome/browser/ui/views/frame:minimize_button_metrics_win",
      "//chrome/browser/win:impl",
      "//components/search_engines",
      "//third_party/wtl",
    ]

    libs += [ "crypt32.lib" ]
  }

  if (is_linux || is_mac) {
    deps += [ "//chrome/browser/ui/views:first_run_dialog" ]
  }

  if (is_linux) {
    sources += [
      "views/frame/browser_desktop_window_tree_host_linux.cc",
      "views/frame/browser_desktop_window_tree_host_linux.h",
      "views/frame/browser_native_widget_aura_linux.cc",
      "views/frame/browser_native_widget_aura_linux.h",
      "views/frame/picture_in_picture_browser_frame_view_linux.cc",
      "views/frame/picture_in_picture_browser_frame_view_linux.h",
      "views/window_sizer_linux.cc",
      "views/window_sizer_linux.h",
    ]

    deps += [
      "//chrome/browser:shell_integration_linux",
      "//chrome/browser/ui/views:eula_dialog_linux",
      "//ui/linux:linux_ui_factory",
      "//ui/platform_window",
    ]

    if (use_dbus) {
      sources += [
        "views/frame/dbus_appmenu.cc",
        "views/frame/dbus_appmenu.h",
        "views/frame/dbus_appmenu_registrar.cc",
        "views/frame/dbus_appmenu_registrar.h",
      ]
      deps += [ "//components/dbus" ]
    }
  }

  # Device signals sharing currently only supports win, mac, linux and
  # chromeos, so the corresponding consent functionality are
  # limited to the same set of platforms.
  if (is_win || is_mac || is_linux || is_chromeos) {
    deps += [
      "//chrome/browser/ui/views/device_signals_consent",
      "//chrome/browser/ui/views/device_signals_consent:impl",
    ]
    allow_circular_includes_from +=
        [ "//chrome/browser/ui/views/device_signals_consent:impl" ]
  }
  if (enable_webui_certificate_viewer) {
    deps += [
      ":certificate_dialogs",
      "//chrome/browser/ui/webui/certificate_viewer",
      "//third_party/boringssl",
    ]
  }

  if (is_linux || is_chromeos) {
    if (use_aura) {
      deps += [ "//third_party/fontconfig" ]
    }
  }

  if (toolkit_views) {
    sources += [
      "views/autofill/at_memory_promo_bubble_view.cc",
      "views/autofill/at_memory_promo_bubble_view.h",
      "views/autofill/autofill_bubble_handler_impl.cc",
      "views/autofill/autofill_bubble_handler_impl.h",
      "views/autofill/autofill_field_promo_view_impl.cc",
      "views/autofill/autofill_field_promo_view_impl.h",
      "views/autofill/payments/bnpl_issuer_linked_pill.cc",
      "views/autofill/payments/bnpl_issuer_linked_pill.h",
      "views/autofill/payments/bnpl_issuer_view.cc",
      "views/autofill/payments/bnpl_issuer_view.h",
      "views/autofill/payments/omnibox_autofill_bubble_view.cc",
      "views/autofill/payments/omnibox_autofill_bubble_view.h",
      "views/autofill/payments/select_bnpl_issuer_dialog.cc",
      "views/autofill/payments/select_bnpl_issuer_dialog.h",
      "views/autofill/popup/popup_base_view.cc",
      "views/autofill/popup/popup_loading_view.cc",
      "views/autofill/popup/popup_loading_view.h",
      "views/autofill/popup/popup_row_factory_utils.cc",
      "views/autofill/popup/popup_row_factory_utils.h",
      "views/autofill/popup/popup_row_view.cc",
      "views/autofill/popup/popup_view_utils.cc",
      "views/autofill/popup/popup_view_views.cc",
      "views/autofill/popup/popup_view_views.h",
      "views/browser_commands_views.cc",
      "views/browser_dialogs_views.cc",
      "views/bubble_anchor_util_views.cc",
      "views/chrome_browser_main_extra_parts_views.cc",
      "views/chrome_browser_main_extra_parts_views.h",
      "views/chrome_views_delegate.cc",
      "views/chrome_views_delegate.h",
      "views/chrome_web_dialog_view.cc",
      "views/chrome_web_dialog_view.h",
      "views/constrained_web_dialog_delegate_views.cc",
      "views/context_hub/save_to_memory_bank_bubble_controller.cc",
      "views/context_hub/save_to_memory_bank_bubble_controller.h",
      "views/extensions/extension_install_dialog_view.cc",
      "views/extensions/extension_install_dialog_view.h",
      "views/extensions/extension_view_utils.cc",
      "views/extensions/extension_view_utils.h",
      "views/extensions/extensions_menu_coordinator.cc",
      "views/extensions/extensions_menu_coordinator.h",
      "views/extensions/extensions_menu_delegate_desktop.cc",
      "views/extensions/extensions_menu_delegate_desktop.h",
      "views/extensions/extensions_menu_view.cc",
      "views/extensions/extensions_menu_view.h",
      "views/extensions/extensions_request_access_button.cc",
      "views/extensions/extensions_request_access_button.h",
      "views/extensions/extensions_request_access_hover_card_coordinator.cc",
      "views/extensions/extensions_request_access_hover_card_coordinator.h",
      "views/extensions/extensions_toolbar_button.cc",
      "views/extensions/extensions_toolbar_button.h",
      "views/extensions/extensions_toolbar_coordinator.cc",
      "views/extensions/extensions_toolbar_coordinator.h",
      "views/extensions/extensions_toolbar_desktop.cc",
      "views/extensions/extensions_toolbar_desktop.h",
      "views/extensions/extensions_toolbar_desktop_view_controller.cc",
      "views/extensions/extensions_toolbar_desktop_view_controller.h",
      "views/find_bar_host.cc",
      "views/find_bar_host.h",
      "views/find_bar_view.cc",
      "views/find_bar_view.h",
      "views/frame/app_menu_button.cc",
      "views/frame/app_menu_button.h",
      "views/frame/base_tab_strip_region_view.cc",
      "views/frame/base_tab_strip_region_view.h",
      "views/frame/browser_frame_view.cc",
      "views/frame/browser_frame_view.h",
      "views/frame/browser_native_widget_factory.cc",
      "views/frame/browser_native_widget_factory.h",
      "views/frame/browser_root_view.cc",
      "views/frame/browser_view.cc",
      "views/frame/browser_view.h",
      "views/frame/browser_widget.cc",
      "views/frame/browser_widget.h",
      "views/frame/browser_window_factory.cc",
      "views/frame/contents_border_controller.cc",
      "views/frame/contents_border_controller.h",
      "views/frame/contents_capture_border_view.cc",
      "views/frame/contents_capture_border_view.h",
      "views/frame/contents_container_view.cc",
      "views/frame/contents_container_view.h",
      "views/frame/contents_web_view.cc",
      "views/frame/contents_web_view.h",
      "views/frame/custom_corners.cc",
      "views/frame/custom_corners.h",
      "views/frame/custom_corners_background.cc",
      "views/frame/custom_corners_background.h",
      "views/frame/custom_floating_corner.cc",
      "views/frame/custom_floating_corner.h",
      "views/frame/find_bar_owner_views.cc",
      "views/frame/find_bar_owner_views.h",
      "views/frame/horizontal_tab_strip_region_view.cc",
      "views/frame/horizontal_tab_strip_region_view.h",
      "views/frame/immersive_mode_controller_factory_views.cc",
      "views/frame/layout/browser_view_app_layout_impl.cc",
      "views/frame/layout/browser_view_app_layout_impl.h",
      "views/frame/layout/browser_view_layout.cc",
      "views/frame/layout/browser_view_layout.h",
      "views/frame/layout/browser_view_layout_delegate_impl.cc",
      "views/frame/layout/browser_view_layout_delegate_impl.h",
      "views/frame/layout/browser_view_layout_impl.cc",
      "views/frame/layout/browser_view_layout_impl.h",
      "views/frame/layout/browser_view_popup_layout_impl.cc",
      "views/frame/layout/browser_view_popup_layout_impl.h",
      "views/frame/layout/browser_view_tabbed_layout_impl.cc",
      "views/frame/layout/browser_view_tabbed_layout_impl.h",
      "views/frame/main_background_region_view.cc",
      "views/frame/main_background_region_view.h",
      "views/frame/multi_contents_background_view.cc",
      "views/frame/multi_contents_background_view.h",
      "views/frame/multi_contents_drop_target_view.cc",
      "views/frame/multi_contents_drop_target_view.h",
      "views/frame/multi_contents_resize_area.cc",
      "views/frame/multi_contents_resize_area.h",
      "views/frame/multi_contents_view.cc",
      "views/frame/multi_contents_view.h",
      "views/frame/multi_contents_view_delegate.cc",
      "views/frame/multi_contents_view_delegate.h",
      "views/frame/multi_contents_view_drop_target_controller.cc",
      "views/frame/multi_contents_view_drop_target_controller.h",
      "views/frame/multi_contents_view_mini_toolbar.cc",
      "views/frame/multi_contents_view_mini_toolbar.h",
      "views/frame/picture_in_picture_browser_frame_view.cc",
      "views/frame/picture_in_picture_browser_frame_view.h",
      "views/frame/scrim_view_controller.cc",
      "views/frame/scrim_view_controller.h",
      "views/frame/shadow_overlay_view.cc",
      "views/frame/shadow_overlay_view.h",
      "views/frame/system_menu_model_builder.cc",
      "views/frame/system_menu_model_builder.h",
      "views/frame/system_menu_model_delegate.cc",
      "views/frame/system_menu_model_delegate.h",
      "views/frame/tab_modal_dialog_host.cc",
      "views/frame/tab_modal_dialog_host.h",
      "views/frame/themed_background.cc",
      "views/frame/themed_background.h",
      "views/frame/top_container_view.cc",
      "views/frame/top_container_view.h",
      "views/frame/vertical_tab_strip_background_blur_backdrop.cc",
      "views/frame/vertical_tab_strip_background_blur_backdrop.h",
      "views/frame/vertical_tab_strip_region_view.cc",
      "views/frame/vertical_tab_strip_region_view.h",
      "views/global_error_bubble_view.cc",
      "views/global_error_bubble_view.h",
      "views/idle_bubble.cc",
      "views/incognito_clear_browsing_data_dialog.cc",
      "views/incognito_clear_browsing_data_dialog.h",
      "views/incognito_clear_browsing_data_dialog_coordinator.cc",
      "views/incognito_clear_browsing_data_dialog_coordinator.h",
      "views/intent_picker_bubble_view.cc",
      "views/intent_picker_bubble_view.h",
      "views/session_crashed_bubble_view.cc",
      "views/session_crashed_bubble_view.h",
      "views/tab_search_bubble_host.cc",
      "views/tab_search_bubble_host.h",
      "views/tabs/browser_tab_strip_controller.cc",
      "views/tabs/browser_tab_strip_controller.h",
      "views/tabs/new_tab_button.cc",
      "views/tabs/new_tab_button.h",
      "views/tabs/tab.cc",
      "views/tabs/tab.h",
      "views/tabs/tab_strip.cc",
      "views/tabs/tab_strip.h",
      "views/tabs/tab_strip_action_container.cc",
      "views/tabs/tab_strip_action_container.h",
      "views/tabs/tab_strip_control_button.cc",
      "views/tabs/tab_strip_control_button.h",
      "views/tabs/tab_strip_nudge_button.cc",
      "views/tabs/tab_strip_nudge_button.h",
      "views/task_manager_view.cc",
      "views/task_manager_view.h",
      "views/upgrade_notification_controller.cc",
      "views/upgrade_notification_controller.h",
      "views/web_apps/create_shortcut_confirmation_view.cc",
      "views/web_apps/create_shortcut_confirmation_view.h",
      "views/web_apps/frame_toolbar/web_app_frame_toolbar_view.cc",
      "views/web_apps/frame_toolbar/web_app_frame_toolbar_view.h",
      "views/web_apps/frame_toolbar/web_app_menu_button.cc",
      "views/web_apps/frame_toolbar/web_app_menu_button.h",
      "views/web_apps/frame_toolbar/web_app_navigation_button_container.cc",
      "views/web_apps/frame_toolbar/web_app_navigation_button_container.h",
      "views/web_apps/frame_toolbar/web_app_origin_text.cc",
      "views/web_apps/frame_toolbar/web_app_origin_text.h",
      "views/web_apps/frame_toolbar/web_app_toolbar_button_container.cc",
      "views/web_apps/frame_toolbar/web_app_toolbar_button_container.h",
      "views/web_apps/frame_toolbar/window_controls_overlay_toggle_button.cc",
      "views/web_apps/frame_toolbar/window_controls_overlay_toggle_button.h",
      "views/web_apps/image_carousel_view.cc",
      "views/web_apps/image_carousel_view.h",
      "views/web_apps/isolated_web_apps/isolated_web_app_installer_coordinator.cc",
      "views/web_apps/isolated_web_apps/isolated_web_app_installer_coordinator.h",
      "views/web_apps/isolated_web_apps/isolated_web_app_installer_view_controller.cc",
      "views/web_apps/isolated_web_apps/isolated_web_app_installer_view_controller.h",
      "views/web_apps/isolated_web_apps/isolated_web_app_installer_view_impl.cc",
      "views/web_apps/isolated_web_apps/isolated_web_app_installer_view_impl.h",
      "views/web_apps/view_visible_in_active_widget_notifier.cc",
      "views/web_apps/view_visible_in_active_widget_notifier.h",
      "views/web_apps/web_app_detailed_install_dialog.cc",
      "views/web_apps/web_app_diy_install_dialog.cc",
      "views/web_apps/web_app_install_dialog_delegate.cc",
      "views/web_apps/web_app_install_dialog_delegate.h",
      "views/web_apps/web_app_install_flow_dialog_delegate.cc",
      "views/web_apps/web_app_install_flow_dialog_delegate.h",
      "views/web_apps/web_app_install_intro_view.cc",
      "views/web_apps/web_app_install_intro_view.h",
      "views/web_apps/web_app_install_not_supported_dialog.cc",
      "views/web_apps/web_app_install_options_view.cc",
      "views/web_apps/web_app_install_options_view.h",
      "views/web_apps/web_app_launch_dialog.cc",
      "views/web_apps/web_app_modal_dialog_delegate.cc",
      "views/web_apps/web_app_modal_dialog_delegate.h",
      "views/web_apps/web_app_simple_install_dialog.cc",
      "views/web_apps/web_app_uninstall_dialog_view.cc",
      "views/web_apps/web_app_uninstall_dialog_view.h",
      "views/web_apps/web_app_update_review_dialog.cc",
      "views/web_apps/web_app_update_review_dialog.h",
    ]

    sources += get_target_outputs(":webui_name_variants")

    public_deps += [
      "//chrome/browser/ui/views/bookmarks:bookmark_bar_view_observer",
      "//chrome/browser/ui/views/tabs/common:impl",
    ]

    deps += [
      ":browser_init_state",
      ":idle_bubble",
      ":idle_dialog",
      ":incognito_clear_browsing_data_dialog_interface",
      "//base",
      "//chrome/browser:resources",
      "//chrome/browser/actor/ui/task_list_bubble:controller",
      "//chrome/browser/actor/ui/task_list_bubble:ui",
      "//chrome/browser/apps:icon_standardizer",
      "//chrome/browser/collaboration",
      "//chrome/browser/collaboration/messaging",
      "//chrome/browser/desktop_to_mobile_promos:utils",
      "//chrome/browser/preloading/bookmarkbar_preload",
      "//chrome/browser/preloading/new_tab_page_preload",
      "//chrome/browser/preloading/prerender",
      "//chrome/browser/ui:sad_tab",
      "//chrome/browser/ui:sad_tab_impl",
      "//chrome/browser/ui/actions",
      "//chrome/browser/ui/animation",
      "//chrome/browser/ui/autofill/payments",
      "//chrome/browser/ui/commerce",
      "//chrome/browser/ui/commerce:impl",
      "//chrome/browser/ui/desktop_to_mobile_promos:utils",
      "//chrome/browser/ui/dialogs",
      "//chrome/browser/ui/qrcode_generator",
      "//chrome/browser/ui/qrcode_generator:impl",
      "//chrome/browser/ui/send_tab_to_self",
      "//chrome/browser/ui/send_tab_to_self:impl",
      "//chrome/browser/ui/sharing_hub",
      "//chrome/browser/ui/sharing_hub:impl",
      "//chrome/browser/ui/tabs/organizer:impl",
      "//chrome/browser/ui/tabs/tab_drag_api",
      "//chrome/browser/ui/tabs/tab_strip_api",
      "//chrome/browser/ui/tabs/tab_strip_api/tab_strip_model_impl",
      "//chrome/browser/ui/tabs/tab_strip_api/tab_strip_model_impl/converters",
      "//chrome/browser/ui/views:bubble_anchor_util_views",
      "//chrome/browser/ui/views:bubble_menu_item_factory",
      "//chrome/browser/ui/views:certificate_selector",
      "//chrome/browser/ui/views:chrome_constrained_window_views_client",
      "//chrome/browser/ui/views:color_provider_browser_helper",
      "//chrome/browser/ui/views:confirm_bubble",
      "//chrome/browser/ui/views:content_setting_bubble_contents",
      "//chrome/browser/ui/views:content_setting_site_row_view",
      "//chrome/browser/ui/views:device_chooser_content_view",
      "//chrome/browser/ui/views:dotted_icon",
      "//chrome/browser/ui/views:elevation_icon_setter",
      "//chrome/browser/ui/views:external_protocol_dialog",
      "//chrome/browser/ui/views:find_bar_owner",
      "//chrome/browser/ui/views:flying_indicator",
      "//chrome/browser/ui/views:javascript_tab_modal_dialog_view_views",
      "//chrome/browser/ui/views:layout_provider_impl",
      "//chrome/browser/ui/views:login_handler_views",
      "//chrome/browser/ui/views:login_view",
      "//chrome/browser/ui/views:media_picker_utils",
      "//chrome/browser/ui/views:message_box_dialog",
      "//chrome/browser/ui/views:simple_web_view_dialog",
      "//chrome/browser/ui/views:ssl_client_certificate_selector",
      "//chrome/browser/ui/views:status_bubble",
      "//chrome/browser/ui/views:sub_apps_permission_explanation",
      "//chrome/browser/ui/views:tab_icon_view",
      "//chrome/browser/ui/views:task_manager_search_bar_view",
      "//chrome/browser/ui/views:theme_copying_widget",
      "//chrome/browser/ui/views:title_origin_label",
      "//chrome/browser/ui/views:update_recommended_message_box",
      "//chrome/browser/ui/views/accessibility",
      "//chrome/browser/ui/views/accessibility:impl",
      "//chrome/browser/ui/views/animations",
      "//chrome/browser/ui/views/apps",
      "//chrome/browser/ui/views/apps:impl",
      "//chrome/browser/ui/views/apps/app_info_dialog",
      "//chrome/browser/ui/views/apps/app_info_dialog:impl",
      "//chrome/browser/ui/views/autofill:address_bubble_base_view",
      "//chrome/browser/ui/views/autofill:address_editor_view",
      "//chrome/browser/ui/views/autofill:autofill_bubble_utils",
      "//chrome/browser/ui/views/autofill:delete_address_profile_dialog_view",
      "//chrome/browser/ui/views/autofill:edit_address_profile_view",
      "//chrome/browser/ui/views/autofill:save_address_profile_view",
      "//chrome/browser/ui/views/autofill:update_address_profile_view",
      "//chrome/browser/ui/views/autofill/payments:autofill_error_dialog_view_native_views",
      "//chrome/browser/ui/views/autofill/payments:autofill_progress_dialog_views",
      "//chrome/browser/ui/views/autofill/payments:bnpl_dialog_footnote",
      "//chrome/browser/ui/views/autofill/payments:bnpl_tos_dialog",
      "//chrome/browser/ui/views/autofill/payments:bnpl_tos_view_desktop",
      "//chrome/browser/ui/views/autofill/payments:card_unmask_authentication_selection_dialog_view",
      "//chrome/browser/ui/views/autofill/payments:card_unmask_otp_input_dialog_views",
      "//chrome/browser/ui/views/autofill/payments:card_unmask_prompt_views",
      "//chrome/browser/ui/views/autofill/payments:dialog_view_ids",
      "//chrome/browser/ui/views/autofill/payments:filled_card_information_bubble_views",
      "//chrome/browser/ui/views/autofill/payments:mandatory_reauth_confirmation_bubble_view",
      "//chrome/browser/ui/views/autofill/payments:mandatory_reauth_opt_in_bubble_view",
      "//chrome/browser/ui/views/autofill/payments:offer_notification_bubble_views",
      "//chrome/browser/ui/views/autofill/payments:omnibox_autofill_suggestion_view",
      "//chrome/browser/ui/views/autofill/payments:payments_churned_users_bubble_view",
      "//chrome/browser/ui/views/autofill/payments:payments_window_user_consent_dialog_view",
      "//chrome/browser/ui/views/autofill/payments:promo_code_label_button",
      "//chrome/browser/ui/views/autofill/payments:save_and_fill_dialog",
      "//chrome/browser/ui/views/autofill/payments:save_and_fill_view_desktop",
      "//chrome/browser/ui/views/autofill/payments:save_card_bubble_views",
      "//chrome/browser/ui/views/autofill/payments:save_card_manage_cards_bubble_views",
      "//chrome/browser/ui/views/autofill/payments:save_card_offer_bubble_views",
      "//chrome/browser/ui/views/autofill/payments:save_payment_method_and_virtual_card_enroll_confirmation_bubble_views",
      "//chrome/browser/ui/views/autofill/payments:virtual_card_enroll_bubble_views",
      "//chrome/browser/ui/views/autofill/payments:wallet_reminder_notice_bubble_view",
      "//chrome/browser/ui/views/autofill/payments:webauthn_dialog_view",
      "//chrome/browser/ui/views/autofill/popup",
      "//chrome/browser/ui/views/autofill/popup:custom_cursor_suppressor",
      "//chrome/browser/ui/views/autofill/popup:lazy_loading_image_view",
      "//chrome/browser/ui/views/autofill/popup:password_favicon_loader",
      "//chrome/browser/ui/views/autofill/popup:popup_at_memory_ai_disclosure_view",
      "//chrome/browser/ui/views/autofill/popup:popup_bnpl_footnote_view",
      "//chrome/browser/ui/views/autofill/popup:popup_cell_utils",
      "//chrome/browser/ui/views/autofill/popup:popup_centered_text_view",
      "//chrome/browser/ui/views/autofill/popup:popup_interactive_row_view",
      "//chrome/browser/ui/views/autofill/popup:popup_notice_view",
      "//chrome/browser/ui/views/autofill/popup:popup_row_content_view",
      "//chrome/browser/ui/views/autofill/popup:popup_row_with_button_view",
      "//chrome/browser/ui/views/autofill/popup:popup_search_bar_view",
      "//chrome/browser/ui/views/autofill/popup:popup_separator_view",
      "//chrome/browser/ui/views/autofill/popup:popup_title_view",
      "//chrome/browser/ui/views/autofill/popup:popup_warning_view",
      "//chrome/browser/ui/views/bookmarks",
      "//chrome/browser/ui/views/bookmarks:impl",
      "//chrome/browser/ui/views/bookmarks/saved_tab_groups:impl",
      "//chrome/browser/ui/views/bubble",
      "//chrome/browser/ui/views/bubble:reopen_suppressor",
      "//chrome/browser/ui/views/commerce",
      "//chrome/browser/ui/views/commerce:impl",
      "//chrome/browser/ui/views/context_hub:save_to_memory_bank_bubble_view",
      "//chrome/browser/ui/views/desktop_capture",
      "//chrome/browser/ui/views/desktop_capture:impl",
      "//chrome/browser/ui/views/download",
      "//chrome/browser/ui/views/exclusive_access",
      "//chrome/browser/ui/views/exclusive_access:impl",
      "//chrome/browser/ui/views/extensions:extensions_container_views",
      "//chrome/browser/ui/views/extensions:extensions_menu_button",
      "//chrome/browser/ui/views/extensions:extensions_menu_entry_view",
      "//chrome/browser/ui/views/extensions:extensions_menu_item_view",
      "//chrome/browser/ui/views/extensions:extensions_menu_main_page_view",
      "//chrome/browser/ui/views/extensions:extensions_menu_site_permissions_page_view",
      "//chrome/browser/ui/views/extensions:security_dialog_tracker",
      "//chrome/browser/ui/views/extensions:windows_utils_views",
      "//chrome/browser/ui/views/frame:app_menu_button_observer",
      "//chrome/browser/ui/views/frame:browser_desktop_window_tree_host",
      "//chrome/browser/ui/views/frame:browser_native_widget",
      "//chrome/browser/ui/views/frame:browser_view_layout_delegate",
      "//chrome/browser/ui/views/frame:browser_view_layout_params",
      "//chrome/browser/ui/views/frame:caption_button_placeholder_container",
      "//chrome/browser/ui/views/frame:contents_container_outline",
      "//chrome/browser/ui/views/frame:contents_separator",
      "//chrome/browser/ui/views/frame:immersive_mode_controller_stub",
      "//chrome/browser/ui/views/frame:opaque_browser_frame_view_layout_delegate",
      "//chrome/browser/ui/views/frame:scrim_view",
      "//chrome/browser/ui/views/frame:shadow",
      "//chrome/browser/ui/views/frame:web_contents_close_handler",
      "//chrome/browser/ui/views/frame:web_contents_close_handler_delegate",
      "//chrome/browser/ui/views/frame:windows_icon_painter",
      "//chrome/browser/ui/views/fullscreen_control",
      "//chrome/browser/ui/views/fullscreen_control:impl",
      "//chrome/browser/ui/views/global_media_controls",
      "//chrome/browser/ui/views/global_media_controls:impl",
      "//chrome/browser/ui/views/importer",
      "//chrome/browser/ui/views/infobars",
      "//chrome/browser/ui/views/intent_picker:intent_picker_page_action",
      "//chrome/browser/ui/views/interaction:impl",
      "//chrome/browser/ui/views/location_bar:impl",
      "//chrome/browser/ui/views/location_bar/cookie_controls",
      "//chrome/browser/ui/views/location_bar/cookie_controls:impl",
      "//chrome/browser/ui/views/media_router",
      "//chrome/browser/ui/views/media_router:impl",
      "//chrome/browser/ui/views/omnibox",
      "//chrome/browser/ui/views/omnibox:impl",
      "//chrome/browser/ui/views/overlay",
      "//chrome/browser/ui/views/overlay:impl",
      "//chrome/browser/ui/views/page_action",
      "//chrome/browser/ui/views/page_action:impl",
      "//chrome/browser/ui/views/page_info",
      "//chrome/browser/ui/views/page_info:impl",
      "//chrome/browser/ui/views/passwords",
      "//chrome/browser/ui/views/passwords:impl",
      "//chrome/browser/ui/views/passwords:password_bubble_view_base",
      "//chrome/browser/ui/views/payments",
      "//chrome/browser/ui/views/payments:impl",
      "//chrome/browser/ui/views/performance_controls",
      "//chrome/browser/ui/views/performance_controls:impl",
      "//chrome/browser/ui/views/permissions",
      "//chrome/browser/ui/views/permissions:impl",
      "//chrome/browser/ui/views/permissions/chip",
      "//chrome/browser/ui/views/permissions/chip:impl",
      "//chrome/browser/ui/views/profiles:avatar_toolbar_button",
      "//chrome/browser/ui/views/profiles:avatar_toolbar_button_impl",
      "//chrome/browser/ui/views/profiles:batch_upload_dialog_view",
      "//chrome/browser/ui/views/profiles:profile_picker_utils",
      "//chrome/browser/ui/views/promos",
      "//chrome/browser/ui/views/qrcode_generator",
      "//chrome/browser/ui/views/select_audio_output",
      "//chrome/browser/ui/views/select_audio_output:impl",
      "//chrome/browser/ui/views/send_tab_to_self",
      "//chrome/browser/ui/views/sharing",
      "//chrome/browser/ui/views/sharing:impl",
      "//chrome/browser/ui/views/sharing_hub",
      "//chrome/browser/ui/views/sharing_hub:impl",
      "//chrome/browser/ui/views/storage",
      "//chrome/browser/ui/views/storage:impl",
      "//chrome/browser/ui/views/tab_contents",
      "//chrome/browser/ui/views/tab_sharing",
      "//chrome/browser/ui/views/tabs:base",
      "//chrome/browser/ui/views/tabs:base_impl",
      "//chrome/browser/ui/views/tabs:new_tab_button_menu_model",
      "//chrome/browser/ui/views/tabs:new_tab_button_menu_model_impl",
      "//chrome/browser/ui/views/tabs:tab_container",
      "//chrome/browser/ui/views/tabs:tab_container_impl",
      "//chrome/browser/ui/views/tabs:tab_group",
      "//chrome/browser/ui/views/tabs:tab_group_impl",
      "//chrome/browser/ui/views/tabs:tab_style_views",
      "//chrome/browser/ui/views/tabs:tab_style_views_impl",
      "//chrome/browser/ui/views/tabs/common",
      "//chrome/browser/ui/views/tabs/dragging",
      "//chrome/browser/ui/views/tabs/dragging:impl",
      "//chrome/browser/ui/views/tabs/dragging:tab_drag_target",
      "//chrome/browser/ui/views/tabs/groups",
      "//chrome/browser/ui/views/tabs/groups:impl",
      "//chrome/browser/ui/views/tabs/horizontal",
      "//chrome/browser/ui/views/tabs/horizontal:impl",
      "//chrome/browser/ui/views/tabs/hovercard",
      "//chrome/browser/ui/views/tabs/hovercard:hovercard_helpers",
      "//chrome/browser/ui/views/tabs/hovercard:impl",
      "//chrome/browser/ui/views/tabs/organizer",
      "//chrome/browser/ui/views/tabs/shared",
      "//chrome/browser/ui/views/tabs/shared:impl",
      "//chrome/browser/ui/views/tabs/tab",
      "//chrome/browser/ui/views/tabs/tab:impl",
      "//chrome/browser/ui/views/tabs/vertical",
      "//chrome/browser/ui/views/tabs/vertical:impl",
      "//chrome/browser/ui/views/translate",
      "//chrome/browser/ui/views/translate:impl",
      "//chrome/browser/ui/views/user_education",
      "//chrome/browser/ui/views/user_education:impl",
      "//chrome/browser/ui/views/web_apps",
      "//chrome/browser/ui/views/web_apps:launch_dialogs",
      "//chrome/browser/ui/views/web_apps:progress_delay",
      "//chrome/browser/ui/views/web_apps:web_app_blocked_migration_infobar_delegate",
      "//chrome/browser/ui/views/web_apps:web_app_icon_name_and_origin_view",
      "//chrome/browser/ui/views/web_apps:web_app_install_progress_view",
      "//chrome/browser/ui/views/web_apps:web_app_update_identity_view",
      "//chrome/browser/ui/views/web_apps/frame_toolbar:system_app_accessible_name",
      "//chrome/browser/ui/views/web_apps/frame_toolbar:web_app_content_settings_container",
      "//chrome/browser/ui/views/web_apps/frame_toolbar:web_app_frame_toolbar_utils",
      "//chrome/browser/ui/views/web_apps/isolated_web_apps:installer_base",
      "//chrome/browser/ui/views/web_apps/isolated_web_apps:isolated_web_app_identity_view",
      "//chrome/browser/ui/views/web_apps/isolated_web_apps:user_installability_checker",
      "//chrome/browser/ui/views/webauthn",
      "//chrome/browser/ui/views/webid",
      "//chrome/browser/ui/views/zoom",
      "//chrome/browser/ui/webauthn:impl",
      "//chrome/browser/ui/webui/app_service_internals",
      "//chrome/browser/ui/webui/autofill_ml_internals",
      "//chrome/browser/ui/webui/side_panel/customize_chrome",
      "//chrome/browser/ui/window_metadata",
      "//chrome/browser/ui/window_name_prompt",
      "//components/collaboration/public",
      "//components/commerce/core:pref_names",
      "//components/commerce/core:shopping_service",
      "//components/commerce/core:utils",
      "//components/input",
      "//components/media_message_center/vector_icons",
      "//components/offline_items_collection/core",
      "//components/payments/content",
      "//components/prefs",
      "//components/services/app_service",
      "//components/ui_devtools/views",
      "//components/user_education/views",
      "//services/device/public/cpp:device_features",
      "//ui/base:ozone_buildflags",
    ]

    # Any circular includes must depend on the target
    # "//chrome/browser:browser_public_dependencies".
    allow_circular_includes_from += [
      # TODO(crbug.com/353332589): Remove this circular dependency when the
      # following header gets componentized:
      # c/b/ui/browser_tabstrip.h
      "//chrome/browser/ui/tabs/tab_strip_api/tab_strip_model_impl",

      # c/b/ui/tab_ui_helper.h
      "//chrome/browser/ui/tabs/tab_strip_api/tab_strip_model_impl/converters",

      # TODO(crbug.com/353332589): Remove this circular dependency when the
      # following headers get componentized:
      # c/b/ui/views/frame/browser_view.h, contents_web_view.h
      "//chrome/browser/ui:sad_tab_impl",

      # TODO(crbug.com/353332589): Remove this circular dependency when the
      # following headers get componentized:
      # c/b/ui/browser.h
      # c/b/ui/views/frame/browser_view.h
      "//chrome/browser/ui/send_tab_to_self:impl",

      # TODO(crbug.com/353332589): Remove this circular dependency when the
      # following header gets componentized:
      # c/b/ui/browser.h
      "//chrome/browser/ui/views/bubble",
      "//chrome/browser/ui/views/context_hub:save_to_memory_bank_bubble_view",

      # TODO(crbug.com/353332589): Remove this circular dependency when the
      # following header gets componentized:
      # c/b/ui/browser.h (video_overlay_window_views.cc reads
      # Browser::app_name(), which has no BrowserWindowInterface accessor yet)
      "//chrome/browser/ui/views/overlay:impl",

      # TODO(crbug.com/353332589): Remove this circular dependency when the
      # following header gets componentized:
      # c/b/ui/views/media_picker_utils.h
      "//chrome/browser/ui/views/select_audio_output:impl",

      # TODO(crbug.com/353332589): Remove this circular dependency when the
      # following header gets componentized:
      # c/b/ui/views/frame/browser_view.h
      "//chrome/browser/ui/views/storage:impl",

      # TODO(crbug.com/353332589): Remove this circular dependency when the
      # following header gets componentized:
      # c/b/ui/views/frame/browser_view.h
      "//chrome/browser/ui/views/fullscreen_control:impl",

      # TODO(crbug.com/353332589): Remove this circular dependency when the
      # following header gets componentized:
      # c/b/ui/views/frame/top_container_view.h
      "//chrome/browser/ui/views/exclusive_access:impl",

      # TODO(crbug.com/353332589): Remove this circular dependency when the
      # following headers get componentized:
      # c/b/ui/tab_dialogs.h
      # c/b/ui/views/frame/browser_view.h
      # c/b/ui/views/frame/top_container_view.h
      "//chrome/browser/ui/views/media_router:impl",

      # TODO(crbug.com/353332589): Remove this circular dependency when the
      # following header gets componentized:
      # c/b/ui/views/extensions/extension_keybinding_registry_views.h
      "//chrome/browser/ui/views/apps:impl",

      # TODO(crbug.com/353332589): Remove this circular dependency when the
      # following headers get componentized:
      # c/b/ui/browser.h
      # c/b/ui/browser_command_controller.h
      # c/b/ui/browser_window.h
      # c/b/ui/views/frame/browser_view.h, themed_background.h
      "//chrome/browser/ui/views/bookmarks:impl",

      # TODO(crbug.com/353332589): Remove this circular dependency when the
      # following headers get componentized:
      # c/b/ui/browser_command_controller.h
      # c/b/ui/browser_window.h
      # c/b/ui/views/frame/browser_view.h
      "//chrome/browser/ui/views/bookmarks/saved_tab_groups:impl",

      # TODO(crbug.com/353332589): Remove this circular dependency when the
      # following headers get componentized:
      # c/b/ui/browser.h
      # c/b/ui/views/frame/browser_view.h, contents_web_view.h
      "//chrome/browser/ui/views/omnibox:impl",

      # TODO(crbug.com/353332589): Remove this circular dependency when the
      # following header gets componentized:
      # c/b/ui/views/intent_picker_bubble_view.h
      # (sharing_dialog_view.cc includes it under an IS_CHROMEOS guard, but the
      # entry is unconditional because gn check flags the guarded include on
      # platforms where it is not compiled)
      "//chrome/browser/ui/views/sharing:impl",

      # TODO(crbug.com/353332589): Remove this circular dependency when the
      # following headers get componentized:
      # c/b/ui/browser.h, browser_tabstrip.h, browser_window.h
      # c/b/ui/views/frame/browser_view.h
      "//chrome/browser/ui/commerce:impl",

      # TODO(crbug.com/353332589): Remove this circular dependency when the
      # following headers get componentized:
      # c/b/ui/browser.h, browser_commands.h, browser_window.h
      "//chrome/browser/ui/sharing_hub:impl",

      # TODO(crbug.com/353332589): Remove this circular dependency when the
      # following headers get componentized:
      # c/b/ui/views/content_setting_bubble_contents.h
      # c/b/ui/views/omnibox/omnibox_view_views.h
      "//chrome/browser/ui/views/permissions/chip:impl",

      # TODO(crbug.com/353332589): Remove this circular dependency when the
      # following headers get componentized:
      # c/b/ui/browser.h, browser_commands.h, browser_window.h
      # c/b/ui/view_ids.h
      # c/b/ui/views/frame/browser_view.h
      # c/b/ui/views/frame/contents_container_outline.h
      # c/b/ui/views/frame/contents_container_view.h
      # c/b/ui/views/frame/multi_contents_view.h
      "//chrome/browser/ui/views/page_info:impl",

      # TODO(crbug.com/353332589): Remove this circular dependency when the
      # following headers get componentized:
      # c/b/ui/browser_tabstrip.h
      "//chrome/browser/ui/views/payments:impl",

      # TODO(crbug.com/353332589): Remove this circular dependency when the
      # following header gets componentized:
      # c/b/ui/browser.h
      "//chrome/browser/ui/window_name_prompt",

      # TODO(crbug.com/353332589): Remove this circular dependency when the
      # following headers get componentized:
      # c/b/ui/browser.h, browser_window.h
      "//chrome/browser/ui/window_metadata",

      # TODO(crbug.com/353332589): Remove this circular dependency when the
      # following headers get componentized:
      # c/b/ui/browser.h, singleton_tabs.h
      # c/b/ui/views/frame/browser_view.h
      # c/b/ui/views/media_router/cast_dialog_helper.h
      "//chrome/browser/ui/views/global_media_controls:impl",

      # TODO(crbug.com/353332589): Remove this circular dependency when the
      # following headers get componentized:
      # c/b/ui/browser_window.h, view_ids.h
      # c/b/ui/views/extensions/security_dialog_tracker.h
      # c/b/ui/views/frame/browser_view.h
      # c/b/ui/views/media_picker_utils.h
      "//chrome/browser/ui/views/desktop_capture:impl",

      # TODO(crbug.com/434882143): Remove this circular dependency when the
      # following headers get componentized:
      # c/b/ui/browser.h
      # c/b/ui/views/omnibox/omnibox_popup_presenter_delegate.h
      # c/b/ui/views/omnibox/webui_readonly_omnibox.h
      # c/b/ui/views/permissions/chip/permission_dashboard_controller.h
      # c/b/ui/views/web_apps/frame_toolbar/web_app_menu_button.h
      "//chrome/browser/ui/views/location_bar",

      # TODO(crbug.com/434882143): Remove this circular dependency when the
      # following headers get componentized:
      # c/b/ui/browser_command_controller.h, browser_commands.h,
      # browser_tabstrip.h, browser_window.h,
      # intent_picker_tab_helper.h, view_ids.h
      # c/b/ui/views/bookmarks/bookmark_bubble_view.h
      # c/b/ui/views/content_setting_bubble_contents.h
      # c/b/ui/views/frame/browser_view.h
      # c/b/ui/views/intent_picker_bubble_view.h
      # c/b/ui/views/omnibox/omnibox_context_menu.h
      # c/b/ui/views/omnibox/omnibox_popup_aim_presenter.h
      # c/b/ui/views/omnibox/omnibox_popup_closer.h
      # c/b/ui/views/omnibox/omnibox_popup_presenter.h
      # c/b/ui/views/omnibox/omnibox_popup_presenter_base.h
      # c/b/ui/views/omnibox/omnibox_popup_view_browser_view.h
      # c/b/ui/views/omnibox/omnibox_popup_view_full_webui.h
      # c/b/ui/views/omnibox/omnibox_popup_view_views.h
      # c/b/ui/views/omnibox/omnibox_popup_view_webui.h
      # c/b/ui/views/omnibox/omnibox_popup_webui_base_content.h
      # c/b/ui/views/omnibox/omnibox_popup_webui_content.h
      # c/b/ui/views/omnibox/omnibox_view_views.h
      # c/b/ui/views/omnibox/webui_readonly_omnibox.h
      # c/b/ui/views/permissions/chip/permission_dashboard_controller.h
      # c/b/ui/views/permissions/chip/permission_dashboard_view.h
      # c/b/ui/views/permissions/chip/webui_permission_dashboard.h
      "//chrome/browser/ui/views/location_bar:impl",

      # TODO(crbug.com/432061436) Remove this circular dependency when the
      # following headers get componentized:
      # c/b/ui/browser.h, browser_window.h
      # c/b/ui/views/frame/browser_view.h
      "//chrome/browser/ui/webauthn:impl",

      # TODO(crbug.com/451609048): Remove this circular dependency when the
      # following headers get componentized:
      # - c/b/ui/browser_commands.h
      # - c/b/ui/views/frame/browser_view.h
      # - c/b/ui/views/tab_search_bubble_host.h
      "//chrome/browser/ui/views/tabs/shared:impl",

      # TODO(crbug.com/451609048): Remove this circular dependency when the
      # following headers get componentized:
      # - c/b/ui/browser_command_controller.h
      # - c/b/ui/browser_commands.h
      # - c/b/ui/views/frame/base_tab_strip_region_view.h
      # - c/b/ui/views/frame/browser_frame_view.h
      # - c/b/ui/views/frame/browser_view.h
      # - c/b/ui/views/frame/themed_background.h
      # - c/b/ui/views/frame/vertical_tab_strip_region_view.h
      "//chrome/browser/ui/views/tabs/common:impl",

      # TODO(crbug.com/353332589): Remove this circular dependency when the
      # following headers get componentized:
      # - c/b/ui/views/frame/browser_view.h
      # - c/b/ui/views/tabs/tab.h
      "//chrome/browser/ui/views/tabs/tab:impl",

      # TODO(crbug.com/451609048): Remove this circular dependency when the
      # following header gets componentized:
      # - c/b/ui/views/tabs/tab_strip_control_button.h
      "//chrome/browser/ui/views/tabs/horizontal",

      # TODO(crbug.com/451609048): Remove this circular dependency when the
      # following header gets componentized:
      # - c/b/ui/browser_commands.h
      "//chrome/browser/ui/views/tabs:new_tab_button_menu_model_impl",

      # TODO(crbug.com/451609048): Remove this circular dependency when the
      # following headers get componentized:
      # - c/b/ui/views/tabs/tab.h
      # - c/b/ui/views/tabs/tab_strip.h
      "//chrome/browser/ui/views/tabs:tab_group_impl",

      # TODO(crbug.com/451609048): Remove this circular dependency when the
      # following headers get componentized:
      # - c/b/ui/views/frame/browser_frame_view.h
      # - c/b/ui/views/frame/browser_view.h
      # - c/b/ui/views/frame/themed_background.h
      # - c/b/ui/views/tabs/tab.h
      "//chrome/browser/ui/views/tabs:tab_style_views_impl",

      # TODO(crbug.com/451609048): Remove this circular dependency when the
      # following header gets componentized:
      # - c/b/ui/views/tabs/tab.h
      "//chrome/browser/ui/views/tabs:tab_container",

      # TODO(crbug.com/451609048): Remove this circular dependency when the
      # following headers get componentized:
      # - c/b/ui/views/tabs/tab.h
      # - c/b/ui/views/tabs/tab_strip.h
      "//chrome/browser/ui/views/tabs:tab_container_impl",

      # TODO(crbug.com/451609048): Remove this circular dependency - no
      # blockers.
      "//chrome/browser/ui/views/tabs/hovercard",

      # TODO(crbug.com/451609048): Remove this circular dependency - no
      # blockers.
      "//chrome/browser/ui/views/tabs/dragging",

      # TODO(crbug.com/451609048): Remove this circular dependency when the
      # following headers get componentized:
      # - c/b/ui/browser_commands.h
      # - c/b/ui/views/frame/browser_view.h
      # - c/b/ui/views/tabs/tab.h
      # - c/b/ui/views/tabs/tab_strip.h
      "//chrome/browser/ui/views/tabs/dragging:impl",

      # TODO(crbug.com/451609048): Remove this circular dependency when the
      # following headers get componentized:
      # - c/b/ui/browser_tabstrip.h
      # - c/b/ui/browser_window.h
      # - c/b/ui/tab_ui_helper.h
      # - c/b/ui/views/frame/browser_view.h
      # - c/b/ui/views/tabs/tab_strip.h
      "//chrome/browser/ui/views/tabs/groups:impl",

      # TODO(crbug.com/451609048): Remove this circular dependency when the
      # following header gets componentized:
      # - c/b/ui/views/frame/vertical_tab_strip_region_view.h
      "//chrome/browser/ui/views/tabs/hovercard:impl",

      # TODO(crbug.com/451609048): Remove this circular dependency when the
      # following headers get componentized:
      # - c/b/ui/browser_commands.h
      # - c/b/ui/views/frame/browser_frame_view.h
      # - c/b/ui/views/frame/browser_view.h
      # - c/b/ui/views/frame/themed_background.h
      # - c/b/ui/views/frame/vertical_tab_strip_region_view.h
      # - c/b/ui/views/tabs/new_tab_button.h
      "//chrome/browser/ui/views/tabs/vertical:impl",

      # TODO(crbug.com/512979192): Remove this circular dependency when the
      # following headers get componentized:
      # - c/b/ui/views/frame/browser_view.h
      "//chrome/browser/ui/views/drive_picker_host",

      # TODO(crbug.com/353332589): Remove this circular dependency when
      # the following headers get modularized:
      # - c/b/ui/browser.h
      # - c/b/ui/scoped_tabbed_browser_displayer.h
      "//chrome/browser/ui/views/apps/app_info_dialog:impl",

      # TODO(crbug.com/353332589): Remove this circular dependency when
      # the following headers get modularized:
      # - c/b/ui/browser.h,
      # - c/b/ui/views/frame/browser_view.h,
      "//chrome/browser/ui/views/accessibility:impl",

      # TODO(crbug.com/353332589): Remove this circular dependency when
      # the following headers get modularized:
      # - c/b/ui/scoped_tabbed_browser_displayer.h
      "//chrome/browser/ui/views/commerce:impl",

      # TODO(crbug.com/353332589): Remove this circular dependency when
      # the following headers get modularized:
      # - c/b/ui/tab_ui_helper.h
      "//chrome/browser/ui/views/performance_controls:impl",

      # TODO(crbug.com/353332589): Remove this circular dependency when the
      # following headers get componentized:
      # c/b/ui/scoped_tabbed_browser_displayer.h
      # c/b/ui/views/frame/browser_view.h
      "//chrome/browser/ui/views/translate:impl",

      # TODO(crbug.com/353332589): Remove this circular dependency when the
      # following headers get componentized:
      # c/b/ui/browser.h, browser_commands.h, browser_tabstrip.h,
      # singleton_tabs.h
      # c/b/ui/views/autofill/at_memory_promo_bubble_view.h
      # c/b/ui/views/autofill/popup/popup_view_views.h
      # c/b/ui/views/frame/browser_view.h (also needed directly by
      #   custom_webui_help_bubble.h's CreateForController<T> template,
      #   which is why that header lives in :impl rather than the
      #   public :user_education target)
      # c/b/ui/views/frame/contents_web_view.h
      # c/b/ui/views/frame/custom_corners_background.h
      # c/b/ui/views/web_apps/web_app_install_dialog_delegate.h
      "//chrome/browser/ui/views/user_education:impl",

      # TODO(crbug.com/353332589): Remove this circular dependency when the
      # following headers get componentized:
      # c/b/ui/views/content_setting_bubble_contents.h
      # c/b/ui/views/extensions/extensions_container_views.h
      # c/b/ui/views/frame/browser_view.h
      # c/b/ui/views/frame/contents_web_view.h
      "//chrome/browser/ui/views/permissions:impl",

      # TODO(crbug.com/353332589): Remove this circular dependency when
      # views/profiles/profile_menu_coordinator.h gets modularized.
      "//chrome/browser/ui/views/profiles:avatar_toolbar_button_impl",
    ]

    if (is_linux) {
      sources += [
        "views/chrome_views_delegate_linux.cc",
        "views/frame/browser_frame_view_layout_linux.cc",
        "views/frame/browser_frame_view_layout_linux.h",
        "views/frame/browser_frame_view_layout_linux_native.cc",
        "views/frame/browser_frame_view_layout_linux_native.h",
        "views/frame/browser_frame_view_linux.cc",
        "views/frame/browser_frame_view_linux.h",
        "views/frame/browser_frame_view_linux_native.cc",
        "views/frame/browser_frame_view_linux_native.h",
      ]
    }

    if (is_win || is_linux || is_chromeos) {
      deps += [ "//chrome/browser/ui/views:bluetooth_dialogs" ]
    }

    if (use_aura && !is_chromeos) {
      deps += [ "//chrome/browser/ui/views:native_widget_factory" ]
    }

    if (is_mac) {
      sources += [ "views/chrome_views_delegate_mac.cc" ]
      deps += [
        "//chrome/browser/ui/webui/unexportable_keys_internals",
        "//chrome/browser/ui/webui/unexportable_keys_internals:impl",
        "//components/crash/core/common:crash_key",
        "//services/audio/public/cpp",
      ]
    } else {
      deps += [ "//chrome/browser/ui/views:create_application_shortcut_view" ]
    }

    if (is_win) {
      sources += [ "views/chrome_views_delegate_win.cc" ]
      deps += [
        ":accessibility_util",
        "//chrome/browser/ui/views/frame:system_menu_insertion_delegate_win",
      ]
    }

    if (use_aura && is_linux) {
      # These files can do Gtk+-based theming for builds with gtk enabled.
      sources += [
        "views/chrome_browser_main_extra_parts_views_linux.cc",
        "views/chrome_browser_main_extra_parts_views_linux.h",
      ]
      deps += [
        "//ui/base/cursor",
        "//ui/ozone",
      ]
      if (use_dbus) {
        deps += [ "//ui/linux:dark_mode_manager" ]
      }
    }

    if (is_chromeos) {
      deps += [
        "//chrome/browser/ui/views/extensions:media_galleries_dialog_views",
        "//chrome/browser/ui/views/web_apps/isolated_web_apps:multi_capture_notification_details_view",
      ]
    } else {
      sources += [
        "views/frame/opaque_browser_frame_view.cc",
        "views/frame/opaque_browser_frame_view.h",
        "views/frame/opaque_browser_frame_view_layout.cc",
        "views/frame/opaque_browser_frame_view_layout.h",
      ]
      deps += [
        "//chrome/browser/ui/views:screen_capture_notification_ui_views",
        "//chrome/browser/ui/views/policy:enterprise_startup_dialog",
        "//chrome/browser/ui/views/policy:idle_dialog",
        "//chrome/browser/ui/views/shortcuts",
        "//chrome/browser/ui/views/shortcuts:impl",
        "//ui/views/window/vector_icons",
      ]
      allow_circular_includes_from += [
        # Circular dependency exists because the following headers are not yet
        # componentized:
        # - c/b/ui/browser.h
        "//chrome/browser/ui/views/shortcuts:impl",
      ]
    }

    if (enable_compose) {
      deps += [
        "//chrome/browser/ui/views/compose",
        "//chrome/browser/ui/views/compose:impl",
      ]
      allow_circular_includes_from +=
          [ "//chrome/browser/ui/views/compose:impl" ]
    }

    if (enable_dice_support) {
      deps +=
          [ "//chrome/browser/ui/views/autofill:address_sign_in_promo_view" ]
    }

    # Merged and added for autofill_ai
    deps += [
      "//chrome/browser/ui/views:tab_dialogs_impl",
      "//chrome/browser/ui/views/autofill/autofill_ai",
      "//chrome/browser/ui/views/autofill/autofill_ai:impl",
      "//chrome/browser/ui/views/autofill/payments:manage_saved_iban_bubble_view",
      "//chrome/browser/ui/views/autofill/payments:payments_view_util",
      "//chrome/browser/ui/views/autofill/payments:save_iban_bubble_view",
      "//chrome/browser/ui/views/autofill/popup/email_verifier",
      "//chrome/browser/ui/views/frame:top_controls_slide_controller",
      "//chrome/browser/ui/views/web_apps/sub_apps:sub_apps_install_dialog",
    ]
    allow_circular_includes_from +=
        [ "//chrome/browser/ui/views/autofill/autofill_ai:impl" ]
  }

  # TODO(https://crbug.com/330808104): Delete this code.

  if (use_aura) {
    sources += [ "views/accelerator_utils_aura.cc" ]

    deps += [
      "//chrome/browser/ui/aura/accessibility",
      "//chrome/browser/ui/aura/accessibility:impl",
      "//chrome/browser/ui/aura/tab_contents",
      "//chrome/browser/ui/aura/tab_contents:impl",
      "//chrome/browser/ui/views:theme_profile_key",
      "//chrome/browser/ui/views/renderer_context_menu",
      "//chrome/browser/ui/views/renderer_context_menu:impl",
    ]

    if (!is_chromeos) {
      sources += [
        "views/frame/browser_frame_view_factory_views.cc",
        "views/frame/browser_native_widget_aura.cc",
        "views/frame/browser_native_widget_aura.h",
      ]
    }

    # Any circular includes must depend on the target
    # "//chrome/browser:browser_public_dependencies".
    allow_circular_includes_from += [
      # TODO(361027501): //c/b/u/v/t/chrome_web_contents_view_delegate_views.cc
      # includes //c/b/u/a/t/web_drag_bookmark_handler_aura.cc
      "//chrome/browser/ui/aura/tab_contents:impl",

      # TODO(crbug.com/353332589): Remove this circular dependency when the
      # following header gets componentized:
      # c/b/ui/views/frame/browser_view.h
      "//chrome/browser/ui/views/renderer_context_menu:impl",
    ]
  }

  if (enable_extensions_core || enable_webui_ntp ||
      enable_webui_contextual_tasks_composebox) {
  }

  if (enable_extensions_core) {
    deps += [
      "//chrome/browser/extensions",
      "//chrome/browser/extensions/api/web_navigation",
    ]

    # TODO(crbug.com/420905611): Verify whether this circular dependency
    # declaration can be removed from here.
    allow_circular_includes_from += [ "//chrome/browser/extensions" ]
  }

  if (enable_extensions) {
    deps += [
      "//chrome/browser/apps:icon_standardizer",
      "//chrome/browser/apps/platform_apps",
      "//chrome/browser/apps/platform_apps/api",
      "//chrome/browser/ui/webui/extensions_zero_state_promo",
      "//chrome/browser/web_applications",
      "//chrome/browser/web_applications/app_service",
      "//chrome/common/extensions/api",
      "//extensions/browser",
      "//ui/base/cursor",
    ]

    # Any circular includes must depend on the target
    # "//chrome/browser:browser_public_dependencies".
    allow_circular_includes_from += [
      "//chrome/browser/apps/platform_apps",

      # TODO(crbug.com/353332589): zero_state_promo_ui.h and page_handler.cc
      # include browser.h and custom_webui_help_bubble_controller.h from
      # //chrome/browser/ui:ui.
      "//chrome/browser/ui/webui/extensions_zero_state_promo",
    ]

    sources += [
      "views/chrome_javascript_app_modal_view_factory_views.cc",
      "views/extensions/extension_action_delegate_desktop.cc",
      "views/extensions/extension_action_delegate_desktop.h",
      "views/extensions/extension_popup.cc",
      "views/extensions/extension_popup.h",
      "views/extensions/extension_view_views.cc",
      "views/extensions/extension_view_views.h",
      "views/javascript_app_modal_event_blocker.h",
    ]

    if (is_mac) {
      deps +=
          [ "//chrome/browser/ui/views:javascript_app_modal_event_blocker_mac" ]
    }

    if (use_aura) {
      sources += [
        "views/javascript_app_modal_event_blocker_aura.cc",
        "views/javascript_app_modal_event_blocker_aura.h",
      ]
    }

    if (toolkit_views) {
      deps += [ "//chrome/browser/ui/views/extensions:extensions_views_utils" ]
    }
  }

  if (enable_pdf) {
    deps += [
      # TODO(crbug.com/372750819): Remove this dependency when the following
      # files are built off of modularized GN targets:
      # - c/b/ui/browser_commands.cc
      # - c/b/ui/side_panel/read_anything/read_anything_untrusted_page_handler.cc
      # - c/b/ui/webui/print_preview/print_preview_ui.cc
      "//chrome/browser/pdf",

      # TODO(crbug.com/340272378, crbug.com/372750819): Remove this dependency
      # when "PdfOopif" feature gets enabled by default or the following files
      # are built off of modularized GN targets:
      # - c/b/ui/browser_commands.cc
      # - c/b/ui/side_panel/read_anything/read_anything_untrusted_page_handler.cc
      "//pdf:features",
    ]

    if (enable_pdf_save_to_drive) {
      deps += [ "//chrome/browser/ui/views/save_to_drive" ]
      allow_circular_includes_from +=
          [ "//chrome/browser/ui/views/save_to_drive:save_to_drive" ]
    }
  }

  if (enable_printing) {
    deps += [
      "//chrome/browser/printing",
      "//chrome/browser/printing:impl",
    ]
    allow_circular_includes_from += [ "//chrome/browser/printing:impl" ]
  }

  if (enable_print_preview) {
    deps += [
      "//chrome/browser/ui/webui/print_preview",
      "//chrome/browser/ui/webui/print_preview:impl",
    ]

    # print_preview includes headers from //chrome/browser/ui (e.g.
    # browser_tabstrip.h) that can't be split out yet.
    allow_circular_includes_from +=
        [ "//chrome/browser/ui/webui/print_preview:impl" ]
  }

  if (safe_browsing_mode > 0) {
    deps +=
        [ "//components/safe_browsing/content/browser:client_side_detection" ]
  }

  if (chrome_root_store_cert_management_ui) {
    deps += [ "//chrome/browser/ui/webui/certificate_manager" ]
    allow_circular_includes_from +=
        [ "//chrome/browser/ui/webui/certificate_manager" ]
  }

  if (enable_session_service) {
    deps += [ "//chrome/browser/ui/webui/tab_strip_internals:impl" ]

    # TODO(crbug.com/427204855): Remove this circular include once
    # "chrome/browser/ui/browser.h" is fully componentized.
    allow_circular_includes_from +=
        [ "//chrome/browser/ui/webui/tab_strip_internals:impl" ]
  }
}

# These are the dependencies for the "ui" target that are outside of
# //chrome/browser. These are semantically a part of
# //chrome/browser:browser_public_dependencies since //chrome/browser and
# //chrome/browser/ui allow circular dependencies.
group("ui_public_dependencies") {
  visibility = [ "//chrome/browser:browser_public_dependencies" ]
  public_deps = [
    "//components/cross_device/logging",
    "//components/dom_distiller/core",
    "//components/enterprise/buildflags",
    "//components/paint_preview/buildflags",
    "//components/safe_browsing:buildflags",
    "//components/segmentation_platform/public",
    "//components/sync",
    "//components/sync_user_events",
    "//components/translate/content/browser",
    "//content/public/browser",
    "//mojo/public/cpp/bindings",
    "//services/webnn/public/cpp",
    "//ui/webui/resources",
  ]
  if (enable_extensions_core) {
    public_deps += [ "//extensions/browser" ]
  }
  if (!is_android) {
    public_deps += [
      "//build:branding_buildflags",
      "//chrome/browser/ui/record_replay",
      "//ui/base/dragdrop/mojom:mojom_headers",
      "//ui/views",
      "//ui/views/controls/webview",
      "//ui/webui/resources/cr_components/history_embeddings:mojo_bindings",

      # TODO: Use //chrome/browser after fixing cyclic dependency.
      "//components/commerce/core:coupon_db_content_proto",
      "//components/feed/core/proto:proto_ios_shared_v2",
      "//components/feed/core/proto:proto_v2",
    ]
  }
  if (is_chromeos) {
    public_deps += [ "//chromeos/ash/services/multidevice_setup/public/mojom" ]
  }
  if (is_win) {
    public_deps += [
      "//build:branding_buildflags",
      "//ui/views",
      "//ui/views/controls/webview",
    ]
  }
  if (chrome_root_store_cert_management_ui) {
    public_deps += [ "//chrome/browser/resources/certificate_manager:mojom" ]
  }
}

# A small standalone model used by confirm bubbles. Kept out of :ui so that
# targets which cannot depend on :ui (e.g.
# //chrome/browser/renderer_context_menu:bubble_models) can use it without
# forming a dependency cycle.
source_set("confirm_bubble_model") {
  sources = [ "confirm_bubble_model.cc" ]
  public = [ "confirm_bubble_model.h" ]
  public_deps = [
    "//base",
    "//ui/base",
    "//ui/base/mojom",
    "//url",
  ]
  deps = [ "//components/strings:components_strings" ]
}

source_set("confirm_bubble") {
  public = [ "confirm_bubble.h" ]
  public_deps = [
    ":confirm_bubble_model",
    "//ui/gfx",
  ]
}

source_set("layout_constants") {
  sources = [
    "layout_constants.cc",
    "layout_constants.h",
  ]

  public_deps = [ "//ui/gfx/geometry" ]

  deps = [
    "//base",
    "//chrome/browser/ui:ui_features",
    "//chrome/common:chrome_features",
    "//components/omnibox/common",
    "//ui/base",
    "//ui/base:features",
  ]

  if (!is_android) {
    deps += [ "//chrome/browser/ui/tabs:features" ]
  }

  if (is_chromeos) {
    deps += [
      ":platform_keys_certificate_selector_chromeos",
      "//chromeos/constants",
    ]
  }
}

source_set("session_crashed_bubble") {
  sources = [ "session_crashed_bubble.h" ]
}

source_set("url_identity") {
  sources = [
    "url_identity.cc",
    "url_identity.h",
  ]
  deps = [
    "//chrome/browser/profiles:profile",
    "//chrome/common",
    "//components/url_formatter",
    "//components/webapps/common",
    "//extensions/buildflags",
    "//url",
  ]
  if (is_mac || is_win || is_linux || is_chromeos) {
    deps += [ "//components/webapps/isolated_web_apps:scheme" ]
  }
  if (!is_android && enable_extensions_core) {
    deps += [ "//chrome/browser/web_applications" ]
  }
  if (enable_extensions_core) {
    deps += [
      "//extensions/common",
      "//extensions/common:common_constants",
    ]
  }
}

source_set("ui_features") {
  sources = [
    "ui_features.cc",
    "ui_features.h",
  ]
  public_deps = [
    "//base",
    "//build:branding_buildflags",
    "//chrome/browser:browser_process",
    "//chrome/common:buildflags",
    "//components/variations/service",
    "//extensions/buildflags",
  ]
  deps = [
    "//chrome/common:chrome_features",
    "//components/search",
    "//components/webui/flags",
    "//content/public/common",
    "//ui/base:features",
  ]
}

if (!is_android) {
  source_set("browser_init_state") {
    public = [ "browser_init_state.h" ]
    sources = [ "browser_init_state.cc" ]
    public_deps = [
      "//base",
      "//chrome/browser/ui/browser_window:create_browser_window",
      "//components/tab_groups",
      "//ui/base/mojom:ui_base_types",
      "//ui/base/unowned_user_data",
      "//ui/gfx/geometry",
    ]
    deps = [
      "//build:buildflag_header_h",
      "//chrome/browser/ui/browser_window",
    ]
  }

  source_set("browser_tab_strip") {
    sources = [
      "browser_tab_strip_model_delegate.h",
      "browser_tab_strip_tracker.h",
      "browser_tab_strip_tracker_delegate.h",
      "unload_controller.h",
    ]
    public_deps = [
      "//base",
      "//chrome/browser/tab_contents",
      "//chrome/browser/ui/browser_window",
      "//chrome/browser/ui/tabs:tab_strip",
      "//chrome/browser/ui/tabs:tabs_public",
      "//ui/base/unowned_user_data",
    ]
  }

  source_set("incognito_clear_browsing_data_dialog_interface") {
    public = [ "incognito_clear_browsing_data_dialog_interface.h" ]
  }

  source_set("idle_bubble") {
    public = [ "idle_bubble.h" ]
    public_deps = [
      ":idle_dialog",
      "//base",
      "//ui/views",
    ]
  }

  source_set("chrome_pages") {
    public = [ "chrome_pages.h" ]
    public_deps = [
      "//base",
      "//build:branding_buildflags",
      "//chrome/browser/feedback:feedback_enum",
      "//chrome/browser/signin",
      "//chrome/browser/ui/user_education",
      "//components/content_settings/core/common",
      "//components/signin/public/base:signin_buildflags",
      "//url",
    ]
  }

  source_set("browser_tests") {
    testonly = true
    defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ]
    sources = [
      "browser_commands_core_browsertest.cc",
      "browser_manager_service_browsertest.cc",
    ]
    deps = [
      "//base",
      "//chrome/app:command_ids",
      "//chrome/browser",
      "//chrome/browser/profiles/keep_alive",
      "//chrome/browser/resource_coordinator",
      "//chrome/browser/resource_coordinator:utils",
      "//chrome/browser/tab_group_sync:factories",
      "//chrome/browser/ui",
      "//chrome/browser/ui/browser_active_state_manager",
      "//chrome/browser/ui/browser_window",
      "//chrome/browser/ui/exclusive_access",
      "//chrome/browser/ui/tabs:tab_strip",
      "//chrome/browser/ui/tabs/saved_tab_groups:test_support",
      "//chrome/browser/ui/zoom",
      "//chrome/common:constants",
      "//chrome/test:test_support",
      "//chrome/test:test_support_ui",
      "//components/bookmarks/browser",
      "//components/bookmarks/test",
      "//components/prefs",
      "//components/saved_tab_groups/public",
      "//components/sessions",
      "//components/zoom",
      "//content/public/browser",
      "//content/public/common",
      "//content/test:test_support",
      "//net:test_support",
      "//testing/gmock",
      "//testing/gtest",
      "//third_party/blink/public/common:headers",
    ]
  }

  source_set("uma_browsing_activity_observer") {
    public = [ "uma_browsing_activity_observer.h" ]
    sources = [ "uma_browsing_activity_observer.cc" ]
    deps = [
      "//base",
      "//chrome/browser:browser_process",
      "//chrome/browser/lifetime:termination_notification",
      "//chrome/browser/profiles:profile",
      "//chrome/browser/search_engines",
      "//chrome/browser/ui/browser_window",
      "//chrome/browser/ui/tabs:tab_strip",
      "//chrome/browser/upgrade_detector",
      "//components/keep_alive_registry",
      "//components/search_engines",
      "//components/tab_groups",
      "//components/tabs:public",
      "//content/public/browser",
    ]
  }
}

# In GYP this is part of test_support_common.
static_library("test_support") {
  testonly = true

  sources = [
    "browser_window/test/mock_browser_window_interface.cc",
    "browser_window/test/mock_browser_window_interface.h",
  ]
  public_deps = [ ":ui" ]

  deps = [
    "//chrome/app/theme:theme_resources",
    "//chrome/browser",
    "//chrome/browser/devtools",
    "//chrome/browser/payments",
    "//chrome/browser/profiles:profile",
    "//chrome/browser/ui/autofill/payments:test_support",
    "//chrome/browser/ui/browser_window",
    "//chrome/browser/ui/toolbar:test_support",
    "//components/omnibox/browser",
    "//components/password_manager/core/browser",
    "//components/payments/content",
    "//components/permissions",
    "//components/sessions",
    "//components/translate/content/browser",
    "//components/url_formatter",
    "//components/zoom",
    "//content/public/browser",
    "//content/public/common",
    "//content/test:test_support",
    "//net:test_support",
    "//skia",
    "//testing/gtest",
    "//ui/base",
    "//ui/base:test_support",
    "//ui/base/unowned_user_data",
    "//ui/gfx:test_support",
    "//ui/shell_dialogs",
  ]

  if (is_mac) {
    assert(toolkit_views)
    sources += [
      "cocoa/test/cocoa_test_helper.h",
      "cocoa/test/cocoa_test_helper.mm",
      "cocoa/test/run_loop_testing.h",
      "cocoa/test/run_loop_testing.mm",
      "views/extensions/extension_action_test_helper_mac.mm",
    ]
  }

  if (toolkit_views) {
    deps += [
      "//chrome/browser/ui/extensions:test_support",
      "//chrome/browser/ui/views/controls",
      "//chrome/browser/ui/views/extensions:extensions_menu_button",
      "//chrome/browser/ui/views/extensions:extensions_menu_entry_view",
      "//chrome/browser/ui/views/extensions:extensions_menu_item_view",
      "//chrome/browser/ui/views/extensions:extensions_menu_main_page_view",
      "//chrome/browser/ui/views/web_apps/isolated_web_apps:installer_base",
      "//components/constrained_window",
      "//components/webauthn/content/browser",
      "//ui/views:test_support",
    ]
    sources += [
      "views/extensions/extensions_menu_test_util.cc",
      "views/extensions/extensions_menu_test_util.h",
      "views/web_apps/isolated_web_apps/test_isolated_web_app_installer_model_observer.cc",
      "views/web_apps/isolated_web_apps/test_isolated_web_app_installer_model_observer.h",
    ]
    if (use_aura) {
      sources += [ "views/extensions/extension_action_test_helper_aura.cc" ]

      deps += [
        "//chrome/browser/ui/test:app_window",
        "//ui/aura",
        "//ui/wm",
      ]
    }
    if (use_ozone) {
      deps += [ "//ui/ozone" ]
    }
  }

  if (is_android) {
    deps += [ "//chrome/browser/ui/android/autofill:test_support" ]
  } else {
    public_deps += [
      "//chrome/browser/ui/test:confirm_bubble",
      "//chrome/browser/ui/webui/help:test_support",
      "//chrome/browser/ui/webui/settings:test_support",
    ]
    deps += [
      "//chrome/browser/ui/content_settings:test_support",
      "//chrome/browser/ui/passwords:test_support_ui",
      "//chrome/browser/ui/views/toolbar",
      "//components/embedder_support",
      "//components/input",
      "//components/media_message_center",
      "//components/media_router/browser",
      "//components/signin/core/browser",
      "//components/signin/public/identity_manager",
      "//components/ukm:test_support",
      "//services/metrics/public/mojom",
    ]
    public_deps += [ "//chrome/browser/ui/exclusive_access" ]
  }
}

static_library("browser_element_identifiers") {
  sources = [
    "browser_element_identifiers.cc",
    "browser_element_identifiers.h",
  ]
  deps = [ "//ui/base" ]
  public_deps = [ "//ui/base/interaction" ]
}

if (toolkit_views) {
  source_set("idle_dialog") {
    public = [ "idle_dialog.h" ]
    public_deps = [
      "//base",
      "//ui/gfx",
    ]
  }

  source_set("toolbar_controller_util") {
    sources = [
      "toolbar_controller_util.cc",
      "toolbar_controller_util.h",
    ]
  }

  source_set("sad_tab") {
    public = [
      "sad_tab.h",
      "sad_tab_controller.h",
      "sad_tab_helper.h",
      "sad_tab_types.h",
      "views/sad_tab_view.h",
    ]

    public_deps = [
      "//base",
      "//content/public/browser",
      "//ui/base/metadata",
      "//ui/base/unowned_user_data",
      "//ui/views",
    ]
  }

  source_set("sad_tab_impl") {
    sources = [
      "sad_tab.cc",
      "sad_tab_controller.cc",
      "sad_tab_helper.cc",
      "views/sad_tab_view.cc",
    ]

    deps = [
      ":sad_tab",
      "//chrome/app:generated_resources",
      "//chrome/app/vector_icons",
      "//chrome/browser/feedback",
      "//chrome/browser/lifetime",
      "//chrome/browser/memory",
      "//chrome/browser/net",
      "//chrome/browser/preloading/prefetch/no_state_prefetch",
      "//chrome/browser/resource_coordinator",
      "//chrome/browser/ui/browser_window",
      "//chrome/browser/ui/tab_contents",
      "//chrome/browser/ui/tabs:tab_strip",
      "//chrome/browser/ui/views:layout_provider",
      "//chrome/common",
      "//components/strings:components_strings_grit",
      "//components/tabs:public",
      "//components/ui_metrics",
      "//content/public/browser",
      "//content/public/common",
      "//ui/base",
      "//ui/color",
      "//ui/compositor",
      "//ui/gfx",
      "//ui/views",
    ]

    # The sad tab feature (base SadTab, its controller, the WebContents helper
    # and the SadTabView). Public headers are free of ui:ui blockers; the
    # implementation reaches views/frame (browser_view.h, contents_web_view.h)
    # through browser_public_dependencies, with an allow_circular_includes_from
    # entry on //chrome/browser/ui:ui.
    public_deps = [ "//chrome/browser:browser_public_dependencies" ]

    if (is_chromeos) {
      # sad_tab.cc / sad_tab_view.cc check kiosk mode on ChromeOS.
      deps += [ "//chromeos/components/kiosk" ]
    }
  }

  source_set("sad_tab_browser_tests") {
    testonly = true
    defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ]

    sources = [
      "sad_tab_helper_browsertest.cc",
      "views/sad_tab_split_view_browsertest.cc",
    ]

    deps = [
      ":sad_tab",
      "//chrome/browser/preloading/prefetch/no_state_prefetch",
      "//chrome/browser/preloading/prefetch/no_state_prefetch:test_support",
      "//chrome/browser/ui/tabs:tab_strip",
      "//chrome/browser/ui/views/frame",
      "//chrome/common",
      "//chrome/test:test_support",
      "//components/no_state_prefetch/browser",
      "//components/split_tabs",
      "//components/tabs:public",
      "//content/public/browser",
      "//content/public/common",
      "//content/test:test_support",
      "//ui/views",
    ]
  }

  source_set("sad_tab_interactive_ui_tests") {
    testonly = true
    defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ]

    sources = [ "views/sad_tab_view_interactive_uitest.cc" ]

    deps = [
      ":sad_tab",
      "//chrome/browser/profiles:profile",
      "//chrome/browser/ui/frame",
      "//chrome/browser/ui/tabs:tab_strip",
      "//chrome/browser/ui/views/frame",
      "//chrome/browser/ui/views/toolbar",
      "//chrome/common",
      "//chrome/test:test_support",
      "//components/prefs",
      "//components/tabs:public",
      "//content/public/browser",
      "//content/public/common",
      "//content/test:test_support",
      "//ui/views",
    ]
  }
}

if (use_aura) {
  source_set("overscroll_pref_manager") {
    sources = [
      "overscroll_pref_manager.cc",
      "overscroll_pref_manager.h",
    ]
    deps = [
      "//base",
      "//chrome/browser/ui/browser_window",
    ]
    public_deps = [
      "//chrome/browser:browser_process",
      "//chrome/browser/ui/tabs",
      "//chrome/browser/ui/tabs:tab_strip",
      "//chrome/common",
      "//components/prefs",
      "//content/public/browser",
      "//ui/base/unowned_user_data",
    ]
  }
}

if (is_win) {
  source_set("accessibility_util") {
    public = [ "accessibility_util.h" ]
  }
}

source_set("status_bubble") {
  public = [ "status_bubble.h" ]
  public_deps = [ "//url" ]
}

source_set("storage_pressure_bubble") {
  public = [ "storage_pressure_bubble.h" ]
  public_deps = [ "//url" ]
}

if (enable_webui_certificate_viewer) {
  source_set("certificate_dialogs") {
    public = [ "certificate_dialogs.h" ]
    sources = [ "certificate_dialogs.cc" ]
    public_deps = [
      "//chrome/common:buildflags",
      "//net",
      "//third_party/boringssl",
      "//ui/gfx",
      "//ui/shell_dialogs",
    ]
    deps = [
      "//base",
      "//chrome/app:generated_resources",
      "//chrome/browser/download",
      "//chrome/browser/ui/select_file_policy",
      "//content/public/browser",
      "//crypto",
      "//ui/base",
      "//url",
    ]
  }
}

source_set("screen_capture_notification_ui_stub") {
  sources = [ "screen_capture_notification_ui_stub.cc" ]
  deps = [
    ":screen_capture_notification_ui",
    "//base",
  ]
}

source_set("screen_capture_notification_ui") {
  public = [ "screen_capture_notification_ui.h" ]
  public_deps = [
    "//base",
    "//chrome/browser/media/webrtc:media_stream_ui",
  ]
}

if (is_chromeos) {
  source_set("browser_commands_chromeos") {
    public = [ "browser_commands_chromeos.h" ]
    sources = [ "browser_commands_chromeos.cc" ]
    public_deps = [ "//base" ]
    deps = [ "//ash" ]
  }

  source_set("platform_keys_certificate_selector_chromeos") {
    public = [ "platform_keys_certificate_selector_chromeos.h" ]
    public_deps = [
      "//base",
      "//net",
    ]
  }
}

if (is_mac) {
  source_set("fullscreen_util_mac") {
    public = [ "fullscreen_util_mac.h" ]
    sources = [ "fullscreen_util_mac.cc" ]
    public_deps = [ "//base" ]
    deps = [
      "//chrome/browser/profiles:profile",
      "//chrome/browser/ui/browser_window",
      "//chrome/browser/ui/exclusive_access",
      "//chrome/browser/ui/web_applications",
      "//chrome/common:constants",
      "//components/prefs",
      "//ui/base",
    ]
  }

  source_set("browser_mac") {
    public = [ "browser_mac.h" ]
    sources = [ "browser_mac.cc" ]
    public_deps = [
      ":chrome_pages",
      "//base",
      "//ui/gfx",
    ]
    deps = [
      "//chrome/browser/profiles:profile",
      "//chrome/browser/ui/browser_window:create_browser_window",
      "//ui/base",
    ]
  }
}
