# 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("//arkweb/build/features/features.gni")
import("//build/config/chromebox_for_meetings/buildflags.gni")
import("//build/config/chromeos/ui_mode.gni")
import("//build/config/features.gni")
import("//build/config/ozone.gni")
import("//build/config/ui.gni")
import("//chrome/common/features.gni")
import("//components/enterprise/buildflags/buildflags.gni")
import("//components/safe_browsing/buildflags.gni")
import("//content/public/common/features.gni")
import("//extensions/buildflags/buildflags.gni")
import("//mojo/public/tools/bindings/mojom.gni")
import("//pdf/features.gni")
import("//printing/buildflags/buildflags.gni")
import("//rlz/buildflags/buildflags.gni")
import("//services/screen_ai/buildflags/features.gni")
import("//testing/libfuzzer/fuzzer_test.gni")
import("//third_party/protobuf/proto_library.gni")
import("//arkweb/chromium_ext/chrome/browser/extensions/arkweb_ui_views_extension.gni")

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

source_set("external_loader") {
  sources = [
    "external_loader.cc",
    "external_loader.h",
  ]
  deps = [
    "//base",
    "//content/public/browser",
    "//extensions/browser",
    "//extensions/buildflags",
  ]
}

source_set("extensions") {
  # TODO(https://crbug.com/356905053): When files support being built on
  # desktop android, move them here, outside the if (enable_extensions) block.
  sources = [
    "activity_log/activity_action_constants.cc",
    "activity_log/activity_action_constants.h",
    "activity_log/activity_actions.cc",
    "activity_log/activity_actions.h",
    "activity_log/activity_database.cc",
    "activity_log/activity_database.h",
    "activity_log/activity_log.cc",
    "activity_log/activity_log.h",
    "activity_log/activity_log_policy.cc",
    "activity_log/activity_log_policy.h",
    "activity_log/activity_log_task_runner.cc",
    "activity_log/activity_log_task_runner.h",
    "activity_log/counting_policy.cc",
    "activity_log/counting_policy.h",
    "activity_log/database_string_table.cc",
    "activity_log/database_string_table.h",
    "activity_log/fullstream_ui_policy.cc",
    "activity_log/fullstream_ui_policy.h",
    "api/bookmarks/bookmarks_api.cc",
    "api/bookmarks/bookmarks_api.h",
    "api/bookmarks/bookmarks_api_watcher.cc",
    "api/bookmarks/bookmarks_api_watcher.h",
    "api/bookmarks_core/bookmarks_function.cc",
    "api/bookmarks_core/bookmarks_function.h",
    "api/chrome_extensions_api_client.cc",
    "api/chrome_extensions_api_client.h",
    "api/commands/commands.cc",
    "api/commands/commands.h",
    "api/declarative_content/chrome_content_rules_registry.cc",
    "api/declarative_content/chrome_content_rules_registry.h",
    "api/declarative_content/content_action.cc",
    "api/declarative_content/content_action.h",
    "api/declarative_content/content_condition.cc",
    "api/declarative_content/content_condition.h",
    "api/declarative_content/content_predicate.cc",
    "api/declarative_content/content_predicate.h",
    "api/declarative_content/content_predicate_evaluator.cc",
    "api/declarative_content/content_predicate_evaluator.h",
    "api/declarative_content/declarative_content_css_condition_tracker.cc",
    "api/declarative_content/declarative_content_css_condition_tracker.h",
    "api/declarative_content/declarative_content_is_bookmarked_condition_tracker.cc",
    "api/declarative_content/declarative_content_is_bookmarked_condition_tracker.h",
    "api/declarative_content/declarative_content_page_url_condition_tracker.cc",
    "api/declarative_content/declarative_content_page_url_condition_tracker.h",
    "api/declarative_content/default_content_predicate_evaluators.cc",
    "api/declarative_content/default_content_predicate_evaluators.h",
    "api/developer_private/developer_private_api.cc",
    "api/developer_private/developer_private_api.h",
    "api/developer_private/developer_private_event_router.h",
    "api/developer_private/developer_private_event_router_shared.cc",
    "api/developer_private/developer_private_event_router_shared.h",
    "api/developer_private/developer_private_functions.h",
    "api/developer_private/developer_private_functions_shared.cc",
    "api/developer_private/developer_private_functions_shared.h",
    "api/developer_private/extension_info_generator.cc",
    "api/developer_private/extension_info_generator.h",
    "api/developer_private/inspectable_views_finder.cc",
    "api/developer_private/inspectable_views_finder.h",
    "api/developer_private/profile_info_generator.cc",
    "api/developer_private/profile_info_generator.h",
    "api/downloads/download_extension_errors.h",
    "api/downloads/downloads_api.cc",
    "api/downloads/downloads_api.h",
    "api/gcm/gcm_api.cc",
    "api/gcm/gcm_api.h",
    "api/history/history_api.cc",
    "api/history/history_api.h",
    "api/identity/extension_token_key.cc",
    "api/identity/extension_token_key.h",
    "api/identity/identity_api.cc",
    "api/identity/identity_api.h",
    "api/identity/identity_constants.cc",
    "api/identity/identity_constants.h",
    "api/identity/identity_get_accounts_function.cc",
    "api/identity/identity_get_accounts_function.h",
    "api/identity/identity_get_auth_token_error.cc",
    "api/identity/identity_get_auth_token_error.h",
    "api/identity/identity_get_profile_user_info_function.cc",
    "api/identity/identity_get_profile_user_info_function.h",
    "api/identity/identity_launch_web_auth_flow_function.cc",
    "api/identity/identity_launch_web_auth_flow_function.h",
    "api/identity/identity_mint_queue.cc",
    "api/identity/identity_mint_queue.h",
    "api/identity/identity_token_cache.cc",
    "api/identity/identity_token_cache.h",
    "api/identity/launch_web_auth_flow_delegate.h",
    "api/identity/web_auth_flow.cc",
    "api/identity/web_auth_flow.h",
    "api/identity/web_auth_flow_info_bar_delegate.cc",
    "api/identity/web_auth_flow_info_bar_delegate.h",
    "api/instance_id/instance_id_api.cc",
    "api/instance_id/instance_id_api.h",
    "api/management/chrome_management_api_delegate.cc",
    "api/management/chrome_management_api_delegate.h",
    "api/messaging/chrome_messaging_delegate.cc",
    "api/messaging/chrome_messaging_delegate.h",
    "api/messaging/chrome_native_message_port_dispatcher.cc",
    "api/messaging/chrome_native_message_port_dispatcher.h",
    "api/messaging/incognito_connectability.cc",
    "api/messaging/incognito_connectability.h",
    "api/messaging/incognito_connectability_infobar_delegate.cc",
    "api/messaging/incognito_connectability_infobar_delegate.h",
    "api/messaging/native_messaging_host_manifest.cc",
    "api/messaging/native_messaging_host_manifest.h",
    "api/metrics_private/chrome_metrics_private_delegate.cc",
    "api/metrics_private/chrome_metrics_private_delegate.h",
    "api/preference/cookie_controls_mode_transformer.cc",
    "api/preference/cookie_controls_mode_transformer.h",
    "api/preference/network_prediction_transformer.cc",
    "api/preference/network_prediction_transformer.h",
    "api/preference/privacy_sandbox_transformer.cc",
    "api/preference/privacy_sandbox_transformer.h",
    "api/preference/protected_content_enabled_transformer.cc",
    "api/preference/protected_content_enabled_transformer.h",
    "api/proxy/proxy_api_constants.cc",
    "api/proxy/proxy_api_constants.h",
    "api/proxy/proxy_api_helpers.cc",
    "api/proxy/proxy_api_helpers.h",
    "api/proxy/proxy_pref_transformer.cc",
    "api/proxy/proxy_pref_transformer.h",
    "api/sessions/session_id.cc",
    "api/sessions/session_id.h",
    "api/storage/managed_value_store_cache.cc",
    "api/storage/managed_value_store_cache.h",
    "api/storage/policy_value_store.cc",
    "api/storage/policy_value_store.h",
    "api/storage/setting_sync_data.cc",
    "api/storage/setting_sync_data.h",
    "api/storage/settings_sync_processor.cc",
    "api/storage/settings_sync_processor.h",
    "api/storage/settings_sync_util.cc",
    "api/storage/settings_sync_util.h",
    "api/storage/sync_storage_backend.cc",
    "api/storage/sync_storage_backend.h",
    "api/storage/sync_value_store_cache.cc",
    "api/storage/sync_value_store_cache.h",
    "api/storage/syncable_settings_storage.cc",
    "api/storage/syncable_settings_storage.h",
    "api/tab_capture/tab_capture_registry.cc",
    "api/tab_capture/tab_capture_registry.h",
    "api/tabs/tabs_api.cc",
    "api/tabs/tabs_api.h",
    "api/tabs/tabs_constants.h",
    "api/tabs/tabs_windows_api.cc",
    "api/tabs/tabs_windows_api.h",
    "api/tabs/windows_event_router.cc",
    "api/tabs/windows_event_router.h",
    "api/tabs/windows_util.cc",
    "api/tabs/windows_util.h",
    "api/top_sites/top_sites_api.cc",
    "api/top_sites/top_sites_api.h",
    "api/webstore_private/extension_install_status.cc",
    "api/webstore_private/extension_install_status.h",
    "api/webstore_private/webstore_private_api.cc",
    "api/webstore_private/webstore_private_api.h",
    "blocklist_factory.cc",
    "blocklist_factory.h",
    "bookmarks/bookmarks_error_constants.cc",
    "bookmarks/bookmarks_error_constants.h",
    "bookmarks/bookmarks_features.cc",
    "bookmarks/bookmarks_features.h",
    "bookmarks/bookmarks_helpers.cc",
    "bookmarks/bookmarks_helpers.h",
    "browser_extension_window_controller.cc",
    "browser_extension_window_controller.h",
    "browser_window_util.cc",
    "browser_window_util.h",
    "chrome_app_icon.cc",
    "chrome_app_icon.h",
    "chrome_app_icon_delegate.h",
    "chrome_app_icon_loader.cc",
    "chrome_app_icon_loader.h",
    "chrome_app_icon_service.cc",
    "chrome_app_icon_service.h",
    "chrome_app_icon_service_factory.cc",
    "chrome_app_icon_service_factory.h",
    "chrome_component_extension_resource_manager.cc",
    "chrome_component_extension_resource_manager.h",
    "chrome_content_browser_client_extensions_part.cc",
    "chrome_content_browser_client_extensions_part.h",
    "chrome_content_browser_client_extensions_part_bindings.cc",
    "chrome_content_verifier_delegate.cc",
    "chrome_content_verifier_delegate.h",
    "chrome_extension_cookies.cc",
    "chrome_extension_cookies.h",
    "chrome_extension_cookies_factory.cc",
    "chrome_extension_cookies_factory.h",
    "chrome_extension_frame_host.cc",
    "chrome_extension_frame_host.h",
    "chrome_extension_function_details.cc",
    "chrome_extension_function_details.h",
    "chrome_extension_host_delegate.cc",
    "chrome_extension_host_delegate.h",
    "chrome_extension_registrar_delegate.cc",
    "chrome_extension_registrar_delegate.h",
    "chrome_extension_system.cc",
    "chrome_extension_system.h",
    "chrome_extension_system_factory.cc",
    "chrome_extension_system_factory.h",
    "chrome_extension_web_contents_observer.cc",
    "chrome_extension_web_contents_observer.h",
    "chrome_extensions_browser_api_provider.cc",
    "chrome_extensions_browser_api_provider.h",
    "chrome_extensions_browser_interface_binders.cc",
    "chrome_extensions_browser_interface_binders.h",
    "chrome_kiosk_delegate.h",
    "chrome_url_request_util.cc",
    "chrome_url_request_util.h",
    "chrome_zipfile_installer.cc",
    "chrome_zipfile_installer.h",
    "commands/command_service.cc",
    "commands/command_service.h",
    "component_extensions_allowlist/allowlist.cc",
    "component_extensions_allowlist/allowlist.h",
    "component_loader.cc",
    "component_loader.h",
    "component_loader_factory.cc",
    "component_loader_factory.h",
    "context_menu_helpers.cc",
    "context_menu_helpers.h",
    "context_menu_matcher.cc",
    "context_menu_matcher.h",
    "convert_user_script.cc",
    "convert_user_script.h",
    "corrupted_extension_reinstaller.cc",
    "corrupted_extension_reinstaller.h",
    "corrupted_extension_reinstaller_factory.cc",
    "corrupted_extension_reinstaller_factory.h",
    "crx_installer.cc",
    "crx_installer.h",
    "cws_info_service.cc",
    "cws_info_service.h",
    "cws_info_service_factory.cc",
    "cws_info_service_factory.h",
    "data_deleter.cc",
    "data_deleter.h",
    "devtools_util.cc",
    "devtools_util.h",
    "error_console/error_console.cc",
    "error_console/error_console.h",
    "error_console/error_console_factory.cc",
    "error_console/error_console_factory.h",
    "event_router_forwarder.cc",
    "event_router_forwarder.h",
    "extension_action_dispatcher.cc",
    "extension_action_dispatcher.h",
    "extension_action_runner.cc",
    "extension_action_runner.h",
    "extension_action_storage_manager.cc",
    "extension_action_storage_manager.h",
    "extension_allowlist.cc",
    "extension_allowlist.h",
    "extension_allowlist_factory.cc",
    "extension_allowlist_factory.h",
    "extension_assets_manager.cc",
    "extension_assets_manager.h",
    "extension_commands_global_registry.cc",
    "extension_commands_global_registry.h",
    "extension_context_menu_model.cc",
    "extension_context_menu_model.h",
    "extension_disabled_ui.h",
    "extension_error_controller.cc",
    "extension_error_controller.h",
    "extension_error_controller_factory.cc",
    "extension_error_controller_factory.h",
    "extension_error_ui.h",
    "extension_garbage_collector.cc",
    "extension_garbage_collector.h",
    "extension_garbage_collector_factory.cc",
    "extension_garbage_collector_factory.h",
    "extension_gcm_app_handler.cc",
    "extension_gcm_app_handler.h",
    "extension_install_error_menu_item_id_provider.cc",
    "extension_install_error_menu_item_id_provider.h",
    "extension_install_prompt.cc",
    "extension_install_prompt.h",
    "extension_install_prompt_show_params.cc",
    "extension_install_prompt_show_params.h",
    "extension_keybinding_registry.cc",
    "extension_keybinding_registry.h",
    "extension_management.cc",
    "extension_management.h",
    "extension_management_constants.cc",
    "extension_management_constants.h",
    "extension_management_internal.cc",
    "extension_management_internal.h",
    "extension_menu_icon_loader.cc",
    "extension_menu_icon_loader.h",
    "extension_migrator.cc",
    "extension_migrator.h",
    "extension_safety_check_utils.cc",
    "extension_safety_check_utils.h",
    "extension_service.cc",
    "extension_service.h",
    "extension_special_storage_policy.cc",
    "extension_special_storage_policy.h",
    "extension_tab_util.cc",
    "extension_tab_util.h",
    "extension_telemetry_service_verdict_handler.cc",
    "extension_telemetry_service_verdict_handler.h",
    "extension_ui_util.cc",
    "extension_ui_util.h",
    "extension_uninstall_dialog.cc",
    "extension_uninstall_dialog.h",
    "extension_util.cc",
    "extension_util.h",
    "extension_view.h",
    "extension_view_host.cc",
    "extension_view_host.h",
    "extension_view_host_factory.cc",
    "extension_view_host_factory.h",
    "extension_web_ui.cc",
    "extension_web_ui.h",
    "extension_web_ui_override_registrar.cc",
    "extension_web_ui_override_registrar.h",
    "external_component_loader.cc",
    "external_component_loader.h",
    "external_install_error.h",
    "external_install_manager.cc",
    "external_install_manager.h",
    "external_install_manager_factory.cc",
    "external_install_manager_factory.h",
    "external_policy_loader.cc",
    "external_policy_loader.h",
    "external_pref_loader.cc",
    "external_pref_loader.h",
    "external_provider_impl.cc",
    "external_provider_impl.h",
    "external_provider_manager.cc",
    "external_provider_manager.h",
    "external_provider_manager_factory.cc",
    "external_provider_manager_factory.h",
    "favicon/favicon_util.cc",
    "favicon/favicon_util.h",
    "forced_extensions/assessment_assistant_tracker.cc",
    "forced_extensions/assessment_assistant_tracker.h",
    "forced_extensions/force_installed_metrics.cc",
    "forced_extensions/force_installed_metrics.h",
    "forced_extensions/force_installed_tracker.cc",
    "forced_extensions/force_installed_tracker.h",
    "forced_extensions/install_stage_tracker.cc",
    "forced_extensions/install_stage_tracker.h",
    "forced_extensions/install_stage_tracker_factory.cc",
    "forced_extensions/install_stage_tracker_factory.h",
    "install_tracker_factory.cc",
    "install_tracker_factory.h",
    "install_verifier_factory.cc",
    "install_verifier_factory.h",
    "installed_loader.cc",
    "installed_loader.h",
    "launch_util.cc",
    "launch_util.h",
    "load_error_reporter.cc",
    "load_error_reporter.h",
    "managed_installation_mode.h",
    "managed_toolbar_pin_mode.h",
    "management/management_util.cc",
    "management/management_util.h",
    "manifest_v2_experiment_manager.cc",
    "manifest_v2_experiment_manager.h",
    "menu_manager.cc",
    "menu_manager.h",
    "menu_manager_factory.cc",
    "menu_manager_factory.h",
    "mv2_deprecation_impact_checker.cc",
    "mv2_deprecation_impact_checker.h",
    "mv2_experiment_stage.h",
    "omaha_attributes_handler.cc",
    "omaha_attributes_handler.h",
    "pack_extension_job.cc",
    "pack_extension_job.h",
    "permissions_based_management_policy_provider.cc",
    "permissions_based_management_policy_provider.h",
    "permissions_url_constants.cc",
    "permissions_url_constants.h",
    "policy_handlers.cc",
    "policy_handlers.h",
    "pref_mapping.cc",
    "pref_mapping.h",
    "pref_transformer_interface.h",
    "preference/preference_helpers.cc",
    "preference/preference_helpers.h",
    "profile_util.cc",
    "profile_util.h",
    "safe_browsing_verdict_handler.cc",
    "safe_browsing_verdict_handler.h",
    "settings_api_helpers.cc",
    "settings_api_helpers.h",
    "shared_module_service.cc",
    "shared_module_service.h",
    "shared_module_service_factory.cc",
    "shared_module_service_factory.h",
    "standard_management_policy_provider.cc",
    "standard_management_policy_provider.h",
    "startup_helper.cc",
    "startup_helper.h",
    "sync/account_extension_tracker.cc",
    "sync/account_extension_tracker.h",
    "sync/extension_local_data_batch_uploader.cc",
    "sync/extension_local_data_batch_uploader.h",
    "sync/extension_sync_data.cc",
    "sync/extension_sync_data.h",
    "sync/extension_sync_service.cc",
    "sync/extension_sync_service.h",
    "sync/extension_sync_service_factory.cc",
    "sync/extension_sync_service_factory.h",
    "sync/extension_sync_util.cc",
    "sync/extension_sync_util.h",
    "sync/sync_bundle.cc",
    "sync/sync_bundle.h",
    "system_display/display_info_provider.h",
    "tab_helper.cc",
    "tab_helper.h",
    "unpacked_installer.cc",
    "unpacked_installer.h",
    "updater/chrome_extension_downloader_factory.cc",
    "updater/chrome_extension_downloader_factory.h",
    "updater/chrome_update_client_config.cc",
    "updater/chrome_update_client_config.h",
    "updater/extension_update_client_command_line_config_policy.cc",
    "updater/extension_update_client_command_line_config_policy.h",
    "updater/extension_updater.cc",
    "updater/extension_updater.h",
    "updater/extension_updater_factory.cc",
    "updater/extension_updater_factory.h",
    "updater/extension_updater_switches.cc",
    "updater/extension_updater_switches.h",
    "user_script_listener.cc",
    "user_script_listener.h",
    "webstore_data_fetcher.cc",
    "webstore_data_fetcher.h",
    "webstore_data_fetcher_delegate.cc",
    "webstore_data_fetcher_delegate.h",
    "webstore_install_helper.cc",
    "webstore_install_helper.h",
    "webstore_installer.cc",
    "webstore_installer.h",
    "webstore_reinstaller.cc",
    "webstore_reinstaller.h",
    "webstore_standalone_installer.cc",
    "webstore_standalone_installer.h",
    "window_controller.cc",
    "window_controller.h",
    "window_controller_list.cc",
    "window_controller_list.h",
    "window_controller_list_observer.h",
  ]

  include_dirs = [
      "//cef",
  ]

  configs += [
    "//build/config:precompiled_headers",
    "//build/config/compiler:wexit_time_destructors",
  ]
  allow_circular_includes_from = [
    # TODO(crbug.com/40161499): Remove this circular dependency.
    "//chrome/browser/devtools",

    # TODO(crbug.com/353284909): Remove this circular dependency.
    "//chrome/browser/media/webrtc",
    "//chrome/browser/ui/extensions",
    "//chrome/browser/ui/safety_hub",
    "//chrome/browser/ui/toolbar",
    "//chrome/browser/supervised_user",
  ]
  deps = [
    "//base",
    "//chrome/app:command_ids",
    "//chrome/app/theme:chrome_unscaled_resources",
    "//chrome/browser:browser_process",
    "//chrome/browser:shell_integration",
    "//chrome/browser/app_mode",
    "//chrome/browser/apps:user_type_filter",
    "//chrome/browser/bitmap_fetcher",
    "//chrome/browser/content_settings:content_settings_factory",
    "//chrome/browser/devtools",
    "//chrome/browser/download",
    "//chrome/browser/extensions:cws_item_service_proto",
    "//chrome/browser/extensions:external_loader",
    "//chrome/browser/extensions/api:api_registration",
    "//chrome/browser/favicon",
    "//chrome/browser/google",
    "//chrome/browser/history",
    "//chrome/browser/infobars",
    "//chrome/browser/lifetime:termination_notification",
    "//chrome/browser/password_manager/factories",
    "//chrome/browser/prefetch",
    "//chrome/browser/prefs",
    "//chrome/browser/prefs:util",
    "//chrome/browser/preloading:prefs",
    "//chrome/browser/profiles",
    "//chrome/browser/profiles:profile",
    "//chrome/browser/profiles/keep_alive",
    "//chrome/browser/resources:component_extension_resources",
    "//chrome/browser/safe_browsing",
    "//chrome/browser/safe_browsing:metrics_collector",
    "//chrome/browser/signin",
    "//chrome/browser/tab_group_sync:factories",
    "//chrome/browser/ui:browser_navigator_params_headers",
    "//chrome/browser/ui:ui_features",
    "//chrome/browser/ui/autofill",
    "//chrome/browser/ui/browser_window",
    "//chrome/browser/ui/browser_window:create_browser_window",
    "//chrome/browser/ui/extensions",
    "//chrome/browser/ui/prefs",
    "//chrome/browser/ui/safety_hub",
    "//chrome/browser/ui/tabs:tab_list_interface",
    "//chrome/browser/ui/toolbar",
    "//chrome/common",
    "//components/bookmarks/browser",
    "//components/bookmarks/managed",
    "//components/content_settings/core/browser",
    "//components/content_settings/core/browser:cookie_settings",
    "//components/cookie_config",
    "//components/crx_file",
    "//components/data_sharing/public",
    "//components/data_sharing/public:features",
    "//components/download/content/public",
    "//components/embedder_support",
    "//components/enterprise",
    "//components/guest_view/buildflags",
    "//components/guest_view/common",
    "//components/infobars/content",
    "//components/infobars/core",
    "//components/no_state_prefetch/browser",
    "//components/policy/core/browser",
    "//components/pref_registry",
    "//components/privacy_sandbox:features",
    "//components/privacy_sandbox:privacy_sandbox_prefs",
    "//components/privacy_sandbox:tracking_protection_prefs",
    "//components/proxy_config",
    "//components/renderer_context_menu",
    "//components/safe_browsing/content/browser",
    "//components/safe_browsing/core/browser:safe_browsing_metrics_collector",
    "//components/safe_browsing/core/browser/db:database_manager",
    "//components/safe_browsing/core/common",
    "//components/safe_browsing/core/common:safe_browsing_prefs",
    "//components/safe_browsing/core/common/proto:crx_info_proto",
    "//components/saved_tab_groups/public",
    "//components/services/patch/content",
    "//components/services/unzip/content",
    "//components/spellcheck/browser",
    "//components/supervised_user/core/browser",
    "//components/tabs:public",
    "//components/update_client",
    "//components/update_client:common_impl",
    "//components/user_prefs",
    "//components/vector_icons",
    "//content/public/browser",
    "//extensions/browser",
    "//extensions/browser/api/storage:settings_namespace",
    "//extensions/browser/api/storage:settings_observer",
    "//extensions/browser/api/virtual_keyboard_private:virtual_keyboard_delegate",
    "//extensions/browser/updater",
    "//extensions/browser/updater:keepalive",
    "//extensions/common",
    "//extensions/strings",
    "//google_apis/common:request_util",
    "//net",
    "//net:extras",
    "//services/metrics/public/cpp:ukm_builders",
    "//storage/browser",
    "//third_party/zlib/google:zip",
    "//ui/base/accelerators/global_accelerator_listener",
    "//ui/base/unowned_user_data",
    "//ui/menus",
    "//ui/native_window_tracker",
    "//ui/shell_dialogs",
  ]
  public_deps = [
    "//chrome/browser/media/webrtc",
    "//chrome/browser/supervised_user",
    "//chrome/browser/upgrade_detector",
    "//components/safe_browsing/core/browser/db:util",
    "//components/signin/core/browser",
    "//extensions/buildflags",
  ]
  defines = []

  if (is_mac || is_win || is_linux || is_chromeos) {
    deps += [ "//components/webapps/isolated_web_apps:scheme" ]
  }
  if (is_android) {
    sources += [
      "api/chrome_extensions_api_client_android.cc",
      "api/developer_private/developer_private_event_router_android.h",
      "api/developer_private/developer_private_functions_android.cc",
      "api/developer_private/developer_private_functions_android.h",
      "api/identity/identity_unimplemented_functions_android.cc",
      "api/identity/identity_unimplemented_functions_android.h",
      "api/management/chrome_management_api_delegate_android.cc",
      "api/messaging/native_message_android_host.cc",
      "api/messaging/native_message_android_host.h",
      "api/tabs/tabs_api_android.cc",
      "api/tabs/tabs_event_router_android.cc",
      "api/tabs/tabs_event_router_android.h",
      "chrome_extension_host_delegate_android.cc",
      "extension_disabled_ui_android.cc",
      "extension_error_ui_android.cc",
      "extension_error_ui_android.h",
      "external_install_error_android.cc",
      "external_install_error_android.h",
    ]
    deps += [ "//chrome/browser/ui/android/tab_model" ]
  } else {
    sources += [
      "api/chrome_extensions_api_client_non_android.cc",
      "api/tabs/tabs_api_non_android.cc",
      "chrome_extension_host_delegate_non_android.cc",
    ]
    public_deps += [
      "//chrome/browser/ui/tabs:utils",
      "//components/app_icon_loader",
    ]
    deps += [
      "//chrome/browser/ui/user_education",
      "//chrome/browser/ui/web_applications:launch_utils",
    ]
  }

  if (!is_chromeos) {
    sources += [ "chrome_kiosk_delegate_non_chromeos.cc" ]
    if (!is_android) {
      sources += [
        "api/messaging/launch_context.cc",
        "api/messaging/launch_context.h",
        "api/messaging/native_message_process_host.cc",
        "api/messaging/native_message_process_host.h",
        "api/messaging/native_messaging_launch_from_native.cc",
        "api/messaging/native_messaging_launch_from_native.h",
        "api/messaging/native_process_launcher.cc",
        "api/messaging/native_process_launcher.h",
      ]
    }
    if (is_posix) {
      sources += [ "api/messaging/launch_context_posix.cc" ]
    }
  }

  if (enable_extensions) {
    sources += [
      # TODO(crbug.com/40245282): Ideally, no API implementations would be included
      # here.
      "api/automation_internal/chrome_automation_internal_api_delegate.cc",
      "api/automation_internal/chrome_automation_internal_api_delegate.h",
      "api/bookmark_manager_private/bookmark_manager_private_api.cc",
      "api/bookmark_manager_private/bookmark_manager_private_api.h",
      "api/chrome_device_permissions_prompt.h",
      "api/developer_private/developer_private_event_router_desktop.cc",
      "api/developer_private/developer_private_event_router_desktop.h",
      "api/developer_private/developer_private_functions_desktop.cc",
      "api/developer_private/developer_private_functions_desktop.h",
      "api/enterprise_reporting_private/conversion_utils.cc",
      "api/enterprise_reporting_private/conversion_utils.h",
      "api/enterprise_reporting_private/enterprise_reporting_private_api.cc",
      "api/enterprise_reporting_private/enterprise_reporting_private_api.h",
      "api/enterprise_reporting_private/enterprise_reporting_private_event_router.cc",
      "api/enterprise_reporting_private/enterprise_reporting_private_event_router.h",
      "api/feedback_private/chrome_feedback_private_delegate.cc",
      "api/feedback_private/chrome_feedback_private_delegate.h",
      "api/file_system/chrome_file_system_delegate.cc",
      "api/file_system/chrome_file_system_delegate.h",
      "api/file_system/file_entry_picker.cc",
      "api/file_system/file_entry_picker.h",
      "api/identity/gaia_remote_consent_flow.cc",
      "api/identity/gaia_remote_consent_flow.h",
      "api/identity/identity_clear_all_cached_auth_tokens_function.cc",
      "api/identity/identity_clear_all_cached_auth_tokens_function.h",
      "api/identity/identity_get_auth_token_function.cc",
      "api/identity/identity_get_auth_token_function.h",
      "api/identity/identity_remove_cached_auth_token_function.cc",
      "api/identity/identity_remove_cached_auth_token_function.h",
      "api/image_writer_private/destroy_partitions_operation.cc",
      "api/image_writer_private/destroy_partitions_operation.h",
      "api/image_writer_private/error_constants.cc",
      "api/image_writer_private/error_constants.h",
      "api/image_writer_private/extraction_properties.cc",
      "api/image_writer_private/extraction_properties.h",
      "api/image_writer_private/image_writer_private_api.cc",
      "api/image_writer_private/image_writer_private_api.h",
      "api/image_writer_private/image_writer_utility_client.cc",
      "api/image_writer_private/image_writer_utility_client.h",
      "api/image_writer_private/operation.cc",
      "api/image_writer_private/operation.h",
      "api/image_writer_private/operation_manager.cc",
      "api/image_writer_private/operation_manager.h",
      "api/image_writer_private/removable_storage_provider.cc",
      "api/image_writer_private/removable_storage_provider.h",
      "api/image_writer_private/tar_extractor.cc",
      "api/image_writer_private/tar_extractor.h",
      "api/image_writer_private/write_from_file_operation.cc",
      "api/image_writer_private/write_from_file_operation.h",
      "api/image_writer_private/write_from_url_operation.cc",
      "api/image_writer_private/write_from_url_operation.h",
      "api/image_writer_private/xz_extractor.cc",
      "api/image_writer_private/xz_extractor.h",
      "api/image_writer_private/zip_extractor.cc",
      "api/image_writer_private/zip_extractor.h",
      "api/language_settings_private/language_settings_private_api.cc",
      "api/language_settings_private/language_settings_private_api.h",
      "api/language_settings_private/language_settings_private_delegate.cc",
      "api/language_settings_private/language_settings_private_delegate.h",
      "api/language_settings_private/language_settings_private_delegate_factory.cc",
      "api/language_settings_private/language_settings_private_delegate_factory.h",
      "api/management/chrome_management_api_delegate_nonandroid.cc",
      "api/passwords_private/password_access_auth_timeout_handler.cc",
      "api/passwords_private/password_access_auth_timeout_handler.h",
      "api/passwords_private/password_check_delegate.cc",
      "api/passwords_private/password_check_delegate.h",
      "api/passwords_private/passwords_private_api.cc",
      "api/passwords_private/passwords_private_api.h",
      "api/passwords_private/passwords_private_delegate.h",
      "api/passwords_private/passwords_private_delegate_factory.cc",
      "api/passwords_private/passwords_private_delegate_factory.h",
      "api/passwords_private/passwords_private_delegate_impl.cc",
      "api/passwords_private/passwords_private_delegate_impl.h",
      "api/passwords_private/passwords_private_event_router.cc",
      "api/passwords_private/passwords_private_event_router.h",
      "api/passwords_private/passwords_private_event_router_factory.cc",
      "api/passwords_private/passwords_private_event_router_factory.h",
      "api/passwords_private/passwords_private_utils.cc",
      "api/passwords_private/passwords_private_utils.h",
      "api/sessions/sessions_api.cc",
      "api/sessions/sessions_api.h",
      "api/settings_private/generated_pref.cc",
      "api/settings_private/generated_pref.h",
      "api/settings_private/generated_prefs.cc",
      "api/settings_private/generated_prefs.h",
      "api/settings_private/generated_prefs_factory.cc",
      "api/settings_private/generated_prefs_factory.h",
      "api/settings_private/prefs_util.cc",
      "api/settings_private/prefs_util.h",
      "api/settings_private/settings_private_api.cc",
      "api/settings_private/settings_private_api.h",
      "api/settings_private/settings_private_delegate.cc",
      "api/settings_private/settings_private_delegate.h",
      "api/settings_private/settings_private_delegate_factory.cc",
      "api/settings_private/settings_private_delegate_factory.h",
      "api/settings_private/settings_private_event_router.cc",
      "api/settings_private/settings_private_event_router.h",
      "api/settings_private/settings_private_event_router_factory.cc",
      "api/settings_private/settings_private_event_router_factory.h",
      "api/side_panel/side_panel_service.cc",
      "api/side_panel/side_panel_service.h",
      "api/streams_private/streams_private_api.cc",
      "api/streams_private/streams_private_api.h",
      "api/system_private/system_private_api.cc",
      "api/system_private/system_private_api.h",
      "api/tabs/tabs_event_router.cc",
      "api/tabs/tabs_event_router.h",
      "app_tab_helper.cc",
      "app_tab_helper.h",
      "chrome_app_sorting.cc",
      "chrome_app_sorting.h",
      "chrome_process_manager_delegate.cc",
      "chrome_process_manager_delegate.h",
      "device_permissions_dialog_controller.cc",
      "device_permissions_dialog_controller.h",
      "extension_browser_window_helper.cc",
      "extension_browser_window_helper.h",
      "extension_disabled_ui_desktop.cc",
      "extension_error_ui_desktop.cc",
      "extension_error_ui_desktop.h",
      "extension_view_host_web_modal_handler.cc",
      "extension_view_host_web_modal_handler.h",
      "external_install_error_desktop.cc",
      "external_install_error_desktop.h",
      "file_handlers/file_handling_launch_utils.cc",
      "file_handlers/file_handling_launch_utils.h",
      "initial_external_extension_loader.cc",
      "initial_external_extension_loader.h",
      "menu_icon_loader.h",
      "navigation_extension_enabler.cc",
      "navigation_extension_enabler.h",
      "theme_installed_infobar_delegate.cc",
      "theme_installed_infobar_delegate.h",
      "warning_badge_service.cc",
      "warning_badge_service.h",
      "warning_badge_service_factory.cc",
      "warning_badge_service_factory.h",
      "webstore_install_with_prompt.cc",
      "webstore_install_with_prompt.h",
    ]

    if (safe_browsing_mode != 0) {
      sources += [
        "api/safe_browsing_private/safe_browsing_private_event_router.cc",
        "api/safe_browsing_private/safe_browsing_private_event_router.h",
        "api/safe_browsing_private/safe_browsing_private_event_router_factory.cc",
        "api/safe_browsing_private/safe_browsing_private_event_router_factory.h",
      ]
    }

    # Chrome OS does not support Native Messaging policies.
    if (!is_chromeos) {
      sources += [
        "api/messaging/native_messaging_policy_handler.cc",
        "api/messaging/native_messaging_policy_handler.h",
      ]
    }

    allow_circular_includes_from += [
      # TODO(b/40251079): Remove this circular dependency.
      "//chrome/browser/apps/app_service/app_icon",

      # Lots of APIs use headers from the list above.
      "//chrome/browser/extensions/api:api_registration",

      # TODO(crbug.com/346472679): Remove this circular dependency.
      "//chrome/browser/web_applications/extensions",

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

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

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

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

      "//chrome/browser/feedback",
      "//chrome/browser/ui/views/toolbar",
    ]

    # Since browser and browser_extensions actually depend on each other,
    # we must omit the dependency from browser_extensions to browser.
    # However, this means browser_extensions and browser should more or less
    # have the same dependencies. Once browser_extensions is untangled from
    # browser, then we can clean up these dependencies.
    public_deps += [
      "//chrome/browser:browser_public_dependencies",
      "//chrome/browser/extensions/api:api_registration",
      "//chrome/browser/task_manager",
      "//chrome/browser/ui:browser_list",
      "//chrome/browser/ui:browser_tab_strip",
      "//chrome/browser/ui/bookmarks",
      "//chrome/browser/ui/global_error",
      "//chrome/browser/ui/passwords/settings",
      "//chrome/browser/ui/tab_contents",
      "//chrome/browser/ui/tabs:tab_strip",
      "//chrome/browser/ui/tabs:tab_strip_model_observer",
      "//chrome/common",
      "//chrome/common/extensions/api",
      "//components/omnibox/browser",
      "//components/safe_browsing/core/common/proto:csd_proto",
      "//components/safe_browsing/core/common/proto:realtimeapi_proto",
      "//components/translate/content/browser",
      "//content/public/browser",
      "//mojo/public/cpp/bindings",
    ]
    deps += [
      "//apps",
      "//build:branding_buildflags",
      "//build:chromeos_buildflags",
      "//build/config/chromebox_for_meetings:buildflags",
      "//build/config/linux/dbus:buildflags",
      "//chrome:extra_resources",
      "//chrome:resources",
      "//chrome:strings",
      "//chrome/app/resources:platform_locale_settings",
      "//chrome/app/theme:theme_resources",
      "//chrome/app/vector_icons",
      "//chrome/browser:font_pref",
      "//chrome/browser:primitives",
      "//chrome/browser/accessibility/tree_fixing:prefs",
      "//chrome/browser/affiliations",
      "//chrome/browser/apps:user_type_filter",
      "//chrome/browser/apps/app_service:constants",
      "//chrome/browser/chooser_controller",
      "//chrome/browser/device_identity",
      "//chrome/browser/feedback",
      "//chrome/browser/importer",
      "//chrome/browser/lifetime:termination_notification",
      "//chrome/browser/picture_in_picture",
      "//chrome/browser/prefs",
      "//chrome/browser/prefs:util",
      "//chrome/browser/profiles:profile_util",
      "//chrome/browser/reading_list",
      "//chrome/browser/resource_coordinator",
      "//chrome/browser/search",
      "//chrome/browser/search/background",
      "//chrome/browser/search_engine_choice",
      "//chrome/browser/search_engines",
      "//chrome/browser/sessions",
      "//chrome/browser/sync",
      "//chrome/browser/themes",
      "//chrome/browser/ui/apps",
      "//chrome/browser/ui/browser_window",
      "//chrome/browser/ui/extensions",
      "//chrome/browser/ui/hats",
      "//chrome/browser/ui/prefs",
      "//chrome/browser/ui/tabs",
      "//chrome/browser/ui/tabs:tab_group",
      "//chrome/browser/ui/tabs:tab_model",
      "//chrome/browser/ui/toolbar",
      "//chrome/browser/ui/translate",
      "//chrome/browser/ui/views/side_panel",
      "//chrome/browser/ui/views/toolbar",
      "//chrome/browser/ui/web_applications",
      "//chrome/browser/ui/window_sizer",
      "//chrome/browser/ui/zoom",
      "//chrome/browser/webauthn",

      # Only for allow_circular_includes_from
      "//chrome/browser/apps/app_service/app_icon",
      "//chrome/browser/autofill",
      "//chrome/browser/browsing_data:constants",
      "//chrome/browser/devtools",
      "//chrome/browser/image_decoder",
      "//chrome/browser/media/router",
      "//chrome/browser/media/router:media_router_feature",
      "//chrome/browser/media/router/discovery",
      "//chrome/browser/profiles",
      "//chrome/browser/profiles:profile",
      "//chrome/browser/resource_coordinator:mojo_bindings",
      "//chrome/browser/ui/tabs:tab_enums",
      "//chrome/browser/web_applications",
      "//components/cbor",
      "//components/commerce/core:pref_names",
      "//components/device_reauth",
      "//components/optimization_guide/core:features",
      "//components/security_interstitials/content:security_interstitial_page",
      "//components/security_state/content",
      "//components/site_engagement/core/mojom:mojo_bindings",
      "//components/supervised_user/core/common",
      "//components/webapps/browser",
      "//components/webapps/common",
      "//components/webauthn/json",

      # TODO(crbug.com/346472679): Remove this dependency:
      "//chrome/browser/web_applications/extensions",
      "//chrome/common/extensions/api:extensions_features",
      "//chrome/services/file_util/public/mojom",
      "//chrome/services/removable_storage_writer/public/mojom",
      "//components/affiliations/core/browser:affiliations",
      "//components/app_constants",
      "//components/autofill/content/browser",
      "//components/autofill/core/common:credit_card_number_validation",
      "//components/back_forward_cache",
      "//components/browser_sync",
      "//components/browsing_data/content",
      "//components/browsing_data/core",
      "//components/device_signals/core/browser",
      "//components/device_signals/core/common",
      "//components/dom_distiller/core",
      "//components/download/public/common:public",
      "//components/drive",
      "//components/embedder_support:user_agent",
      "//components/enterprise",
      "//components/enterprise/buildflags",
      "//components/enterprise/connectors/core",
      "//components/favicon/content",
      "//components/feedback",
      "//components/gcm_driver",
      "//components/guest_view/browser",
      "//components/guest_view/common:mojom",
      "//components/history/core/browser",
      "//components/history/core/common",
      "//components/javascript_dialogs",
      "//components/keyed_service/content",
      "//components/language/core/browser",
      "//components/language/core/common",
      "//components/language/core/language_model",
      "//components/live_caption:constants",
      "//components/media_device_salt",
      "//components/navigation_interception",
      "//components/net_log",
      "//components/onc",
      "//components/page_load_metrics/browser",
      "//components/password_manager/content/browser",
      "//components/password_manager/core/browser",
      "//components/password_manager/core/browser/export",
      "//components/password_manager/core/browser/features:password_features",
      "//components/password_manager/core/browser/import:importer",
      "//components/password_manager/core/browser/leak_detection",
      "//components/password_manager/core/browser/sharing",
      "//components/payments/core",
      "//components/performance_manager",
      "//components/permissions",
      "//components/policy:generated",
      "//components/policy/core/browser",
      "//components/reading_list/core",
      "//components/resources",
      "//components/safe_browsing:buildflags",
      "//components/safe_browsing/content/browser/web_ui",
      "//components/safe_browsing/core/common/proto:csd_proto",
      "//components/search_engines",
      "//components/services/app_service",
      "//components/services/unzip/public/cpp",
      "//components/sessions",
      "//components/signin/public/identity_manager",
      "//components/storage_monitor",
      "//components/strings",
      "//components/sync",
      "//components/sync_preferences",
      "//components/sync_sessions",
      "//components/tab_groups",
      "//components/themes:prefs",
      "//components/translate/content/browser",
      "//components/translate/core/browser",
      "//components/translate/core/common",
      "//components/undo",
      "//components/unified_consent",
      "//components/url_formatter",
      "//components/url_matcher",
      "//components/web_modal",
      "//components/zoom",
      "//content/public/common",
      "//crypto",
      "//device/bluetooth",
      "//device/fido",
      "//extensions:extensions_resources",
      "//extensions/browser/api:extensions_api_client",
      "//extensions/browser/api/content_settings",
      "//extensions/browser/api/system_display:display_info_provider",
      "//extensions/common:mojom",
      "//extensions/common/api",
      "//extensions/strings",
      "//google_apis",
      "//media:media_buildflags",
      "//pdf:buildflags",
      "//printing/buildflags",
      "//rlz/buildflags",
      "//services/audio/public/cpp",
      "//services/data_decoder/public/cpp",
      "//services/device/public/mojom",
      "//services/network/public/mojom",
      "//services/service_manager/public/cpp",
      "//services/service_manager/public/mojom",
      "//services/video_capture/public/mojom:constants",
      "//skia",
      "//sql",
      "//storage/common",
      "//third_party/abseil-cpp:absl",
      "//third_party/blink/public:resources",
      "//third_party/blink/public:scaled_resources",
      "//third_party/blink/public/common",
      "//third_party/icu",
      "//third_party/leveldatabase",
      "//third_party/libaddressinput:util",
      "//third_party/re2",
      "//third_party/zlib/google:compression_utils",
      "//ui/accessibility:ax_enums_mojo",
      "//ui/base",
      "//ui/base:ozone_buildflags",
      "//ui/base/clipboard",
      "//ui/base/dragdrop/mojom:mojom_shared",
      "//ui/base/idle",
      "//ui/base/ime",
      "//ui/gfx",
      "//ui/gfx/geometry",
      "//ui/message_center",
      "//ui/message_center/public/cpp",
      "//ui/native_theme",
      "//ui/resources",
      "//ui/strings",
      "//url",
    ]

    if (arkweb_arkweb_extensions) {
      deps += [
        "//components/services/unzip:in_process",
      ]
    }

    if (is_chromeos) {
      sources += [
        "api/certificate_provider/certificate_provider_api.cc",
        "api/certificate_provider/certificate_provider_api.h",
        "api/file_system/consent_provider_impl.cc",
        "api/file_system/consent_provider_impl.h",
        "api/file_system/request_file_system_notification.cc",
        "api/file_system/request_file_system_notification.h",
        "api/messaging/native_message_built_in_host.cc",
        "api/messaging/native_message_built_in_host.h",
        "api/messaging/native_message_echo_host.cc",
        "api/messaging/native_message_echo_host.h",
        "api/passwords_private/passwords_private_utils_chromeos.cc",
        "api/passwords_private/passwords_private_utils_chromeos.h",
        "api/platform_keys_core/platform_keys_utils.cc",
        "api/platform_keys_core/platform_keys_utils.h",

        # TODO(crbug.com/40230380): Find an appropriate spot for this.
        "api/chromeos_api_browser_context_keyed_service_factories.cc",
        "api/chromeos_api_browser_context_keyed_service_factories.h",
        "clipboard_extension_helper_chromeos.cc",
        "clipboard_extension_helper_chromeos.h",
        "file_handlers/web_file_handlers_permission_handler.cc",
        "file_handlers/web_file_handlers_permission_handler.h",
        "system_display/display_info_provider_chromeos.cc",
        "system_display/display_info_provider_chromeos.h",
        "system_display/display_info_provider_utils.cc",
        "system_display/display_info_provider_utils.h",
      ]

      deps += [
        "//chrome/browser/ash/certificate_provider",
        "//chrome/browser/ash/policy/core",
        "//chrome/browser/chromeos/extensions/desk_api",
        "//chrome/browser/chromeos/extensions/external_loader",
        "//chrome/browser/chromeos/extensions/login_screen/login_state",
        "//chrome/browser/chromeos/platform_keys",
        "//chrome/browser/chromeos/policy/dlp",
        "//chrome/browser/chromeos/upload_office_to_cloud",
        "//chromeos/ash/components/browser_context_helper",
        "//chromeos/ash/components/platform_keys",
        "//chromeos/components/kiosk",
        "//chromeos/components/mgs",
        "//chromeos/components/quick_answers/public/cpp:prefs",
        "//chromeos/components/security_token_pin",
        "//chromeos/constants",
        "//chromeos/dbus/missive",
        "//chromeos/dbus/power",
        "//chromeos/services/chromebox_for_meetings/public/cpp",
        "//chromeos/services/chromebox_for_meetings/public/mojom",
        "//components/user_manager",
        "//remoting/host/it2me:chrome_os_host",
      ]

      if (use_cups) {
        sources += [
          "api/printing/print_job_submitter.cc",
          "api/printing/print_job_submitter.h",
          "api/printing/printing_api.cc",
          "api/printing/printing_api.h",
          "api/printing/printing_api_handler.cc",
          "api/printing/printing_api_handler.h",
          "api/printing/printing_api_utils.cc",
          "api/printing/printing_api_utils.h",
        ]

        deps += [
          "//chrome/browser/ash/printing",
          "//chrome/browser/chromeos/extensions/printing_metrics",
          "//chrome/browser/chromeos/printing",
          "//chrome/browser/pdf:pdf_pref_names",
          "//chromeos/printing",
          "//printing/backend",
        ]

        allow_circular_includes_from +=
            [ "//chrome/browser/chromeos/extensions/printing_metrics" ]
      }

      public_deps += [ "//chrome/browser/chromeos/extensions/component_extension_content_settings" ]

      deps += [
        "//chrome/browser/chromeos/app_mode",
        "//chrome/browser/chromeos/drivefs",
        "//chrome/browser/chromeos/drivefs:native_message_host_origins",
        "//chrome/browser/chromeos/extensions/file_system_provider",
        "//chrome/browser/chromeos/extensions/login_screen/login/cleanup",
        "//chrome/browser/chromeos/extensions/smart_card_provider_private",

        # TODO(crbug.com/40230380): Find an appropriate spot for vpn_provider.
        "//chrome/browser/chromeos/extensions/contact_center_insights",
        "//chrome/browser/chromeos/extensions/vpn_provider",
        "//chrome/browser/chromeos/extensions/wm",
        "//chromeos/components/disks:prefs",
        "//chromeos/components/quick_answers/public/cpp:prefs",
        "//chromeos/components/security_token_pin",
        "//chromeos/constants",
        "//chromeos/dbus/missive",
        "//chromeos/dbus/power",
        "//chromeos/services/chromebox_for_meetings/public/cpp",
        "//chromeos/services/chromebox_for_meetings/public/mojom",
        "//remoting/host/it2me:chrome_os_host",
      ]

      allow_circular_includes_from += [
        "//chrome/browser/chromeos/app_mode",
        "//chrome/browser/chromeos/drivefs",
        "//chrome/browser/chromeos/extensions/contact_center_insights",
        "//chrome/browser/chromeos/extensions/component_extension_content_settings",
        "//chrome/browser/chromeos/extensions/desk_api",
        "//chrome/browser/chromeos/extensions/file_system_provider",
        "//chrome/browser/chromeos/extensions/login_screen/login/cleanup",
      ]
    } else {
      sources += [
        "api/enterprise_reporting_private/chrome_desktop_report_request_helper.cc",
        "api/enterprise_reporting_private/chrome_desktop_report_request_helper.h",
        "api/image_writer_private/operation_nonchromeos.cc",
        "preinstalled_apps.cc",
        "preinstalled_apps.h",
      ]
      deps += [
        "//components/enterprise",
        "//components/enterprise/common/proto:connectors_proto",
        "//components/keep_alive_registry",
      ]
      if (use_gio) {
        configs += [ "//build/linux:gio_config" ]
      }
    }

    if (is_chromeos) {
      sources += [
        "api/file_handlers/non_native_file_system_delegate_chromeos.cc",
        "api/file_handlers/non_native_file_system_delegate_chromeos.h",
        "api/file_system/chrome_file_system_delegate_ash.cc",
        "api/file_system/chrome_file_system_delegate_ash.h",
        "api/identity/launch_web_auth_flow_delegate_ash.cc",
        "api/identity/launch_web_auth_flow_delegate_ash.h",
        "api/image_writer_private/operation_chromeos.cc",
        "api/image_writer_private/removable_storage_provider_chromeos.cc",
        "api/media_perception_private/media_perception_api_delegate_chromeos.cc",
        "api/media_perception_private/media_perception_api_delegate_chromeos.h",
        "api/messaging/native_message_host_chromeos.cc",
        "api/networking_private/networking_private_ui_delegate_chromeos.cc",
        "api/networking_private/networking_private_ui_delegate_chromeos.h",
        "api/settings_private/chromeos_resolve_time_zone_by_geolocation_method_short.cc",
        "api/settings_private/chromeos_resolve_time_zone_by_geolocation_method_short.h",
        "api/settings_private/chromeos_resolve_time_zone_by_geolocation_on_off.cc",
        "api/settings_private/chromeos_resolve_time_zone_by_geolocation_on_off.h",
        "api/settings_private/generated_time_zone_pref_base.cc",
        "api/settings_private/generated_time_zone_pref_base.h",
        "api/virtual_keyboard_private/chrome_virtual_keyboard_delegate.cc",
        "api/virtual_keyboard_private/chrome_virtual_keyboard_delegate.h",
        "chrome_kiosk_delegate_chromeos.cc",
        "extension_assets_manager_chromeos.cc",
        "extension_assets_manager_chromeos.h",
        "extension_garbage_collector_chromeos.cc",
        "extension_garbage_collector_chromeos.h",
        "updater/chromeos_extension_cache_delegate.cc",
        "updater/chromeos_extension_cache_delegate.h",
        "updater/extension_cache_impl.cc",
        "updater/extension_cache_impl.h",
        "updater/local_extension_cache.cc",
        "updater/local_extension_cache.h",
      ]

      if (use_dbus) {
        configs += [ "//build/config/linux/dbus" ]
      }

      deps += [
        "//ash",
        "//ash/constants",
        "//ash/keyboard/ui:resources_grit_grit",
        "//ash/public/cpp",
        "//ash/webui/camera_app_ui",
        "//ash/webui/camera_app_ui:mojo_bindings",
        "//ash/webui/file_manager/untrusted_resources:file_manager_untrusted_resources",
        "//ash/webui/resources:media_app_bundle_resources_grit",
        "//ash/webui/settings/public/constants:mojom",
        "//chrome/browser/ash/accessibility",
        "//chrome/browser/ash/account_manager",
        "//chrome/browser/ash/app_list",
        "//chrome/browser/ash/app_list/app_service",
        "//chrome/browser/ash/app_mode",
        "//chrome/browser/ash/app_mode/web_app",
        "//chrome/browser/ash/app_restore",
        "//chrome/browser/ash/arc",
        "//chrome/browser/ash/arc:arc_util",
        "//chrome/browser/ash/arc/accessibility",
        "//chrome/browser/ash/arc/extensions",
        "//chrome/browser/ash/arc/optin",
        "//chrome/browser/ash/attestation",
        "//chrome/browser/ash/boca/on_task",
        "//chrome/browser/ash/bruschetta",
        "//chrome/browser/ash/child_accounts",
        "//chrome/browser/ash/child_accounts/time_limits",
        "//chrome/browser/ash/crostini",
        "//chrome/browser/ash/crostini:crostini_installer_types_mojom",
        "//chrome/browser/ash/crostini/throttle",
        "//chrome/browser/ash/customization",
        "//chrome/browser/ash/drive",
        "//chrome/browser/ash/extensions",
        "//chrome/browser/ash/extensions/autotest_private",
        "//chrome/browser/ash/extensions/file_manager",
        "//chrome/browser/ash/extensions/speech",
        "//chrome/browser/ash/extensions/users_private",
        "//chrome/browser/ash/file_manager",
        "//chrome/browser/ash/file_system_provider",
        "//chrome/browser/ash/fileapi",
        "//chrome/browser/ash/guest_os",
        "//chrome/browser/ash/guest_os/public",
        "//chrome/browser/ash/input_method",
        "//chrome/browser/ash/login",
        "//chrome/browser/ash/login/app_mode",
        "//chrome/browser/ash/login/demo_mode",
        "//chrome/browser/ash/login/quick_unlock",
        "//chrome/browser/ash/login/session",
        "//chrome/browser/ash/net",
        "//chrome/browser/ash/ownership",
        "//chrome/browser/ash/platform_keys",
        "//chrome/browser/ash/plugin_vm",
        "//chrome/browser/ash/policy/core",
        "//chrome/browser/ash/policy/handlers",
        "//chrome/browser/ash/printing",
        "//chrome/browser/ash/profiles",
        "//chrome/browser/ash/remote_apps",
        "//chrome/browser/ash/settings",
        "//chrome/browser/ash/system_logs",
        "//chrome/browser/ash/system_web_apps/apps",
        "//chrome/browser/devtools",
        "//chrome/browser/nearby_sharing/common",
        "//chrome/browser/policy:system_features_disable_list",
        "//chrome/browser/ui/ash/keyboard",
        "//chrome/browser/ui/ash/login",
        "//chrome/browser/ui/ash/media_client",
        "//chrome/browser/ui/ash/shelf/app_service",
        "//chrome/browser/ui/ash/thumbnail_loader",
        "//chrome/browser/ui/webui/ash/settings/pages/a11y",
        "//chromeos/ash/components/attestation",
        "//chromeos/ash/components/browser_context_helper",
        "//chromeos/ash/components/cryptohome",
        "//chromeos/ash/components/dbus",
        "//chromeos/ash/components/dbus/attestation:attestation_proto",
        "//chromeos/ash/components/dbus/cicerone",
        "//chromeos/ash/components/dbus/cicerone:cicerone_proto",
        "//chromeos/ash/components/dbus/constants",
        "//chromeos/ash/components/dbus/cros_disks",
        "//chromeos/ash/components/dbus/cryptohome",
        "//chromeos/ash/components/dbus/image_burner",
        "//chromeos/ash/components/dbus/update_engine",
        "//chromeos/ash/components/disks",
        "//chromeos/ash/components/enhanced_network_tts",
        "//chromeos/ash/components/enhanced_network_tts/mojom",
        "//chromeos/ash/components/file_manager:constants",
        "//chromeos/ash/components/language_packs",
        "//chromeos/ash/components/language_packs/public/mojom",
        "//chromeos/ash/components/login/auth",
        "//chromeos/ash/components/login/login_state",
        "//chromeos/ash/components/network",
        "//chromeos/ash/components/osauth/public",
        "//chromeos/ash/components/policy/external_storage",
        "//chromeos/ash/components/proximity_auth",
        "//chromeos/ash/components/settings",
        "//chromeos/ash/components/system",
        "//chromeos/ash/components/tether",
        "//chromeos/ash/components/tpm",
        "//chromeos/ash/experiences/arc",
        "//chromeos/ash/experiences/arc:arc_app_constants",
        "//chromeos/ash/experiences/guest_os/virtual_machines",
        "//chromeos/ash/services/assistant/public/cpp",
        "//chromeos/ash/services/ime/public/mojom",
        "//chromeos/components/remote_apps/mojom",
        "//chromeos/process_proxy",
        "//chromeos/services/machine_learning/public/cpp",
        "//chromeos/services/machine_learning/public/mojom",
        "//chromeos/services/media_perception/public/mojom",
        "//chromeos/services/tts/public/mojom",
        "//chromeos/ui/base",
        "//chromeos/version",
        "//components/constrained_window",
        "//components/crash/content/browser/error_reporting",
        "//components/drive",
        "//components/user_manager",
        "//media/capture:capture_lib",
        "//media/capture/video/chromeos/mojom:cros_camera",
        "//remoting/host",
        "//third_party/protobuf:protobuf_lite",
        "//ui/accessibility",
        "//ui/base/ime/ash",
        "//ui/chromeos",
        "//ui/display/manager",
        "//ui/events/ash",
        "//ui/file_manager:file_manager_gen_resources",
        "//ui/file_manager:resources",
        "//ui/ozone",
        "//ui/views",
      ]

      allow_circular_includes_from += [
        "//chrome/browser/ash/accessibility",
        "//chrome/browser/ash/account_manager",
        "//chrome/browser/ash/attestation",
        "//chrome/browser/ash/app_list",
        "//chrome/browser/ash/app_list/app_service",
        "//chrome/browser/ash/app_mode",
        "//chrome/browser/ash/app_mode/web_app",
        "//chrome/browser/ash/app_restore",
        "//chrome/browser/ash/arc",
        "//chrome/browser/ash/arc/optin",
        "//chrome/browser/ash/bruschetta",
        "//chrome/browser/ash/child_accounts",
        "//chrome/browser/ash/child_accounts/time_limits",
        "//chrome/browser/ash/crostini",
        "//chrome/browser/ash/customization",
        "//chrome/browser/ash/drive",
        "//chrome/browser/ash/extensions",
        "//chrome/browser/ash/extensions/autotest_private",
        "//chrome/browser/ash/extensions/file_manager",
        "//chrome/browser/ash/extensions/speech",
        "//chrome/browser/ash/extensions/users_private",
        "//chrome/browser/ash/file_manager",
        "//chrome/browser/ash/file_system_provider",
        "//chrome/browser/ash/fileapi",
        "//chrome/browser/ash/guest_os",
        "//chrome/browser/ash/guest_os/public",
        "//chrome/browser/ash/input_method",
        "//chrome/browser/ash/login",
        "//chrome/browser/ash/login/app_mode",
        "//chrome/browser/ash/login/demo_mode",
        "//chrome/browser/ash/login/quick_unlock",
        "//chrome/browser/ash/login/session",
        "//chrome/browser/ash/net",
        "//chrome/browser/ash/platform_keys",
        "//chrome/browser/ash/policy/core",
        "//chrome/browser/ash/policy/handlers",
        "//chrome/browser/ash/system_web_apps/apps",
        "//chrome/browser/ash/system_logs",
        "//chrome/browser/ui/ash/login",
        "//chrome/browser/ui/ash/shelf/app_service",
        "//chrome/browser/ui/ash/thumbnail_loader",
        "//chrome/browser/ui/webui/ash/settings/pages/a11y",
      ]

      if (is_cfm) {
        deps += [
          "//chrome/browser/ash/chromebox_for_meetings/meet_browser",
          "//chrome/browser/ash/chromebox_for_meetings/xu_camera",
          "//chromeos/ash/components/chromebox_for_meetings",
        ]
      }
    }

    if (is_mac) {
      sources += [
        "api/enterprise_reporting_private/keychain_data_helper_mac.cc",
        "api/enterprise_reporting_private/keychain_data_helper_mac.h",
        "api/image_writer_private/removable_storage_provider_mac.cc",
        "system_display/display_info_provider_mac.cc",
        "system_display/display_info_provider_mac.h",
      ]
    }

    if (is_linux) {
      sources +=
          [ "api/image_writer_private/removable_storage_provider_linux.cc" ]
    }

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

      if (use_dbus) {
        deps += [ "//dbus" ]
      }
      if (use_udev) {
        deps += [ "//device/udev_linux" ]
      }
    }

    if (is_win) {
      sources += [
        "api/image_writer_private/removable_storage_provider_win.cc",
        "api/messaging/launch_context_win.cc",
        "external_registry_loader_win.cc",
        "external_registry_loader_win.h",
        "system_display/display_info_provider_win.cc",
        "system_display/display_info_provider_win.h",
      ]
      deps += [
        "//components/app_launch_prefetch",
        "//components/device_signals/core/common/win",
        "//third_party/iaccessible2",
        "//third_party/isimpledom",
      ]
      libs = [
        "setupapi.lib",
        "propsys.lib",
      ]
    } else if (use_aura && !is_chromeos) {
    if (is_arkweb) {
      import("//arkweb/chromium_ext/chromium_ext.gni")
      sources += arkweb_chrome_browser_extensions_system_display_sources
    } else {
      sources += [
        "system_display/display_info_provider_aura.cc",
        "system_display/display_info_provider_aura.h",
      ]
    }
  }

  if (is_ohos) {
    sources += [
      "//arkweb/chromium_ext/chrome/browser/extensions/api/image_writer_private/removable_storage_provider_ohos.cc",
    ]
  }

    if (enable_plugins) {
      sources += [
        "plugin_manager.cc",
        "plugin_manager.h",
      ]
    }

    if (enable_printing && (is_win || is_mac || is_linux || is_chromeos)) {
      # TODO(crbug.com/40183776)  Replace this with more accurate dependency
      # once //chrome/browser/printing build is able to be cleanly targeted.
      deps += [ "//chrome/services/printing/public/mojom" ]
    }

    if (enable_pdf) {
      deps += [
        "//chrome/browser/pdf",
        "//components/pdf/browser",
        "//components/pdf/common:util",
        "//pdf:buildflags",
        "//pdf:features",
      ]
    }

    if (enable_rlz_support) {
      deps += [ "//rlz:rlz_lib" ]
    }

    if (toolkit_views) {
      deps += [ "//ui/views" ]
    }

    if (use_aura) {
      deps += [
        "//chrome/browser/ui/aura/accessibility",
        "//ui/aura",
      ]
    }

    if (enterprise_data_controls) {
      deps += [
        "//components/enterprise/buildflags",
        "//components/enterprise/data_controls/core/browser",
      ]
    }

    if (arkweb_arkweb_extensions) {
      sources += arkweb_ui_views_extension_sources
    }

    if (arkweb_arkweb_extensions) {
      import("//arkweb/chromium_ext/chrome/browser/extensions/api/declarative_content/arkweb_extension_declarative_content_ext.gni")
      sources += arkweb_extensions_declarative_content_ext.sources
      sources -= arkweb_extensions_declarative_content_ext.sources_del
      deps += arkweb_extensions_declarative_content_ext.deps
    }

    if (enable_glic) {
      deps += [ "//chrome/browser/glic" ]
    }

    if (!is_android && !is_chromeos) {
      deps += [ "//chrome/browser/ui/toasts" ]
    }
  }  # if (enable_extensions)

  if (enable_platform_apps) {
    sources += [
      "api/tabs/app_base_window.cc",
      "api/tabs/app_base_window.h",
      "api/tabs/app_window_controller.cc",
      "api/tabs/app_window_controller.h",
      "api/tabs/app_window_helper.cc",
      "api/tabs/app_window_helper.h",
    ]
  }
}

