diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-08-03 13:19:41 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-12-03 17:29:43 +0100 |
commit | 7eb6adb6cac7c604d4717bd3ab0f0e8cca452fe5 (patch) | |
tree | 5218647eee4c52fad271362896e49c11ef1a1658 | |
parent | 0199422d32f37be484483a523f7e88a3e1def4f2 (diff) | |
download | qtwebengine-chromium-7eb6adb6cac7c604d4717bd3ab0f0e8cca452fe5.tar.gz |
Bring enable_webrtc back
Returns the GN args and BUILDFLAG to disable WebRTC code
shrinking the Chromium binary by a 15%.
Reverting https://chromium-review.googlesource.com/1044220,
https://chromium-review.googlesource.com/1059408 and
fixes later bitrot.
Change-Id: Ic46c2832dbfacaeffa6a00a12a8a144cf0adf7f0
Reviewed-by: Michal Klocek <michal.klocek@qt.io>
80 files changed, 850 insertions, 205 deletions
diff --git a/chromium/chrome/browser/BUILD.gn b/chromium/chrome/browser/BUILD.gn index 348d5b4d745..6d344b1e3a7 100644 --- a/chromium/chrome/browser/BUILD.gn +++ b/chromium/chrome/browser/BUILD.gn @@ -25,6 +25,7 @@ import("//components/signin/features.gni") import("//components/spellcheck/spellcheck_build_features.gni") import("//device/vr/buildflags/buildflags.gni") import("//extensions/buildflags/buildflags.gni") +import("//media/media_options.gni") import("//net/features.gni") import("//pdf/features.gni") import("//ppapi/buildflags/buildflags.gni") @@ -699,62 +700,6 @@ static_library("browser") { "media/platform_verification_impl.h", "media/router/media_router_feature.cc", "media/router/media_router_feature.h", - "media/webrtc/audio_debug_recordings_handler.cc", - "media/webrtc/audio_debug_recordings_handler.h", - "media/webrtc/camera_pan_tilt_zoom_permission_context.cc", - "media/webrtc/camera_pan_tilt_zoom_permission_context.h", - "media/webrtc/desktop_media_list.h", - "media/webrtc/desktop_media_list_base.cc", - "media/webrtc/desktop_media_list_base.h", - "media/webrtc/desktop_media_picker.cc", - "media/webrtc/desktop_media_picker.h", - "media/webrtc/desktop_media_picker_factory.cc", - "media/webrtc/desktop_media_picker_factory.h", - "media/webrtc/desktop_media_picker_manager.cc", - "media/webrtc/desktop_media_picker_manager.h", - "media/webrtc/media_capture_devices_dispatcher.cc", - "media/webrtc/media_capture_devices_dispatcher.h", - "media/webrtc/media_stream_capture_indicator.cc", - "media/webrtc/media_stream_capture_indicator.h", - "media/webrtc/media_stream_device_permission_context.cc", - "media/webrtc/media_stream_device_permission_context.h", - "media/webrtc/media_stream_device_permissions.cc", - "media/webrtc/media_stream_device_permissions.h", - "media/webrtc/native_desktop_media_list.cc", - "media/webrtc/native_desktop_media_list.h", - "media/webrtc/permission_bubble_media_access_handler.cc", - "media/webrtc/permission_bubble_media_access_handler.h", - "media/webrtc/webrtc_event_log_history.cc", - "media/webrtc/webrtc_event_log_history.h", - "media/webrtc/webrtc_event_log_manager.cc", - "media/webrtc/webrtc_event_log_manager.h", - "media/webrtc/webrtc_event_log_manager_common.cc", - "media/webrtc/webrtc_event_log_manager_common.h", - "media/webrtc/webrtc_event_log_manager_keyed_service.cc", - "media/webrtc/webrtc_event_log_manager_keyed_service.h", - "media/webrtc/webrtc_event_log_manager_keyed_service_factory.cc", - "media/webrtc/webrtc_event_log_manager_keyed_service_factory.h", - "media/webrtc/webrtc_event_log_manager_local.cc", - "media/webrtc/webrtc_event_log_manager_local.h", - "media/webrtc/webrtc_event_log_manager_remote.cc", - "media/webrtc/webrtc_event_log_manager_remote.h", - "media/webrtc/webrtc_event_log_uploader.cc", - "media/webrtc/webrtc_event_log_uploader.h", - "media/webrtc/webrtc_log_buffer.cc", - "media/webrtc/webrtc_log_buffer.h", - "media/webrtc/webrtc_log_uploader.cc", - "media/webrtc/webrtc_log_uploader.h", - "media/webrtc/webrtc_log_util.cc", - "media/webrtc/webrtc_log_util.h", - "media/webrtc/webrtc_logging_controller.cc", - "media/webrtc/webrtc_logging_controller.h", - "media/webrtc/webrtc_rtp_dump_handler.cc", - "media/webrtc/webrtc_rtp_dump_handler.h", - "media/webrtc/webrtc_rtp_dump_writer.cc", - "media/webrtc/webrtc_rtp_dump_writer.h", - "media/webrtc/webrtc_text_log_handler.cc", - "media/webrtc/webrtc_text_log_handler.h", - "media/webrtc/window_icon_util.h", "memory/chrome_browser_main_extra_parts_memory.cc", "memory/chrome_browser_main_extra_parts_memory.h", "memory/enterprise_memory_limit_evaluator.cc", @@ -2174,9 +2119,6 @@ static_library("browser") { "//components/web_resource", "//components/webdata/common", "//components/webdata_services", - "//components/webrtc", - "//components/webrtc_logging/browser", - "//components/webrtc_logging/common", "//content/app/resources", "//content/public/browser", "//content/public/common", @@ -2209,7 +2151,6 @@ static_library("browser") { "//printing", "//printing/buildflags", "//rlz/buildflags", - "//services/audio/public/cpp", "//services/cert_verifier:lib", "//services/data_decoder/public/cpp", "//services/device/public/cpp:device_features", @@ -2249,7 +2190,6 @@ static_library("browser") { "//third_party/libyuv", "//third_party/metrics_proto", "//third_party/re2", - "//third_party/webrtc_overrides:webrtc_component", "//third_party/widevine/cdm:buildflags", "//third_party/widevine/cdm:headers", "//third_party/zlib", @@ -6091,6 +6031,78 @@ static_library("browser") { ] } + if (enable_webrtc) { + sources += [ + "media/webrtc/audio_debug_recordings_handler.cc", + "media/webrtc/audio_debug_recordings_handler.h", + "media/webrtc/desktop_media_list.h", + "media/webrtc/desktop_media_list_base.cc", + "media/webrtc/desktop_media_list_base.h", + "media/webrtc/desktop_media_picker.cc", + "media/webrtc/desktop_media_picker.h", + "media/webrtc/desktop_media_picker_factory.cc", + "media/webrtc/desktop_media_picker_factory.h", + "media/webrtc/desktop_media_picker_manager.cc", + "media/webrtc/desktop_media_picker_manager.h", + "media/webrtc/media_capture_devices_dispatcher.cc", + "media/webrtc/media_capture_devices_dispatcher.h", + "media/webrtc/media_stream_capture_indicator.cc", + "media/webrtc/media_stream_capture_indicator.h", + "media/webrtc/media_stream_device_permission_context.cc", + "media/webrtc/media_stream_device_permission_context.h", + "media/webrtc/media_stream_device_permissions.cc", + "media/webrtc/media_stream_device_permissions.h", + "media/webrtc/media_stream_devices_controller.cc", + "media/webrtc/media_stream_devices_controller.h", + "media/webrtc/native_desktop_media_list.cc", + "media/webrtc/native_desktop_media_list.h", + "media/webrtc/permission_bubble_media_access_handler.cc", + "media/webrtc/permission_bubble_media_access_handler.h", + "media/webrtc/webrtc_event_log_history.cc", + "media/webrtc/webrtc_event_log_history.h", + "media/webrtc/webrtc_event_log_manager.cc", + "media/webrtc/webrtc_event_log_manager.h", + "media/webrtc/webrtc_event_log_manager_common.cc", + "media/webrtc/webrtc_event_log_manager_common.h", + "media/webrtc/webrtc_event_log_manager_keyed_service.cc", + "media/webrtc/webrtc_event_log_manager_keyed_service.h", + "media/webrtc/webrtc_event_log_manager_keyed_service_factory.cc", + "media/webrtc/webrtc_event_log_manager_keyed_service_factory.h", + "media/webrtc/webrtc_event_log_manager_local.cc", + "media/webrtc/webrtc_event_log_manager_local.h", + "media/webrtc/webrtc_event_log_manager_remote.cc", + "media/webrtc/webrtc_event_log_manager_remote.h", + "media/webrtc/webrtc_event_log_uploader.cc", + "media/webrtc/webrtc_event_log_uploader.h", + "media/webrtc/webrtc_log_buffer.cc", + "media/webrtc/webrtc_log_buffer.h", + "media/webrtc/webrtc_log_uploader.cc", + "media/webrtc/webrtc_log_uploader.h", + "media/webrtc/webrtc_log_util.cc", + "media/webrtc/webrtc_log_util.h", + "media/webrtc/webrtc_logging_controller.cc", + "media/webrtc/webrtc_logging_controller.h", + "media/webrtc/webrtc_rtp_dump_handler.cc", + "media/webrtc/webrtc_rtp_dump_handler.h", + "media/webrtc/webrtc_rtp_dump_writer.cc", + "media/webrtc/webrtc_rtp_dump_writer.h", + "media/webrtc/webrtc_text_log_handler.cc", + "media/webrtc/webrtc_text_log_handler.h", + "media/webrtc/window_icon_util.h", + "media/webrtc/window_icon_util_chromeos.cc", + "media/webrtc/window_icon_util_mac.mm", + "media/webrtc/window_icon_util_win.cc", + ] + deps += [ + "//components/webrtc", + "//components/webrtc_logging/browser", + "//components/webrtc_logging/common", + "//content/public/browser", + "//services/audio/public/cpp", + "//third_party/webrtc_overrides:webrtc_component", + ] + } + if (use_cups) { configs += [ "//printing:cups" ] if (is_chromeos) { diff --git a/chromium/chrome/browser/extensions/BUILD.gn b/chromium/chrome/browser/extensions/BUILD.gn index 18315b380b6..e083ef7e712 100644 --- a/chromium/chrome/browser/extensions/BUILD.gn +++ b/chromium/chrome/browser/extensions/BUILD.gn @@ -9,6 +9,7 @@ import("//chrome/common/features.gni") import("//chromeos/services/cfm/public/buildflags/buildflags.gni") import("//components/nacl/features.gni") import("//extensions/buildflags/buildflags.gni") +import("//media/media_options.gni") import("//mojo/public/tools/bindings/mojom.gni") import("//pdf/features.gni") import("//rlz/buildflags/buildflags.gni") @@ -408,7 +409,6 @@ static_library("extensions") { "api/webrtc_audio_private/webrtc_audio_private_api.h", "api/webrtc_desktop_capture_private/webrtc_desktop_capture_private_api.cc", "api/webrtc_desktop_capture_private/webrtc_desktop_capture_private_api.h", - "api/webrtc_logging_private/webrtc_logging_private_api.cc", "api/webrtc_logging_private/webrtc_logging_private_api.h", "api/webstore_private/extension_install_status.cc", "api/webstore_private/extension_install_status.h", @@ -1237,6 +1237,13 @@ static_library("extensions") { deps += [ "//rlz:rlz_lib" ] } + if (enable_webrtc) { + sources += [ "api/webrtc_logging_private/webrtc_logging_private_api.cc" ] + } else { + sources += + [ "api/webrtc_logging_private/webrtc_logging_private_api_stub.cc" ] + } + if (toolkit_views) { deps += [ "//ui/views" ] } diff --git a/chromium/chrome/browser/extensions/api/preference/preference_api.cc b/chromium/chrome/browser/extensions/api/preference/preference_api.cc index 6f608df9995..2f1f7576673 100644 --- a/chromium/chrome/browser/extensions/api/preference/preference_api.cc +++ b/chromium/chrome/browser/extensions/api/preference/preference_api.cc @@ -129,6 +129,7 @@ const PrefMappingEntry kPrefMapping[] = { APIPermission::kPrivacy, APIPermission::kPrivacy}, {"translationServiceEnabled", prefs::kOfferTranslateEnabled, APIPermission::kPrivacy, APIPermission::kPrivacy}, +#if BUILDFLAG(ENABLE_WEBRTC) // webRTCMultipleRoutesEnabled and webRTCNonProxiedUdpEnabled have been // replaced by webRTCIPHandlingPolicy. Leaving it for backward // compatibility. TODO(guoweis): Remove this in M50. @@ -140,6 +141,7 @@ const PrefMappingEntry kPrefMapping[] = { APIPermission::kPrivacy, APIPermission::kPrivacy}, {"webRTCUDPPortRange", prefs::kWebRTCUDPPortRange, APIPermission::kPrivacy, APIPermission::kPrivacy}, +#endif // accessibilityFeatures.animationPolicy is available for // all platforms but the others from accessibilityFeatures // is only available for OS_CHROMEOS. diff --git a/chromium/chrome/browser/extensions/api/preference/preference_apitest.cc b/chromium/chrome/browser/extensions/api/preference/preference_apitest.cc index a48dbdf5957..31dfba251f4 100644 --- a/chromium/chrome/browser/extensions/api/preference/preference_apitest.cc +++ b/chromium/chrome/browser/extensions/api/preference/preference_apitest.cc @@ -165,10 +165,12 @@ IN_PROC_BROWSER_TEST_F(ExtensionPreferenceApiTest, Standard) { prefs->SetBoolean(password_manager::prefs::kCredentialsEnableService, false); prefs->SetBoolean(prefs::kSafeBrowsingEnabled, false); prefs->SetBoolean(prefs::kSearchSuggestEnabled, false); +#if BUILDFLAG(ENABLE_WEBRTC) prefs->SetBoolean(prefs::kWebRTCMultipleRoutesEnabled, false); prefs->SetBoolean(prefs::kWebRTCNonProxiedUdpEnabled, false); prefs->SetString(prefs::kWebRTCIPHandlingPolicy, blink::kWebRTCIPHandlingDefaultPublicInterfaceOnly); +#endif const char kExtensionPath[] = "preference/standard"; diff --git a/chromium/chrome/browser/extensions/api/webrtc_logging_private/webrtc_logging_private_api.h b/chromium/chrome/browser/extensions/api/webrtc_logging_private/webrtc_logging_private_api.h index e371b984dd6..620daa5e736 100644 --- a/chromium/chrome/browser/extensions/api/webrtc_logging_private/webrtc_logging_private_api.h +++ b/chromium/chrome/browser/extensions/api/webrtc_logging_private/webrtc_logging_private_api.h @@ -7,12 +7,15 @@ #include <string> -#include "chrome/browser/media/webrtc/audio_debug_recordings_handler.h" -#include "chrome/browser/media/webrtc/webrtc_logging_controller.h" #include "chrome/common/extensions/api/webrtc_logging_private.h" #include "extensions/browser/extension_function.h" #include "media/media_buildflags.h" +#if BUILDFLAG(ENABLE_WEBRTC) +#include "chrome/browser/media/webrtc/audio_debug_recordings_handler.h" +#include "chrome/browser/media/webrtc/webrtc_logging_controller.h" +#endif + namespace content { class RenderProcessHost; @@ -25,6 +28,7 @@ class WebrtcLoggingPrivateFunction : public ExtensionFunction { protected: ~WebrtcLoggingPrivateFunction() override {} +#if BUILDFLAG(ENABLE_WEBRTC) // Returns the RenderProcessHost associated with the given |request| // authorized by the |security_origin|. Returns null and sets |*error| to an // appropriate error if unauthorized or the RPH does not exist. @@ -37,6 +41,7 @@ class WebrtcLoggingPrivateFunction : public ExtensionFunction { const api::webrtc_logging_private::RequestInfo& request, const std::string& security_origin, std::string* error); +#endif }; class WebrtcLoggingPrivateFunctionWithGenericCallback @@ -44,6 +49,7 @@ class WebrtcLoggingPrivateFunctionWithGenericCallback protected: ~WebrtcLoggingPrivateFunctionWithGenericCallback() override {} +#if BUILDFLAG(ENABLE_WEBRTC) // Finds the appropriate logging controller for performing the task and // prepares a generic callback object for when the task is completed. If the // logging controller can't be found for the given request+origin, the @@ -57,6 +63,7 @@ class WebrtcLoggingPrivateFunctionWithGenericCallback // Must be called on UI thread. void FireCallback(bool success, const std::string& error_message); +#endif }; class WebrtcLoggingPrivateFunctionWithUploadCallback @@ -64,9 +71,11 @@ class WebrtcLoggingPrivateFunctionWithUploadCallback protected: ~WebrtcLoggingPrivateFunctionWithUploadCallback() override {} +#if BUILDFLAG(ENABLE_WEBRTC) // Must be called on UI thread. void FireCallback(bool success, const std::string& report_id, const std::string& error_message); +#endif }; class WebrtcLoggingPrivateFunctionWithRecordingDoneCallback @@ -74,11 +83,13 @@ class WebrtcLoggingPrivateFunctionWithRecordingDoneCallback protected: ~WebrtcLoggingPrivateFunctionWithRecordingDoneCallback() override {} +#if BUILDFLAG(ENABLE_WEBRTC) // Must be called on UI thread. void FireErrorCallback(const std::string& error_message); void FireCallback(const std::string& prefix_path, bool did_stop, bool did_manual_stop); +#endif }; class WebrtcLoggingPrivateSetMetaDataFunction @@ -283,10 +294,12 @@ class WebrtcLoggingPrivateGetLogsDirectoryFunction // ExtensionFunction overrides. ResponseAction Run() override; +#if BUILDFLAG(ENABLE_WEBRTC) // Must be called on UI thread. void FireErrorCallback(const std::string& error_message); void FireCallback(const std::string& filesystem_id, const std::string& base_name); +#endif }; } // namespace extensions diff --git a/chromium/chrome/browser/ui/BUILD.gn b/chromium/chrome/browser/ui/BUILD.gn index 5fe4e7e4722..83b55f3be57 100644 --- a/chromium/chrome/browser/ui/BUILD.gn +++ b/chromium/chrome/browser/ui/BUILD.gn @@ -20,6 +20,7 @@ import("//components/offline_pages/buildflags/features.gni") import("//components/signin/features.gni") import("//device/vr/buildflags/buildflags.gni") import("//extensions/buildflags/buildflags.gni") +import("//media/media_options.gni") import("//ppapi/buildflags/buildflags.gni") import("//printing/buildflags/buildflags.gni") import("//rlz/buildflags/buildflags.gni") @@ -242,8 +243,6 @@ static_library("ui") { "webui/media/media_engagement_ui.h", "webui/media/media_history_ui.cc", "webui/media/media_history_ui.h", - "webui/media/webrtc_logs_ui.cc", - "webui/media/webrtc_logs_ui.h", "webui/memory_internals_ui.cc", "webui/memory_internals_ui.h", "webui/metrics_handler.cc", @@ -532,7 +531,6 @@ static_library("ui") { "//components/viz/host", "//components/web_cache/browser", "//components/web_resource", - "//components/webrtc_logging/browser", "//content/app/resources", "//content/browser/webrtc/resources", "//content/public/common", @@ -4470,6 +4468,14 @@ static_library("ui") { } } + if (enable_webrtc) { + sources += [ + "webui/media/webrtc_logs_ui.cc", + "webui/media/webrtc_logs_ui.h", + ] + deps += [ "//components/webrtc_logging/browser" ] + } + if (safe_browsing_mode == 1) { deps += [ "//chrome/browser/ui/webui/reset_password:mojo_bindings", diff --git a/chromium/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc b/chromium/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc index c9abbd97037..022c7c0f553 100644 --- a/chromium/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc +++ b/chromium/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc @@ -56,7 +56,6 @@ #include "chrome/browser/ui/webui/media/media_engagement_ui.h" #include "chrome/browser/ui/webui/media/media_feeds_ui.h" #include "chrome/browser/ui/webui/media/media_history_ui.h" -#include "chrome/browser/ui/webui/media/webrtc_logs_ui.h" #include "chrome/browser/ui/webui/memory_internals_ui.h" #include "chrome/browser/ui/webui/net_export_ui.h" #include "chrome/browser/ui/webui/net_internals/net_internals_ui.h" @@ -110,6 +109,10 @@ #include "chrome/browser/ui/webui/nacl_ui.h" #endif +#if BUILDFLAG(ENABLE_WEBRTC) +#include "chrome/browser/ui/webui/media/webrtc_logs_ui.h" +#endif + #if BUILDFLAG(ENABLE_PRINT_PREVIEW) #include "chrome/browser/ui/webui/print_preview/print_preview_ui.h" #endif @@ -857,8 +860,10 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui, } #endif +#if BUILDFLAG(ENABLE_WEBRTC) if (url.host_piece() == chrome::kChromeUIWebRtcLogsHost) return &NewWebUI<WebRtcLogsUI>; +#endif #if !defined(OS_ANDROID) if (url.host_piece() == chrome::kChromeUIMediaRouterInternalsHost && media_router::MediaRouterEnabled(profile)) { diff --git a/chromium/chrome/common/extensions/api/BUILD.gn b/chromium/chrome/common/extensions/api/BUILD.gn index 08951222cc6..a68fd0faec5 100644 --- a/chromium/chrome/common/extensions/api/BUILD.gn +++ b/chromium/chrome/common/extensions/api/BUILD.gn @@ -7,6 +7,7 @@ import("//build/config/ui.gni") import("//chrome/common/extensions/api/api_sources.gni") import("//chrome/common/features.gni") import("//extensions/buildflags/buildflags.gni") +import("//media/media_options.gni") import("//tools/json_schema_compiler/json_features.gni") import("//tools/json_schema_compiler/json_schema_api.gni") diff --git a/chromium/chrome/common/features.gni b/chromium/chrome/common/features.gni index 2ff23e50e1a..86d9ce1e7a6 100644 --- a/chromium/chrome/common/features.gni +++ b/chromium/chrome/common/features.gni @@ -83,6 +83,7 @@ chrome_grit_defines = [ "enable_supervised_users=$enable_supervised_users", "enable_tab_search=$enable_tab_search", "enable_vr=$enable_vr", + "enable_webrtc=$enable_webrtc", "enable_webui_tab_strip=$enable_webui_tab_strip", "safe_browsing_mode=$safe_browsing_mode", "optimize_webui=$optimize_webui", diff --git a/chromium/chrome/common/webui_url_constants.cc b/chromium/chrome/common/webui_url_constants.cc index e6687146475..2584f68f654 100644 --- a/chromium/chrome/common/webui_url_constants.cc +++ b/chromium/chrome/common/webui_url_constants.cc @@ -394,7 +394,9 @@ const char kChromeUITabSearchHost[] = "tab-search"; const char kChromeUITabSearchURL[] = "chrome://tab-search/"; #endif +#if BUILDFLAG(ENABLE_WEBRTC) const char kChromeUIWebRtcLogsHost[] = "webrtc-logs"; +#endif // Settings sub pages. @@ -572,7 +574,9 @@ const char* const kChromeHostURLs[] = { #if BUILDFLAG(ENABLE_SERVICE_DISCOVERY) kChromeUIDevicesHost, #endif +#if BUILDFLAG(ENABLE_WEBRTC) kChromeUIWebRtcLogsHost, +#endif }; const size_t kNumberOfChromeHostURLs = base::size(kChromeHostURLs); diff --git a/chromium/chrome/common/webui_url_constants.h b/chromium/chrome/common/webui_url_constants.h index 23decba2688..a72ca753355 100644 --- a/chromium/chrome/common/webui_url_constants.h +++ b/chromium/chrome/common/webui_url_constants.h @@ -343,7 +343,9 @@ extern const char kChromeUITabSearchHost[]; extern const char kChromeUITabSearchURL[]; #endif +#if BUILDFLAG(ENABLE_WEBRTC) extern const char kChromeUIWebRtcLogsHost[]; +#endif // Settings sub-pages. extern const char kAccessibilitySubPage[]; diff --git a/chromium/chrome/renderer/BUILD.gn b/chromium/chrome/renderer/BUILD.gn index ce49b592498..ac3494de703 100644 --- a/chromium/chrome/renderer/BUILD.gn +++ b/chromium/chrome/renderer/BUILD.gn @@ -84,8 +84,6 @@ static_library("renderer") { "media/flash_embed_rewrite.h", "media/media_feeds.cc", "media/media_feeds.h", - "media/webrtc_logging_agent_impl.cc", - "media/webrtc_logging_agent_impl.h", "net/net_error_helper.cc", "net/net_error_helper.h", "net/net_error_helper_core.cc", @@ -326,12 +324,22 @@ static_library("renderer") { "//components/guest_view/renderer", "//extensions:extensions_resources", "//extensions/renderer", - "//media/cast:net", - "//media/cast:receiver", - "//media/cast:sender", "//services/network/public/cpp", ] public_deps += [ "//ipc" ] + if (enable_webrtc) { + deps += [ + "//media/cast:net", + "//media/cast:receiver", + "//media/cast:sender", + ] + } + } + if (enable_webrtc) { + sources += [ + "media/webrtc_logging_agent_impl.cc", + "media/webrtc_logging_agent_impl.h", + ] } if (enable_spellcheck) { deps += [ "//components/spellcheck/renderer:renderer" ] @@ -441,4 +449,11 @@ static_library("test_support") { "//testing/gmock", "//testing/gtest", ] + + if (enable_webrtc) { + sources += [ + "media/mock_webrtc_logging_message_filter.cc", + "media/mock_webrtc_logging_message_filter.h", + ] + } } diff --git a/chromium/chrome/test/BUILD.gn b/chromium/chrome/test/BUILD.gn index 184924ac716..9179faef50c 100644 --- a/chromium/chrome/test/BUILD.gn +++ b/chromium/chrome/test/BUILD.gn @@ -28,6 +28,7 @@ import("//components/os_crypt/features.gni") import("//components/signin/features.gni") import("//components/spellcheck/spellcheck_build_features.gni") import("//extensions/buildflags/buildflags.gni") +import("//media/media_options.gni") import("//mojo/public/tools/bindings/mojom.gni") import("//net/features.gni") import("//ppapi/buildflags/buildflags.gni") @@ -2817,7 +2818,34 @@ if (!is_android) { if (enable_captive_portal_detection) { sources += [ "../browser/captive_portal/captive_portal_browsertest.cc" ] } - + if (!enable_webrtc) { + sources -= [ + "../browser/media/webrtc/webrtc_apprtc_browsertest.cc", + "../browser/media/webrtc/webrtc_browsertest.cc", + "../browser/media/webrtc/webrtc_browsertest_base.cc", + "../browser/media/webrtc/webrtc_browsertest_base.h", + "../browser/media/webrtc/webrtc_browsertest_common.cc", + "../browser/media/webrtc/webrtc_browsertest_common.h", + "../browser/media/webrtc/webrtc_browsertest_perf.cc", + "../browser/media/webrtc/webrtc_browsertest_perf.h", + "../browser/media/webrtc/webrtc_desktop_capture_browsertest.cc", + "../browser/media/webrtc/webrtc_disable_encryption_flag_browsertest.cc", + "../browser/media/webrtc/webrtc_getdisplaymedia_browsertest.cc", + "../browser/media/webrtc/webrtc_getmediadevices_browsertest.cc", + "../browser/media/webrtc/webrtc_internals_integration_browsertest.cc", + "../browser/media/webrtc/webrtc_internals_perf_browsertest.cc", + "../browser/media/webrtc/webrtc_stats_perf_browsertest.cc", + "../browser/media/webrtc/webrtc_video_display_perf_browsertest.cc", + "../browser/media/webrtc/webrtc_video_quality_browsertest.cc", + "../browser/media/webrtc/webrtc_webcam_browsertest.cc", + ] + if (enable_extensions) { + sources -= [ + "../browser/extensions/api/webrtc_audio_private/webrtc_audio_private_browsertest.cc", + "../browser/extensions/api/webrtc_logging_private/webrtc_logging_private_apitest.cc", + ] + } + } if (is_mac) { deps += [ "//third_party/ocmock" ] data_deps += [ @@ -4623,9 +4651,6 @@ test("unit_tests") { "../browser/devtools/protocol/cast_handler_unittest.cc", "../browser/devtools/serialize_host_descriptions_unittest.cc", "../browser/download/download_dir_policy_handler_unittest.cc", - "../browser/media/webrtc/webrtc_log_uploader_unittest.cc", - "../browser/media/webrtc/webrtc_rtp_dump_handler_unittest.cc", - "../browser/media/webrtc/webrtc_rtp_dump_writer_unittest.cc", "../browser/policy/local_sync_policy_handler_unittest.cc", "../browser/renderer_context_menu/mock_render_view_context_menu.cc", "../browser/renderer_context_menu/mock_render_view_context_menu.h", @@ -4666,7 +4691,6 @@ test("unit_tests") { "../browser/ui/views/passwords/password_save_unsynced_credentials_locally_view_unittest.cc", "../browser/ui/views/passwords/password_save_update_with_account_store_view_unittest.cc", "../browser/ui/views/passwords/post_save_compromised_bubble_view_unittest.cc", - "../renderer/media/webrtc_logging_agent_impl_unittest.cc", ] deps += [ "//services/network:test_support" ] @@ -5582,6 +5606,14 @@ test("unit_tests") { "../browser/sessions/tab_loader_unittest.cc", ] } + if (enable_webrtc) { + sources += [ + "../browser/media/webrtc/webrtc_log_uploader_unittest.cc", + "../browser/media/webrtc/webrtc_rtp_dump_handler_unittest.cc", + "../browser/media/webrtc/webrtc_rtp_dump_writer_unittest.cc", + "../renderer/media/chrome_webrtc_log_message_delegate_unittest.cc", + ] + } if (is_chromeos) { deps += [ "//chrome/browser/chromeos:unit_tests", diff --git a/chromium/chrome/tools/service_discovery_sniffer/BUILD.gn b/chromium/chrome/tools/service_discovery_sniffer/BUILD.gn index 4c45f5456b7..e73f7cfaa36 100644 --- a/chromium/chrome/tools/service_discovery_sniffer/BUILD.gn +++ b/chromium/chrome/tools/service_discovery_sniffer/BUILD.gn @@ -3,6 +3,7 @@ # found in the LICENSE file. import("//build/config/features.gni") +import("//media/media_options.gni") executable("service_discovery_sniffer") { testonly = true @@ -16,6 +17,9 @@ executable("service_discovery_sniffer") { "//base/test:test_support", "//chrome/browser", "//net", - "//third_party/webrtc_overrides:webrtc_component", ] + + if (enable_webrtc) { + deps += [ "//third_party/webrtc_overrides:webrtc_component" ] + } } diff --git a/chromium/components/BUILD.gn b/chromium/components/BUILD.gn index 6582ce9985b..aafc1d4fa5c 100644 --- a/chromium/components/BUILD.gn +++ b/chromium/components/BUILD.gn @@ -303,9 +303,13 @@ test("components_unittests") { "//components/web_cache/browser:unit_tests", "//components/web_package:unit_tests", "//components/webcrypto:unit_tests", - "//components/webrtc_logging/browser:unit_tests", - "//components/webrtc_logging/common:unit_tests", ] + if (enable_webrtc && !is_ios) { + deps += [ + "//components/webrtc_logging/browser:unit_tests", + "//components/webrtc_logging/common:unit_tests", + ] + } if (!is_fuchsia) { # !iOS and !Fuchsia deps += [ diff --git a/chromium/components/webrtc_logging/browser/BUILD.gn b/chromium/components/webrtc_logging/browser/BUILD.gn index 3fe701dc181..a82ed798cd6 100644 --- a/chromium/components/webrtc_logging/browser/BUILD.gn +++ b/chromium/components/webrtc_logging/browser/BUILD.gn @@ -2,6 +2,10 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. +import("//media/media_options.gni") + +assert(enable_webrtc) + source_set("browser") { sources = [ "log_cleanup.cc", diff --git a/chromium/components/webrtc_logging/common/BUILD.gn b/chromium/components/webrtc_logging/common/BUILD.gn index 1a47354693f..7eacccc034f 100644 --- a/chromium/components/webrtc_logging/common/BUILD.gn +++ b/chromium/components/webrtc_logging/common/BUILD.gn @@ -2,6 +2,10 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. +import("//media/media_options.gni") + +assert(enable_webrtc) + source_set("common") { sources = [ "partial_circular_buffer.cc", diff --git a/chromium/content/app/content_main_runner_impl.cc b/chromium/content/app/content_main_runner_impl.cc index a021f7b288c..a8c7d4457da 100644 --- a/chromium/content/app/content_main_runner_impl.cc +++ b/chromium/content/app/content_main_runner_impl.cc @@ -139,7 +139,6 @@ #include "third_party/boringssl/src/include/openssl/crypto.h" #include "third_party/skia/include/core/SkFontMgr.h" #include "third_party/skia/include/ports/SkFontMgr_android.h" -#include "third_party/webrtc_overrides/init_webrtc.h" // nogncheck #if BUILDFLAG(ENABLE_PLUGINS) #include "content/common/pepper_plugin_list.h" @@ -161,8 +160,13 @@ #include "content/public/common/zygote/sandbox_support_linux.h" #include "content/public/common/zygote/zygote_handle.h" #include "media/base/media_switches.h" + +#if BUILDFLAG(ENABLE_WEBRTC) +#include "third_party/webrtc_overrides/init_webrtc.h" // nogncheck #endif +#endif // BUILDFLAG(USE_ZYGOTE_HANDLE) + #if defined(OS_ANDROID) #include "content/browser/android/browser_startup_controller.h" #include "content/common/android/cpu_affinity.h" @@ -357,7 +361,9 @@ void PreSandboxInit() { // Ensure access to the library CDMs before the sandbox is turned on. PreloadLibraryCdms(); #endif +#if BUILDFLAG(ENABLE_WEBRTC) InitializeWebRtcModule(); +#endif // Set the android SkFontMgr for blink. We need to ensure this is done // before the sandbox is initialized to allow the font manager to access diff --git a/chromium/content/browser/BUILD.gn b/chromium/content/browser/BUILD.gn index 8bbc49e20e9..949eea2f10b 100644 --- a/chromium/content/browser/BUILD.gn +++ b/chromium/content/browser/BUILD.gn @@ -118,7 +118,6 @@ source_set("browser") { "//content/browser/process_internals:mojo_bindings", "//content/browser/resources/media:media_internals_resources", "//content/browser/service_worker:service_worker_proto", - "//content/browser/webrtc/resources", "//content/common", "//content/common:buildflags", "//content/common:mojo_bindings", @@ -197,10 +196,6 @@ source_set("browser") { "//services/tracing/public/cpp:traced_process", "//services/tracing/public/cpp/background_tracing", "//services/tracing/public/mojom", - "//services/video_capture:lib", - "//services/video_capture/public/cpp", - "//services/video_capture/public/mojom:constants", - "//services/video_capture/public/uma", "//services/viz/privileged/mojom", "//services/viz/public/cpp/gpu", "//services/viz/public/mojom", @@ -227,7 +222,6 @@ source_set("browser") { "//third_party/libyuv", "//third_party/re2", "//third_party/sqlite", - "//third_party/webrtc_overrides:webrtc_component", "//third_party/zlib", "//third_party/zlib/google:zip", "//ui/accessibility", @@ -1105,8 +1099,6 @@ source_set("browser") { "loader/single_request_url_loader_factory.cc", "loader/single_request_url_loader_factory.h", "loader/url_loader_throttles.cc", - "loader/webrtc_connections_observer.cc", - "loader/webrtc_connections_observer.h", "locks/lock_manager.cc", "locks/lock_manager.h", "log_console_message.cc", @@ -1504,8 +1496,6 @@ source_set("browser") { "renderer_host/keep_alive_handle_factory.h", "renderer_host/legacy_render_widget_host_win.cc", "renderer_host/legacy_render_widget_host_win.h", - "renderer_host/media/aec_dump_manager_impl.cc", - "renderer_host/media/aec_dump_manager_impl.h", "renderer_host/media/audio_input_device_manager.cc", "renderer_host/media/audio_input_device_manager.h", "renderer_host/media/audio_input_stream_handle.cc", @@ -1537,20 +1527,10 @@ source_set("browser") { "renderer_host/media/media_stream_track_metrics_host.h", "renderer_host/media/media_stream_ui_proxy.cc", "renderer_host/media/media_stream_ui_proxy.h", - "renderer_host/media/peer_connection_tracker_host.cc", - "renderer_host/media/peer_connection_tracker_host.h", - "renderer_host/media/ref_counted_video_source_provider.cc", - "renderer_host/media/ref_counted_video_source_provider.h", "renderer_host/media/render_frame_audio_input_stream_factory.cc", "renderer_host/media/render_frame_audio_input_stream_factory.h", "renderer_host/media/render_frame_audio_output_stream_factory.cc", "renderer_host/media/render_frame_audio_output_stream_factory.h", - "renderer_host/media/service_launched_video_capture_device.cc", - "renderer_host/media/service_launched_video_capture_device.h", - "renderer_host/media/service_video_capture_device_launcher.cc", - "renderer_host/media/service_video_capture_device_launcher.h", - "renderer_host/media/service_video_capture_provider.cc", - "renderer_host/media/service_video_capture_provider.h", "renderer_host/media/video_capture_controller.cc", "renderer_host/media/video_capture_controller.h", "renderer_host/media/video_capture_controller_event_handler.h", @@ -1560,10 +1540,6 @@ source_set("browser") { "renderer_host/media/video_capture_manager.cc", "renderer_host/media/video_capture_manager.h", "renderer_host/media/video_capture_provider.h", - "renderer_host/media/video_capture_provider_switcher.cc", - "renderer_host/media/video_capture_provider_switcher.h", - "renderer_host/media/virtual_video_capture_devices_changed_observer.cc", - "renderer_host/media/virtual_video_capture_devices_changed_observer.h", "renderer_host/mixed_content_navigation_throttle.cc", "renderer_host/mixed_content_navigation_throttle.h", "renderer_host/native_web_keyboard_event_aura.cc", @@ -1590,8 +1566,6 @@ source_set("browser") { "renderer_host/overscroll_controller.cc", "renderer_host/overscroll_controller.h", "renderer_host/overscroll_controller_delegate.h", - "renderer_host/p2p/socket_dispatcher_host.cc", - "renderer_host/p2p/socket_dispatcher_host.h", "renderer_host/page_lifecycle_state_manager.cc", "renderer_host/page_lifecycle_state_manager.h", "renderer_host/popup_menu_helper_mac.h", @@ -2007,14 +1981,6 @@ source_set("browser") { "webauth/is_uvpaa.cc", "webauth/webauth_request_security_checker.cc", "webauth/webauth_request_security_checker.h", - "webrtc/webrtc_internals.cc", - "webrtc/webrtc_internals.h", - "webrtc/webrtc_internals_connections_observer.h", - "webrtc/webrtc_internals_message_handler.cc", - "webrtc/webrtc_internals_message_handler.h", - "webrtc/webrtc_internals_ui.cc", - "webrtc/webrtc_internals_ui.h", - "webrtc/webrtc_internals_ui_observer.h", "websockets/websocket_connector_impl.cc", "websockets/websocket_connector_impl.h", "websockets/websocket_handshake_request_info_impl.cc", @@ -2175,12 +2141,52 @@ source_set("browser") { ] } + if (enable_webrtc) { + sources += [ + "loader/webrtc_connections_observer.cc", + "loader/webrtc_connections_observer.h", + "renderer_host/media/aec_dump_manager_impl.cc", + "renderer_host/media/aec_dump_manager_impl.h", + "renderer_host/media/ref_counted_video_source_provider.cc", + "renderer_host/media/ref_counted_video_source_provider.h", + "renderer_host/media/peer_connection_tracker_host.cc", + "renderer_host/media/peer_connection_tracker_host.h", + "renderer_host/media/service_launched_video_capture_device.cc", + "renderer_host/media/service_launched_video_capture_device.h", + "renderer_host/media/service_video_capture_device_launcher.cc", + "renderer_host/media/service_video_capture_device_launcher.h", + "renderer_host/media/service_video_capture_provider.cc", + "renderer_host/media/service_video_capture_provider.h", + "renderer_host/media/video_capture_provider_switcher.cc", + "renderer_host/media/video_capture_provider_switcher.h", + "renderer_host/media/virtual_video_capture_devices_changed_observer.cc", + "renderer_host/media/virtual_video_capture_devices_changed_observer.h", + "renderer_host/p2p/socket_dispatcher_host.cc", + "renderer_host/p2p/socket_dispatcher_host.h", + "webrtc/webrtc_internals.cc", + "webrtc/webrtc_internals.h", + "webrtc/webrtc_internals_message_handler.cc", + "webrtc/webrtc_internals_message_handler.h", + "webrtc/webrtc_internals_ui.cc", + "webrtc/webrtc_internals_ui.h", + "webrtc/webrtc_internals_ui_observer.h", + ] + + deps += [ + "//content/browser/webrtc/resources", + "//jingle:jingle_glue", + "//services/video_capture:lib", + "//services/video_capture/public/cpp", + "//services/video_capture/public/mojom:constants", + "//services/video_capture/public/uma", + "//third_party/webrtc_overrides:webrtc_component", + ] + } + # Desktop/Window/WebContents screen capture implementations, conditionally # built depending on the available implementations for each platform. if (enable_screen_capture && !is_android) { sources += [ - "media/capture/desktop_capture_device.cc", - "media/capture/desktop_capture_device.h", "media/capture/frame_sink_video_capture_device.cc", "media/capture/frame_sink_video_capture_device.h", "media/capture/mouse_cursor_overlay_controller.cc", @@ -2188,7 +2194,6 @@ source_set("browser") { "media/capture/web_contents_video_capture_device.cc", "media/capture/web_contents_video_capture_device.h", ] - deps += [ "//third_party/webrtc_overrides:webrtc_component" ] if (use_aura) { sources += [ "media/capture/aura_window_video_capture_device.cc", @@ -2222,6 +2227,13 @@ source_set("browser") { "//chromeos/lacros", ] } + if (enable_webrtc) { + sources += [ + "media/capture/desktop_capture_device.cc", + "media/capture/desktop_capture_device.h", + ] + deps += [ "//third_party/webrtc_overrides:webrtc_component" ] + } } if (is_win) { diff --git a/chromium/content/browser/browser_main_loop.cc b/chromium/content/browser/browser_main_loop.cc index dce878e0f11..4826e0c49ec 100644 --- a/chromium/content/browser/browser_main_loop.cc +++ b/chromium/content/browser/browser_main_loop.cc @@ -92,7 +92,6 @@ #include "content/browser/tracing/background_tracing_manager_impl.h" #include "content/browser/tracing/tracing_controller_impl.h" #include "content/browser/utility_process_host.h" -#include "content/browser/webrtc/webrtc_internals.h" #include "content/browser/webui/content_web_ui_controller_factory.h" #include "content/browser/webui/url_data_manager.h" #include "content/common/content_switches_internal.h" @@ -224,6 +223,10 @@ #include "content/browser/media/cdm_registry_impl.h" #endif +#if BUILDFLAG(ENABLE_WEBRTC) +#include "content/browser/webrtc/webrtc_internals.h" +#endif + #if defined(USE_X11) #include "gpu/config/gpu_driver_bug_workaround_type.h" #include "ui/base/ui_base_features.h" @@ -1307,12 +1310,14 @@ int BrowserMainLoop::BrowserThreadsStarted() { new media::DeviceMonitorMac(base::ThreadTaskRunnerHandle::Get())); #endif +#if BUILDFLAG(ENABLE_WEBRTC) // Instantiated once using CreateSingletonInstance(), and accessed only using // GetInstance(), which is not allowed to create the object. This allows us // to ensure that it cannot be used before objects it relies on have been // created; namely, WebRtcEventLogManager. // Allowed to leak when the browser exits. WebRTCInternals::CreateSingletonInstance(); +#endif // MediaStreamManager needs the IO thread to be created. { diff --git a/chromium/content/browser/gpu/gpu_process_host.cc b/chromium/content/browser/gpu/gpu_process_host.cc index 30e7a3e1c65..eec6c13f39d 100644 --- a/chromium/content/browser/gpu/gpu_process_host.cc +++ b/chromium/content/browser/gpu/gpu_process_host.cc @@ -240,7 +240,9 @@ static const char* const kSwitchNames[] = { switches::kDisableLogging, switches::kDisableShaderNameHashing, switches::kDisableSkiaRuntimeOpts, +#if BUILDFLAG(ENABLE_WEBRTC) switches::kDisableWebRtcHWEncoding, +#endif switches::kEnableGpuRasterization, switches::kEnableLogging, switches::kEnableDeJelly, diff --git a/chromium/content/browser/network_service_client.cc b/chromium/content/browser/network_service_client.cc index 172b799c866..8b2b8418272 100644 --- a/chromium/content/browser/network_service_client.cc +++ b/chromium/content/browser/network_service_client.cc @@ -86,10 +86,12 @@ NetworkServiceClient::NetworkServiceClient( #endif } +#if BUILDFLAG(ENABLE_WEBRTC) webrtc_connections_observer_ = std::make_unique<content::WebRtcConnectionsObserver>(base::BindRepeating( &NetworkServiceClient::OnPeerToPeerConnectionsCountChange, base::Unretained(this))); +#endif } NetworkServiceClient::~NetworkServiceClient() { diff --git a/chromium/content/browser/network_service_client.h b/chromium/content/browser/network_service_client.h index ca7cb5a7ee8..fcb21195586 100644 --- a/chromium/content/browser/network_service_client.h +++ b/chromium/content/browser/network_service_client.h @@ -14,6 +14,7 @@ #include "base/unguessable_token.h" #include "build/build_config.h" #include "content/common/content_export.h" +#include "media/media_buildflags.h" #include "mojo/public/cpp/bindings/pending_receiver.h" #include "mojo/public/cpp/bindings/receiver.h" #include "mojo/public/cpp/bindings/remote.h" @@ -114,7 +115,9 @@ class CONTENT_EXPORT NetworkServiceClient std::unique_ptr<base::MemoryPressureListener> memory_pressure_listener_; +#if BUILDFLAG(ENABLE_WEBRTC) std::unique_ptr<WebRtcConnectionsObserver> webrtc_connections_observer_; +#endif #if defined(OS_ANDROID) std::unique_ptr<base::android::ApplicationStatusListener> diff --git a/chromium/content/browser/renderer_host/media/in_process_launched_video_capture_device.cc b/chromium/content/browser/renderer_host/media/in_process_launched_video_capture_device.cc index 5631156ad6f..daa53471d4b 100644 --- a/chromium/content/browser/renderer_host/media/in_process_launched_video_capture_device.cc +++ b/chromium/content/browser/renderer_host/media/in_process_launched_video_capture_device.cc @@ -155,7 +155,8 @@ void InProcessLaunchedVideoCaptureDevice:: gfx::NativeViewId window_id, base::OnceClosure done_cb) { DCHECK(device_task_runner_->BelongsToCurrentThread()); -#if defined(ENABLE_SCREEN_CAPTURE) && !defined(OS_ANDROID) +#if defined(ENABLE_SCREEN_CAPTURE) && BUILDFLAG(ENABLE_WEBRTC) && \ + !defined(OS_ANDROID) DesktopCaptureDevice* desktop_device = static_cast<DesktopCaptureDevice*>(device); desktop_device->SetNotificationWindowId(window_id); diff --git a/chromium/content/browser/renderer_host/media/in_process_video_capture_device_launcher.cc b/chromium/content/browser/renderer_host/media/in_process_video_capture_device_launcher.cc index 6a6009a8afb..d88ed5268c8 100644 --- a/chromium/content/browser/renderer_host/media/in_process_video_capture_device_launcher.cc +++ b/chromium/content/browser/renderer_host/media/in_process_video_capture_device_launcher.cc @@ -38,7 +38,9 @@ #if defined(USE_AURA) #include "content/browser/media/capture/aura_window_video_capture_device.h" #endif +#if BUILDFLAG(ENABLE_WEBRTC) #include "content/browser/media/capture/desktop_capture_device.h" +#endif #endif // defined(OS_ANDROID) #endif // BUILDFLAG(ENABLE_SCREEN_CAPTURE) @@ -318,8 +320,10 @@ void InProcessVideoCaptureDeviceLauncher::DoStartDeviceCaptureOnDeviceThread( DCHECK(device_task_runner_->BelongsToCurrentThread()); DCHECK(video_capture_system_); - std::unique_ptr<media::VideoCaptureDevice> video_capture_device = - video_capture_system_->CreateDevice(device_id); + std::unique_ptr<media::VideoCaptureDevice> video_capture_device; +#if BUILDFLAG(ENABLE_WEBRTC) + video_capture_device = video_capture_system_->CreateDevice(device_id); +#endif if (video_capture_device) video_capture_device->AllocateAndStart(params, std::move(device_client)); @@ -394,7 +398,7 @@ void InProcessVideoCaptureDeviceLauncher::DoStartDesktopCaptureOnDeviceThread( std::unique_ptr<media::VideoCaptureDevice> video_capture_device; #if defined(OS_ANDROID) video_capture_device = std::make_unique<ScreenCaptureDeviceAndroid>(); -#else +#elif BUILDFLAG(ENABLE_WEBRTC) if (!video_capture_device) video_capture_device = DesktopCaptureDevice::Create(desktop_id); #endif // defined (OS_ANDROID) diff --git a/chromium/content/browser/renderer_host/media/media_stream_manager.cc b/chromium/content/browser/renderer_host/media/media_stream_manager.cc index 472b3f879b5..884eb393ba0 100644 --- a/chromium/content/browser/renderer_host/media/media_stream_manager.cc +++ b/chromium/content/browser/renderer_host/media/media_stream_manager.cc @@ -760,6 +760,7 @@ MediaStreamManager::MediaStreamManager( } #endif +#if BUILDFLAG(ENABLE_WEBRTC) if (base::FeatureList::IsEnabled(features::kMojoVideoCapture)) { video_capture_provider = std::make_unique<VideoCaptureProviderSwitcher>( std::make_unique<ServiceVideoCaptureProvider>( @@ -767,7 +768,10 @@ MediaStreamManager::MediaStreamManager( InProcessVideoCaptureProvider::CreateInstanceForNonDeviceCapture( std::move(device_task_runner), base::BindRepeating(&SendVideoCaptureLogMessage))); - } else { + } else +#endif + { + video_capture::uma::LogVideoCaptureServiceEvent( video_capture::uma::BROWSER_USING_LEGACY_CAPTURE); video_capture_provider = InProcessVideoCaptureProvider::CreateInstance( diff --git a/chromium/content/browser/renderer_host/render_process_host_browsertest.cc b/chromium/content/browser/renderer_host/render_process_host_browsertest.cc index f4e62a4ce67..202a6ccfebe 100644 --- a/chromium/content/browser/renderer_host/render_process_host_browsertest.cc +++ b/chromium/content/browser/renderer_host/render_process_host_browsertest.cc @@ -946,6 +946,19 @@ class CaptureStreamRenderProcessHostTest : public RenderProcessHostTest { } }; +// These tests contain WebRTC calls and cannot be run when it isn't enabled. +#if !BUILDFLAG(ENABLE_WEBRTC) +#define GetUserMediaIncrementsVideoCaptureStreams \ + DISABLED_GetUserMediaIncrementsVideoCaptureStreams +#define StopResetsVideoCaptureStreams DISABLED_StopResetsVideoCaptureStreams +#define KillProcessZerosVideoCaptureStreams \ + DISABLED_KillProcessZerosVideoCaptureStreams +#define GetUserMediaAudioOnlyIncrementsMediaStreams \ + DISABLED_GetUserMediaAudioOnlyIncrementsMediaStreams +#define KillProcessZerosAudioCaptureStreams \ + DISABLED_KillProcessZerosAudioCaptureStreams +#endif // BUILDFLAG(ENABLE_WEBRTC) + // Tests that video capture stream count increments when getUserMedia() is // called. IN_PROC_BROWSER_TEST_F(CaptureStreamRenderProcessHostTest, diff --git a/chromium/content/browser/renderer_host/render_process_host_impl.cc b/chromium/content/browser/renderer_host/render_process_host_impl.cc index 3a2941e4e77..c72e548289e 100644 --- a/chromium/content/browser/renderer_host/render_process_host_impl.cc +++ b/chromium/content/browser/renderer_host/render_process_host_impl.cc @@ -118,10 +118,8 @@ #include "content/browser/renderer_host/embedded_frame_sink_provider_impl.h" #include "content/browser/renderer_host/file_utilities_host_impl.h" #include "content/browser/renderer_host/media/media_stream_manager.h" -#include "content/browser/renderer_host/media/media_stream_track_metrics_host.h" #include "content/browser/renderer_host/media/peer_connection_tracker_host.h" #include "content/browser/renderer_host/media/video_capture_host.h" -#include "content/browser/renderer_host/p2p/socket_dispatcher_host.h" #include "content/browser/renderer_host/pepper/pepper_message_filter.h" #include "content/browser/renderer_host/pepper/pepper_renderer_connection.h" #include "content/browser/renderer_host/plugin_registry_impl.h" @@ -166,7 +164,6 @@ #include "content/public/browser/resource_context.h" #include "content/public/browser/resource_coordinator_service.h" #include "content/public/browser/site_isolation_policy.h" -#include "content/public/browser/webrtc_log.h" #include "content/public/common/child_process_host.h" #include "content/public/common/content_client.h" #include "content/public/common/content_constants.h" @@ -276,6 +273,13 @@ #include "content/browser/net/reporting_service_proxy.h" #endif +#if BUILDFLAG(ENABLE_WEBRTC) +#include "content/browser/renderer_host/media/media_stream_track_metrics_host.h" +#include "content/browser/renderer_host/p2p/socket_dispatcher_host.h" +#include "content/browser/webrtc/webrtc_internals.h" +#include "content/public/browser/webrtc_log.h" +#endif + #if BUILDFLAG(USE_MINIKIN_HYPHENATION) #include "content/browser/hyphenation/hyphenation_impl.h" #endif @@ -1994,8 +1998,10 @@ void RenderProcessHostImpl::CreateMessageFilters() { AddFilter(new PepperRendererConnection(GetID())); #endif +#if BUILDFLAG(ENABLE_WEBRTC) p2p_socket_dispatcher_host_ = std::make_unique<P2PSocketDispatcherHost>(GetID()); +#endif scoped_refptr<ServiceWorkerContextWrapper> service_worker_context( static_cast<ServiceWorkerContextWrapper*>( @@ -2255,11 +2261,15 @@ void RenderProcessHostImpl::DumpProfilingData(base::OnceClosure callback) { PeerConnectionTrackerHost* RenderProcessHostImpl::GetPeerConnectionTrackerHost() { +#if BUILDFLAG(ENABLE_WEBRTC) if (!peer_connection_tracker_host_) { peer_connection_tracker_host_ = std::make_unique<PeerConnectionTrackerHost>(this); } return peer_connection_tracker_host_.get(); +#else + return nullptr; +#endif } // static @@ -2429,14 +2439,17 @@ void RenderProcessHostImpl::RegisterMojoInterfaces() { base::ThreadPool::CreateSequencedTaskRunner( {base::MayBlock(), base::TaskPriority::USER_VISIBLE})); +#if BUILDFLAG(ENABLE_WEBRTC) // Note, the base::Unretained() is safe because the target object has an IO // thread deleter and the callback is also targeting the IO thread. When // the RPHI is destroyed it also triggers the destruction of the registry // on the IO thread. media_stream_track_metrics_host_.reset(new MediaStreamTrackMetricsHost()); + registry->AddInterface(base::BindRepeating( &MediaStreamTrackMetricsHost::BindReceiver, base::Unretained(media_stream_track_metrics_host_.get()))); +#endif AddUIThreadInterface( registry.get(), @@ -2447,10 +2460,12 @@ void RenderProcessHostImpl::RegisterMojoInterfaces() { registry->AddInterface( base::BindRepeating(&metrics::CreateSingleSampleMetricsProvider)); +#if BUILDFLAG(ENABLE_WEBRTC) AddUIThreadInterface( registry.get(), base::BindRepeating(&RenderProcessHostImpl::BindPeerConnectionTrackerHost, weak_factory_.GetWeakPtr())); +#endif AddUIThreadInterface( registry.get(), @@ -2463,10 +2478,12 @@ void RenderProcessHostImpl::RegisterMojoInterfaces() { base::BindRepeating(&CreateReportingServiceProxy, GetID())); #endif // BUILDFLAG(ENABLE_REPORTING) +#if BUILDFLAG(ENABLE_WEBRTC) AddUIThreadInterface( registry.get(), base::BindRepeating(&RenderProcessHostImpl::BindP2PSocketManager, weak_factory_.GetWeakPtr())); +#endif AddUIThreadInterface( registry.get(), @@ -2526,10 +2543,12 @@ void RenderProcessHostImpl::RegisterMojoInterfaces() { base::BindRepeating(&RenderProcessHostImpl::BindVideoDecoderService, weak_factory_.GetWeakPtr())); +#if BUILDFLAG(ENABLE_WEBRTC) AddUIThreadInterface( registry.get(), base::BindRepeating(&RenderProcessHostImpl::BindAecDumpManager, weak_factory_.GetWeakPtr())); +#endif // ---- Please do not register interfaces below this line ------ // @@ -2651,10 +2670,13 @@ void RenderProcessHostImpl::BindWebDatabaseHostImpl( base::BindOnce(&WebDatabaseHostImpl::Create, GetID(), base::WrapRefCounted(db_tracker), std::move(receiver))); } + +#if BUILDFLAG(ENABLE_WEBRTC) void RenderProcessHostImpl::BindAecDumpManager( mojo::PendingReceiver<blink::mojom::AecDumpManager> receiver) { aec_dump_manager_.AddReceiver(std::move(receiver)); } +#endif void RenderProcessHostImpl::CreateOneShotSyncService( mojo::PendingReceiver<blink::mojom::OneShotBackgroundSyncService> @@ -2677,10 +2699,12 @@ void RenderProcessHostImpl::BindPushMessagingManager( push_messaging_manager_->AddPushMessagingReceiver(std::move(receiver)); } +#if BUILDFLAG(ENABLE_WEBRTC) void RenderProcessHostImpl::BindP2PSocketManager( mojo::PendingReceiver<network::mojom::P2PSocketManager> receiver) { p2p_socket_dispatcher_host_->BindReceiver(std::move(receiver)); } +#endif void RenderProcessHostImpl::CreateMediaLogRecordHost( mojo::PendingReceiver<content::mojom::MediaInternalLogRecords> receiver) { @@ -3469,6 +3493,7 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer( #if BUILDFLAG(ENABLE_PLUGINS) switches::kEnablePepperTesting, #endif +#if BUILDFLAG(ENABLE_WEBRTC) switches::kDisableWebRtcHWDecoding, switches::kDisableWebRtcHWEncoding, switches::kEnableWebRtcSrtpAesGcm, @@ -3476,6 +3501,7 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer( switches::kEnableWebRtcStunOrigin, switches::kEnforceWebRtcIPPermissionCheck, switches::kWebRtcMaxCaptureFramerate, +#endif switches::kEnableLowEndDeviceMode, switches::kDisableLowEndDeviceMode, switches::kDisallowNonExactResourceReuse, @@ -3504,6 +3530,7 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer( BrowserChildProcessHostImpl::CopyFeatureAndFieldTrialFlags(renderer_cmd); BrowserChildProcessHostImpl::CopyTraceStartupFlags(renderer_cmd); +#if BUILDFLAG(ENABLE_WEBRTC) // Only run the Stun trials in the first renderer. if (!has_done_stun_trials && browser_cmd.HasSwitch(switches::kWebRtcStunProbeTrialParameter)) { @@ -3513,6 +3540,7 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer( browser_cmd.GetSwitchValueASCII( switches::kWebRtcStunProbeTrialParameter)); } +#endif // Disable databases in incognito mode. if (GetBrowserContext()->IsOffTheRecord() && @@ -3847,11 +3875,13 @@ void RenderProcessHostImpl::Cleanup() { "render_process_host", this, "browser_context", browser_context_); +#if BUILDFLAG(ENABLE_WEBRTC) if (is_initialized_) { GetIOThreadTaskRunner({})->PostTask( FROM_HERE, base::BindOnce(&WebRtcLog::ClearLogMessageCallback, GetID())); } +#endif if (!keep_alive_start_time_.is_null()) { UMA_HISTOGRAM_LONG_TIMES("BrowserRenderProcessHost.KeepAliveDuration", @@ -3982,6 +4012,7 @@ void RenderProcessHostImpl::FilterURL(bool empty_allowed, GURL* url) { FilterURL(this, empty_allowed, url); } +#if BUILDFLAG(ENABLE_WEBRTC) void RenderProcessHostImpl::EnableAudioDebugRecordings( const base::FilePath& file_path) { DCHECK_CURRENTLY_ON(BrowserThread::UI); @@ -4014,6 +4045,7 @@ void RenderProcessHostImpl::EnableWebRtcEventLogOutput(int lid, void RenderProcessHostImpl::DisableWebRtcEventLogOutput(int lid) { GetPeerConnectionTrackerHost()->StopEventLog(lid); } +#endif // BUILDFLAG(ENABLE_WEBRTC) IPC::ChannelProxy* RenderProcessHostImpl::GetChannel() { return channel_.get(); @@ -5040,8 +5072,10 @@ void RenderProcessHostImpl::OnProcessLaunched() { #endif } +#if BUILDFLAG(ENABLE_WEBRTC) aec_dump_manager_.set_pid(GetProcess().Pid()); aec_dump_manager_.AutoStart(); +#endif tracing_registration_ = TracingServiceController::Get().RegisterClient( GetProcess().Pid(), @@ -5136,10 +5170,12 @@ void RenderProcessHostImpl::CreateAgentMetricsCollectorHost( } } +#if BUILDFLAG(ENABLE_WEBRTC) void RenderProcessHostImpl::BindPeerConnectionTrackerHost( mojo::PendingReceiver<blink::mojom::PeerConnectionTrackerHost> receiver) { GetPeerConnectionTrackerHost()->BindReceiver(std::move(receiver)); } +#endif #if BUILDFLAG(ENABLE_MDNS) void RenderProcessHostImpl::CreateMdnsResponder( diff --git a/chromium/content/browser/renderer_host/render_process_host_impl.h b/chromium/content/browser/renderer_host/render_process_host_impl.h index 008bb38131d..d28b50b5a67 100644 --- a/chromium/content/browser/renderer_host/render_process_host_impl.h +++ b/chromium/content/browser/renderer_host/render_process_host_impl.h @@ -114,8 +114,6 @@ class CodeCacheHostImpl; class FileSystemManagerImpl; class InProcessChildThreadParams; class IsolationContext; -class MediaStreamTrackMetricsHost; -class P2PSocketDispatcherHost; class PermissionServiceContext; class PeerConnectionTrackerHost; class PluginRegistryImpl; @@ -134,6 +132,11 @@ class StoragePartition; class StoragePartitionImpl; struct ChildProcessTerminationInfo; +#if BUILDFLAG(ENABLE_WEBRTC) +class MediaStreamTrackMetricsHost; +class P2PSocketDispatcherHost; +#endif + typedef base::Thread* (*RendererMainThreadFactoryFunction)( const InProcessChildThreadParams& params, int32_t renderer_client_id); @@ -234,6 +237,7 @@ class CONTENT_EXPORT RenderProcessHostImpl bool FastShutdownStarted() override; base::TimeDelta GetChildProcessIdleTime() override; void FilterURL(bool empty_allowed, GURL* url) override; +#if BUILDFLAG(ENABLE_WEBRTC) void EnableAudioDebugRecordings(const base::FilePath& file) override; void DisableAudioDebugRecordings() override; WebRtcStopRtpDumpCallback StartRtpDump( @@ -242,6 +246,7 @@ class CONTENT_EXPORT RenderProcessHostImpl WebRtcRtpPacketCallback packet_callback) override; void EnableWebRtcEventLogOutput(int lid, int output_period_ms) override; void DisableWebRtcEventLogOutput(int lid) override; +#endif void BindReceiver(mojo::GenericPendingReceiver receiver) override; std::unique_ptr<base::PersistentMemoryAllocator> TakeMetricsAllocator() override; @@ -799,12 +804,16 @@ class CONTENT_EXPORT RenderProcessHostImpl mojo::PendingReceiver<media::mojom::InterfaceFactory> receiver); void BindWebDatabaseHostImpl( mojo::PendingReceiver<blink::mojom::WebDatabaseHost> receiver); +#if BUILDFLAG(ENABLE_WEBRTC) void BindAecDumpManager( mojo::PendingReceiver<blink::mojom::AecDumpManager> receiver); +#endif void BindPushMessagingManager( mojo::PendingReceiver<blink::mojom::PushMessaging> receiver); +#if BUILDFLAG(ENABLE_WEBRTC) void BindP2PSocketManager( mojo::PendingReceiver<network::mojom::P2PSocketManager> receiver); +#endif void CreateMediaLogRecordHost( mojo::PendingReceiver<content::mojom::MediaInternalLogRecords> receiver); #if BUILDFLAG(ENABLE_PLUGINS) @@ -900,8 +909,10 @@ class CONTENT_EXPORT RenderProcessHostImpl void CreateAgentMetricsCollectorHost( mojo::PendingReceiver<blink::mojom::AgentMetricsCollectorHost> receiver); +#if BUILDFLAG(ENABLE_WEBRTC) void BindPeerConnectionTrackerHost( mojo::PendingReceiver<blink::mojom::PeerConnectionTrackerHost> receiver); +#endif #if BUILDFLAG(ENABLE_MDNS) void CreateMdnsResponder( @@ -1139,13 +1150,16 @@ class CONTENT_EXPORT RenderProcessHostImpl // and calling through RenderProcessHostObserver::RenderProcessExited. bool within_process_died_observer_; - std::unique_ptr<P2PSocketDispatcherHost> p2p_socket_dispatcher_host_; +#if BUILDFLAG(ENABLE_WEBRTC) + std::unique_ptr <P2PSocketDispatcherHost> + p2p_socket_dispatcher_host_; // Must be accessed on UI thread. AecDumpManagerImpl aec_dump_manager_; std::unique_ptr<MediaStreamTrackMetricsHost, BrowserThread::DeleteOnIOThread> media_stream_track_metrics_host_; +#endif std::unique_ptr<AgentMetricsCollectorHost> agent_metrics_collector_host_; diff --git a/chromium/content/browser/webrtc/webrtc_internals.cc b/chromium/content/browser/webrtc/webrtc_internals.cc index b1465594228..f9ae80ad7bd 100644 --- a/chromium/content/browser/webrtc/webrtc_internals.cc +++ b/chromium/content/browser/webrtc/webrtc_internals.cc @@ -106,6 +106,10 @@ WebRTCInternals::WebRTCInternals(int aggregate_updates_ms, DCHECK_CURRENTLY_ON(BrowserThread::UI); DCHECK(!g_webrtc_internals); +// TODO(grunell): Shouldn't all the webrtc_internals* files be excluded from the +// build if WebRTC is disabled? +// https://crbug.com/817446 +#if BUILDFLAG(ENABLE_WEBRTC) audio_debug_recordings_file_path_ = GetContentClient()->browser()->GetDefaultDownloadDirectory(); event_log_recordings_file_path_ = audio_debug_recordings_file_path_; @@ -137,6 +141,7 @@ WebRTCInternals::WebRTCInternals(int aggregate_updates_ms, event_log_recordings_ = true; event_log_recordings_file_path_.clear(); } +#endif // BUILDFLAG(ENABLE_WEBRTC) g_webrtc_internals = this; } @@ -362,6 +367,7 @@ void WebRTCInternals::UpdateObserver(WebRTCInternalsUIObserver* observer) { void WebRTCInternals::EnableAudioDebugRecordings( content::WebContents* web_contents) { DCHECK_CURRENTLY_ON(BrowserThread::UI); +#if BUILDFLAG(ENABLE_WEBRTC) #if defined(OS_ANDROID) EnableAudioDebugRecordingsOnAllRenderProcessHosts(); #else @@ -376,10 +382,12 @@ void WebRTCInternals::EnableAudioDebugRecordings( base::FilePath::StringType(), web_contents->GetTopLevelNativeWindow(), nullptr); #endif +#endif } void WebRTCInternals::DisableAudioDebugRecordings() { DCHECK_CURRENTLY_ON(BrowserThread::UI); +#if BUILDFLAG(ENABLE_WEBRTC) if (!audio_debug_recording_session_) return; audio_debug_recording_session_.reset(); @@ -393,6 +401,7 @@ void WebRTCInternals::DisableAudioDebugRecordings() { !i.IsAtEnd(); i.Advance()) { i.GetCurrentValue()->DisableAudioDebugRecordings(); } +#endif } bool WebRTCInternals::IsAudioDebugRecordingsEnabled() const { @@ -409,6 +418,7 @@ void WebRTCInternals::EnableLocalEventLogRecordings( content::WebContents* web_contents) { DCHECK_CURRENTLY_ON(BrowserThread::UI); DCHECK(CanToggleEventLogRecordings()); +#if BUILDFLAG(ENABLE_WEBRTC) #if defined(OS_ANDROID) WebRtcEventLogger* const logger = WebRtcEventLogger::Get(); if (logger) { @@ -427,9 +437,11 @@ void WebRTCInternals::EnableLocalEventLogRecordings( event_log_recordings_file_path_, nullptr, 0, FILE_PATH_LITERAL(""), web_contents->GetTopLevelNativeWindow(), nullptr); #endif +#endif } void WebRTCInternals::DisableLocalEventLogRecordings() { +#if BUILDFLAG(ENABLE_WEBRTC) event_log_recordings_ = false; // Tear down the dialog since the user has unchecked the event log checkbox. select_file_dialog_ = nullptr; @@ -438,6 +450,7 @@ void WebRTCInternals::DisableLocalEventLogRecordings() { if (logger) { logger->DisableLocalLogging(base::OnceCallback<void(bool)>()); } +#endif } bool WebRTCInternals::IsEventLogRecordingsEnabled() const { @@ -478,6 +491,7 @@ void WebRTCInternals::RenderProcessExited( void WebRTCInternals::FileSelected(const base::FilePath& path, int /* unused_index */, void* /*unused_params */) { +#if BUILDFLAG(ENABLE_WEBRTC) DCHECK_CURRENTLY_ON(BrowserThread::UI); switch (selection_type_) { case SelectionType::kRtcEventLogs: { @@ -496,9 +510,11 @@ void WebRTCInternals::FileSelected(const base::FilePath& path, } default: { NOTREACHED(); } } +#endif } void WebRTCInternals::FileSelectionCanceled(void* params) { +#if BUILDFLAG(ENABLE_WEBRTC) DCHECK_CURRENTLY_ON(BrowserThread::UI); switch (selection_type_) { case SelectionType::kRtcEventLogs: @@ -511,6 +527,7 @@ void WebRTCInternals::FileSelectionCanceled(void* params) { NOTREACHED(); } select_file_dialog_ = nullptr; +#endif } void WebRTCInternals::OnRendererExit(int render_process_id) { @@ -566,6 +583,7 @@ void WebRTCInternals::OnRendererExit(int render_process_id) { } } +#if BUILDFLAG(ENABLE_WEBRTC) void WebRTCInternals::EnableAudioDebugRecordingsOnAllRenderProcessHosts() { DCHECK_CURRENTLY_ON(BrowserThread::UI); DCHECK(!audio_debug_recording_session_); @@ -582,6 +600,7 @@ void WebRTCInternals::EnableAudioDebugRecordingsOnAllRenderProcessHosts() { audio_debug_recordings_file_path_); } } +#endif void WebRTCInternals::MaybeClosePeerConnection(base::DictionaryValue* record) { bool is_open; diff --git a/chromium/content/browser/webrtc/webrtc_internals.h b/chromium/content/browser/webrtc/webrtc_internals.h index a2761e98bf7..3801a6c03ab 100644 --- a/chromium/content/browser/webrtc/webrtc_internals.h +++ b/chromium/content/browser/webrtc/webrtc_internals.h @@ -172,9 +172,11 @@ class CONTENT_EXPORT WebRTCInternals : public RenderProcessHostObserver, // Called when a renderer exits (including crashes). void OnRendererExit(int render_process_id); +#if BUILDFLAG(ENABLE_WEBRTC) // Enables diagnostic audio recordings on all render process hosts using // |audio_debug_recordings_file_path_|. void EnableAudioDebugRecordingsOnAllRenderProcessHosts(); +#endif // Updates the number of open PeerConnections. Called when a PeerConnection // is stopped or removed. diff --git a/chromium/content/browser/webui/content_web_ui_controller_factory.cc b/chromium/content/browser/webui/content_web_ui_controller_factory.cc index 6012229fe08..774b1403b73 100644 --- a/chromium/content/browser/webui/content_web_ui_controller_factory.cc +++ b/chromium/content/browser/webui/content_web_ui_controller_factory.cc @@ -16,13 +16,16 @@ #include "content/browser/service_worker/service_worker_internals_ui.h" #include "content/browser/tracing/tracing_ui.h" #include "content/browser/ukm_internals_ui.h" -#include "content/browser/webrtc/webrtc_internals_ui.h" #include "content/public/browser/storage_partition.h" #include "content/public/browser/web_contents.h" #include "content/public/browser/web_ui.h" #include "content/public/common/url_constants.h" #include "media/media_buildflags.h" +#if BUILDFLAG(ENABLE_WEBRTC) +#include "content/browser/webrtc/webrtc_internals_ui.h" +#endif + namespace content { WebUI::TypeID ContentWebUIControllerFactory::GetWebUIType( @@ -86,8 +89,10 @@ ContentWebUIControllerFactory::CreateWebUIControllerForURL(WebUI* web_ui, if (url.host_piece() == kChromeUITracingHost) return std::make_unique<TracingUI>(web_ui); #endif +#if BUILDFLAG(ENABLE_WEBRTC) if (url.host_piece() == kChromeUIWebRTCInternalsHost) return std::make_unique<WebRTCInternalsUI>(web_ui); +#endif if (url.host_piece() == kChromeUIProcessInternalsHost) return std::make_unique<ProcessInternalsUI>(web_ui); if (url.host_piece() == kChromeUIConversionInternalsHost) diff --git a/chromium/content/common/BUILD.gn b/chromium/content/common/BUILD.gn index 82018ea14fc..d499253e23f 100644 --- a/chromium/content/common/BUILD.gn +++ b/chromium/content/common/BUILD.gn @@ -7,6 +7,7 @@ import("//build/config/features.gni") import("//build/config/ui.gni") import("//content/public/common/zygote/features.gni") import("//ipc/features.gni") +import("//media/media_options.gni") import("//mojo/public/tools/bindings/mojom.gni") import("//ppapi/buildflags/buildflags.gni") import("//sandbox/features.gni") @@ -335,6 +336,15 @@ source_set("common") { deps += [ "//ppapi/proxy:ipc_sources" ] } + if (enable_webrtc) { + sources += [ + "p2p_messages.h", + "p2p_socket_type.h", + ] + deps += [ + "//third_party/webrtc_overrides:webrtc_component", + ] + } if (!use_x11 && !use_ozone) { sources -= [ "cursors/webcursor_ozone.cc" ] } diff --git a/chromium/content/public/browser/BUILD.gn b/chromium/content/public/browser/BUILD.gn index bd83dfa0a32..1defedb6c48 100644 --- a/chromium/content/public/browser/BUILD.gn +++ b/chromium/content/public/browser/BUILD.gn @@ -4,6 +4,7 @@ import("//build/config/ui.gni") import("//device/vr/buildflags/buildflags.gni") +import("//media/media_options.gni") import("//ppapi/buildflags/buildflags.gni") import("//third_party/protobuf/proto_library.gni") import("//third_party/webrtc/webrtc.gni") @@ -138,8 +139,6 @@ source_set("browser_sources") { "cors_origin_pattern_setter.cc", "cors_origin_pattern_setter.h", "dedicated_worker_service.h", - "desktop_capture.cc", - "desktop_capture.h", "desktop_media_id.cc", "desktop_media_id.h", "desktop_streams_registry.h", @@ -411,8 +410,6 @@ source_set("browser_sources") { "web_ui_url_loader_factory.h", "webrtc_event_logger.cc", "webrtc_event_logger.h", - "webrtc_log.cc", - "webrtc_log.h", "websocket_handshake_request_info.h", "worker_type.h", ] @@ -459,9 +456,7 @@ source_set("browser_sources") { "//services/service_manager/public/cpp", "//services/tracing/public/cpp", "//services/tracing/public/mojom", - "//services/video_capture/public/mojom", "//services/viz/public/mojom", - "//third_party/webrtc_overrides:webrtc_component", # We expose skia headers in the public API. "//skia", @@ -554,6 +549,19 @@ source_set("browser_sources") { "//device/vr/public/mojom", ] } + + if (enable_webrtc) { + sources += [ + "desktop_capture.cc", + "desktop_capture.h", + "webrtc_log.cc", + "webrtc_log.h", + ] + public_deps += [ + "//services/video_capture/public/mojom", + "//third_party/webrtc_overrides:webrtc_component", + ] + } } if (is_android) { diff --git a/chromium/content/public/browser/render_process_host.h b/chromium/content/public/browser/render_process_host.h index 941825ec995..1de0bb5a095 100644 --- a/chromium/content/public/browser/render_process_host.h +++ b/chromium/content/public/browser/render_process_host.h @@ -333,6 +333,7 @@ class CONTENT_EXPORT RenderProcessHost : public IPC::Sender, // |empty_allowed| must be set to false for navigations for security reasons. virtual void FilterURL(bool empty_allowed, GURL* url) = 0; +#if BUILDFLAG(ENABLE_WEBRTC) virtual void EnableAudioDebugRecordings(const base::FilePath& file) = 0; virtual void DisableAudioDebugRecordings() = 0; @@ -356,6 +357,7 @@ class CONTENT_EXPORT RenderProcessHost : public IPC::Sender, // identified locally within the RPH using the ID |lid|. virtual void EnableWebRtcEventLogOutput(int lid, int output_period_ms) = 0; virtual void DisableWebRtcEventLogOutput(int lid) = 0; +#endif // Asks the renderer process to bind |receiver|. |receiver| arrives in the // renderer process and is carried through the following flow, stopping if any diff --git a/chromium/content/public/browser/webrtc_log.h b/chromium/content/public/browser/webrtc_log.h index 6aacf6585b2..dc0d69c97d4 100644 --- a/chromium/content/public/browser/webrtc_log.h +++ b/chromium/content/public/browser/webrtc_log.h @@ -12,6 +12,10 @@ #include "content/common/content_export.h" #include "media/media_buildflags.h" +#if !BUILDFLAG(ENABLE_WEBRTC) +#error "WebRTC not enabled." +#endif + namespace content { class CONTENT_EXPORT WebRtcLog { diff --git a/chromium/content/public/common/content_switches.cc b/chromium/content/public/common/content_switches.cc index 5696dc4c8e7..c439b65e1e0 100644 --- a/chromium/content/public/common/content_switches.cc +++ b/chromium/content/public/common/content_switches.cc @@ -830,6 +830,7 @@ const char kWebOtpBackendSmsVerification[] = "web-otp-backend-sms-verification"; // Enables User Consent backend for Web OTP API. const char kWebOtpBackendUserConsent[] = "web-otp-backend-user-consent"; +#if BUILDFLAG(ENABLE_WEBRTC) // Disables encryption of RTP Media for WebRTC. When Chrome embeds Content, it // ignores this switch on its stable and beta channels. const char kDisableWebRtcEncryption[] = "disable-webrtc-encryption"; @@ -877,6 +878,7 @@ const char kWebRtcMaxCpuConsumptionPercentage[] = // interval. Please see SetupStunProbeTrial in // chrome_browser_field_trials_desktop.cc for more detail. const char kWebRtcStunProbeTrialParameter[] = "webrtc-stun-probe-trial"; +#endif // BUILDFLAG(ENABLE_WEBRTC) // Enable capture and local storage of WebRTC event logs without visiting // chrome://webrtc-internals. This is useful for automated testing. It accepts diff --git a/chromium/content/public/common/content_switches.h b/chromium/content/public/common/content_switches.h index bc16eb6cdde..5f5970964d9 100644 --- a/chromium/content/public/common/content_switches.h +++ b/chromium/content/public/common/content_switches.h @@ -227,6 +227,7 @@ CONTENT_EXPORT extern const char kZygoteProcess[]; CONTENT_EXPORT extern const char kWebOtpBackend[]; CONTENT_EXPORT extern const char kWebOtpBackendSmsVerification[]; CONTENT_EXPORT extern const char kWebOtpBackendUserConsent[]; +#if BUILDFLAG(ENABLE_WEBRTC) CONTENT_EXPORT extern const char kDisableWebRtcEncryption[]; CONTENT_EXPORT extern const char kDisableWebRtcHWDecoding[]; CONTENT_EXPORT extern const char kDisableWebRtcHWEncoding[]; @@ -239,6 +240,11 @@ CONTENT_EXPORT extern const char kWaitForDebuggerWebUI[]; extern const char kWebRtcMaxCaptureFramerate[]; extern const char kWebRtcMaxCpuConsumptionPercentage[]; CONTENT_EXPORT extern const char kWebRtcStunProbeTrialParameter[]; +#endif + +// TODO(eladalon): Move into "#if BUILDFLAG(ENABLE_WEBRTC)" section when +// WebRTCInternals is excluded from the build for non-WebRTC builds. +// https://crbug.com/817446 CONTENT_EXPORT extern const char kWebRtcLocalEventLogging[]; CONTENT_EXPORT extern const char kDisableScrollToTextFragment[]; diff --git a/chromium/content/public/renderer/BUILD.gn b/chromium/content/public/renderer/BUILD.gn index dc6d10885ef..401ca36d693 100644 --- a/chromium/content/public/renderer/BUILD.gn +++ b/chromium/content/public/renderer/BUILD.gn @@ -89,7 +89,6 @@ target(link_target_type, "renderer_sources") { "//skia", "//third_party/blink/public:blink_headers", "//third_party/blink/public/common", - "//third_party/webrtc_overrides:webrtc_component", "//third_party/widevine/cdm:headers", "//ui/base", "//ui/base/ime", @@ -108,6 +107,12 @@ target(link_target_type, "renderer_sources") { deps += [ "//sandbox" ] } + if (enable_webrtc) { + deps += [ + "//third_party/webrtc_overrides:webrtc_component", + ] + } + if (enable_library_cdms) { sources += [ "key_system_support.cc", diff --git a/chromium/content/renderer/BUILD.gn b/chromium/content/renderer/BUILD.gn index dc2c25bb670..80ce235c3fc 100644 --- a/chromium/content/renderer/BUILD.gn +++ b/chromium/content/renderer/BUILD.gn @@ -307,7 +307,6 @@ target(link_target_type, "renderer") { "//content/gpu:gpu_sources", "//content/public/child:child_sources", "//content/public/common:service_names", - "//crypto", "//crypto:platform", "//device/base/synchronization", "//device/gamepad/public/cpp:shared_with_blink", @@ -442,7 +441,7 @@ target(link_target_type, "renderer") { } } - if (enable_plugins) { + if (enable_plugins && enable_webrtc) { sources += [ "pepper/pepper_media_stream_audio_track_host.cc", "pepper/pepper_media_stream_audio_track_host.h", diff --git a/chromium/content/renderer/media/media_factory.cc b/chromium/content/renderer/media/media_factory.cc index e328190798e..576b569ea57 100644 --- a/chromium/content/renderer/media/media_factory.cc +++ b/chromium/content/renderer/media/media_factory.cc @@ -692,6 +692,7 @@ blink::WebMediaPlayer* MediaFactory::CreateWebMediaPlayerForMediaStream( blink::WebLocalFrame* frame, viz::FrameSinkId parent_frame_sink_id, const cc::LayerTreeSettings& settings) { +#if BUILDFLAG(ENABLE_WEBRTC) RenderThreadImpl* const render_thread = RenderThreadImpl::current(); scoped_refptr<base::SingleThreadTaskRunner> @@ -726,6 +727,9 @@ blink::WebMediaPlayer* MediaFactory::CreateWebMediaPlayerForMediaStream( parent_frame_sink_id, blink::WebSurfaceLayerBridge::ContainsVideo::kYes), std::move(submitter), GetVideoSurfaceLayerMode()); +#else + return NULL; +#endif // BUILDFLAG(ENABLE_WEBRTC) } media::RendererWebMediaPlayerDelegate* diff --git a/chromium/content/renderer/pepper/content_renderer_pepper_host_factory.cc b/chromium/content/renderer/pepper/content_renderer_pepper_host_factory.cc index 9648fe8ee4c..3af256c5395 100644 --- a/chromium/content/renderer/pepper/content_renderer_pepper_host_factory.cc +++ b/chromium/content/renderer/pepper/content_renderer_pepper_host_factory.cc @@ -148,9 +148,11 @@ ContentRendererPepperHostFactory::CreateResourceHost( resource); case PpapiHostMsg_WebSocket_Create::ID: return std::make_unique<PepperWebSocketHost>(host_, instance, resource); +#if BUILDFLAG(ENABLE_WEBRTC) case PpapiHostMsg_MediaStreamVideoTrack_Create::ID: return std::make_unique<PepperMediaStreamVideoTrackHost>(host_, instance, resource); +#endif // BUILDFLAG(ENABLE_WEBRTC) } // Dev interfaces. diff --git a/chromium/content/renderer/pepper/pepper_media_device_manager.cc b/chromium/content/renderer/pepper/pepper_media_device_manager.cc index c00f38126ad..f8d10ec9320 100644 --- a/chromium/content/renderer/pepper/pepper_media_device_manager.cc +++ b/chromium/content/renderer/pepper/pepper_media_device_manager.cc @@ -105,6 +105,7 @@ PepperMediaDeviceManager::~PepperMediaDeviceManager() { void PepperMediaDeviceManager::EnumerateDevices(PP_DeviceType_Dev type, DevicesOnceCallback callback) { +#if BUILDFLAG(ENABLE_WEBRTC) bool request_audio_input = type == PP_DEVICETYPE_DEV_AUDIOCAPTURE; bool request_video_input = type == PP_DEVICETYPE_DEV_VIDEOCAPTURE; bool request_audio_output = type == PP_DEVICETYPE_DEV_AUDIOOUTPUT; @@ -115,11 +116,20 @@ void PepperMediaDeviceManager::EnumerateDevices(PP_DeviceType_Dev type, false /* request_audio_input_capabilities */, base::BindOnce(&PepperMediaDeviceManager::DevicesEnumerated, AsWeakPtr(), std::move(callback), ToMediaDeviceType(type))); +#else + base::ThreadTaskRunnerHandle::Get()->PostTask( + FROM_HERE, base::BindOnce(&PepperMediaDeviceManager::DevicesEnumerated, + AsWeakPtr(), std::move(callback), ToMediaDeviceType(type), + std::vector<blink::WebMediaDeviceInfoArray>(), + std::vector<blink::mojom::VideoInputDeviceCapabilitiesPtr>(), + std::vector<blink::mojom::AudioInputDeviceCapabilitiesPtr>())); +#endif } size_t PepperMediaDeviceManager::StartMonitoringDevices( PP_DeviceType_Dev type, const DevicesCallback& callback) { +#if BUILDFLAG(ENABLE_WEBRTC) bool subscribe_audio_input = type == PP_DEVICETYPE_DEV_AUDIOCAPTURE; bool subscribe_video_input = type == PP_DEVICETYPE_DEV_VIDEOCAPTURE; bool subscribe_audio_output = type == PP_DEVICETYPE_DEV_AUDIOOUTPUT; @@ -136,10 +146,14 @@ size_t PepperMediaDeviceManager::StartMonitoringDevices( subscriptions.push_back(Subscription{subscription_id, callback}); return subscription_id; +#else + return 0u; +#endif } void PepperMediaDeviceManager::StopMonitoringDevices(PP_DeviceType_Dev type, size_t subscription_id) { +#if BUILDFLAG(ENABLE_WEBRTC) SubscriptionList& subscriptions = device_change_subscriptions_[ToMediaDeviceType(type)]; base::EraseIf(subscriptions, @@ -147,6 +161,7 @@ void PepperMediaDeviceManager::StopMonitoringDevices(PP_DeviceType_Dev type, return subscription.first == subscription_id; }); receivers_.Remove(subscription_id); +#endif } int PepperMediaDeviceManager::OpenDevice(PP_DeviceType_Dev type, @@ -172,11 +187,18 @@ int PepperMediaDeviceManager::OpenDevice(PP_DeviceType_Dev type, return request_id; } +#if BUILDFLAG(ENABLE_WEBRTC) GetMediaStreamDispatcherHost()->OpenDevice( request_id, device_id, PepperMediaDeviceManager::FromPepperDeviceType(type), base::BindOnce(&PepperMediaDeviceManager::OnDeviceOpened, AsWeakPtr(), request_id)); +#else + base::ThreadTaskRunnerHandle::Get()->PostTask( + FROM_HERE, + base::BindOnce(&PepperMediaDeviceManager::OnDeviceOpened, AsWeakPtr(), + request_id, false, std::string(), blink::MediaStreamDevice())); +#endif return request_id; } @@ -184,20 +206,25 @@ int PepperMediaDeviceManager::OpenDevice(PP_DeviceType_Dev type, void PepperMediaDeviceManager::CancelOpenDevice(int request_id) { open_callbacks_.erase(request_id); +#if BUILDFLAG(ENABLE_WEBRTC) GetMediaStreamDispatcherHost()->CancelRequest(request_id); +#endif } void PepperMediaDeviceManager::CloseDevice(const std::string& label) { +#if BUILDFLAG(ENABLE_WEBRTC) if (!GetMediaStreamDeviceObserver()->RemoveStream( blink::WebString::FromUTF8(label))) return; GetMediaStreamDispatcherHost()->CloseDevice(label); +#endif } base::UnguessableToken PepperMediaDeviceManager::GetSessionID( PP_DeviceType_Dev type, const std::string& label) { +#if BUILDFLAG(ENABLE_WEBRTC) switch (type) { case PP_DEVICETYPE_DEV_AUDIOCAPTURE: return GetMediaStreamDeviceObserver()->GetAudioSessionId( @@ -209,6 +236,9 @@ base::UnguessableToken PepperMediaDeviceManager::GetSessionID( NOTREACHED(); return base::UnguessableToken(); } +#else + return base::UnguessableToken(); +#endif } // static @@ -248,9 +278,11 @@ void PepperMediaDeviceManager::OnDeviceOpened( return; } +#if BUILDFLAG(ENABLE_WEBRTC) if (success) GetMediaStreamDeviceObserver()->AddStream(blink::WebString::FromUTF8(label), device); +#endif OpenDeviceCallback callback = std::move(iter->second); open_callbacks_.erase(iter); diff --git a/chromium/content/renderer/pepper/resource_converter.cc b/chromium/content/renderer/pepper/resource_converter.cc index 9f40c432b5e..5c831aec5fb 100644 --- a/chromium/content/renderer/pepper/resource_converter.cc +++ b/chromium/content/renderer/pepper/resource_converter.cc @@ -162,6 +162,7 @@ bool DOMMediaStreamTrackToResource( std::unique_ptr<IPC::Message>* create_message) { DCHECK(!dom_media_stream_track.IsNull()); *pending_renderer_id = 0; +#if BUILDFLAG(ENABLE_WEBRTC) const blink::WebMediaStreamTrack track = dom_media_stream_track.Component(); const std::string id = track.Source().Id().Utf8(); @@ -187,6 +188,7 @@ bool DOMMediaStreamTrackToResource( new PpapiPluginMsg_MediaStreamAudioTrack_CreateFromPendingHost(id)); return true; } +#endif return false; } diff --git a/chromium/content/renderer/render_frame_impl.cc b/chromium/content/renderer/render_frame_impl.cc index 23fc00b4f30..1ee3762639c 100644 --- a/chromium/content/renderer/render_frame_impl.cc +++ b/chromium/content/renderer/render_frame_impl.cc @@ -6250,9 +6250,11 @@ void RenderFrameImpl::InitializeMediaStreamDeviceObserver() { if (!render_thread) // Will be NULL during unit tests. return; +#if BUILDFLAG(ENABLE_WEBRTC) DCHECK(!web_media_stream_device_observer_); web_media_stream_device_observer_ = std::make_unique<blink::WebMediaStreamDeviceObserver>(GetWebFrame()); +#endif } void RenderFrameImpl::PrepareRenderViewForNavigation( diff --git a/chromium/content/renderer/render_view_impl.cc b/chromium/content/renderer/render_view_impl.cc index fec5e2312b7..8fb9d4f38b1 100644 --- a/chromium/content/renderer/render_view_impl.cc +++ b/chromium/content/renderer/render_view_impl.cc @@ -1043,6 +1043,7 @@ void RenderViewImpl::SetPageFrozen(bool frozen) { #if defined(OS_ANDROID) void RenderViewImpl::SuspendVideoCaptureDevices(bool suspend) { +#if BUILDFLAG(ENABLE_WEBRTC) if (!main_render_frame_) return; @@ -1055,6 +1056,7 @@ void RenderViewImpl::SuspendVideoCaptureDevices(bool suspend) { media_stream_device_observer->GetNonScreenCaptureDevices(); RenderThreadImpl::current()->video_capture_impl_manager()->SuspendDevices( video_devices, suspend); +#endif // BUILDFLAG(ENABLE_WEBRTC) } #endif // defined(OS_ANDROID) diff --git a/chromium/content/renderer/renderer_blink_platform_impl.cc b/chromium/content/renderer/renderer_blink_platform_impl.cc index ca435bda981..119e70d2749 100644 --- a/chromium/content/renderer/renderer_blink_platform_impl.cc +++ b/chromium/content/renderer/renderer_blink_platform_impl.cc @@ -496,8 +496,12 @@ scoped_refptr<media::AudioCapturerSource> RendererBlinkPlatformImpl::NewAudioCapturerSource( blink::WebLocalFrame* web_frame, const media::AudioSourceParameters& params) { +#if BUILDFLAG(ENABLE_WEBRTC) return blink::WebAudioDeviceFactory::NewAudioCapturerSource( web_frame->GetLocalFrameToken(), params); +#else + return nullptr; +#endif } viz::RasterContextProvider* @@ -505,6 +509,7 @@ RendererBlinkPlatformImpl::SharedMainThreadContextProvider() { return RenderThreadImpl::current()->SharedMainThreadContextProvider().get(); } +#if BUILDFLAG(ENABLE_WEBRTC) bool RendererBlinkPlatformImpl::RTCSmoothnessAlgorithmEnabled() { return !base::CommandLine::ForCurrentProcess()->HasSwitch( switches::kDisableRTCSmoothnessAlgorithm); @@ -673,6 +678,7 @@ bool RendererBlinkPlatformImpl::AllowsLoopbackInPeerConnection() { return base::CommandLine::ForCurrentProcess()->HasSwitch( switches::kAllowLoopbackInPeerConnection); } +#endif // BUILDFLAG(ENABLE_WEBRTC) blink::WebVideoCaptureImplManager* RendererBlinkPlatformImpl::GetVideoCaptureImplManager() { diff --git a/chromium/content/renderer/renderer_blink_platform_impl.h b/chromium/content/renderer/renderer_blink_platform_impl.h index 30af7f4fed5..823ae98d0f0 100644 --- a/chromium/content/renderer/renderer_blink_platform_impl.h +++ b/chromium/content/renderer/renderer_blink_platform_impl.h @@ -21,6 +21,7 @@ #include "content/child/blink_platform_impl.h" #include "content/common/content_export.h" #include "content/renderer/top_level_blame_context.h" +#include "media/media_buildflags.h" #include "mojo/public/cpp/bindings/pending_remote.h" #include "mojo/public/cpp/bindings/shared_remote.h" #include "services/network/public/mojom/url_loader_factory.mojom.h" @@ -138,6 +139,7 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : public BlinkPlatformImpl { blink::WebLocalFrame* web_frame, const media::AudioSourceParameters& params) override; viz::RasterContextProvider* SharedMainThreadContextProvider() override; +#if BUILDFLAG(ENABLE_WEBRTC) bool RTCSmoothnessAlgorithmEnabled() override; base::Optional<double> GetWebRtcMaxCaptureFrameRate() override; scoped_refptr<media::AudioRendererSink> NewAudioRendererSink( @@ -167,6 +169,7 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : public BlinkPlatformImpl { bool IsWebRtcSrtpAesGcmEnabled() override; bool IsWebRtcSrtpEncryptedHeadersEnabled() override; bool AllowsLoopbackInPeerConnection() override; +#endif blink::WebVideoCaptureImplManager* GetVideoCaptureImplManager() override; diff --git a/chromium/content/renderer/renderer_main.cc b/chromium/content/renderer/renderer_main.cc index 9e0f9a37b43..e162c30cf4e 100644 --- a/chromium/content/renderer/renderer_main.cc +++ b/chromium/content/renderer/renderer_main.cc @@ -40,7 +40,6 @@ #include "services/tracing/public/cpp/trace_startup.h" #include "third_party/blink/public/platform/platform.h" #include "third_party/blink/public/platform/scheduler/web_thread_scheduler.h" -#include "third_party/webrtc_overrides/init_webrtc.h" // nogncheck #include "ui/base/ui_base_switches.h" #if defined(OS_ANDROID) @@ -66,6 +65,10 @@ #include "content/renderer/pepper/pepper_plugin_registry.h" #endif +#if BUILDFLAG(ENABLE_WEBRTC) +#include "third_party/webrtc_overrides/init_webrtc.h" // nogncheck +#endif + #if BUILDFLAG(MOJO_RANDOM_DELAYS_ENABLED) #include "mojo/public/cpp/bindings/lib/test_random_mojo_delays.h" #endif @@ -185,11 +188,13 @@ int RendererMain(const MainFunctionParams& parameters) { // Load pepper plugins before engaging the sandbox. PepperPluginRegistry::GetInstance(); #endif +#if BUILDFLAG(ENABLE_WEBRTC) // Initialize WebRTC before engaging the sandbox. // NOTE: On linux, this call could already have been made from // zygote_main_linux.cc. However, calling multiple times from the same thread // is OK. InitializeWebRtcModule(); +#endif { bool should_run_loop = true; diff --git a/chromium/content/test/BUILD.gn b/chromium/content/test/BUILD.gn index 003f7fe2119..4fd83be5c90 100644 --- a/chromium/content/test/BUILD.gn +++ b/chromium/content/test/BUILD.gn @@ -445,7 +445,6 @@ static_library("test_support") { "//testing/gmock", "//testing/gtest", "//third_party/blink/public/strings:strings_grit", - "//third_party/webrtc_overrides:webrtc_component", "//ui/accessibility:ax_enums_mojo", "//ui/base", "//ui/base:test_support", @@ -530,6 +529,27 @@ static_library("test_support") { ] } + if (enable_webrtc) { + sources += [ + "../renderer/media/stream/mock_mojo_media_stream_dispatcher_host.cc", + "../renderer/media/stream/mock_mojo_media_stream_dispatcher_host.h", + "../renderer/media/webrtc/mock_data_channel_impl.cc", + "../renderer/media/webrtc/mock_data_channel_impl.h", + "../renderer/media/webrtc/mock_peer_connection_dependency_factory.cc", + "../renderer/media/webrtc/mock_peer_connection_dependency_factory.h", + "../renderer/media/webrtc/mock_peer_connection_impl.cc", + "../renderer/media/webrtc/mock_peer_connection_impl.h", + "../renderer/media/webrtc/mock_web_rtc_peer_connection_handler_client.cc", + "../renderer/media/webrtc/mock_web_rtc_peer_connection_handler_client.h", + "../renderer/media/webrtc/test/webrtc_stats_report_obtainer.cc", + "../renderer/media/webrtc/test/webrtc_stats_report_obtainer.h", + ] + + deps += [ + "//third_party/webrtc_overrides:webrtc_component", + ] + } + if (use_glib) { configs += [ "//build/config/linux:glib" ] } @@ -1122,31 +1142,6 @@ test("content_browsertests") { "../browser/web_package/signed_exchange_subresource_prefetch_browsertest.cc", "../browser/web_package/web_bundle_browsertest.cc", "../browser/webkit_browsertest.cc", - "../browser/webrtc/webrtc_audio_browsertest.cc", - "../browser/webrtc/webrtc_audio_debug_recordings_browsertest.cc", - "../browser/webrtc/webrtc_browsertest.cc", - "../browser/webrtc/webrtc_capture_from_element_browsertest.cc", - "../browser/webrtc/webrtc_constraints_browsertest.cc", - "../browser/webrtc/webrtc_content_browsertest_base.cc", - "../browser/webrtc/webrtc_content_browsertest_base.h", - "../browser/webrtc/webrtc_data_browsertest.cc", - "../browser/webrtc/webrtc_datachannel_browsertest.cc", - "../browser/webrtc/webrtc_depth_capture_browsertest.cc", - "../browser/webrtc/webrtc_getusermedia_browsertest.cc", - "../browser/webrtc/webrtc_image_capture_browsertest.cc", - "../browser/webrtc/webrtc_internals_browsertest.cc", - "../browser/webrtc/webrtc_ip_permissions_browsertest.cc", - "../browser/webrtc/webrtc_media_recorder_browsertest.cc", - "../browser/webrtc/webrtc_stress_image_capture_browsertest.cc", - "../browser/webrtc/webrtc_stress_pause_browsertest.cc", - "../browser/webrtc/webrtc_stress_resolution_switch_browsertest.cc", - "../browser/webrtc/webrtc_stress_source_switch_browsertest.cc", - "../browser/webrtc/webrtc_video_capture_browsertest.cc", - "../browser/webrtc/webrtc_video_capture_service_browsertest.cc", - "../browser/webrtc/webrtc_video_capture_service_enumeration_browsertest.cc", - "../browser/webrtc/webrtc_video_capture_shared_device_browsertest.cc", - "../browser/webrtc/webrtc_webcam_browsertest.cc", - "../browser/webrtc/webrtc_webcam_browsertest.h", "../browser/webui/web_ui_browsertest.cc", "../browser/webui/web_ui_mojo_browsertest.cc", "../browser/webui/web_ui_navigation_browsertest.cc", @@ -1524,6 +1519,40 @@ test("content_browsertests") { [ "../browser/compositor/image_transport_factory_browsertest.cc" ] } + if (enable_webrtc) { + sources += [ + "../browser/webrtc/webrtc_audio_browsertest.cc", + "../browser/webrtc/webrtc_audio_debug_recordings_browsertest.cc", + "../browser/webrtc/webrtc_browsertest.cc", + "../browser/webrtc/webrtc_capture_from_element_browsertest.cc", + "../browser/webrtc/webrtc_constraints_browsertest.cc", + "../browser/webrtc/webrtc_content_browsertest_base.cc", + "../browser/webrtc/webrtc_content_browsertest_base.h", + "../browser/webrtc/webrtc_data_browsertest.cc", + "../browser/webrtc/webrtc_datachannel_browsertest.cc", + "../browser/webrtc/webrtc_depth_capture_browsertest.cc", + "../browser/webrtc/webrtc_getusermedia_browsertest.cc", + "../browser/webrtc/webrtc_image_capture_browsertest.cc", + "../browser/webrtc/webrtc_internals_browsertest.cc", + "../browser/webrtc/webrtc_ip_permissions_browsertest.cc", + "../browser/webrtc/webrtc_media_recorder_browsertest.cc", + "../browser/webrtc/webrtc_stress_image_capture_browsertest.cc", + "../browser/webrtc/webrtc_stress_pause_browsertest.cc", + "../browser/webrtc/webrtc_stress_resolution_switch_browsertest.cc", + "../browser/webrtc/webrtc_stress_source_switch_browsertest.cc", + "../browser/webrtc/webrtc_video_capture_browsertest.cc", + "../browser/webrtc/webrtc_video_capture_service_browsertest.cc", + "../browser/webrtc/webrtc_video_capture_service_enumeration_browsertest.cc", + "../browser/webrtc/webrtc_video_capture_shared_device_browsertest.cc", + "../browser/webrtc/webrtc_webcam_browsertest.cc", + "../browser/webrtc/webrtc_webcam_browsertest.h", + ] + deps += [ + "//content/common:buildflags", + "//testing/perf", + ] + } + if (enable_plugins) { sources += [ "../browser/plugin_service_impl_browsertest.cc", @@ -1994,8 +2023,6 @@ test("content_unittests") { "../browser/web_package/web_bundle_reader_unittest.cc", "../browser/web_package/web_bundle_url_loader_factory_unittest.cc", "../browser/web_package/web_bundle_utils_unittest.cc", - "../browser/webrtc/webrtc_internals_message_handler_unittest.cc", - "../browser/webrtc/webrtc_internals_unittest.cc", "../browser/webui/web_ui_data_source_unittest.cc", "../browser/webui/web_ui_message_handler_unittest.cc", "../browser/webui/web_ui_unittest.cc", @@ -2212,7 +2239,6 @@ test("content_unittests") { "//third_party/icu", "//third_party/inspector_protocol:crdtp_test", "//third_party/leveldatabase", - "//third_party/libyuv", "//third_party/metrics_proto", "//third_party/re2", "//third_party/sqlite", @@ -2238,7 +2264,6 @@ test("content_unittests") { "//ui/gl", "//ui/gl:test_support", "//ui/latency:test_support", - "//ui/shell_dialogs:shell_dialogs", ] data_deps = [ @@ -2252,6 +2277,8 @@ test("content_unittests") { } if (enable_plugins) { + # Put WebRTC-related plugins sources in the "enable_webrtc && + # enable_plugins" section below. sources += [ "../browser/plugin_content_origin_allowlist_unittest.cc", "../browser/plugin_service_impl_unittest.cc", @@ -2283,16 +2310,105 @@ test("content_unittests") { ] } + if (enable_webrtc) { + # Put WebRTC-related plugins sources in the "enable_webrtc && + # enable_plugins" section below. + sources += [ + "../renderer/media/stream/media_stream_audio_processor_unittest.cc", + "../renderer/media/stream/media_stream_audio_unittest.cc", + "../renderer/media/stream/media_stream_constraints_util_audio_unittest.cc", + "../renderer/media/stream/media_stream_constraints_util_sets_unittest.cc", + "../renderer/media/stream/media_stream_constraints_util_unittest.cc", + "../renderer/media/stream/media_stream_constraints_util_video_content_unittest.cc", + "../renderer/media/stream/media_stream_constraints_util_video_device_unittest.cc", + "../renderer/media/stream/media_stream_device_observer_unittest.cc", + "../renderer/media/stream/media_stream_video_renderer_sink_unittest.cc", + "../renderer/media/stream/media_stream_video_source_unittest.cc", + "../renderer/media/stream/media_stream_video_track_unittest.cc", + "../renderer/media/stream/mock_constraint_factory.cc", + "../renderer/media/stream/mock_constraint_factory.h", + "../renderer/media/stream/mock_media_stream_registry.cc", + "../renderer/media/stream/mock_media_stream_registry.h", + "../renderer/media/stream/mock_media_stream_video_sink.cc", + "../renderer/media/stream/mock_media_stream_video_sink.h", + "../renderer/media/stream/mock_media_stream_video_source.cc", + "../renderer/media/stream/mock_media_stream_video_source.h", + "../renderer/media/stream/processed_local_audio_source_unittest.cc", + "../renderer/media/stream/user_media_client_impl_unittest.cc", + "../renderer/media/stream/webmediaplayer_ms_unittest.cc", + "../renderer/media/webrtc/fake_rtc_rtp_transceiver.cc", + "../renderer/media/webrtc/fake_rtc_rtp_transceiver.h", + "../renderer/media/webrtc/media_stream_remote_video_source_unittest.cc", + "../renderer/media/webrtc/media_stream_track_metrics_unittest.cc", + "../renderer/media/webrtc/media_stream_video_webrtc_sink_unittest.cc", + "../renderer/media/webrtc/peer_connection_dependency_factory_unittest.cc", + "../renderer/media/webrtc/peer_connection_tracker_unittest.cc", + "../renderer/media/webrtc/rtc_peer_connection_handler_unittest.cc", + "../renderer/media/webrtc/rtc_rtp_receiver_unittest.cc", + "../renderer/media/webrtc/rtc_rtp_sender_unittest.cc", + "../renderer/media/webrtc/rtc_rtp_transceiver_unittest.cc", + "../renderer/media/webrtc/rtc_stats_unittest.cc", + "../renderer/media/webrtc/rtc_video_decoder_adapter_unittest.cc", + "../renderer/media/webrtc/rtc_video_decoder_unittest.cc", + "../renderer/media/webrtc/rtc_video_encoder_unittest.cc", + "../renderer/media/webrtc/stun_field_trial_unittest.cc", + "../renderer/media/webrtc/task_queue_factory_unittest.cc", + "../renderer/media/webrtc/transceiver_state_surfacer_unittest.cc", + "../renderer/media/webrtc/transmission_encoding_info_handler_unittest.cc", + "../renderer/media/webrtc/two_keys_adapter_map_unittest.cc", + "../renderer/media/webrtc/webrtc_audio_renderer_unittest.cc", + "../renderer/media/webrtc/webrtc_media_stream_track_adapter_map_unittest.cc", + "../renderer/media/webrtc/webrtc_media_stream_track_adapter_unittest.cc", + "../renderer/media/webrtc/webrtc_set_description_observer_unittest.cc", + "../renderer/media/webrtc/webrtc_video_track_source_unittest.cc", + "../renderer/media/webrtc_local_audio_source_provider_unittest.cc", + "../renderer/media_capture_from_element/canvas_capture_handler_unittest.cc", + "../renderer/media_capture_from_element/html_audio_element_capturer_source_unittest.cc", + "../renderer/media_capture_from_element/html_video_element_capturer_source_unittest.cc", + "../renderer/media_recorder/audio_track_recorder_unittest.cc", + "../renderer/media_recorder/media_recorder_handler_unittest.cc", + "../renderer/media_recorder/video_track_recorder_unittest.cc", + "../renderer/p2p/filtering_network_manager_unittest.cc", + "../renderer/p2p/ipc_network_manager_unittest.cc", + ] + deps += [ + "//services/device/public/mojom", + "//third_party/libyuv", + "//third_party/opus", + "//third_party/webrtc_overrides:webrtc_component", + "//ui/shell_dialogs:shell_dialogs", + ] + + if (is_linux || is_mac || is_win) { + sources += + [ "../browser/media/capture/desktop_capture_device_unittest.cc" ] + deps += [ "//third_party/webrtc_overrides:webrtc_component" ] + } + + if (is_chromecast) { + sources -= [ + "../renderer/media_recorder/audio_track_recorder_unittest.cc", + "../renderer/media_recorder/media_recorder_handler_unittest.cc", + "../renderer/media_recorder/video_track_recorder_unittest.cc", + ] + } + } + + if (enable_webrtc && enable_plugins) { + sources += [ + "../renderer/media/pepper/pepper_to_video_track_adapter_unittest.cc", + "../renderer/media/pepper/video_track_to_pepper_adapter_unittest.cc", + ] + } + # Screen capture unit tests. if (enable_screen_capture && !is_android) { deps += [ "//content/common:buildflags", "//media/capture:test_support", - "//third_party/libyuv", - "//third_party/webrtc_overrides:webrtc_component", + "//third_party/libyuv" ] sources += [ - "../browser/media/capture/desktop_capture_device_unittest.cc", "../browser/media/capture/frame_sink_video_capture_device_unittest.cc", ] if (is_chromeos) { diff --git a/chromium/media/BUILD.gn b/chromium/media/BUILD.gn index 228d631ec41..dcf1b138a80 100644 --- a/chromium/media/BUILD.gn +++ b/chromium/media/BUILD.gn @@ -40,6 +40,7 @@ buildflag_header("media_buildflags") { "ENABLE_OPENH264=$media_use_openh264", "ENABLE_PLATFORM_MPEG_H_AUDIO=$enable_platform_mpeg_h_audio", "ENABLE_MSE_MPEG2TS_STREAM_PARSER=$enable_mse_mpeg2ts_stream_parser", + "ENABLE_WEBRTC=$enable_webrtc", "ENABLE_WEB_SPEECH=$enable_web_speech", "USE_CHROMEOS_MEDIA_ACCELERATION=$use_vaapi||$use_v4l2_codec", "USE_PROPRIETARY_CODECS=$proprietary_codecs", diff --git a/chromium/media/audio/BUILD.gn b/chromium/media/audio/BUILD.gn index 5e4dc90597d..63dce701f15 100644 --- a/chromium/media/audio/BUILD.gn +++ b/chromium/media/audio/BUILD.gn @@ -77,8 +77,6 @@ source_set("audio") { "audio_input_device.h", "audio_input_ipc.cc", "audio_input_ipc.h", - "audio_input_stream_data_interceptor.cc", - "audio_input_stream_data_interceptor.h", "audio_io.h", "audio_manager.cc", "audio_manager.h", @@ -314,6 +312,13 @@ source_set("audio") { ] } + if (enable_webrtc) { + sources += [ + "audio_input_stream_data_interceptor.cc", + "audio_input_stream_data_interceptor.h", + ] + } + configs += [ "//build/config/compiler:no_size_t_to_int_warning" ] } @@ -385,7 +390,6 @@ source_set("unit_tests") { "audio_debug_recording_session_impl_unittest.cc", "audio_encoders_unittest.cc", "audio_input_device_unittest.cc", - "audio_input_stream_data_interceptor_unittest.cc", "audio_input_unittest.cc", "audio_manager_unittest.cc", "audio_output_device_unittest.cc", @@ -413,6 +417,10 @@ source_set("unit_tests") { "//media:media_config", ] + if (enable_webrtc) { + sources += [ "audio_input_stream_data_interceptor_unittest.cc" ] + } + if (is_android) { sources += [ "android/audio_android_unittest.cc" ] deps += [ "//ui/gl" ] diff --git a/chromium/media/audio/audio_manager.cc b/chromium/media/audio/audio_manager.cc index 710130e7b95..01ccb57ac88 100644 --- a/chromium/media/audio/audio_manager.cc +++ b/chromium/media/audio/audio_manager.cc @@ -115,7 +115,9 @@ std::unique_ptr<AudioManager> AudioManager::Create( AudioLogFactory* audio_log_factory) { std::unique_ptr<AudioManager> manager = CreateAudioManager(std::move(audio_thread), audio_log_factory); +#if BUILDFLAG(ENABLE_WEBRTC) manager->InitializeDebugRecording(); +#endif return manager; } diff --git a/chromium/media/audio/audio_manager_base.cc b/chromium/media/audio/audio_manager_base.cc index ff38a76975b..323255c207d 100644 --- a/chromium/media/audio/audio_manager_base.cc +++ b/chromium/media/audio/audio_manager_base.cc @@ -27,7 +27,9 @@ #include "media/base/media_switches.h" #include "base/logging.h" +#if BUILDFLAG(ENABLE_WEBRTC) #include "media/audio/audio_input_stream_data_interceptor.h" +#endif // BUILDFLAG(ENABLE_WEBRTC) namespace media { @@ -307,6 +309,7 @@ AudioInputStream* AudioManagerBase::MakeAudioInputStream( input_stream_count()); } +#if BUILDFLAG(ENABLE_WEBRTC) if (!params.IsBitstreamFormat() && debug_recording_manager_) { // Using unretained for |debug_recording_manager_| is safe since it // outlives the audio thread, on which streams are operated. @@ -321,6 +324,7 @@ AudioInputStream* AudioManagerBase::MakeAudioInputStream( AudioDebugRecordingStreamType::kInput, params), stream); } +#endif // BUILDFLAG(ENABLE_WEBRTC) } return stream; diff --git a/chromium/media/gpu/BUILD.gn b/chromium/media/gpu/BUILD.gn index e3d961939c3..b1a84b1ad9a 100644 --- a/chromium/media/gpu/BUILD.gn +++ b/chromium/media/gpu/BUILD.gn @@ -96,8 +96,6 @@ component("gpu") { if (is_android) { sources += [ - "android/android_video_encode_accelerator.cc", - "android/android_video_encode_accelerator.h", "android/android_video_surface_chooser.cc", "android/android_video_surface_chooser.h", "android/android_video_surface_chooser_impl.cc", @@ -152,6 +150,14 @@ component("gpu") { if (enable_vulkan) { deps += [ "//gpu/vulkan:vulkan" ] } + + if (enable_webrtc) { + deps += [ "//third_party/libyuv" ] + sources += [ + "android/android_video_encode_accelerator.cc", + "android/android_video_encode_accelerator.h", + ] + } } if (use_v4l2_codec) { diff --git a/chromium/media/gpu/gpu_video_encode_accelerator_factory.cc b/chromium/media/gpu/gpu_video_encode_accelerator_factory.cc index 8d665bb0320..b76582675d2 100644 --- a/chromium/media/gpu/gpu_video_encode_accelerator_factory.cc +++ b/chromium/media/gpu/gpu_video_encode_accelerator_factory.cc @@ -16,7 +16,7 @@ #if BUILDFLAG(USE_V4L2_CODEC) #include "media/gpu/v4l2/v4l2_video_encode_accelerator.h" #endif -#if defined(OS_ANDROID) +#if defined(OS_ANDROID) && BUILDFLAG(ENABLE_WEBRTC) #include "media/gpu/android/android_video_encode_accelerator.h" #endif #if defined(OS_MAC) @@ -51,7 +51,7 @@ std::unique_ptr<VideoEncodeAccelerator> CreateVaapiVEA() { } #endif -#if defined(OS_ANDROID) +#if defined(OS_ANDROID) && BUILDFLAG(ENABLE_WEBRTC) std::unique_ptr<VideoEncodeAccelerator> CreateAndroidVEA() { return base::WrapUnique<VideoEncodeAccelerator>( new AndroidVideoEncodeAccelerator()); @@ -98,7 +98,7 @@ std::vector<VEAFactoryFunction> GetVEAFactoryFunctions( #if BUILDFLAG(USE_V4L2_CODEC) vea_factory_functions.push_back(base::BindRepeating(&CreateV4L2VEA)); #endif -#if defined(OS_ANDROID) +#if defined(OS_ANDROID) && BUILDFLAG(ENABLE_WEBRTC) vea_factory_functions.push_back(base::BindRepeating(&CreateAndroidVEA)); #endif #if defined(OS_MAC) diff --git a/chromium/media/media_options.gni b/chromium/media/media_options.gni index ea1e280d714..e0421429cbd 100644 --- a/chromium/media/media_options.gni +++ b/chromium/media/media_options.gni @@ -89,6 +89,8 @@ declare_args() { enable_web_speech = true + enable_webrtc = true + # Enable HLS with SAMPLE-AES decryption. enable_hls_sample_aes = proprietary_codecs && (is_chromecast || is_fuchsia) diff --git a/chromium/remoting/BUILD.gn b/chromium/remoting/BUILD.gn index ceb99d97d38..2ec6a320367 100644 --- a/chromium/remoting/BUILD.gn +++ b/chromium/remoting/BUILD.gn @@ -2,6 +2,7 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. +import("//media/media_options.gni") import("//remoting/build/config/remoting_build.gni") group("remoting_all") { @@ -158,7 +159,9 @@ test("remoting_unittests") { ] } - deps += [ "//third_party/webrtc_overrides:webrtc_component" ] + if (enable_webrtc) { + deps += [ "//third_party/webrtc_overrides:webrtc_component" ] + } if (is_android) { deps += [ "//net/android:net_java" ] @@ -201,9 +204,14 @@ if (enable_remoting_host) { "//net:test_support", "//remoting/base", "//testing/gtest", - "//third_party/webrtc_overrides:webrtc_component", ] + if (enable_webrtc) { + deps += [ + "//third_party/webrtc_overrides:webrtc_component", + ] + } + if (is_win) { defines += [ "_ALT_NO_EXCEPTIONS" ] diff --git a/chromium/remoting/host/BUILD.gn b/chromium/remoting/host/BUILD.gn index 04ae4e6ea86..40422297fb3 100644 --- a/chromium/remoting/host/BUILD.gn +++ b/chromium/remoting/host/BUILD.gn @@ -3,6 +3,7 @@ # found in the LICENSE file. import("//build/util/process_version.gni") +import("//media/media_options.gni") import("//remoting/build/config/remoting_build.gni") # This file depends on the legacy global sources assignment filter. It should @@ -336,7 +337,6 @@ static_library("common") { "//remoting/protocol", "//remoting/resources", "//services/network:network_service", - "//third_party/webrtc_overrides:webrtc_component", # //remoting uses the power_save_blocker directly. See crbug.com/689423 "//services/device/wake_lock/power_save_blocker", @@ -453,6 +453,10 @@ static_library("common") { public_deps += [ "//remoting/host/win" ] } + + if (enable_webrtc) { + deps += [ "//third_party/webrtc_overrides:webrtc_component" ] + } } static_library("test_support") { @@ -482,10 +486,15 @@ static_library("test_support") { ":common", "//remoting/base:test_support", "//remoting/host/file_transfer:test_support", - "//third_party/libjingle_xmpp", "//third_party/protobuf:protobuf_lite", - "//third_party/webrtc_overrides:webrtc_component", ] + + if (enable_webrtc) { + public_deps += [ + "//third_party/libjingle_xmpp", + "//third_party/webrtc_overrides:webrtc_component", + ] + } } # The host portions of the remoting unit tests. @@ -615,10 +624,7 @@ if (enable_remoting_host) { executable("remoting_start_host") { sources = [ "setup/start_host_entry_point.cc" ] - deps = [ - "//third_party/libjingle_xmpp", - "//third_party/webrtc_overrides:webrtc_component", - ] + deps = [] configs += [ "//build/config/compiler:wexit_time_destructors" ] @@ -646,6 +652,13 @@ if (enable_remoting_host) { "//remoting/host/setup", ] } + + if (enable_webrtc) { + deps += [ + "//third_party/libjingle_xmpp", + "//third_party/webrtc_overrides:webrtc_component", + ] + } } action_foreach("remoting_native_messaging_manifests") { @@ -744,8 +757,6 @@ if (enable_me2me_host) { "//remoting/base", "//remoting/host", "//remoting/proto", - "//third_party/libjingle_xmpp", - "//third_party/webrtc_overrides:webrtc_component", ] if (is_posix) { @@ -759,6 +770,13 @@ if (enable_me2me_host) { deps += [ "//components/policy:generated" ] } + if (enable_webrtc) { + deps += [ + "//third_party/libjingle_xmpp", + "//third_party/webrtc_overrides:webrtc_component", + ] + } + if (use_gtk) { deps += [ "//build/config/linux/gtk" ] } diff --git a/chromium/remoting/host/it2me/BUILD.gn b/chromium/remoting/host/it2me/BUILD.gn index 4038303cdaa..7baddde20a6 100644 --- a/chromium/remoting/host/it2me/BUILD.gn +++ b/chromium/remoting/host/it2me/BUILD.gn @@ -4,6 +4,7 @@ import("//build/config/features.gni") import("//build/config/ui.gni") +import("//media/media_options.gni") import("//remoting/remoting_locales.gni") import("//remoting/remoting_options.gni") import("//remoting/remoting_version.gni") @@ -213,7 +214,6 @@ if (!is_chromeos && enable_remoting_host) { "//remoting/host", "//remoting/host/native_messaging", "//remoting/proto", - "//third_party/webrtc_overrides:webrtc_component", "//ui/gfx", ] if (is_mac) { @@ -234,6 +234,10 @@ if (!is_chromeos && enable_remoting_host) { } } + if (enable_webrtc) { + deps += [ "//third_party/webrtc_overrides:webrtc_component" ] + } + if (use_gtk) { deps += [ "//build/config/linux/gtk" ] } diff --git a/chromium/remoting/host/win/BUILD.gn b/chromium/remoting/host/win/BUILD.gn index 8f527a22284..e0ec78df1a4 100644 --- a/chromium/remoting/host/win/BUILD.gn +++ b/chromium/remoting/host/win/BUILD.gn @@ -136,7 +136,6 @@ source_set("win") { "//remoting/protocol", "//remoting/resources", "//services/device/wake_lock/power_save_blocker", - "//third_party/webrtc_overrides:webrtc_component", "//third_party/wtl", "//ui/base", "//ui/events:dom_keycode_converter", @@ -146,6 +145,10 @@ source_set("win") { if (!is_ios) { deps += [ "//components/policy:generated" ] } + + if (enable_webrtc) { + deps += [ "//third_party/webrtc_overrides:webrtc_component" ] + } } source_set("unit_tests") { diff --git a/chromium/remoting/remoting_enable.gni b/chromium/remoting/remoting_enable.gni index 879214d9a8d..8a24badbe0c 100644 --- a/chromium/remoting/remoting_enable.gni +++ b/chromium/remoting/remoting_enable.gni @@ -3,11 +3,12 @@ # found in the LICENSE file. import("//build/config/ui.gni") +import("//media/media_options.gni") if (is_ios) { import("//build/config/ios/ios_sdk.gni") } declare_args() { - enable_remoting = !is_chromecast && !is_fuchsia + enable_remoting = !is_chromecast && !is_fuchsia && enable_webrtc } diff --git a/chromium/third_party/blink/common/BUILD.gn b/chromium/third_party/blink/common/BUILD.gn index 330261bf50b..cd2031c669b 100644 --- a/chromium/third_party/blink/common/BUILD.gn +++ b/chromium/third_party/blink/common/BUILD.gn @@ -2,6 +2,7 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. +import("//media/media_options.gni") import("//testing/libfuzzer/fuzzer_test.gni") import("//testing/test.gni") import("//third_party/blink/renderer/build/scripts/scripts.gni") @@ -193,6 +194,12 @@ source_set("common") { deps += [ "//media" ] } + if (!enable_webrtc) { + sources -= [ + "peerconnection/webrtc_ip_handling_policy.cc", + ] + } + if (is_android || is_win) { sources += [ "font_unique_name_lookup/font_table_matcher.cc", diff --git a/chromium/third_party/blink/renderer/modules/media_capabilities/media_capabilities.cc b/chromium/third_party/blink/renderer/modules/media_capabilities/media_capabilities.cc index 9b833e9c636..50bd77c314b 100644 --- a/chromium/third_party/blink/renderer/modules/media_capabilities/media_capabilities.cc +++ b/chromium/third_party/blink/renderer/modules/media_capabilities/media_capabilities.cc @@ -21,7 +21,7 @@ #include "media/learning/common/media_learning_tasks.h" #include "media/learning/common/target_histogram.h" #include "media/learning/mojo/public/mojom/learning_task_controller.mojom-blink.h" -#include "media/mojo/mojom/media_metrics_provider.mojom-blink.h" +#include "media/media_buildflags.h" #include "media/mojo/mojom/media_types.mojom-blink.h" #include "media/video/gpu_video_accelerator_factories.h" #include "media/video/supported_video_decoder_config.h" @@ -67,12 +67,15 @@ #include "third_party/blink/renderer/platform/media_capabilities/web_media_capabilities_info.h" #include "third_party/blink/renderer/platform/media_capabilities/web_media_configuration.h" #include "third_party/blink/renderer/platform/network/parsed_content_type.h" -#include "third_party/blink/renderer/platform/peerconnection/transmission_encoding_info_handler.h" #include "third_party/blink/renderer/platform/wtf/functional.h" #include "third_party/blink/renderer/platform/wtf/vector.h" #include "ui/gfx/geometry/rect.h" #include "ui/gfx/geometry/size.h" +#if BUILDFLAG(ENABLE_WEBRTC) +#include "third_party/blink/renderer/platform/peerconnection/transmission_encoding_info_handler.h" +#endif + namespace blink { namespace { @@ -819,12 +822,14 @@ ScriptPromise MediaCapabilities::encodingInfo( } if (configuration->type() == "transmission") { +#if BUILDFLAG(ENABLE_WEBRTC) if (auto* handler = TransmissionEncodingInfoHandler::Instance()) { handler->EncodingInfo(ToWebMediaConfiguration(configuration), WTF::Bind(&OnMediaCapabilitiesEncodingInfo, WrapPersistent(resolver))); return promise; } +#endif resolver->Reject(MakeGarbageCollected<DOMException>( DOMExceptionCode::kInvalidStateError, "Platform error: could not get EncodingInfoHandler.")); diff --git a/chromium/third_party/blink/renderer/modules/mediastream/local_media_stream_audio_source.cc b/chromium/third_party/blink/renderer/modules/mediastream/local_media_stream_audio_source.cc index de235d0db4f..b07ed18df12 100644 --- a/chromium/third_party/blink/renderer/modules/mediastream/local_media_stream_audio_source.cc +++ b/chromium/third_party/blink/renderer/modules/mediastream/local_media_stream_audio_source.cc @@ -8,6 +8,7 @@ #include "base/strings/stringprintf.h" #include "media/audio/audio_source_parameters.h" +#include "media/media_buildflags.h" #include "third_party/blink/public/mojom/mediastream/media_stream.mojom-blink.h" #include "third_party/blink/public/platform/modules/webrtc/webrtc_logging.h" #include "third_party/blink/public/platform/platform.h" @@ -80,6 +81,7 @@ bool LocalMediaStreamAudioSource::EnsureSourceIsStarted() { if (!consumer_frame_) return false; +#if BUILDFLAG(ENABLE_WEBRTC) VLOG(1) << "Starting local audio input device (session_id=" << device().session_id() << ") with audio parameters={" << GetAudioParameters().AsHumanReadableString() << "}."; @@ -91,6 +93,10 @@ bool LocalMediaStreamAudioSource::EnsureSourceIsStarted() { source_->Initialize(GetAudioParameters(), this); source_->Start(); return true; +#else + LOG(ERROR) << "Audio Capture not supported"; + return false; +#endif } void LocalMediaStreamAudioSource::EnsureSourceIsStopped() { diff --git a/chromium/third_party/blink/renderer/modules/mediastream/media_stream_renderer_factory.cc b/chromium/third_party/blink/renderer/modules/mediastream/media_stream_renderer_factory.cc index 3c622fdffd8..24faad2eeaa 100644 --- a/chromium/third_party/blink/renderer/modules/mediastream/media_stream_renderer_factory.cc +++ b/chromium/third_party/blink/renderer/modules/mediastream/media_stream_renderer_factory.cc @@ -6,6 +6,7 @@ #include <utility> +#include "media/media_buildflags.h" #include "third_party/blink/public/platform/modules/mediastream/web_media_stream.h" #include "third_party/blink/public/platform/modules/webrtc/webrtc_logging.h" #include "third_party/blink/public/platform/platform.h" @@ -34,11 +35,15 @@ namespace { // Note that if there are more than one open capture devices the function // will not be able to pick an appropriate device and return 0. base::UnguessableToken GetSessionIdForWebRtcAudioRenderer() { +#if BUILDFLAG(ENABLE_WEBRTC) WebRtcAudioDeviceImpl* audio_device = PeerConnectionDependencyFactory::GetInstance()->GetWebRtcAudioDevice(); return audio_device ? audio_device->GetAuthorizedDeviceSessionIdForAudioRenderer() : base::UnguessableToken(); +#else + return base::UnguessableToken(); +#endif } void SendLogMessage(const WTF::String& message) { @@ -57,6 +62,7 @@ MediaStreamRendererFactory::GetVideoRenderer( const WebMediaStreamVideoRenderer::RepaintCB& repaint_cb, scoped_refptr<base::SingleThreadTaskRunner> io_task_runner, scoped_refptr<base::SingleThreadTaskRunner> main_render_task_runner) { +#if BUILDFLAG(ENABLE_WEBRTC) DCHECK(!web_stream.IsNull()); DVLOG(1) << "MediaStreamRendererFactory::GetVideoRenderer stream:" @@ -73,6 +79,10 @@ MediaStreamRendererFactory::GetVideoRenderer( return new MediaStreamVideoRendererSink(video_components[0].Get(), repaint_cb, std::move(io_task_runner), std::move(main_render_task_runner)); +#else + WebRtcLogMessage("Error: No WebRTC support."); + return nullptr; +#endif } scoped_refptr<WebMediaStreamAudioRenderer> @@ -81,6 +91,7 @@ MediaStreamRendererFactory::GetAudioRenderer( WebLocalFrame* web_frame, const WebString& device_id, base::RepeatingCallback<void()> on_render_error_callback) { +#if BUILDFLAG(ENABLE_WEBRTC) DCHECK(!web_stream.IsNull()); SendLogMessage(String::Format("%s({web_stream_id=%s}, {device_id=%s})", __func__, web_stream.Id().Utf8().c_str(), @@ -174,6 +185,10 @@ MediaStreamRendererFactory::GetAudioRenderer( "%s => (ERROR: CreateSharedAudioRendererProxy failed)", __func__)); } return ret; +#else + WebRtcLogMessage("Error: No WebRTC support."); + return nullptr; +#endif } } // namespace blink diff --git a/chromium/third_party/blink/renderer/modules/mediastream/processed_local_audio_source.cc b/chromium/third_party/blink/renderer/modules/mediastream/processed_local_audio_source.cc index ef0df3146eb..8678c7b5d4c 100644 --- a/chromium/third_party/blink/renderer/modules/mediastream/processed_local_audio_source.cc +++ b/chromium/third_party/blink/renderer/modules/mediastream/processed_local_audio_source.cc @@ -16,6 +16,7 @@ #include "media/audio/audio_source_parameters.h" #include "media/base/channel_layout.h" #include "media/base/sample_rates.h" +#include "media/media_buildflags.h" #include "media/webrtc/audio_processor_controls.h" #include "media/webrtc/webrtc_switches.h" #include "third_party/blink/public/mojom/mediastream/media_stream.mojom-blink.h" @@ -206,6 +207,7 @@ bool ProcessedLocalAudioSource::EnsureSourceIsStarted() { if (device_is_modified) SetDevice(modified_device); +#if BUILDFLAG(ENABLE_WEBRTC) // Create the MediaStreamAudioProcessor, bound to the WebRTC audio device // module. WebRtcAudioDeviceImpl* const rtc_audio_device = @@ -300,9 +302,13 @@ bool ProcessedLocalAudioSource::EnsureSourceIsStarted() { rtc_audio_device->AddAudioCapturer(this); return true; +#else + return false; +#endif } void ProcessedLocalAudioSource::EnsureSourceIsStopped() { +#if BUILDFLAG(ENABLE_WEBRTC) DCHECK(GetTaskRunner()->BelongsToCurrentThread()); if (!source_) @@ -323,6 +329,9 @@ void ProcessedLocalAudioSource::EnsureSourceIsStopped() { audio_processor_->Stop(); DVLOG(1) << "Stopped WebRTC audio pipeline for consumption."; +#else + return; +#endif } scoped_refptr<webrtc::AudioProcessorInterface> diff --git a/chromium/third_party/blink/renderer/modules/peerconnection/BUILD.gn b/chromium/third_party/blink/renderer/modules/peerconnection/BUILD.gn index c4651cf9818..a49e0771fcf 100644 --- a/chromium/third_party/blink/renderer/modules/peerconnection/BUILD.gn +++ b/chromium/third_party/blink/renderer/modules/peerconnection/BUILD.gn @@ -2,6 +2,7 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. +import("//media/media_options.gni") import("//third_party/blink/renderer/modules/modules.gni") blink_modules_sources("peerconnection") { @@ -173,6 +174,13 @@ blink_modules_sources("peerconnection") { public_deps = [ "//third_party/webrtc_overrides:webrtc_component" ] deps = [ "//third_party/abseil-cpp:absl" ] + + if (!enable_webrtc) { + sources -= [ + "peer_connection_dependency_factory.cc", + "peer_connection_dependency_factory.h", + ] + } } source_set("test_support") { diff --git a/chromium/third_party/blink/renderer/modules/peerconnection/media_stream_video_webrtc_sink.cc b/chromium/third_party/blink/renderer/modules/peerconnection/media_stream_video_webrtc_sink.cc index ef1b12c7c1b..8de4055164d 100644 --- a/chromium/third_party/blink/renderer/modules/peerconnection/media_stream_video_webrtc_sink.cc +++ b/chromium/third_party/blink/renderer/modules/peerconnection/media_stream_video_webrtc_sink.cc @@ -269,6 +269,7 @@ MediaStreamVideoWebRtcSink::MediaStreamVideoWebRtcSink( ContentHintTypeToWebRtcContentHint(component->ContentHint())); video_track_->set_enabled(component->Enabled()); +#if BUILDFLAG(ENABLE_WEBRTC) source_adapter_ = base::MakeRefCounted<WebRtcVideoSourceAdapter>( factory->GetWebRtcNetworkTaskRunner(), video_source_.get(), refresh_interval, @@ -282,7 +283,7 @@ MediaStreamVideoWebRtcSink::MediaStreamVideoWebRtcSink( ConvertToBaseRepeatingCallback(CrossThreadBindRepeating( &WebRtcVideoSourceAdapter::OnVideoFrameOnIO, source_adapter_)), false); - +#endif DVLOG(3) << "MediaStreamVideoWebRtcSink ctor() : is_screencast " << is_screencast; } @@ -291,8 +292,10 @@ MediaStreamVideoWebRtcSink::~MediaStreamVideoWebRtcSink() { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); DVLOG(3) << "MediaStreamVideoWebRtcSink dtor()."; weak_factory_.InvalidateWeakPtrs(); - MediaStreamVideoSink::DisconnectFromTrack(); - source_adapter_->ReleaseSourceOnMainThread(); + if (source_adapter_) { + MediaStreamVideoSink::DisconnectFromTrack(); + source_adapter_->ReleaseSourceOnMainThread(); + } } void MediaStreamVideoWebRtcSink::OnEnabledChanged(bool enabled) { diff --git a/chromium/third_party/blink/renderer/modules/peerconnection/rtc_certificate_generator.cc b/chromium/third_party/blink/renderer/modules/peerconnection/rtc_certificate_generator.cc index 77c2a8c053b..44548003044 100644 --- a/chromium/third_party/blink/renderer/modules/peerconnection/rtc_certificate_generator.cc +++ b/chromium/third_party/blink/renderer/modules/peerconnection/rtc_certificate_generator.cc @@ -10,13 +10,14 @@ #include "base/bind.h" #include "base/macros.h" #include "base/single_thread_task_runner.h" +#include "media/media_buildflags.h" #include "third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.h" #include "third_party/blink/renderer/platform/wtf/thread_safe_ref_counted.h" #include "third_party/webrtc/api/scoped_refptr.h" #include "third_party/webrtc/rtc_base/rtc_certificate.h" #include "third_party/webrtc/rtc_base/rtc_certificate_generator.h" -namespace blink { + namespace blink { namespace { // A certificate generation request spawned by @@ -88,6 +89,7 @@ void GenerateCertificateWithOptionalExpiration( blink::RTCCertificateCallback completion_callback, scoped_refptr<base::SingleThreadTaskRunner> task_runner) { DCHECK(key_params.IsValid()); +#if BUILDFLAG(ENABLE_WEBRTC) auto* pc_dependency_factory = blink::PeerConnectionDependencyFactory::GetInstance(); pc_dependency_factory->EnsureInitialized(); @@ -97,6 +99,9 @@ void GenerateCertificateWithOptionalExpiration( task_runner, pc_dependency_factory->GetWebRtcNetworkTaskRunner()); request->GenerateCertificateAsync(key_params, expires_ms, std::move(completion_callback)); +#else + std::move(completion_callback).Run(nullptr); +#endif } } // namespace diff --git a/chromium/third_party/blink/renderer/modules/peerconnection/rtc_dtls_transport.cc b/chromium/third_party/blink/renderer/modules/peerconnection/rtc_dtls_transport.cc index 82a155cd0aa..09fabeb6778 100644 --- a/chromium/third_party/blink/renderer/modules/peerconnection/rtc_dtls_transport.cc +++ b/chromium/third_party/blink/renderer/modules/peerconnection/rtc_dtls_transport.cc @@ -48,6 +48,7 @@ std::unique_ptr<DtlsTransportProxy> CreateProxy( ExecutionContext* context, webrtc::DtlsTransportInterface* native_transport, DtlsTransportProxy::Delegate* delegate) { +#if BUILDFLAG(ENABLE_WEBRTC) LocalFrame* frame = To<LocalDOMWindow>(context)->GetFrame(); scoped_refptr<base::SingleThreadTaskRunner> proxy_thread = frame->GetTaskRunner(TaskType::kNetworking); @@ -57,6 +58,9 @@ std::unique_ptr<DtlsTransportProxy> CreateProxy( return DtlsTransportProxy::Create(*frame, proxy_thread, host_thread, native_transport, delegate); +#else + return nullptr; +#endif } } // namespace diff --git a/chromium/third_party/blink/renderer/modules/peerconnection/rtc_ice_transport.cc b/chromium/third_party/blink/renderer/modules/peerconnection/rtc_ice_transport.cc index 984e4d1e6b3..9872de029fc 100644 --- a/chromium/third_party/blink/renderer/modules/peerconnection/rtc_ice_transport.cc +++ b/chromium/third_party/blink/renderer/modules/peerconnection/rtc_ice_transport.cc @@ -4,6 +4,7 @@ #include "third_party/blink/renderer/modules/peerconnection/rtc_ice_transport.h" +#include "media/media_buildflags.h" #include "third_party/blink/public/platform/platform.h" #include "third_party/blink/public/web/web_local_frame.h" #include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_ice_gather_options.h" @@ -69,9 +70,13 @@ class DtlsIceTransportAdapterCrossThreadFactory std::unique_ptr<IceTransportAdapter> ConstructOnWorkerThread( IceTransportAdapter::Delegate* delegate) override { +#if BUILDFLAG(ENABLE_WEBRTC) DCHECK(ice_transport_); return std::make_unique<IceTransportAdapterImpl>(delegate, std::move(ice_transport_)); +#else + return nullptr; +#endif } private: @@ -82,6 +87,7 @@ class DefaultIceTransportAdapterCrossThreadFactory : public IceTransportAdapterCrossThreadFactory { public: void InitializeOnMainThread(LocalFrame& frame) override { +#if BUILDFLAG(ENABLE_WEBRTC) DCHECK(!port_allocator_); DCHECK(!async_resolver_factory_); @@ -91,15 +97,20 @@ class DefaultIceTransportAdapterCrossThreadFactory frame.Client()->GetWebFrame()); async_resolver_factory_ = rtc_dependency_factory->CreateAsyncResolverFactory(); +#endif } std::unique_ptr<IceTransportAdapter> ConstructOnWorkerThread( IceTransportAdapter::Delegate* delegate) override { +#if BUILDFLAG(ENABLE_WEBRTC) DCHECK(port_allocator_); DCHECK(async_resolver_factory_); return std::make_unique<IceTransportAdapterImpl>( delegate, std::move(port_allocator_), std::move(async_resolver_factory_)); +#else + return nullptr; +#endif } private: @@ -110,6 +121,7 @@ class DefaultIceTransportAdapterCrossThreadFactory } // namespace RTCIceTransport* RTCIceTransport::Create(ExecutionContext* context) { +#if BUILDFLAG(ENABLE_WEBRTC) scoped_refptr<base::SingleThreadTaskRunner> proxy_thread = context->GetTaskRunner(TaskType::kNetworking); @@ -120,12 +132,16 @@ RTCIceTransport* RTCIceTransport::Create(ExecutionContext* context) { return MakeGarbageCollected<RTCIceTransport>( context, std::move(proxy_thread), std::move(host_thread), std::make_unique<DefaultIceTransportAdapterCrossThreadFactory>()); +#else + return nullptr; +#endif } RTCIceTransport* RTCIceTransport::Create( ExecutionContext* context, rtc::scoped_refptr<webrtc::IceTransportInterface> ice_transport, RTCPeerConnection* peer_connection) { +#if BUILDFLAG(ENABLE_WEBRTC) scoped_refptr<base::SingleThreadTaskRunner> proxy_thread = context->GetTaskRunner(TaskType::kNetworking); @@ -138,6 +154,9 @@ RTCIceTransport* RTCIceTransport::Create( std::make_unique<DtlsIceTransportAdapterCrossThreadFactory>( std::move(ice_transport)), peer_connection); +#else + return nullptr; +#endif } RTCIceTransport* RTCIceTransport::Create( diff --git a/chromium/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection.cc b/chromium/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection.cc index 47a1fa272e0..fd5dff1a56b 100644 --- a/chromium/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection.cc +++ b/chromium/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection.cc @@ -789,12 +789,14 @@ RTCPeerConnection::RTCPeerConnection( peer_handler_ = std::move(g_create_rpc_peer_connection_handler_callback_.Get()).Run(); } else { +#if BUILDFLAG(ENABLE_WEBRTC) peer_handler_ = PeerConnectionDependencyFactory::GetInstance() ->CreateRTCPeerConnectionHandler( this, window->GetTaskRunner(TaskType::kInternalMedia), force_encoded_audio_insertable_streams_, force_encoded_video_insertable_streams_); +#endif } if (!peer_handler_) { diff --git a/chromium/third_party/blink/renderer/modules/peerconnection/rtc_quic_transport.cc b/chromium/third_party/blink/renderer/modules/peerconnection/rtc_quic_transport.cc index 1d0953d5835..ea91a48696b 100644 --- a/chromium/third_party/blink/renderer/modules/peerconnection/rtc_quic_transport.cc +++ b/chromium/third_party/blink/renderer/modules/peerconnection/rtc_quic_transport.cc @@ -4,6 +4,7 @@ #include "third_party/blink/renderer/modules/peerconnection/rtc_quic_transport.h" +#include "media/media_buildflags.h" #include "net/quic/platform/impl/quic_chromium_clock.h" #include "net/quic/quic_chromium_alarm_factory.h" #include "third_party/blink/public/platform/platform.h" @@ -89,10 +90,14 @@ RTCQuicTransport* RTCQuicTransport::Create( RTCIceTransport* transport, const HeapVector<Member<RTCCertificate>>& certificates, ExceptionState& exception_state) { +#if BUILDFLAG(ENABLE_WEBRTC) return Create(context, transport, certificates, exception_state, std::make_unique<DefaultP2PQuicTransportFactory>( PeerConnectionDependencyFactory::GetInstance() ->GetWebRtcNetworkTaskRunner())); +#else + return nullptr; +#endif } RTCQuicTransport* RTCQuicTransport::Create( diff --git a/chromium/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.cc b/chromium/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.cc index 2a6c88f6e4e..df57cb25748 100644 --- a/chromium/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.cc +++ b/chromium/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.cc @@ -4,6 +4,7 @@ #include "third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.h" +#include "media/media_buildflags.h" #include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_insertable_streams.h" #include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_rtcp_parameters.h" #include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_rtp_capabilities.h" @@ -15,7 +16,6 @@ #include "third_party/blink/renderer/core/loader/document_loader.h" #include "third_party/blink/renderer/core/streams/readable_stream.h" #include "third_party/blink/renderer/core/streams/writable_stream.h" -#include "third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.h" #include "third_party/blink/renderer/modules/peerconnection/rtc_dtls_transport.h" #include "third_party/blink/renderer/modules/peerconnection/rtc_encoded_audio_underlying_sink.h" #include "third_party/blink/renderer/modules/peerconnection/rtc_encoded_audio_underlying_source.h" @@ -34,6 +34,10 @@ #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" #include "third_party/webrtc/api/rtp_parameters.h" +#if BUILDFLAG(ENABLE_WEBRTC) +#include "third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.h" +#endif + namespace blink { RTCRtpReceiver::RTCRtpReceiver(RTCPeerConnection* pc, @@ -275,6 +279,7 @@ void RTCRtpReceiver::Trace(Visitor* visitor) const { } RTCRtpCapabilities* RTCRtpReceiver::getCapabilities(const String& kind) { +#if BUILDFLAG(ENABLE_WEBRTC) if (kind != "audio" && kind != "video") return nullptr; @@ -321,6 +326,9 @@ RTCRtpCapabilities* RTCRtpReceiver::getCapabilities(const String& kind) { capabilities->setHeaderExtensions(header_extensions); return capabilities; +#else + return nullptr; +#endif } RTCRtpReceiveParameters* RTCRtpReceiver::getParameters() { diff --git a/chromium/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.cc b/chromium/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.cc index 83d2e0ca06a..a3cce3fc662 100644 --- a/chromium/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.cc +++ b/chromium/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.cc @@ -9,6 +9,7 @@ #include <tuple> #include <utility> +#include "media/media_buildflags.h" #include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h" #include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_insertable_streams.h" #include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_rtcp_parameters.h" @@ -720,6 +721,7 @@ void RTCRtpSender::Trace(Visitor* visitor) const { } RTCRtpCapabilities* RTCRtpSender::getCapabilities(const String& kind) { +#if BUILDFLAG(ENABLE_WEBRTC) if (kind != "audio" && kind != "video") return nullptr; @@ -773,6 +775,9 @@ RTCRtpCapabilities* RTCRtpSender::getCapabilities(const String& kind) { capabilities->setHeaderExtensions(header_extensions); return capabilities; +#else + return nullptr; +#endif } void RTCRtpSender::RegisterEncodedAudioStreamCallback() { diff --git a/chromium/third_party/blink/renderer/modules/peerconnection/rtc_rtp_transceiver.cc b/chromium/third_party/blink/renderer/modules/peerconnection/rtc_rtp_transceiver.cc index fc46e57ab85..eb7103179e9 100644 --- a/chromium/third_party/blink/renderer/modules/peerconnection/rtc_rtp_transceiver.cc +++ b/chromium/third_party/blink/renderer/modules/peerconnection/rtc_rtp_transceiver.cc @@ -35,6 +35,7 @@ String TransceiverDirectionToString( NOTREACHED(); return String(); } + NOTREACHED(); } String OptionalTransceiverDirectionToString( diff --git a/chromium/third_party/blink/renderer/modules/peerconnection/rtc_sctp_transport.cc b/chromium/third_party/blink/renderer/modules/peerconnection/rtc_sctp_transport.cc index 2fedeb937be..f2fe1b794ad 100644 --- a/chromium/third_party/blink/renderer/modules/peerconnection/rtc_sctp_transport.cc +++ b/chromium/third_party/blink/renderer/modules/peerconnection/rtc_sctp_transport.cc @@ -7,6 +7,7 @@ #include <limits> #include <memory> +#include "media/media_buildflags.h" #include "third_party/blink/public/web/web_local_frame.h" #include "third_party/blink/renderer/core/dom/events/event.h" #include "third_party/blink/renderer/core/frame/local_dom_window.h" @@ -64,8 +65,13 @@ RTCSctpTransport::RTCSctpTransport( : RTCSctpTransport(context, native_transport, context->GetTaskRunner(TaskType::kNetworking), +#if BUILDFLAG(ENABLE_WEBRTC) PeerConnectionDependencyFactory::GetInstance() - ->GetWebRtcNetworkTaskRunner()) {} + ->GetWebRtcNetworkTaskRunner() +#else + nullptr +#endif + ) {} RTCSctpTransport::RTCSctpTransport( ExecutionContext* context, diff --git a/chromium/third_party/blink/renderer/platform/BUILD.gn b/chromium/third_party/blink/renderer/platform/BUILD.gn index f51deafc4c8..a63f64a0130 100644 --- a/chromium/third_party/blink/renderer/platform/BUILD.gn +++ b/chromium/third_party/blink/renderer/platform/BUILD.gn @@ -1717,6 +1717,27 @@ component("platform") { deps += [ "//third_party/libavif" ] } + if (!enable_webrtc) { + sources -= [ + "peerconnection/audio_codec_factory.cc", + "peerconnection/rtc_video_decoder_adapter.cc", + "peerconnection/rtc_video_decoder_adapter.h", + "peerconnection/rtc_video_decoder_factory.cc", + "peerconnection/rtc_video_decoder_factory.h", + "peerconnection/rtc_video_encoder.cc", + "peerconnection/rtc_video_encoder.h", + "peerconnection/rtc_video_encoder_factory.cc", + "peerconnection/rtc_video_encoder_factory.h", + "peerconnection/transmission_encoding_info_handler.cc", + "peerconnection/transmission_encoding_info_handler.h", + "peerconnection/video_codec_factory.cc", + "peerconnection/video_codec_factory.h", + ] + deps -= [ + "//third_party/webrtc_overrides:webrtc_component" + ] + } + if (current_cpu == "x86" || current_cpu == "x64") { deps += [ ":blink_x86_avx" ] sources += [ "audio/cpu/x86/audio_delay_dsp_kernel_sse2.cc" ] diff --git a/chromium/tools/ipc_fuzzer/message_tools/message_list.cc b/chromium/tools/ipc_fuzzer/message_tools/message_list.cc index 09d2bfbd4a2..acc238076f8 100644 --- a/chromium/tools/ipc_fuzzer/message_tools/message_list.cc +++ b/chromium/tools/ipc_fuzzer/message_tools/message_list.cc @@ -55,6 +55,9 @@ static bool check_msgtable() { exemptions.push_back(NaClMsgStart); #endif // !BUILDFLAG(ENABLE_NACL) +#if !BUILDFLAG(ENABLE_WEBRTC) + exemptions.push_back(WebRtcLoggingMsgStart); +#endif #if !defined(OS_ANDROID) exemptions.push_back(EncryptedMediaMsgStart); |