Remove enable_rtp_data_channel
This denies the ability to request RTP data channels to callers.
Later CLs will rip out the actual code for creating these channels.
Bug: chromium:928706
Change-Id: Ibb54197f192f567984a348f1539c26be120903f0
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/177901
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33740}
diff --git a/api/peer_connection_interface.h b/api/peer_connection_interface.h
index 17d9004..1c147f7 100644
--- a/api/peer_connection_interface.h
+++ b/api/peer_connection_interface.h
@@ -404,12 +404,6 @@
// from consideration for gathering ICE candidates.
bool disable_link_local_networks = false;
- // If set to true, use RTP data channels instead of SCTP.
- // TODO(deadbeef): Remove this. We no longer commit to supporting RTP data
- // channels, though some applications are still working on moving off of
- // them.
- bool enable_rtp_data_channel = false;
-
// Minimum bitrate at which screencast video tracks will be encoded at.
// This means adding padding bits up to this bitrate, which can help
// when switching from a static scene to one with motion.
diff --git a/examples/unityplugin/simple_peer_connection.cc b/examples/unityplugin/simple_peer_connection.cc
index 4fd2fc3..23e4d7b 100644
--- a/examples/unityplugin/simple_peer_connection.cc
+++ b/examples/unityplugin/simple_peer_connection.cc
@@ -190,7 +190,6 @@
webrtc::PeerConnectionInterface::IceServer stun_server;
stun_server.uri = GetPeerConnectionString();
config_.servers.push_back(stun_server);
- config_.enable_rtp_data_channel = true;
config_.enable_dtls_srtp = false;
peer_connection_ = g_peer_connection_factory->CreatePeerConnection(
diff --git a/pc/data_channel_integrationtest.cc b/pc/data_channel_integrationtest.cc
index f5f334e..7e94e09 100644
--- a/pc/data_channel_integrationtest.cc
+++ b/pc/data_channel_integrationtest.cc
@@ -146,204 +146,6 @@
kDefaultTimeout);
}
-#endif // WEBRTC_HAVE_SCTP
-
-// This test sets up a call between two parties with audio, video and an RTP
-// data channel.
-TEST_P(DataChannelIntegrationTest, EndToEndCallWithRtpDataChannel) {
- PeerConnectionInterface::RTCConfiguration rtc_config;
- rtc_config.enable_rtp_data_channel = true;
- rtc_config.enable_dtls_srtp = false;
- ASSERT_TRUE(CreatePeerConnectionWrappersWithConfig(rtc_config, rtc_config));
- ConnectFakeSignaling();
- // Expect that data channel created on caller side will show up for callee as
- // well.
- caller()->CreateDataChannel();
- caller()->AddAudioVideoTracks();
- callee()->AddAudioVideoTracks();
- caller()->CreateAndSetAndSignalOffer();
- ASSERT_TRUE_WAIT(SignalingStateStable(), kDefaultTimeout);
- // Ensure the existence of the RTP data channel didn't impede audio/video.
- MediaExpectations media_expectations;
- media_expectations.ExpectBidirectionalAudioAndVideo();
- ASSERT_TRUE(ExpectNewFrames(media_expectations));
- ASSERT_NE(nullptr, caller()->data_channel());
- ASSERT_NE(nullptr, callee()->data_channel());
- EXPECT_TRUE_WAIT(caller()->data_observer()->IsOpen(), kDefaultTimeout);
- EXPECT_TRUE_WAIT(callee()->data_observer()->IsOpen(), kDefaultTimeout);
-
- // Ensure data can be sent in both directions.
- std::string data = "hello world";
- SendRtpDataWithRetries(caller()->data_channel(), data, 5);
- EXPECT_EQ_WAIT(data, callee()->data_observer()->last_message(),
- kDefaultTimeout);
- SendRtpDataWithRetries(callee()->data_channel(), data, 5);
- EXPECT_EQ_WAIT(data, caller()->data_observer()->last_message(),
- kDefaultTimeout);
-}
-
-TEST_P(DataChannelIntegrationTest, RtpDataChannelWorksAfterRollback) {
- PeerConnectionInterface::RTCConfiguration rtc_config;
- rtc_config.enable_rtp_data_channel = true;
- rtc_config.enable_dtls_srtp = false;
- ASSERT_TRUE(CreatePeerConnectionWrappersWithConfig(rtc_config, rtc_config));
- ConnectFakeSignaling();
- auto data_channel = caller()->pc()->CreateDataChannel("label_1", nullptr);
- ASSERT_TRUE(data_channel.get() != nullptr);
- caller()->CreateAndSetAndSignalOffer();
- ASSERT_TRUE_WAIT(SignalingStateStable(), kDefaultTimeout);
-
- caller()->CreateDataChannel("label_2", nullptr);
- rtc::scoped_refptr<MockSetSessionDescriptionObserver> observer(
- new rtc::RefCountedObject<MockSetSessionDescriptionObserver>());
- caller()->pc()->SetLocalDescription(observer,
- caller()->CreateOfferAndWait().release());
- EXPECT_TRUE_WAIT(observer->called(), kDefaultTimeout);
- caller()->Rollback();
-
- std::string data = "hello world";
- SendRtpDataWithRetries(data_channel, data, 5);
- EXPECT_EQ_WAIT(data, callee()->data_observer()->last_message(),
- kDefaultTimeout);
-}
-
-// Ensure that an RTP data channel is signaled as closed for the caller when
-// the callee rejects it in a subsequent offer.
-TEST_P(DataChannelIntegrationTest, RtpDataChannelSignaledClosedInCalleeOffer) {
- // Same procedure as above test.
- PeerConnectionInterface::RTCConfiguration rtc_config;
- rtc_config.enable_rtp_data_channel = true;
- rtc_config.enable_dtls_srtp = false;
- ASSERT_TRUE(CreatePeerConnectionWrappersWithConfig(rtc_config, rtc_config));
- ConnectFakeSignaling();
- caller()->CreateDataChannel();
- caller()->AddAudioVideoTracks();
- callee()->AddAudioVideoTracks();
- caller()->CreateAndSetAndSignalOffer();
- ASSERT_TRUE_WAIT(SignalingStateStable(), kDefaultTimeout);
- ASSERT_NE(nullptr, caller()->data_channel());
- ASSERT_NE(nullptr, callee()->data_channel());
- ASSERT_TRUE_WAIT(caller()->data_observer()->IsOpen(), kDefaultTimeout);
- ASSERT_TRUE_WAIT(callee()->data_observer()->IsOpen(), kDefaultTimeout);
-
- // Close the data channel on the callee, and do an updated offer/answer.
- callee()->data_channel()->Close();
- callee()->CreateAndSetAndSignalOffer();
- ASSERT_TRUE_WAIT(SignalingStateStable(), kDefaultTimeout);
- EXPECT_FALSE(caller()->data_observer()->IsOpen());
- EXPECT_FALSE(callee()->data_observer()->IsOpen());
-}
-
-#if !defined(THREAD_SANITIZER)
-// This test provokes TSAN errors. See bugs.webrtc.org/11282
-
-// Tests that data is buffered in an RTP data channel until an observer is
-// registered for it.
-//
-// NOTE: RTP data channels can receive data before the underlying
-// transport has detected that a channel is writable and thus data can be
-// received before the data channel state changes to open. That is hard to test
-// but the same buffering is expected to be used in that case.
-//
-// Use fake clock and simulated network delay so that we predictably can wait
-// until an SCTP message has been delivered without "sleep()"ing.
-TEST_P(DataChannelIntegrationTestWithFakeClock,
- DataBufferedUntilRtpDataChannelObserverRegistered) {
- virtual_socket_server()->set_delay_mean(5); // 5 ms per hop.
- virtual_socket_server()->UpdateDelayDistribution();
-
- PeerConnectionInterface::RTCConfiguration rtc_config;
- rtc_config.enable_rtp_data_channel = true;
- rtc_config.enable_dtls_srtp = false;
- ASSERT_TRUE(CreatePeerConnectionWrappersWithConfig(rtc_config, rtc_config));
- ConnectFakeSignaling();
- caller()->CreateDataChannel();
- caller()->CreateAndSetAndSignalOffer();
- ASSERT_TRUE(caller()->data_channel() != nullptr);
- ASSERT_TRUE_SIMULATED_WAIT(callee()->data_channel() != nullptr,
- kDefaultTimeout, FakeClock());
- ASSERT_TRUE_SIMULATED_WAIT(caller()->data_observer()->IsOpen(),
- kDefaultTimeout, FakeClock());
- ASSERT_EQ_SIMULATED_WAIT(DataChannelInterface::kOpen,
- callee()->data_channel()->state(), kDefaultTimeout,
- FakeClock());
-
- // Unregister the observer which is normally automatically registered.
- callee()->data_channel()->UnregisterObserver();
- // Send data and advance fake clock until it should have been received.
- std::string data = "hello world";
- caller()->data_channel()->Send(DataBuffer(data));
- SIMULATED_WAIT(false, 50, FakeClock());
-
- // Attach data channel and expect data to be received immediately. Note that
- // EXPECT_EQ_WAIT is used, such that the simulated clock is not advanced any
- // further, but data can be received even if the callback is asynchronous.
- MockDataChannelObserver new_observer(callee()->data_channel());
- EXPECT_EQ_SIMULATED_WAIT(data, new_observer.last_message(), kDefaultTimeout,
- FakeClock());
-}
-
-#endif // !defined(THREAD_SANITIZER)
-
-// This test sets up a call between two parties with audio, video and but only
-// the caller client supports RTP data channels.
-TEST_P(DataChannelIntegrationTest, RtpDataChannelsRejectedByCallee) {
- PeerConnectionInterface::RTCConfiguration rtc_config_1;
- rtc_config_1.enable_rtp_data_channel = true;
- // Must disable DTLS to make negotiation succeed.
- rtc_config_1.enable_dtls_srtp = false;
- PeerConnectionInterface::RTCConfiguration rtc_config_2;
- rtc_config_2.enable_dtls_srtp = false;
- rtc_config_2.enable_dtls_srtp = false;
- ASSERT_TRUE(
- CreatePeerConnectionWrappersWithConfig(rtc_config_1, rtc_config_2));
- ConnectFakeSignaling();
- caller()->CreateDataChannel();
- ASSERT_TRUE(caller()->data_channel() != nullptr);
- caller()->AddAudioVideoTracks();
- callee()->AddAudioVideoTracks();
- caller()->CreateAndSetAndSignalOffer();
- ASSERT_TRUE_WAIT(SignalingStateStable(), kDefaultTimeout);
- // The caller should still have a data channel, but it should be closed, and
- // one should ever have been created for the callee.
- EXPECT_TRUE(caller()->data_channel() != nullptr);
- EXPECT_FALSE(caller()->data_observer()->IsOpen());
- EXPECT_EQ(nullptr, callee()->data_channel());
-}
-
-// This test sets up a call between two parties with audio, and video. When
-// audio and video is setup and flowing, an RTP data channel is negotiated.
-TEST_P(DataChannelIntegrationTest, AddRtpDataChannelInSubsequentOffer) {
- PeerConnectionInterface::RTCConfiguration rtc_config;
- rtc_config.enable_rtp_data_channel = true;
- rtc_config.enable_dtls_srtp = false;
- ASSERT_TRUE(CreatePeerConnectionWrappersWithConfig(rtc_config, rtc_config));
- ConnectFakeSignaling();
- // Do initial offer/answer with audio/video.
- caller()->AddAudioVideoTracks();
- callee()->AddAudioVideoTracks();
- caller()->CreateAndSetAndSignalOffer();
- ASSERT_TRUE_WAIT(SignalingStateStable(), kDefaultTimeout);
- // Create data channel and do new offer and answer.
- caller()->CreateDataChannel();
- caller()->CreateAndSetAndSignalOffer();
- ASSERT_TRUE_WAIT(SignalingStateStable(), kDefaultTimeout);
- ASSERT_NE(nullptr, caller()->data_channel());
- ASSERT_NE(nullptr, callee()->data_channel());
- EXPECT_TRUE_WAIT(caller()->data_observer()->IsOpen(), kDefaultTimeout);
- EXPECT_TRUE_WAIT(callee()->data_observer()->IsOpen(), kDefaultTimeout);
- // Ensure data can be sent in both directions.
- std::string data = "hello world";
- SendRtpDataWithRetries(caller()->data_channel(), data, 5);
- EXPECT_EQ_WAIT(data, callee()->data_observer()->last_message(),
- kDefaultTimeout);
- SendRtpDataWithRetries(callee()->data_channel(), data, 5);
- EXPECT_EQ_WAIT(data, caller()->data_observer()->last_message(),
- kDefaultTimeout);
-}
-
-#ifdef WEBRTC_HAVE_SCTP
-
// This test sets up a call between two parties with audio, video and an SCTP
// data channel.
TEST_P(DataChannelIntegrationTest, EndToEndCallWithSctpDataChannel) {
diff --git a/pc/peer_connection.cc b/pc/peer_connection.cc
index 657b6a3..0da0c37 100644
--- a/pc/peer_connection.cc
+++ b/pc/peer_connection.cc
@@ -362,7 +362,6 @@
disable_ipv6_on_wifi == o.disable_ipv6_on_wifi &&
max_ipv6_networks == o.max_ipv6_networks &&
disable_link_local_networks == o.disable_link_local_networks &&
- enable_rtp_data_channel == o.enable_rtp_data_channel &&
screencast_min_bitrate == o.screencast_min_bitrate &&
combined_audio_video_bwe == o.combined_audio_video_bwe &&
enable_dtls_srtp == o.enable_dtls_srtp &&
@@ -594,16 +593,9 @@
NoteUsageEvent(UsageEvent::TURN_SERVER_ADDED);
}
- if (configuration.enable_rtp_data_channel) {
- // Enable creation of RTP data channels if the kEnableRtpDataChannels is
- // set. It takes precendence over the disable_sctp_data_channels
- // PeerConnectionFactoryInterface::Options.
- data_channel_controller_.set_data_channel_type(cricket::DCT_RTP);
- } else {
- // DTLS has to be enabled to use SCTP.
- if (!options_.disable_sctp_data_channels && dtls_enabled_) {
- data_channel_controller_.set_data_channel_type(cricket::DCT_SCTP);
- }
+ // DTLS has to be enabled to use SCTP.
+ if (!options_.disable_sctp_data_channels && dtls_enabled_) {
+ data_channel_controller_.set_data_channel_type(cricket::DCT_SCTP);
}
// Network thread initialization.
@@ -684,8 +676,7 @@
config.active_reset_srtp_params = configuration.active_reset_srtp_params;
// DTLS has to be enabled to use SCTP.
- if (!configuration.enable_rtp_data_channel &&
- !options_.disable_sctp_data_channels && dtls_enabled_) {
+ if (!options_.disable_sctp_data_channels && dtls_enabled_) {
config.sctp_factory = context_->sctp_transport_factory();
}
diff --git a/pc/peer_connection_bundle_unittest.cc b/pc/peer_connection_bundle_unittest.cc
index 2d8338b..a219fa3 100644
--- a/pc/peer_connection_bundle_unittest.cc
+++ b/pc/peer_connection_bundle_unittest.cc
@@ -753,11 +753,9 @@
// This tests that removing contents from BUNDLE group and reject the whole
// BUNDLE group could work. This is a regression test for
// (https://bugs.chromium.org/p/chromium/issues/detail?id=827917)
+#ifdef HAVE_SCTP
TEST_P(PeerConnectionBundleTest, RemovingContentAndRejectBundleGroup) {
RTCConfiguration config;
-#ifndef WEBRTC_HAVE_SCTP
- config.enable_rtp_data_channel = true;
-#endif
config.bundle_policy = BundlePolicy::kBundlePolicyMaxBundle;
auto caller = CreatePeerConnectionWithAudioVideo(config);
caller->CreateDataChannel("dc");
@@ -782,6 +780,7 @@
EXPECT_TRUE(caller->SetLocalDescription(std::move(re_offer)));
}
+#endif
// This tests that the BUNDLE group in answer should be a subset of the offered
// group.
diff --git a/pc/peer_connection_data_channel_unittest.cc b/pc/peer_connection_data_channel_unittest.cc
index 6c51f01..604ad40 100644
--- a/pc/peer_connection_data_channel_unittest.cc
+++ b/pc/peer_connection_data_channel_unittest.cc
@@ -193,28 +193,6 @@
: PeerConnectionDataChannelBaseTest(SdpSemantics::kUnifiedPlan) {}
};
-TEST_P(PeerConnectionDataChannelTest,
- NoSctpTransportCreatedIfRtpDataChannelEnabled) {
- RTCConfiguration config;
- config.enable_rtp_data_channel = true;
- auto caller = CreatePeerConnectionWithDataChannel(config);
-
- ASSERT_TRUE(caller->SetLocalDescription(caller->CreateOffer()));
- EXPECT_FALSE(caller->sctp_transport_factory()->last_fake_sctp_transport());
-}
-
-TEST_P(PeerConnectionDataChannelTest,
- RtpDataChannelCreatedEvenIfSctpAvailable) {
- RTCConfiguration config;
- config.enable_rtp_data_channel = true;
- PeerConnectionFactoryInterface::Options options;
- options.disable_sctp_data_channels = false;
- auto caller = CreatePeerConnectionWithDataChannel(config, options);
-
- ASSERT_TRUE(caller->SetLocalDescription(caller->CreateOffer()));
- EXPECT_FALSE(caller->sctp_transport_factory()->last_fake_sctp_transport());
-}
-
TEST_P(PeerConnectionDataChannelTest, InternalSctpTransportDeletedOnTeardown) {
auto caller = CreatePeerConnectionWithDataChannel();
diff --git a/pc/peer_connection_interface_unittest.cc b/pc/peer_connection_interface_unittest.cc
index 3f73168..d454dd2 100644
--- a/pc/peer_connection_interface_unittest.cc
+++ b/pc/peer_connection_interface_unittest.cc
@@ -1901,179 +1901,6 @@
EXPECT_TRUE(DoGetRTCStats());
}
-// This test setup two RTP data channels in loop back.
-TEST_P(PeerConnectionInterfaceTest, TestDataChannel) {
- RTCConfiguration config;
- config.enable_rtp_data_channel = true;
- config.enable_dtls_srtp = false;
- CreatePeerConnection(config);
- rtc::scoped_refptr<DataChannelInterface> data1 =
- pc_->CreateDataChannel("test1", NULL);
- rtc::scoped_refptr<DataChannelInterface> data2 =
- pc_->CreateDataChannel("test2", NULL);
- ASSERT_TRUE(data1 != NULL);
- std::unique_ptr<MockDataChannelObserver> observer1(
- new MockDataChannelObserver(data1));
- std::unique_ptr<MockDataChannelObserver> observer2(
- new MockDataChannelObserver(data2));
-
- EXPECT_EQ(DataChannelInterface::kConnecting, data1->state());
- EXPECT_EQ(DataChannelInterface::kConnecting, data2->state());
- std::string data_to_send1 = "testing testing";
- std::string data_to_send2 = "testing something else";
- EXPECT_FALSE(data1->Send(DataBuffer(data_to_send1)));
-
- CreateOfferReceiveAnswer();
- EXPECT_TRUE_WAIT(observer1->IsOpen(), kTimeout);
- EXPECT_TRUE_WAIT(observer2->IsOpen(), kTimeout);
-
- EXPECT_EQ(DataChannelInterface::kOpen, data1->state());
- EXPECT_EQ(DataChannelInterface::kOpen, data2->state());
- EXPECT_TRUE(data1->Send(DataBuffer(data_to_send1)));
- EXPECT_TRUE(data2->Send(DataBuffer(data_to_send2)));
-
- EXPECT_EQ_WAIT(data_to_send1, observer1->last_message(), kTimeout);
- EXPECT_EQ_WAIT(data_to_send2, observer2->last_message(), kTimeout);
-
- data1->Close();
- EXPECT_EQ(DataChannelInterface::kClosing, data1->state());
- CreateOfferReceiveAnswer();
- EXPECT_FALSE(observer1->IsOpen());
- EXPECT_EQ(DataChannelInterface::kClosed, data1->state());
- EXPECT_TRUE(observer2->IsOpen());
-
- data_to_send2 = "testing something else again";
- EXPECT_TRUE(data2->Send(DataBuffer(data_to_send2)));
-
- EXPECT_EQ_WAIT(data_to_send2, observer2->last_message(), kTimeout);
-}
-
-// This test verifies that sendnig binary data over RTP data channels should
-// fail.
-TEST_P(PeerConnectionInterfaceTest, TestSendBinaryOnRtpDataChannel) {
- RTCConfiguration config;
- config.enable_rtp_data_channel = true;
- config.enable_dtls_srtp = false;
- CreatePeerConnection(config);
- rtc::scoped_refptr<DataChannelInterface> data1 =
- pc_->CreateDataChannel("test1", NULL);
- rtc::scoped_refptr<DataChannelInterface> data2 =
- pc_->CreateDataChannel("test2", NULL);
- ASSERT_TRUE(data1 != NULL);
- std::unique_ptr<MockDataChannelObserver> observer1(
- new MockDataChannelObserver(data1));
- std::unique_ptr<MockDataChannelObserver> observer2(
- new MockDataChannelObserver(data2));
-
- EXPECT_EQ(DataChannelInterface::kConnecting, data1->state());
- EXPECT_EQ(DataChannelInterface::kConnecting, data2->state());
-
- CreateOfferReceiveAnswer();
- EXPECT_TRUE_WAIT(observer1->IsOpen(), kTimeout);
- EXPECT_TRUE_WAIT(observer2->IsOpen(), kTimeout);
-
- EXPECT_EQ(DataChannelInterface::kOpen, data1->state());
- EXPECT_EQ(DataChannelInterface::kOpen, data2->state());
-
- rtc::CopyOnWriteBuffer buffer("test", 4);
- EXPECT_FALSE(data1->Send(DataBuffer(buffer, true)));
-}
-
-// This test setup a RTP data channels in loop back and test that a channel is
-// opened even if the remote end answer with a zero SSRC.
-TEST_P(PeerConnectionInterfaceTest, TestSendOnlyDataChannel) {
- RTCConfiguration config;
- config.enable_rtp_data_channel = true;
- config.enable_dtls_srtp = false;
- CreatePeerConnection(config);
- rtc::scoped_refptr<DataChannelInterface> data1 =
- pc_->CreateDataChannel("test1", NULL);
- std::unique_ptr<MockDataChannelObserver> observer1(
- new MockDataChannelObserver(data1));
-
- CreateOfferReceiveAnswerWithoutSsrc();
-
- EXPECT_TRUE_WAIT(observer1->IsOpen(), kTimeout);
-
- data1->Close();
- EXPECT_EQ(DataChannelInterface::kClosing, data1->state());
- CreateOfferReceiveAnswerWithoutSsrc();
- EXPECT_EQ(DataChannelInterface::kClosed, data1->state());
- EXPECT_FALSE(observer1->IsOpen());
-}
-
-// This test that if a data channel is added in an answer a receive only channel
-// channel is created.
-TEST_P(PeerConnectionInterfaceTest, TestReceiveOnlyDataChannel) {
- RTCConfiguration config;
- config.enable_rtp_data_channel = true;
- config.enable_dtls_srtp = false;
-
- CreatePeerConnection(config);
-
- std::string offer_label = "offer_channel";
- rtc::scoped_refptr<DataChannelInterface> offer_channel =
- pc_->CreateDataChannel(offer_label, NULL);
-
- CreateOfferAsLocalDescription();
-
- // Replace the data channel label in the offer and apply it as an answer.
- std::string receive_label = "answer_channel";
- std::string sdp;
- EXPECT_TRUE(pc_->local_description()->ToString(&sdp));
- absl::StrReplaceAll({{offer_label, receive_label}}, &sdp);
- CreateAnswerAsRemoteDescription(sdp);
-
- // Verify that a new incoming data channel has been created and that
- // it is open but can't we written to.
- ASSERT_TRUE(observer_.last_datachannel_ != NULL);
- DataChannelInterface* received_channel = observer_.last_datachannel_;
- EXPECT_EQ(DataChannelInterface::kConnecting, received_channel->state());
- EXPECT_EQ(receive_label, received_channel->label());
- EXPECT_FALSE(received_channel->Send(DataBuffer("something")));
-
- // Verify that the channel we initially offered has been rejected.
- EXPECT_EQ(DataChannelInterface::kClosed, offer_channel->state());
-
- // Do another offer / answer exchange and verify that the data channel is
- // opened.
- CreateOfferReceiveAnswer();
- EXPECT_EQ_WAIT(DataChannelInterface::kOpen, received_channel->state(),
- kTimeout);
-}
-
-// This test that no data channel is returned if a reliable channel is
-// requested.
-// TODO(perkj): Remove this test once reliable channels are implemented.
-TEST_P(PeerConnectionInterfaceTest, CreateReliableRtpDataChannelShouldFail) {
- RTCConfiguration rtc_config;
- rtc_config.enable_rtp_data_channel = true;
- CreatePeerConnection(rtc_config);
-
- std::string label = "test";
- webrtc::DataChannelInit config;
- config.reliable = true;
- rtc::scoped_refptr<DataChannelInterface> channel =
- pc_->CreateDataChannel(label, &config);
- EXPECT_TRUE(channel == NULL);
-}
-
-// Verifies that duplicated label is not allowed for RTP data channel.
-TEST_P(PeerConnectionInterfaceTest, RtpDuplicatedLabelNotAllowed) {
- RTCConfiguration config;
- config.enable_rtp_data_channel = true;
- CreatePeerConnection(config);
-
- std::string label = "test";
- rtc::scoped_refptr<DataChannelInterface> channel =
- pc_->CreateDataChannel(label, nullptr);
- EXPECT_NE(channel, nullptr);
-
- rtc::scoped_refptr<DataChannelInterface> dup_channel =
- pc_->CreateDataChannel(label, nullptr);
- EXPECT_EQ(dup_channel, nullptr);
-}
-
// This tests that a SCTP data channel is returned using different
// DataChannelInit configurations.
TEST_P(PeerConnectionInterfaceTest, CreateSctpDataChannel) {
@@ -2191,78 +2018,6 @@
EXPECT_NE(dup_channel, nullptr);
}
-// This test verifies that OnRenegotiationNeeded is fired for every new RTP
-// DataChannel.
-TEST_P(PeerConnectionInterfaceTest, RenegotiationNeededForNewRtpDataChannel) {
- RTCConfiguration rtc_config;
- rtc_config.enable_rtp_data_channel = true;
- rtc_config.enable_dtls_srtp = false;
- CreatePeerConnection(rtc_config);
-
- rtc::scoped_refptr<DataChannelInterface> dc1 =
- pc_->CreateDataChannel("test1", NULL);
- EXPECT_TRUE(observer_.renegotiation_needed_);
- observer_.renegotiation_needed_ = false;
-
- CreateOfferReceiveAnswer();
-
- rtc::scoped_refptr<DataChannelInterface> dc2 =
- pc_->CreateDataChannel("test2", NULL);
- EXPECT_EQ(observer_.renegotiation_needed_,
- GetParam() == SdpSemantics::kPlanB);
-}
-
-// This test that a data channel closes when a PeerConnection is deleted/closed.
-TEST_P(PeerConnectionInterfaceTest, DataChannelCloseWhenPeerConnectionClose) {
- RTCConfiguration rtc_config;
- rtc_config.enable_rtp_data_channel = true;
- rtc_config.enable_dtls_srtp = false;
- CreatePeerConnection(rtc_config);
-
- rtc::scoped_refptr<DataChannelInterface> data1 =
- pc_->CreateDataChannel("test1", NULL);
- rtc::scoped_refptr<DataChannelInterface> data2 =
- pc_->CreateDataChannel("test2", NULL);
- ASSERT_TRUE(data1 != NULL);
- std::unique_ptr<MockDataChannelObserver> observer1(
- new MockDataChannelObserver(data1));
- std::unique_ptr<MockDataChannelObserver> observer2(
- new MockDataChannelObserver(data2));
-
- CreateOfferReceiveAnswer();
- EXPECT_TRUE_WAIT(observer1->IsOpen(), kTimeout);
- EXPECT_TRUE_WAIT(observer2->IsOpen(), kTimeout);
-
- ReleasePeerConnection();
- EXPECT_EQ(DataChannelInterface::kClosed, data1->state());
- EXPECT_EQ(DataChannelInterface::kClosed, data2->state());
-}
-
-// This tests that RTP data channels can be rejected in an answer.
-TEST_P(PeerConnectionInterfaceTest, TestRejectRtpDataChannelInAnswer) {
- RTCConfiguration rtc_config;
- rtc_config.enable_rtp_data_channel = true;
- rtc_config.enable_dtls_srtp = false;
- CreatePeerConnection(rtc_config);
-
- rtc::scoped_refptr<DataChannelInterface> offer_channel(
- pc_->CreateDataChannel("offer_channel", NULL));
-
- CreateOfferAsLocalDescription();
-
- // Create an answer where the m-line for data channels are rejected.
- std::string sdp;
- EXPECT_TRUE(pc_->local_description()->ToString(&sdp));
- std::unique_ptr<SessionDescriptionInterface> answer(
- webrtc::CreateSessionDescription(SdpType::kAnswer, sdp));
- ASSERT_TRUE(answer);
- cricket::ContentInfo* data_info =
- cricket::GetFirstDataContent(answer->description());
- data_info->rejected = true;
-
- DoSetRemoteDescription(std::move(answer));
- EXPECT_EQ(DataChannelInterface::kClosed, offer_channel->state());
-}
#ifdef WEBRTC_HAVE_SCTP
// This tests that SCTP data channels can be rejected in an answer.
diff --git a/pc/peer_connection_jsep_unittest.cc b/pc/peer_connection_jsep_unittest.cc
index f0accf4..4713068 100644
--- a/pc/peer_connection_jsep_unittest.cc
+++ b/pc/peer_connection_jsep_unittest.cc
@@ -2266,17 +2266,4 @@
EXPECT_TRUE(callee->CreateOfferAndSetAsLocal());
}
-TEST_F(PeerConnectionJsepTest, RollbackRtpDataChannel) {
- RTCConfiguration config;
- config.sdp_semantics = SdpSemantics::kUnifiedPlan;
- config.enable_rtp_data_channel = true;
- auto pc = CreatePeerConnection(config);
- pc->CreateDataChannel("dummy");
- auto offer = pc->CreateOffer();
- EXPECT_TRUE(pc->CreateOfferAndSetAsLocal());
- EXPECT_TRUE(pc->SetRemoteDescription(pc->CreateRollback()));
- EXPECT_TRUE(pc->SetLocalDescription(std::move(offer)));
- pc->pc()->Close();
-}
-
} // namespace webrtc
diff --git a/sdk/android/api/org/webrtc/PeerConnection.java b/sdk/android/api/org/webrtc/PeerConnection.java
index b28fbaf..e174641 100644
--- a/sdk/android/api/org/webrtc/PeerConnection.java
+++ b/sdk/android/api/org/webrtc/PeerConnection.java
@@ -514,7 +514,6 @@
public boolean disableIpv6;
public boolean enableDscp;
public boolean enableCpuOveruseDetection;
- public boolean enableRtpDataChannel;
public boolean suspendBelowMinBitrate;
@Nullable public Integer screencastMinBitrate;
@Nullable public Boolean combinedAudioVideoBwe;
@@ -595,7 +594,6 @@
disableIpv6 = false;
enableDscp = false;
enableCpuOveruseDetection = true;
- enableRtpDataChannel = false;
suspendBelowMinBitrate = false;
screencastMinBitrate = null;
combinedAudioVideoBwe = null;
@@ -769,11 +767,6 @@
}
@CalledByNative("RTCConfiguration")
- boolean getEnableRtpDataChannel() {
- return enableRtpDataChannel;
- }
-
- @CalledByNative("RTCConfiguration")
boolean getSuspendBelowMinBitrate() {
return suspendBelowMinBitrate;
}
diff --git a/sdk/android/src/jni/pc/peer_connection.cc b/sdk/android/src/jni/pc/peer_connection.cc
index 84263ae..19bb61b 100644
--- a/sdk/android/src/jni/pc/peer_connection.cc
+++ b/sdk/android/src/jni/pc/peer_connection.cc
@@ -251,8 +251,6 @@
Java_RTCConfiguration_getEnableDscp(jni, j_rtc_config);
rtc_config->media_config.video.enable_cpu_adaptation =
Java_RTCConfiguration_getEnableCpuOveruseDetection(jni, j_rtc_config);
- rtc_config->enable_rtp_data_channel =
- Java_RTCConfiguration_getEnableRtpDataChannel(jni, j_rtc_config);
rtc_config->media_config.video.suspend_below_min_bitrate =
Java_RTCConfiguration_getSuspendBelowMinBitrate(jni, j_rtc_config);
rtc_config->screencast_min_bitrate = JavaToNativeOptionalInt(
diff --git a/sdk/media_constraints.cc b/sdk/media_constraints.cc
index faf393b..f4d72bd 100644
--- a/sdk/media_constraints.cc
+++ b/sdk/media_constraints.cc
@@ -167,8 +167,6 @@
FindConstraint(constraints, MediaConstraints::kCpuOveruseDetection,
&configuration->media_config.video.enable_cpu_adaptation,
nullptr);
- FindConstraint(constraints, MediaConstraints::kEnableRtpDataChannels,
- &configuration->enable_rtp_data_channel, nullptr);
// Find Suspend Below Min Bitrate constraint.
FindConstraint(
constraints, MediaConstraints::kEnableVideoSuspendBelowMinBitrate,
diff --git a/sdk/media_constraints_unittest.cc b/sdk/media_constraints_unittest.cc
index 7fd7f67..dab85eb 100644
--- a/sdk/media_constraints_unittest.cc
+++ b/sdk/media_constraints_unittest.cc
@@ -23,7 +23,6 @@
return a.disable_ipv6 == b.disable_ipv6 &&
a.audio_jitter_buffer_max_packets ==
b.audio_jitter_buffer_max_packets &&
- a.enable_rtp_data_channel == b.enable_rtp_data_channel &&
a.screencast_min_bitrate == b.screencast_min_bitrate &&
a.combined_audio_video_bwe == b.combined_audio_video_bwe &&
a.enable_dtls_srtp == b.enable_dtls_srtp &&