proto_library("cws_item_service_proto") {
  sources = [ "cws_item_service.proto" ]
}

static_library("test_support") {
  testonly = true

  sources = [
    "chrome_extension_test_notification_observer.cc",
    "chrome_extension_test_notification_observer.h",
    "chrome_test_extension_loader.cc",
    "chrome_test_extension_loader.h",
    "extension_action_test_util.cc",
    "extension_action_test_util.h",
    "extension_management_test_util.cc",
    "extension_management_test_util.h",
    "external_testing_loader.cc",
    "external_testing_loader.h",
    "fake_crx_installer.cc",
    "fake_crx_installer.h",
    "load_error_waiter.cc",
    "load_error_waiter.h",
    "mock_extension_special_storage_policy.cc",
    "mock_extension_special_storage_policy.h",
    "mock_window_controller_list_observer.cc",
    "mock_window_controller_list_observer.h",
    "scoped_test_mv2_enabler.cc",
    "scoped_test_mv2_enabler.h",
    "signin_test_util.cc",
    "signin_test_util.h",
    "test_extension_system.cc",
    "test_extension_system.h",
  ]

  deps = [
    "//base",
    "//chrome/browser",
    "//chrome/browser:test_support",
    "//chrome/browser/extensions",
    "//chrome/browser/extensions:external_loader",
    "//chrome/browser/tab_group_sync:factories",
    "//chrome/browser/ui/toolbar",
    "//components/crx_file",
    "//components/policy/core/common:test_support",
    "//components/safe_browsing/core/browser/db:database_manager",
    "//components/services/unzip:in_process",
    "//components/services/unzip/content",
    "//components/sessions",
    "//components/signin/public/identity_manager:test_support",
    "//components/sync:test_support",
    "//components/value_store:test_support",
    "//content/test:test_support",
    "//extensions:test_support",
    "//services/data_decoder/public/cpp:test_support",
    "//testing/gmock",
  ]

  if (enable_extensions) {
    sources += [
      "api/messaging/native_messaging_test_util.cc",
      "api/messaging/native_messaging_test_util.h",
      "api/passwords_private/test_passwords_private_delegate.cc",
      "api/passwords_private/test_passwords_private_delegate.h",
      "menu_manager_test_observer.cc",
      "menu_manager_test_observer.h",
      "mock_crx_installer.cc",
      "mock_crx_installer.h",
      "test_extension_service.cc",
      "test_extension_service.h",
    ]

    deps += [
      ":extensions",
      "//base",
      "//chrome/browser",
      "//chrome/browser/lifetime:termination_notification",
      "//chrome/browser/profiles:profile",
      "//chrome/browser/ui",
      "//chrome/browser/ui/tabs:tab_strip",
      "//components/crx_file",
      "//components/safe_browsing/core/browser/db:v4_test_util",
      "//content/public/browser",
      "//extensions:test_support",
      "//extensions/browser",
      "//extensions/browser:test_support",
    ]

    if (is_chromeos) {
      sources += [
        "api/document_scan/document_scan_test_utils.cc",
        "api/document_scan/document_scan_test_utils.h",
      ]

      deps += [
        "//chromeos/ash/components/dbus/lorgnette_manager:lorgnette_proto",
        "//components/user_manager:test_support",
      ]
    }
  }
}

