# Copyright 2015 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. import("//build/buildflag_header.gni") import("//build/config/ui.gni") import("//chromecast/chromecast.gni") import("//media/media_options.gni") import("//mojo/public/tools/bindings/mojom.gni") import("//testing/test.gni") import("//tools/grit/grit_rule.gni") if (is_android) { import("//build/config/android/rules.gni") } buildflag_header("browser_buildflags") { header = "browser_buildflags.h" flags = [ "ENABLE_CAST_AUDIO_MANAGER_MIXER=$enable_cast_audio_manager_mixer" ] } group("prefs") { public_deps = [ ":prefs_base" ] if (chromecast_branding == "public") { public_deps += [ ":prefs_simple" ] } } cast_source_set("prefs_base") { sources = [ "pref_service_helper.cc", "pref_service_helper.h", ] public_deps = [ "//components/prefs" ] deps = [ "//base", "//chromecast:chromecast_buildflags", "//chromecast/base", "//components/cdm/browser", ] } cast_source_set("prefs_simple") { sources = [ "pref_service_helper_simple.cc" ] public_deps = [ ":prefs_base" ] } cast_source_set("feature_list") { sources = [ "cast_feature_list_creator.cc", "cast_feature_list_creator.h", ] deps = [ ":prefs", "//base", "//chromecast/base", "//chromecast/browser/metrics", "//components/prefs", "//components/proxy_config", ] } cast_source_set("web_preferences") { sources = [ "cast_web_preferences.cc", "cast_web_preferences.h", ] deps = [ "//base", "//content/public/common", ] } cast_source_set("named_message_port_connector_cast") { sources = [ "named_message_port_connector_cast.cc", "named_message_port_connector_cast.h", ] deps = [ "//base", "//chromecast/browser:public", "//components/cast/message_port:message_port_cast", "//components/cast/named_message_port_connector", "//components/on_load_script_injector/browser", ] } group("browser") { public_deps = [ ":browser_base" ] } cast_source_set("browser_base") { sources = [ "application_media_capabilities.cc", "application_media_capabilities.h", "application_media_info_manager.cc", "application_media_info_manager.h", "bluetooth/cast_bluetooth_chooser.cc", "bluetooth/cast_bluetooth_chooser.h", "cast_browser_context.cc", "cast_browser_context.h", "cast_browser_interface_binders.cc", "cast_browser_interface_binders.h", "cast_browser_main_parts.cc", "cast_browser_main_parts.h", "cast_browser_process.cc", "cast_browser_process.h", "cast_content_browser_client.cc", "cast_content_browser_client.h", "cast_content_browser_client_receiver_bindings.cc", "cast_content_gesture_handler.cc", "cast_content_gesture_handler.h", "cast_download_manager_delegate.cc", "cast_download_manager_delegate.h", "cast_http_user_agent_settings.cc", "cast_http_user_agent_settings.h", "cast_media_blocker.cc", "cast_media_blocker.h", "cast_navigation_ui_data.cc", "cast_navigation_ui_data.h", "cast_network_contexts.cc", "cast_network_contexts.h", "cast_overlay_manifests.cc", "cast_overlay_manifests.h", "cast_permission_manager.cc", "cast_permission_manager.h", "cast_permission_user_data.cc", "cast_permission_user_data.h", "cast_quota_permission_context.cc", "cast_quota_permission_context.h", "cast_renderer_block_data.cc", "cast_renderer_block_data.h", "cast_session_id_map.cc", "cast_session_id_map.h", "cast_system_memory_pressure_evaluator_adjuster.cc", "cast_system_memory_pressure_evaluator_adjuster.h", "cast_web_contents_impl.cc", "cast_web_contents_impl.h", "cast_web_service.cc", "cast_web_service.h", "cast_web_view_default.cc", "cast_web_view_default.h", "cast_web_view_factory.cc", "cast_web_view_factory.h", "default_navigation_throttle.cc", "default_navigation_throttle.h", "devtools/cast_devtools_manager_delegate.cc", "devtools/cast_devtools_manager_delegate.h", "devtools/remote_debugging_server.cc", "devtools/remote_debugging_server.h", "general_audience_browsing_navigation_throttle.cc", "general_audience_browsing_navigation_throttle.h", "general_audience_browsing_service.cc", "general_audience_browsing_service.h", "lru_renderer_cache.cc", "lru_renderer_cache.h", "media/media_caps_impl.cc", "media/media_caps_impl.h", "media/supported_codec_finder.cc", "media/supported_codec_finder.h", "metrics/metrics_helper_impl.cc", "metrics/metrics_helper_impl.h", "renderer_prelauncher.cc", "renderer_prelauncher.h", "service/cast_service_simple.cc", "service/cast_service_simple.h", "service_connector.cc", "service_connector.h", "service_manager_connection.cc", "service_manager_connection.h", "service_manager_context.cc", "service_manager_context.h", "system_connector.cc", "system_connector.h", "webui/cast_resource_data_source.cc", "webui/cast_resource_data_source.h", "webui/cast_webui.cc", "webui/cast_webui.h", "webui/cast_webui_controller_factory.cc", "webui/cast_webui_controller_factory.h", "webui/cast_webui_message_handler.cc", "webui/cast_webui_message_handler.h", "webui/constants.cc", "webui/constants.h", ] public_deps = [ ":feature_list", ":prefs", ":public", "//chromecast/browser/metrics", "//chromecast/browser/mojom", "//chromecast/metrics", "//components/media_control/mojom", ] deps = [ ":browser_buildflags", ":named_message_port_connector_cast", ":web_preferences", "//base", "//base:i18n", "//base/util/memory_pressure", "//cc", "//chromecast:chromecast_buildflags", "//chromecast/activity", "//chromecast/app:cast_crash_client", "//chromecast/app:chromecast_settings", "//chromecast/app:resources", "//chromecast/base", "//chromecast/base:cast_sys_info_util", "//chromecast/base:cast_version", "//chromecast/bindings/public/mojom", "//chromecast/browser/bluetooth/public/mojom", "//chromecast/browser/general_audience_browsing/mojom", "//chromecast/browser/webui/mojom", "//chromecast/common", "//chromecast/common:queryable_data", "//chromecast/common/media", "//chromecast/common/mojom", "//chromecast/external_mojo/broker_service", "//chromecast/external_mojo/external_service_support:external_service", "//chromecast/graphics", "//chromecast/media", "//chromecast/media:libcast_media", "//chromecast/media/audio", "//chromecast/media/base:media_codec_support", "//chromecast/media/base:video_plane_controller", "//chromecast/media/cdm:cdm_origin_provider", "//chromecast/media/common:media_pipeline_backend_manager", "//chromecast/media/service", "//chromecast/media/service/mojom", "//chromecast/net", "//chromecast/net:connectivity_checker", "//chromecast/service", "//components/cast/message_port:message_port_cast", "//components/cdm/browser", "//components/download/public/common:public", "//components/media_control/browser", "//components/metrics", "//components/metrics:content", "//components/metrics:net", "//components/on_load_script_injector/browser", "//components/profile_metrics", "//components/variations/net", # TODO(gfhuang): Eliminate this dependency if ScreenInfoMetricsProvider # isn't needed. crbug.com/541577 "//components/metrics:ui", "//components/network_hints/browser", "//components/network_session_configurator/common", "//components/policy/core/browser", "//components/prefs", "//components/proxy_config", "//components/safe_search_api", "//components/safe_search_api:safe_search_client", "//components/viz/service", "//content/public/browser", "//content/public/common", "//device/bluetooth", "//gpu", "//ipc", "//media", "//media/gpu:buildflags", "//media/mojo/mojom:remoting", "//media/mojo/services", "//mojo/public/cpp/bindings", "//net", "//services/cert_verifier/public/mojom", "//services/media_session/public/mojom", "//services/metrics/public/cpp:metrics_cpp", "//services/network/public/mojom", "//services/service_manager", "//services/service_manager/public/cpp", "//third_party/blink/public/common", "//ui/base", "//ui/compositor", "//ui/display", "//ui/events", "//ui/events/devices", "//ui/gl", ] if (is_android) { sources += [ "android/cast_content_window_android.cc", "android/cast_content_window_android.h", "android/cast_metrics_helper_android.cc", "android/cast_web_service_android.cc", ] deps += [ ":jni_headers", "//components/embedder_support/android:view", ] } else { sources += [ "cast_display_configurator.cc", "cast_display_configurator.h", "cast_touch_device_manager.cc", "cast_touch_device_manager.h", ] deps += [ "//mojo/public/cpp/bindings", "//ui/aura", ] } if (is_linux || is_chromeos) { sources += [ "cast_system_memory_pressure_evaluator.cc", "cast_system_memory_pressure_evaluator.h", "memory_pressure_controller_impl.cc", "memory_pressure_controller_impl.h", ] deps += [ "//third_party/fontconfig" ] } if (use_aura) { sources += [ "cast_content_window_aura.cc", "cast_content_window_aura.h", "cast_web_service_aura.cc", "display_configurator_observer.cc", "display_configurator_observer.h", ] deps += [ "//chromecast/ui:media_control_ui", "//ui/views:views", ] if (!is_fuchsia) { sources += [ "devtools/cast_ui_devtools.cc", "devtools/cast_ui_devtools.h", ] deps += [ "//components/ui_devtools", "//components/ui_devtools/views", ] } } if (!is_fuchsia) { # TODO(crbug.com/1226159): Complete crash reporting integration on Fuchsia. deps += [ "//components/crash/content/browser", "//components/crash/core/app", ] # TODO(crbug.com/933142): Fuchsia needs its own methods to bridge with heap # profiling service deps += [ "//components/heap_profiling/multi_process", "//components/services/heap_profiling", "//components/services/heap_profiling/public/cpp", "//components/services/heap_profiling/public/mojom", ] } if (use_ozone) { deps += [ "//ui/ozone" ] } if (enable_external_mojo_services) { deps += [ "//chromecast/external_mojo/broker_service" ] } if (enable_chromecast_extensions) { sources += [ "cast_extension_message_filter.cc", "cast_extension_message_filter.h", "cast_extension_url_loader_factory.cc", "cast_extension_url_loader_factory.h", "extensions/api/accessibility_private/accessibility_extension_api.cc", "extensions/api/accessibility_private/accessibility_extension_api.h", "extensions/api/automation_internal/chromecast_automation_internal_api_delegate.cc", "extensions/api/automation_internal/chromecast_automation_internal_api_delegate.h", "extensions/api/bookmarks/bookmarks_api.cc", "extensions/api/bookmarks/bookmarks_api.h", "extensions/api/braille_display_private/braille_display_private_api.cc", "extensions/api/braille_display_private/braille_display_private_api.h", "extensions/api/command_line_private/command_line_private_api.cc", "extensions/api/command_line_private/command_line_private_api.h", "extensions/api/history/history_api.cc", "extensions/api/history/history_api.h", "extensions/api/i18n/i18n_api.cc", "extensions/api/i18n/i18n_api.h", "extensions/api/identity/identity_api.cc", "extensions/api/identity/identity_api.h", "extensions/api/login_state/login_state.cc", "extensions/api/login_state/login_state.h", "extensions/api/notifications/notifications_api.cc", "extensions/api/notifications/notifications_api.h", "extensions/api/settings_private/settings_private_api.cc", "extensions/api/settings_private/settings_private_api.h", "extensions/api/tabs/tabs_api.cc", "extensions/api/tabs/tabs_api.h", "extensions/api/tabs/tabs_constants.cc", "extensions/api/tabs/tabs_constants.h", "extensions/api/tts/tts_extension_api.cc", "extensions/api/tts/tts_extension_api.h", "extensions/api/tts/tts_extension_api_constants.cc", "extensions/api/tts/tts_extension_api_constants.h", "extensions/cast_extension_host_delegate.cc", "extensions/cast_extension_host_delegate.h", "extensions/cast_extension_system.cc", "extensions/cast_extension_system.h", "extensions/cast_extension_system_factory.cc", "extensions/cast_extension_system_factory.h", "extensions/cast_extension_web_contents_observer.cc", "extensions/cast_extension_web_contents_observer.h", "extensions/cast_extensions_api_client.cc", "extensions/cast_extensions_api_client.h", "extensions/cast_extensions_browser_api_provider.cc", "extensions/cast_extensions_browser_api_provider.h", "extensions/cast_extensions_browser_client.cc", "extensions/cast_extensions_browser_client.h", "extensions/cast_kiosk_delegate.cc", "extensions/cast_kiosk_delegate.h", "extensions/cast_prefs.cc", "extensions/cast_prefs.h", "webui/cast_extension_webui.cc", "webui/cast_extension_webui.h", ] if (use_aura) { sources += [ "accessibility/accessibility_manager.h", "accessibility/accessibility_manager_impl.cc", "accessibility/accessibility_manager_impl.h", "accessibility/accessibility_sound_player.h", "accessibility/accessibility_sound_proxy.cc", "accessibility/accessibility_sound_proxy.h", "accessibility/touch_exploration_controller.cc", "accessibility/touch_exploration_controller.h", "accessibility/touch_exploration_manager.cc", "accessibility/touch_exploration_manager.h", "ui/aura/accessibility/automation_manager_aura.cc", "ui/aura/accessibility/automation_manager_aura.h", "ui/aura/accessibility/ax_tree_source_aura.cc", "ui/aura/accessibility/ax_tree_source_aura.h", ] deps += [ "//build:chromeos_buildflags" ] } deps += [ "//chromecast/common/extensions_api:api", "//components/guest_view/browser", "//components/keyed_service/content", "//components/pref_registry", "//components/storage_monitor", "//components/user_prefs:user_prefs", "//components/version_info", "//components/zoom", "//extensions/browser", "//extensions/browser:core_api_provider", "//extensions/browser/api/messaging", "//extensions/browser/updater", "//extensions/common", "//extensions/common:mojom", "//extensions/common/api", "//google_apis:google_apis", "//ui/events:gesture_detection", "//ui/views:views", "//ui/wm/public:public", ] } else { sources += [ "webui/cast_webui_default.cc" ] } if ((is_linux || is_chromeos) && use_ozone) { sources += [ "exo/cast_wm_helper.cc", "exo/cast_wm_helper.h", "exo/wayland_server_controller.cc", "exo/wayland_server_controller.h", "webview/cast_app_controller.cc", "webview/cast_app_controller.h", "webview/cast_app_rpc_instance.cc", "webview/cast_app_rpc_instance.h", "webview/cast_content_window_embedded.cc", "webview/cast_content_window_embedded.h", "webview/cast_window_embedder.cc", "webview/cast_window_embedder.h", "webview/js_channel_service.cc", "webview/js_channel_service.h", "webview/platform_views_grpc_service.cc", "webview/platform_views_grpc_service.h", "webview/platform_views_rpc_instance.cc", "webview/platform_views_rpc_instance.h", "webview/web_content_controller.cc", "webview/web_content_controller.h", "webview/webview_browser_context.cc", "webview/webview_browser_context.h", "webview/webview_controller.cc", "webview/webview_controller.h", "webview/webview_input_method_observer.cc", "webview/webview_input_method_observer.h", "webview/webview_navigation_throttle.cc", "webview/webview_navigation_throttle.h", "webview/webview_rpc_instance.cc", "webview/webview_rpc_instance.h", "webview/webview_window_manager.cc", "webview/webview_window_manager.h", ] deps += [ ":base_types", ":web_contents_provider", "//chromecast/browser/webview/proto", "//chromecast/ui:back_gesture_router", "//components/exo", "//components/exo/wayland", "//content/public/browser", "//services/viz/privileged/mojom/compositing", "//third_party/grpc:grpc++", "//ui/base/dragdrop/mojom", "//ui/display/manager", ] } configs += [ "//media/audio:platform_config" ] if (chromecast_branding != "public") { deps += [ "//chromecast/internal/shell/browser:cast_content_browser_internal_manifest_overlay", "//chromecast/internal/shell/browser:cast_content_packaged_services_internal_manifest_overlay", ] defines = [ "USE_INTERNAL_OVERLAY_MANIFESTS=1" ] } } cast_source_set("simple_main_parts") { sources = [ "cast_browser_main_parts_simple.cc" ] public_deps = [ ":browser_base" ] } cast_source_set("simple_client") { sources = [ "cast_content_browser_client_simple.cc" ] public_deps = [ ":browser_base" ] deps = [ "//base" ] } cast_source_set("base_types") { public = [ "visibility_types.h", "web_types.h", ] sources = [ "web_types.cc" ] public_deps = [ "//chromecast/browser/webview/proto" ] } # Lightweight target for Cast interfaces that wrap //content/public/browser. # This target should only include interfaces which are required for unit tests. cast_source_set("public") { sources = [ "cast_content_window.cc", "cast_content_window.h", "cast_web_contents.cc", "cast_web_contents.h", "cast_web_view.cc", "cast_web_view.h", ] # Need to expose this so that internal public_configs are propagated. public_deps = [ ":base_types", "//chromecast/browser/mojom", "//chromecast/common/mojom", "//content/public/browser", ] deps = [ "//base", "//chromecast/bindings/public/mojom", "//chromecast/graphics", "//chromecast/ui:back_gesture_router", "//chromecast/ui/mojom", "//content/public/common", "//ui/events", "//url", ] } cast_source_set("test_support") { testonly = true sources = [ "test/cast_browser_test.cc", "test/cast_browser_test.h", "test/mock_cast_content_window_delegate.cc", "test/mock_cast_content_window_delegate.h", "test/mock_cast_web_view.cc", "test/mock_cast_web_view.h", ] public_deps = [ ":browser", "//content/test:test_support", ] deps = [ "//base", "//chromecast/base", "//components/prefs:test_support", "//content/public/browser", "//content/public/common", "//testing/gmock", "//testing/gtest", ] } mojom("test_interfaces") { testonly = true sources = [ "test_interfaces.test-mojom" ] } cast_source_set("browsertests") { testonly = true sources = [ "cast_content_gesture_handler_test.cc", "cast_media_blocker_browsertest.cc", "cast_web_contents_browsertest.cc", "renderer_prelauncher_test.cc", "test/cast_features_browsertest.cc", "test/cast_navigation_browsertest.cc", "webview/webview_browsertest.cc", ] defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ] deps = [ ":test_interfaces", ":test_support", "//base", "//chromecast:chromecast_buildflags", "//chromecast/base", "//chromecast/base:chromecast_switches", "//chromecast/base/metrics", "//chromecast/graphics:graphics", "//components/keyed_service/content", "//components/prefs", "//content/public/browser", "//content/test:test_support", "//media:test_support", "//net:test_support", "//services/service_manager/public/cpp", "//services/service_manager/public/mojom", ] if (use_aura) { deps += [ "//ui/aura" ] } data = [ "//chromecast/browser/test/data/", "//media/test/data/", ] } cast_source_set("unittests") { testonly = true sources = [ "application_media_info_manager_unittest.cc", "bluetooth/cast_bluetooth_chooser_unittest.cc", "cast_media_blocker_unittest.cc", "cast_resource_bundle_unittest.cc", "cast_session_id_map_unittest.cc", "devtools/cast_devtools_manager_delegate_unittest.cc", "lru_renderer_cache_test.cc", ] deps = [ ":browser", ":test_support", "//base", "//base/test:test_support", "//chromecast/base", "//chromecast/bindings/public/mojom", "//components/on_load_script_injector/browser", "//content/public/browser", "//content/test:test_support", "//net:test_support", "//services/network:test_support", "//testing/gmock", "//testing/gtest", "//third_party/blink/public/common", "//ui/base", "//ui/base:test_support", "//ui/events/devices:devices", "//ui/gl:test_support", ] if (!is_android) { sources += [ "cast_touch_device_manager_unittest.cc" ] } if (enable_chromecast_extensions && use_aura) { sources += [ "accessibility/touch_exploration_controller_unittest.cc" ] deps += [ "//ui/aura:test_support", "//ui/events:test_support", ] } if ((is_linux || is_chromeos) && use_ozone) { deps += [ "//chromecast/browser/webview:unittests" ] } } if (is_android) { generate_jni("jni_headers") { sources = [ "android/apk/src/org/chromium/chromecast/shell/CastContentWindowAndroid.java", "android/apk/src/org/chromium/chromecast/shell/CastCrashHandler.java", "android/apk/src/org/chromium/chromecast/shell/CastMetricsHelper.java", "android/apk/src/org/chromium/chromecast/shell/CastSysInfoAndroid.java", ] } java_cpp_enum("java_enums") { sources = [ "visibility_types.h" ] } } # Could be used in the internal build if the internal implementation won't be # included, for example, some unit tests. cast_source_set("simple_browser") { sources = [ "cast_browser_main_parts_simple.cc", "cast_content_browser_client_simple.cc", "pref_service_helper_simple.cc", ] deps = [ ":browser", ":prefs", "//chromecast/base:default_create_sys_info", ] } cast_source_set("web_contents_provider") { sources = [ "webview/web_contents_provider.h" ] deps = [ "//content/public/browser" ] }