summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--content/browser/renderer_host/render_process_host_impl.cc1
-rw-r--r--content/public/common/content_switches.cc3
-rw-r--r--content/public/common/content_switches.h1
-rw-r--r--content/renderer/media/rtc_peer_connection_handler.cc12
-rw-r--r--content/renderer/media/rtc_peer_connection_handler.h8
-rw-r--r--content/renderer/media/rtc_peer_connection_handler_unittest.cc5
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));