blob: a12f665f77b695ea614d75dea69691d0b0b501a3 [file] [log] [blame]
# Copyright 2021 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
assert(is_win || is_mac || is_linux || is_chromeos || is_android)
import("//chrome/common/features.gni")
# This is the public interface for tabs in a desktop browser. Most features in
# //chrome/browser depend on this interface, and thus to prevent circular
# dependencies this interface should not depend on anything else in //chrome.
source_set("tabs_public") {
public = [
"public/tab_dialog_manager.h",
"public/tab_features.h",
"tab_network_state.h",
]
sources = [ "tab_network_state.cc" ]
public_deps = [
"//base",
"//chrome/common:buildflags",
"//components/tab_groups",
"//components/tabs:public",
]
deps = [
"//content/public/browser",
"//ui/base/unowned_user_data",
]
}
# These enums should not need to depend on chrome/browser/ui. They have been
# broken out of the chrome/browser/ui build file into a separate target to
# prevent a circular dependency between mojo targets that chrome/browser/ui
# depends on which have these enums in their dependency chain.
source_set("tab_enums") {
sources = [ "tab_enums.h" ]
}
# A common interface for operating on tabs for use by both desktop and android.
# This is temporary until the tabstrip api is implemented on both platforms.
source_set("tab_list_interface") {
sources = [
"tab_list_interface.h",
"tab_list_interface_observer.h",
]
deps = [
"//build:android_buildflags",
"//components/tab_groups",
"//components/tabs:public",
"//url",
]
}
if (!is_android) {
source_set("features") {
sources = [
"features.cc",
"features.h",
]
public_deps = [ "//base" ]
deps = [ "//chrome/browser/ui:ui_features" ]
}
source_set("tab_menu") {
sources = [
"tab_menu_model.h",
"tab_menu_model_delegate.h",
"tab_menu_model_factory.h",
]
public_deps = [
"//base",
"//ui/base/interaction",
"//ui/menus",
]
}
source_set("tab_list_bridge") {
sources = [
"tab_list_bridge.cc",
"tab_list_bridge.h",
]
public_deps = [
":tab_list_interface",
":tab_strip",
"//base",
"//chrome/browser/ui/browser_window",
"//ui/base/unowned_user_data",
]
}
source_set("tab_menu_impl") {
public_deps = [ "//chrome/browser:browser_public_dependencies" ]
sources = [
"tab_menu_model.cc",
"tab_menu_model_factory.cc",
]
deps = [
":tab_menu",
":tab_model",
":tab_strip",
":tabs",
"//chrome/app/vector_icons",
"//chrome/browser/commerce",
"//chrome/browser/profiles:profile",
"//chrome/browser/send_tab_to_self",
"//chrome/browser/ui:ui_features",
"//chrome/browser/ui/tabs/organization",
"//chrome/browser/ui/web_applications",
"//chrome/browser/user_education",
"//components/commerce/core:commerce_constants",
"//components/commerce/core:feature_list",
"//components/feed:feature_list",
]
if (enable_glic) {
deps += [ "//chrome/browser/glic" ]
}
# TODO(crbug.com/40031409): Fix code that adds exit-time destructors and
# enable the diagnostic by removing this line.
configs += [ "//build/config/compiler:no_exit_time_destructors" ]
}
source_set("tab_group") {
sources = [
"shared_tab_group_version_upgrade_modal.h",
"tab_group_deletion_dialog_controller.h",
"tab_group_desktop.h",
"tab_group_features.h",
"tab_group_model.h",
"tab_group_theme.h",
]
deps = [ "//ui/views" ]
public_deps = [
":tab_strip_model_observer",
"//base",
"//components/tab_groups",
"//ui/color:color_headers",
"//ui/gfx/range",
]
}
source_set("tab_group_impl") {
public_deps = [ "//chrome/browser:browser_public_dependencies" ]
sources = [
"shared_tab_group_version_upgrade_modal.cc",
"tab_group_deletion_dialog_controller.cc",
"tab_group_desktop.cc",
"tab_group_features.cc",
"tab_group_model.cc",
"tab_group_theme.cc",
]
deps = [
":tab_group",
":tab_model",
":tab_strip_model_observer",
":tabs",
"//chrome/browser/favicon",
"//chrome/browser/profiles:profile",
"//chrome/browser/signin",
"//chrome/browser/tab_group_sync:factories",
"//chrome/browser/themes",
"//chrome/browser/ui:browser_element_identifiers",
"//chrome/browser/ui:browser_navigator_params_headers",
"//chrome/browser/ui:ui_features",
"//chrome/browser/ui/browser_window",
"//chrome/browser/ui/color:color_headers",
"//chrome/browser/ui/tabs:tab_strip",
"//chrome/browser/ui/tabs/saved_tab_groups",
"//chrome/browser/ui/toasts",
"//chrome/browser/ui/toasts/api:toasts",
# TODO(370883612): depends on //chrome/browser/ui/tabs instead.
"//components/saved_tab_groups/internal:tab_group_sync_bridge",
"//components/tab_groups",
]
}
source_set("tab_model") {
sources = [
"existing_base_sub_menu_model.h",
"existing_comparison_table_sub_menu_model.h",
"existing_tab_group_sub_menu_model.h",
"existing_window_sub_menu_model.h",
"recent_tabs_sub_menu_model.h",
"split_tab_menu_model.h",
"split_tab_swap_menu_model.h",
"tab_model.h",
]
deps = [ "//ui/base/unowned_user_data" ]
public_deps = [
":tab_strip_model_observer",
":tabs",
":tabs_public",
"//base",
"//components/back_forward_cache",
"//components/commerce/core/product_specifications",
"//components/constrained_window",
"//components/favicon/core",
"//components/sessions",
"//components/sync_sessions",
"//components/tab_groups",
"//components/web_modal",
"//content/public/browser",
"//ui/base",
"//ui/menus",
]
if (is_chromeos) {
sources += [ "existing_window_sub_menu_model_chromeos.h" ]
}
}
source_set("tab_model_impl") {
public_deps = [ "//chrome/browser:browser_public_dependencies" ]
sources = [
"existing_base_sub_menu_model.cc",
"existing_comparison_table_sub_menu_model.cc",
"existing_tab_group_sub_menu_model.cc",
"existing_window_sub_menu_model.cc",
"split_tab_menu_model.cc",
"split_tab_swap_menu_model.cc",
"tab_model.cc",
]
deps = [
":tab_group",
":tab_menu",
":tab_model",
":tab_strip",
":tabs",
"//chrome/app/vector_icons",
"//chrome/browser/commerce",
"//chrome/browser/feedback",
"//chrome/browser/profiles:profile",
"//chrome/browser/ui:ui_features",
"//chrome/browser/ui/browser_window",
"//chrome/browser/ui/commerce",
"//chrome/browser/ui/toasts",
"//components/commerce/core/product_specifications",
"//components/tab_groups",
]
if (is_chromeos) {
sources += [ "existing_window_sub_menu_model_chromeos.cc" ]
deps += [ "//chromeos/ui/wm" ]
}
}
source_set("tab_strip") {
sources = [
"tab_strip_model.h",
"tab_strip_model_delegate.h",
"tab_strip_model_selection_adapter.h",
"tab_strip_model_selection_state.h",
"tab_strip_model_stats_recorder.h",
"tab_strip_prefs.h",
"tab_strip_scrubbing_metrics.h",
"tab_strip_user_gesture_details.h",
]
public_deps = [
":tab_group",
":tab_model",
":tab_strip_model_observer",
":tabs",
"//base",
"//components/sessions:session_id",
"//components/tab_groups",
"//ui/base",
]
}
source_set("tab_strip_impl") {
public_deps = [ "//chrome/browser:browser_public_dependencies" ]
sources = [
"tab_strip_model.cc",
"tab_strip_model_delegate.cc",
"tab_strip_model_selection_adapter.cc",
"tab_strip_model_selection_state.cc",
"tab_strip_model_stats_recorder.cc",
"tab_strip_prefs.cc",
"tab_strip_scrubbing_metrics.cc",
]
deps = [
":tab_group",
":tab_model",
":tab_strip",
":tab_strip_model_observer",
":tabs",
"//chrome/app:command_ids",
"//chrome/browser/commerce",
"//chrome/browser/content_settings:content_settings_factory",
"//chrome/browser/extensions",
"//chrome/browser/profiles:profile",
"//chrome/browser/reading_list",
"//chrome/browser/ui:browser_list",
"//chrome/browser/ui:browser_tab_strip",
"//chrome/browser/ui:ui_features",
"//chrome/browser/ui/browser_window",
"//chrome/browser/ui/commerce",
"//chrome/browser/ui/send_tab_to_self",
"//chrome/browser/ui/tabs/organization",
"//chrome/browser/ui/thumbnails",
"//chrome/browser/ui/user_education",
"//chrome/browser/ui/web_applications",
"//chrome/browser/ui/web_applications:launch_utils",
"//chrome/browser/web_applications",
"//components/commerce/core:utils",
"//components/content_settings/core/browser",
"//components/feature_engagement/public",
"//components/pref_registry",
"//components/reading_list/core",
"//components/tab_groups",
"//components/web_modal",
"//components/webapps/common",
]
if (enable_glic) {
deps += [ "//chrome/browser/glic" ]
}
# TODO(crbug.com/40031409): Fix code that adds exit-time destructors and
# enable the diagnostic by removing this line.
configs += [ "//build/config/compiler:no_exit_time_destructors" ]
}
source_set("glic") {
sources = [
"glic_nudge_controller.h",
"glic_nudge_delegate.h",
]
public_deps = [
"//base",
"//chrome/browser/actor/ui",
"//components/keyed_service/core",
"//ui/base/unowned_user_data",
]
if (enable_glic) {
sources += [
"glic_actor_task_icon_controller.h",
"glic_actor_task_icon_manager.h",
"glic_actor_task_icon_manager_factory.h",
]
public_deps += [
"//chrome/browser/actor:types",
"//chrome/browser/glic",
"//chrome/browser/glic:mojo_bindings",
]
}
}
source_set("glic_impl") {
sources = [
"glic_nudge_controller.cc",
"glic_nudge_delegate.cc",
]
deps = [
":glic",
"//base",
"//chrome/browser/actor",
"//chrome/browser/profiles:profile",
"//chrome/browser/ui/browser_window",
"//chrome/common:buildflags",
"//chrome/common:chrome_features",
"//components/prefs",
"//content/public/browser",
]
if (enable_glic) {
sources += [
"glic_actor_task_icon_controller.cc",
"glic_actor_task_icon_manager.cc",
"glic_actor_task_icon_manager_factory.cc",
]
deps += [ "//chrome/browser/glic" ]
}
}
source_set("tabs") {
sources = [
"contents_observing_tab_feature.h",
"features.h",
"hover_tab_selector.h",
"new_tab_grouping_user_data.h",
"pinned_tab_codec.h",
"pinned_tab_service.h",
"pinned_tab_service_factory.h",
"split_tab_highlight_controller.h",
"split_tab_highlight_delegate.h",
"split_tab_metrics.h",
"split_tab_util.h",
"tab_creation_metrics_controller.h",
"tab_metrics_provider.h",
"tab_renderer_data.h",
"tab_style.h",
"tab_types.h",
"tab_utils.h",
"vertical_tab_strip_state.h",
"vertical_tab_strip_state_controller.h",
]
if (is_win || is_mac || is_linux || is_chromeos) {
sources += [ "inactive_window_mouse_event_controller.h" ]
}
public_deps = [
":features",
":tab_enums",
":tab_group",
":tab_strip_model_observer",
":tabs_public",
"//base",
"//chrome/browser/profiles:profile",
"//chrome/browser/ui:browser_list",
"//chrome/browser/ui:layout_constants",
"//chrome/browser/ui/color:color_headers",
"//chrome/browser/ui/omnibox",
"//chrome/browser/ui/startup:startup_tab",
"//chrome/browser/ui/views/permissions/chip",
"//components/collaboration/public",
"//components/keyed_service/core",
"//components/tabs:public",
"//content/public/browser",
"//skia",
"//ui/base",
"//ui/color:color_headers",
"//ui/gfx",
"//ui/gfx:color_utils",
"//ui/gfx/geometry",
"//ui/menus",
"//url",
]
allow_circular_includes_from = [ ":tab_group" ]
}
source_set("impl") {
public_deps = [ "//chrome/browser:browser_public_dependencies" ]
sources = [
"contents_observing_tab_feature.cc",
"hover_tab_selector.cc",
"pinned_tab_codec.cc",
"pinned_tab_service.cc",
"pinned_tab_service_factory.cc",
"recent_tabs_sub_menu_model.cc",
"split_tab_highlight_controller.cc",
"split_tab_highlight_delegate.cc",
"split_tab_metrics.cc",
"split_tab_util.cc",
"tab_creation_metrics_controller.cc",
"tab_dialog_manager.cc",
"tab_features.cc",
"tab_metrics_provider.cc",
"tab_renderer_data.cc",
"tab_style.cc",
"tab_utils.cc",
"vertical_tab_strip_state_controller.cc",
]
if (is_win || is_mac || is_linux || is_chromeos) {
sources += [ "inactive_window_mouse_event_controller.cc" ]
}
deps = [
":tab_group",
":tab_model",
":tab_strip",
":tabs",
"//chrome/app:command_ids",
"//chrome/app/vector_icons",
"//chrome/browser/actor",
"//chrome/browser/actor/ui",
"//chrome/browser/commerce",
"//chrome/browser/content_settings:content_settings_factory",
"//chrome/browser/contextual_cueing",
"//chrome/browser/favicon",
"//chrome/browser/fingerprinting_protection",
"//chrome/browser/image_fetcher",
"//chrome/browser/media/webrtc",
"//chrome/browser/privacy_sandbox/incognito:tab_observer",
"//chrome/browser/profiles",
"//chrome/browser/profiles:profile",
"//chrome/browser/search",
"//chrome/browser/sessions",
"//chrome/browser/signin",
"//chrome/browser/sync",
"//chrome/browser/sync:factories",
"//chrome/browser/tab_group_sync:factories",
"//chrome/browser/task_manager",
"//chrome/browser/themes",
"//chrome/browser/ui:browser_list",
"//chrome/browser/ui:layout_constants",
"//chrome/browser/ui:ui_features",
"//chrome/browser/ui/autofill",
"//chrome/browser/ui/browser_window",
"//chrome/browser/ui/commerce",
"//chrome/browser/ui/interaction",
"//chrome/browser/ui/lens",
"//chrome/browser/ui/performance_controls",
"//chrome/browser/ui/tabs/alert:tab_alert",
"//chrome/browser/ui/tabs/saved_tab_groups",
"//chrome/browser/ui/thumbnails",
"//chrome/browser/ui/toolbar",
"//chrome/browser/ui/toolbar/pinned_toolbar",
"//chrome/browser/ui/views/intent_picker:intent_picker_page_action",
"//chrome/browser/ui/views/location_bar",
"//chrome/browser/ui/views/page_action",
"//chrome/browser/ui/views/page_info",
"//chrome/browser/ui/views/side_panel",
"//chrome/browser/ui/views/toolbar",
"//chrome/browser/ui/web_applications",
"//chrome/browser/ui/webui:webui_util",
"//chrome/browser/vr",
"//chrome/browser/web_applications",
"//components/browsing_topics",
"//components/content_settings/core/browser",
"//components/favicon/content",
"//components/favicon/core",
"//components/fingerprinting_protection_filter/common:features",
"//components/fingerprinting_protection_filter/interventions/browser",
"//components/fingerprinting_protection_filter/interventions/common:features",
"//components/image_fetcher/core",
"//components/ip_protection/common:ip_protection_status",
"//components/lens",
"//components/metrics:content",
"//components/passage_embeddings",
"//components/performance_manager",
"//components/permissions",
"//components/pref_registry",
"//components/security_interstitials/content:security_interstitial_page",
"//components/sessions",
"//components/sync_sessions",
"//components/tab_groups",
"//components/tabs",
"//components/wallet/core/common:features",
"//net",
"//ui/base/unowned_user_data",
"//ui/webui",
]
if (use_ozone) {
deps += [ "//ui/ozone" ]
}
if (enable_glic) {
deps += [ "//chrome/browser/glic" ]
}
if (!is_android) {
deps += [ "//chrome/browser/ui/views/zoom" ]
}
if (is_win || is_mac || is_linux || is_chromeos) {
deps += [ "//chrome/browser/wallet" ]
}
}
# This is a separate component to avoid possible circular deps.
source_set("tab_strip_model_observer") {
sources = [
"tab_change_type.h",
"tab_strip_model_observer.h",
]
public_deps = [
"//base",
"//chrome/browser/ui/tabs:tabs_public",
"//components/sessions:session_id",
"//components/tab_groups",
"//ui/base",
]
}
source_set("tab_strip_model_observer_impl") {
sources = [ "tab_strip_model_observer.cc" ]
public_deps = [ "//chrome/browser:browser_public_dependencies" ]
deps = [
":tab_strip",
":tab_strip_model_observer",
"//base",
"//content/public/browser",
]
}
source_set("test_support") {
testonly = true
sources = [
"pinned_tab_test_utils.cc",
"pinned_tab_test_utils.h",
"tab_activity_simulator.cc",
"tab_activity_simulator.h",
"tab_strip_model_test_utils.cc",
"tab_strip_model_test_utils.h",
"tab_ukm_test_helper.cc",
"tab_ukm_test_helper.h",
"test_tab_strip_model_delegate.cc",
"test_tab_strip_model_delegate.h",
]
public_deps = [
"//chrome/browser/ui/startup:startup_tab",
"//components/ukm:test_support",
"//ui/base",
]
deps = [
":tab_strip",
":tabs_public",
"//base",
"//chrome/browser/extensions",
"//chrome/browser/profiles:profile",
"//chrome/browser/ui/tab_contents",
"//content/public/browser",
"//content/test:test_support",
"//services/metrics/public/cpp:metrics_cpp",
"//services/metrics/public/mojom",
"//testing/gtest",
]
}
source_set("browser_tests") {
testonly = true
defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ]
sources = [
"existing_base_sub_menu_model_browsertest.cc",
"existing_tab_group_sub_menu_model_browsertest.cc",
"existing_window_sub_menu_model_browsertest.cc",
"pinned_tab_codec_browsertest.cc",
"pinned_tab_service_browsertest.cc",
"recent_tabs_builder_test_helper.cc",
"recent_tabs_builder_test_helper.h",
"recent_tabs_sub_menu_model_browsertest.cc",
"tab_creation_metrics_controller_browsertest.cc",
"tab_dialog_manager_browsertest.cc",
"tab_list_bridge_browsertest.cc",
"tab_menu_model_browsertest.cc",
"tab_renderer_data_browsertest.cc",
"tab_strip_model_browsertest.cc",
]
deps = [
":tab_enums",
":tab_list_bridge",
":tab_menu",
":tab_strip",
":tab_strip_model_observer",
":tabs",
":test_support",
"//base",
"//base/test:test_support",
"//chrome/browser",
"//chrome/browser/policy:test_support",
"//chrome/browser/profiles:profile",
"//chrome/browser/profiles/keep_alive",
"//chrome/browser/sync",
"//chrome/browser/ui",
"//chrome/browser/ui:browser_list",
"//chrome/browser/ui:browser_navigator_params_headers",
"//chrome/browser/ui:ui_features",
"//chrome/browser/ui/browser_window",
"//chrome/browser/ui/performance_controls",
"//chrome/browser/ui/tabs/organization",
"//chrome/browser/ui/tabs/saved_tab_groups",
"//chrome/browser/ui/thumbnails",
"//chrome/browser/web_applications",
"//chrome/browser/web_applications:prevent_close_test_support",
"//chrome/browser/web_applications:web_applications_test_support",
"//chrome/common:chrome_features",
"//chrome/test:test_support",
"//chrome/test:test_support_ui",
"//components/commerce/core:account_checker_test_support",
"//components/commerce/core:feature_list",
"//components/commerce/core:shopping_service",
"//components/commerce/core:shopping_service_test_support",
"//components/policy:generated",
"//components/policy:policy_code_generate",
"//components/policy/core/browser",
"//components/policy/core/common",
"//components/policy/core/common:test_support",
"//components/saved_tab_groups/public:features",
"//components/tab_groups",
"//components/webapps/common",
"//content/public/browser",
"//content/test:test_support",
"//ui/base:features",
"//ui/base:types",
"//url",
]
if (enable_glic) {
deps += [
"//chrome/browser/glic",
"//chrome/browser/glic/test_support",
]
}
}
source_set("interactive_ui_tests") {
testonly = true
defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ]
sources = [ "vertical_tab_strip_state_controller_interactive_uitest.cc" ]
if (!is_chromeos) {
# ChromeOS does not use desktop widgets.
sources += [ "tab_dialog_manager_desktop_widget_uitest.cc" ]
}
deps = [
":tabs",
":test_support",
"//base",
"//chrome/browser/ui:ui_features",
"//chrome/test:test_support",
"//chrome/test:test_support_ui",
"//content/public/browser",
"//content/test:test_support",
"//testing/gtest",
"//ui/base:types",
"//ui/views",
]
}
source_set("unit_tests") {
testonly = true
sources = [
"existing_comparison_table_sub_menu_model_unittest.cc",
"inactive_window_mouse_event_controller_unittest.cc",
"tab_collection_storage_unittest.cc",
"tab_collection_unittest.cc",
"tab_group_deletion_dialog_controller_unittest.cc",
"tab_iterator_unittest.cc",
"tab_menu_model_unittest.cc",
"tab_metrics_provider_unittest.cc",
"tab_model_unittest.cc",
"tab_strip_model_context_menu_unittest.cc",
"tab_strip_model_selection_adapter_unittest.cc",
"tab_strip_model_selection_state_unittest.cc",
"tab_strip_model_stats_recorder_unittest.cc",
"tab_strip_model_unittest.cc",
"vertical_tab_strip_state_controller_unittest.cc",
]
public_deps = [
":tab_strip",
"//base",
"//components/sessions:session_id",
"//components/tab_groups",
]
deps = [
":tab_enums",
":tab_group",
":tab_menu",
":tab_model",
":tabs",
":test_support",
"tab_strip_api:unit_tests",
"//base/test:test_support",
"//chrome/app:command_ids",
"//chrome/app:generated_resources",
"//chrome/browser",
"//chrome/browser/commerce",
"//chrome/browser/content_settings:content_settings_factory",
"//chrome/browser/extensions",
"//chrome/browser/optimization_guide",
"//chrome/browser/sync",
"//chrome/browser/ui",
"//chrome/browser/ui:browser_list",
"//chrome/browser/ui:ui_features",
"//chrome/browser/ui/performance_controls",
"//chrome/browser/ui/startup:startup_tab",
"//chrome/browser/ui/tab_contents",
"//chrome/browser/ui/tabs/alert:tab_alert",
"//chrome/browser/ui/thumbnails",
"//chrome/common:non_code_constants",
"//chrome/test:test_support",
"//components/commerce/core:account_checker_test_support",
"//components/commerce/core:feature_list",
"//components/commerce/core:shopping_service",
"//components/commerce/core:shopping_service_test_support",
"//components/content_settings/core/browser",
"//components/optimization_guide/core",
"//components/optimization_guide/core:features",
"//components/sessions",
"//components/sessions:test_support",
"//components/sync:test_support",
"//components/sync/base",
"//components/sync/engine",
"//components/sync/model",
"//components/sync/protocol",
"//components/sync/service",
"//components/sync_sessions",
"//components/tabs:test_support",
"//components/web_modal",
"//content/public/browser",
"//content/test:test_support",
"//skia",
"//testing/gmock",
"//testing/gtest",
"//ui/base",
"//ui/gfx",
"//ui/views",
"//url",
]
if (enable_glic) {
sources += [ "glic_actor_task_icon_manager_unittest.cc" ]
deps += [
"//chrome/browser/actor:test_support",
"//chrome/browser/glic",
"//chrome/browser/glic/test_support",
"//chrome/browser/ui/tabs:glic",
]
}
}
}