if (enable_extensions) {
  fuzzer_test("extension_management_internal_fuzzer") {
    sources = [ "extension_management_internal_fuzzer.cc" ]
    deps = [
      ":extensions",
      "//base",
      "//third_party/icu/fuzzers:fuzzer_support",

      # While //c/b/extensions should've been sufficient, there are cyclic
      # dependencies that require us linking against the whole //c/b.
      "//chrome/browser",

      # Pull test-specific stubs for symbols needed by //c/b.
      "//chrome/test:test_support",
    ]
  }
}  # if (enable_extensions)

# ChromeExtensionsBrowserClient.
source_set("chrome_extensions_browser_client") {
  sources = [
    "chrome_extensions_browser_client.cc",
    "chrome_extensions_browser_client.h",
  ]

  deps = [
    "//chrome/browser/app_mode",
    "//chrome/browser/content_settings:content_settings_factory",
    "//chrome/browser/extensions",
    "//chrome/browser/media/webrtc",
    "//chrome/browser/prefetch",
    "//chrome/browser/profiles/keep_alive",
    "//chrome/browser/safe_browsing",
    "//chrome/browser/task_manager",
    "//chrome/browser/ui",
    "//chrome/browser/usb",
    "//components/content_settings/core/browser",
    "//components/embedder_support:user_agent",
    "//components/privacy_sandbox:privacy_sandbox_prefs",
    "//components/proxy_config",
    "//components/sessions",
    "//components/update_client",
    "//extensions/browser/api/content_settings",
    "//extensions/browser/updater",
    "//extensions/browser/updater:keepalive",
  ]

  if (enable_desktop_android_extensions) {
    sources += [ "chrome_extensions_browser_client_android.cc" ]

    deps += [
      "//chrome/browser:browser_process",
      "//chrome/browser/extensions",
      "//chrome/browser/extensions/api/runtime",
      "//chrome/browser/profiles",
      "//chrome/common",
      "//components/signin/core/browser",
      "//components/update_client",
      "//components/version_info",
      "//extensions/browser",
      "//extensions/browser/kiosk",
    ]
  }

  if (enable_extensions) {
    sources += [ "chrome_extensions_browser_client_non_android.cc" ]

    deps += [
      "//chrome/browser:browser_process",
      "//chrome/browser/custom_handlers",
      "//chrome/browser/extensions",
      "//chrome/browser/extensions/api/runtime",
      "//chrome/browser/web_applications",
      "//components/webapps/isolated_web_apps",
    ]

    if (is_chromeos) {
      deps += [
        "//chrome/browser/ash/profiles",
        "//chrome/browser/chromeos/policy/dlp",
        "//chromeos/ash/components/demo_mode",
        "//chromeos/components/mgs",
      ]
    }
  }

  # TODO(crbug.com/417279245): Add extensions safe browsing to desktop Android,
  # then enable this for safe_browsing_mode == 2 as well.
  if (safe_browsing_mode == 1) {
    sources += [
      "chrome_safe_browsing_delegate.cc",
      "chrome_safe_browsing_delegate.h",
    ]

    deps += [
      "//chrome/browser/safe_browsing",
      "//components/safe_browsing/core/common:features",
    ]
  }
}

if (is_android) {
  java_cpp_enum("extension_context_menu_model_enums") {
    sources = [ "extension_context_menu_model.h" ]
  }
}