diff options
6 files changed, 25 insertions, 5 deletions
diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc index 677bc0d..a9d26ff 100644 --- a/content/browser/renderer_host/render_process_host_impl.cc +++ b/content/browser/renderer_host/render_process_host_impl.cc @@ -759,6 +759,7 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer( switches::kEnableBrowserPluginCompositing, switches::kEnableBrowserPluginForAllViewTypes, switches::kEnableDCHECK, + switches::kEnableDataChannels, switches::kEnableEncryptedMedia, switches::kEnableExperimentalWebKitFeatures, switches::kEnableFixedLayout, diff --git a/content/public/common/content_switches.cc b/content/public/common/content_switches.cc index b551191..0b4f74c 100644 --- a/content/public/common/content_switches.cc +++ b/content/public/common/content_switches.cc @@ -260,6 +260,9 @@ const char kEnableCompositingForFixedPosition[] = // Enables CSS3 custom filters const char kEnableCssShaders[] = "enable-css-shaders"; +// Enables RTCPeerConnection data channels +const char kEnableDataChannels[] = "enable-data-channels"; + // Enables device motion events. const char kEnableDeviceMotion[] = "enable-device-motion"; diff --git a/content/public/common/content_switches.h b/content/public/common/content_switches.h index 671238d..a4e059f 100644 --- a/content/public/common/content_switches.h +++ b/content/public/common/content_switches.h @@ -94,6 +94,7 @@ CONTENT_EXPORT extern const char kEnableBrowserPluginCompositing[]; CONTENT_EXPORT extern const char kEnableBrowserPluginForAllViewTypes[]; CONTENT_EXPORT extern const char kEnableCompositingForFixedPosition[]; CONTENT_EXPORT extern const char kEnableCssShaders[]; +CONTENT_EXPORT extern const char kEnableDataChannels[]; CONTENT_EXPORT extern const char kEnableDeviceMotion[]; CONTENT_EXPORT extern const char kEnableExperimentalWebKitFeatures[]; extern const char kEnableFastback[]; diff --git a/content/renderer/media/rtc_peer_connection_handler.cc b/content/renderer/media/rtc_peer_connection_handler.cc index 1d92fc4..ee57667 100644 --- a/content/renderer/media/rtc_peer_connection_handler.cc +++ b/content/renderer/media/rtc_peer_connection_handler.cc @@ -7,9 +7,11 @@ #include <string> #include <utility> +#include "base/command_line.h" #include "base/logging.h" #include "base/memory/scoped_ptr.h" #include "base/utf_string_conversions.h" +#include "content/public/common/content_switches.h" #include "content/renderer/media/media_stream_dependency_factory.h" #include "content/renderer/media/rtc_data_channel_handler.h" #include "content/renderer/media/rtc_media_constraints.h" @@ -466,6 +468,11 @@ void RTCPeerConnectionHandler::getStats(LocalRTCStatsRequest* request) { WebKit::WebRTCDataChannelHandler* RTCPeerConnectionHandler::createDataChannel( const WebKit::WebString& label, bool reliable) { + if (!CommandLine::ForCurrentProcess()->HasSwitch( + switches::kEnableDataChannels)) { + return NULL; + } + DVLOG(1) << "createDataChannel label " << UTF16ToUTF8(label); webrtc::DataChannelInit config; @@ -559,6 +566,11 @@ void RTCPeerConnectionHandler::OnIceComplete() { void RTCPeerConnectionHandler::OnDataChannel( webrtc::DataChannelInterface* data_channel) { + if (!CommandLine::ForCurrentProcess()->HasSwitch( + switches::kEnableDataChannels)) { + return; + } + DVLOG(1) << "RTCPeerConnectionHandler::OnDataChannel " << data_channel->label(); client_->didAddRemoteDataChannel(new RtcDataChannelHandler(data_channel)); diff --git a/content/renderer/media/rtc_peer_connection_handler.h b/content/renderer/media/rtc_peer_connection_handler.h index 98a02f9..506bcaa 100644 --- a/content/renderer/media/rtc_peer_connection_handler.h +++ b/content/renderer/media/rtc_peer_connection_handler.h @@ -15,6 +15,7 @@ namespace WebKit { class WebFrame; +class WebRTCDataChannelHandler; } namespace content { @@ -122,12 +123,9 @@ class CONTENT_EXPORT RTCPeerConnectionHandler const WebKit::WebMediaStreamDescriptor& stream) OVERRIDE; virtual void getStats( const WebKit::WebRTCStatsRequest& request) OVERRIDE; - // We will be deleted by WebKit after stop has been returned. - virtual void stop() OVERRIDE; - virtual WebKit::WebRTCDataChannelHandler* createDataChannel( - const WebKit::WebString& label, - bool reliable) OVERRIDE; + const WebKit::WebString& label, bool reliable) OVERRIDE; + virtual void stop() OVERRIDE; // webrtc::PeerConnectionObserver implementation virtual void OnError() OVERRIDE; diff --git a/content/renderer/media/rtc_peer_connection_handler_unittest.cc b/content/renderer/media/rtc_peer_connection_handler_unittest.cc index cb9142a..c945609 100644 --- a/content/renderer/media/rtc_peer_connection_handler_unittest.cc +++ b/content/renderer/media/rtc_peer_connection_handler_unittest.cc @@ -4,8 +4,10 @@ #include <string> +#include "base/command_line.h" #include "base/memory/scoped_ptr.h" #include "base/utf_string_conversions.h" +#include "content/public/common/content_switches.h" #include "content/renderer/media/media_stream_extra_data.h" #include "content/renderer/media/mock_media_stream_dependency_factory.h" #include "content/renderer/media/mock_peer_connection_impl.h" @@ -458,6 +460,9 @@ TEST_F(RTCPeerConnectionHandlerTest, OnRenegotiationNeeded) { } TEST_F(RTCPeerConnectionHandlerTest, CreateDataChannel) { + CommandLine::ForCurrentProcess()->AppendSwitch( + switches::kEnableDataChannels); + WebKit::WebString label = "d1"; scoped_ptr<WebKit::WebRTCDataChannelHandler> channel( pc_handler_->createDataChannel("d1", true)); |