summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2020-08-03 13:19:41 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2020-12-03 17:29:43 +0100
commit7eb6adb6cac7c604d4717bd3ab0f0e8cca452fe5 (patch)
tree5218647eee4c52fad271362896e49c11ef1a1658
parent0199422d32f37be484483a523f7e88a3e1def4f2 (diff)
downloadqtwebengine-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>
-rw-r--r--chromium/chrome/browser/BUILD.gn134
-rw-r--r--chromium/chrome/browser/extensions/BUILD.gn9
-rw-r--r--chromium/chrome/browser/extensions/api/preference/preference_api.cc2
-rw-r--r--chromium/chrome/browser/extensions/api/preference/preference_apitest.cc2
-rw-r--r--chromium/chrome/browser/extensions/api/webrtc_logging_private/webrtc_logging_private_api.h17
-rw-r--r--chromium/chrome/browser/ui/BUILD.gn12
-rw-r--r--chromium/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc7
-rw-r--r--chromium/chrome/common/extensions/api/BUILD.gn1
-rw-r--r--chromium/chrome/common/features.gni1
-rw-r--r--chromium/chrome/common/webui_url_constants.cc4
-rw-r--r--chromium/chrome/common/webui_url_constants.h2
-rw-r--r--chromium/chrome/renderer/BUILD.gn25
-rw-r--r--chromium/chrome/test/BUILD.gn42
-rw-r--r--chromium/chrome/tools/service_discovery_sniffer/BUILD.gn6
-rw-r--r--chromium/components/BUILD.gn8
-rw-r--r--chromium/components/webrtc_logging/browser/BUILD.gn4
-rw-r--r--chromium/components/webrtc_logging/common/BUILD.gn4
-rw-r--r--chromium/content/app/content_main_runner_impl.cc8
-rw-r--r--chromium/content/browser/BUILD.gn86
-rw-r--r--chromium/content/browser/browser_main_loop.cc7
-rw-r--r--chromium/content/browser/gpu/gpu_process_host.cc2
-rw-r--r--chromium/content/browser/network_service_client.cc2
-rw-r--r--chromium/content/browser/network_service_client.h3
-rw-r--r--chromium/content/browser/renderer_host/media/in_process_launched_video_capture_device.cc3
-rw-r--r--chromium/content/browser/renderer_host/media/in_process_video_capture_device_launcher.cc10
-rw-r--r--chromium/content/browser/renderer_host/media/media_stream_manager.cc6
-rw-r--r--chromium/content/browser/renderer_host/render_process_host_browsertest.cc13
-rw-r--r--chromium/content/browser/renderer_host/render_process_host_impl.cc42
-rw-r--r--chromium/content/browser/renderer_host/render_process_host_impl.h20
-rw-r--r--chromium/content/browser/webrtc/webrtc_internals.cc19
-rw-r--r--chromium/content/browser/webrtc/webrtc_internals.h2
-rw-r--r--chromium/content/browser/webui/content_web_ui_controller_factory.cc7
-rw-r--r--chromium/content/common/BUILD.gn10
-rw-r--r--chromium/content/public/browser/BUILD.gn20
-rw-r--r--chromium/content/public/browser/render_process_host.h2
-rw-r--r--chromium/content/public/browser/webrtc_log.h4
-rw-r--r--chromium/content/public/common/content_switches.cc2
-rw-r--r--chromium/content/public/common/content_switches.h6
-rw-r--r--chromium/content/public/renderer/BUILD.gn7
-rw-r--r--chromium/content/renderer/BUILD.gn3
-rw-r--r--chromium/content/renderer/media/media_factory.cc4
-rw-r--r--chromium/content/renderer/pepper/content_renderer_pepper_host_factory.cc2
-rw-r--r--chromium/content/renderer/pepper/pepper_media_device_manager.cc32
-rw-r--r--chromium/content/renderer/pepper/resource_converter.cc2
-rw-r--r--chromium/content/renderer/render_frame_impl.cc2
-rw-r--r--chromium/content/renderer/render_view_impl.cc2
-rw-r--r--chromium/content/renderer/renderer_blink_platform_impl.cc6
-rw-r--r--chromium/content/renderer/renderer_blink_platform_impl.h3
-rw-r--r--chromium/content/renderer/renderer_main.cc7
-rw-r--r--chromium/content/test/BUILD.gn182
-rw-r--r--chromium/media/BUILD.gn1
-rw-r--r--chromium/media/audio/BUILD.gn14
-rw-r--r--chromium/media/audio/audio_manager.cc2
-rw-r--r--chromium/media/audio/audio_manager_base.cc4
-rw-r--r--chromium/media/gpu/BUILD.gn10
-rw-r--r--chromium/media/gpu/gpu_video_encode_accelerator_factory.cc6
-rw-r--r--chromium/media/media_options.gni2
-rw-r--r--chromium/remoting/BUILD.gn12
-rw-r--r--chromium/remoting/host/BUILD.gn36
-rw-r--r--chromium/remoting/host/it2me/BUILD.gn6
-rw-r--r--chromium/remoting/host/win/BUILD.gn5
-rw-r--r--chromium/remoting/remoting_enable.gni3
-rw-r--r--chromium/third_party/blink/common/BUILD.gn7
-rw-r--r--chromium/third_party/blink/renderer/modules/media_capabilities/media_capabilities.cc9
-rw-r--r--chromium/third_party/blink/renderer/modules/mediastream/local_media_stream_audio_source.cc6
-rw-r--r--chromium/third_party/blink/renderer/modules/mediastream/media_stream_renderer_factory.cc15
-rw-r--r--chromium/third_party/blink/renderer/modules/mediastream/processed_local_audio_source.cc9
-rw-r--r--chromium/third_party/blink/renderer/modules/peerconnection/BUILD.gn8
-rw-r--r--chromium/third_party/blink/renderer/modules/peerconnection/media_stream_video_webrtc_sink.cc9
-rw-r--r--chromium/third_party/blink/renderer/modules/peerconnection/rtc_certificate_generator.cc7
-rw-r--r--chromium/third_party/blink/renderer/modules/peerconnection/rtc_dtls_transport.cc4
-rw-r--r--chromium/third_party/blink/renderer/modules/peerconnection/rtc_ice_transport.cc19
-rw-r--r--chromium/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection.cc2
-rw-r--r--chromium/third_party/blink/renderer/modules/peerconnection/rtc_quic_transport.cc5
-rw-r--r--chromium/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.cc10
-rw-r--r--chromium/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.cc5
-rw-r--r--chromium/third_party/blink/renderer/modules/peerconnection/rtc_rtp_transceiver.cc1
-rw-r--r--chromium/third_party/blink/renderer/modules/peerconnection/rtc_sctp_transport.cc8
-rw-r--r--chromium/third_party/blink/renderer/platform/BUILD.gn21
-rw-r--r--chromium/tools/ipc_fuzzer/message_tools/message_list.cc3
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);