Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(397)

Unified Diff: webrtc/api/peerconnection_unittest.cc

Issue 1775033002: Changed defaults for CreateAnswer in non-constraint mode (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: First landable version of patch Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: webrtc/api/peerconnection_unittest.cc
diff --git a/webrtc/api/peerconnection_unittest.cc b/webrtc/api/peerconnection_unittest.cc
index 4a544c48256cca9cae27ae1c852eed54f56adf7c..afb8b9236321563998abd08cd54c4546f81dcbb3 100644
--- a/webrtc/api/peerconnection_unittest.cc
+++ b/webrtc/api/peerconnection_unittest.cc
@@ -155,9 +155,11 @@ class PeerConnectionTestClient : public webrtc::PeerConnectionObserver,
const std::string& id,
const MediaConstraintsInterface* constraints,
const PeerConnectionFactory::Options* options,
- rtc::scoped_ptr<webrtc::DtlsIdentityStoreInterface> dtls_identity_store) {
+ rtc::scoped_ptr<webrtc::DtlsIdentityStoreInterface> dtls_identity_store,
+ bool prefer_constraint_apis) {
PeerConnectionTestClient* client(new PeerConnectionTestClient(id));
- if (!client->Init(constraints, options, std::move(dtls_identity_store))) {
+ if (!client->Init(constraints, options, std::move(dtls_identity_store),
+ prefer_constraint_apis)) {
delete client;
return nullptr;
}
@@ -172,8 +174,19 @@ class PeerConnectionTestClient : public webrtc::PeerConnectionObserver,
rtc::SSLStreamAdapter::HaveDtlsSrtp() ? new FakeDtlsIdentityStore()
: nullptr);
- return CreateClientWithDtlsIdentityStore(id, constraints, options,
- std::move(dtls_identity_store));
+ return CreateClientWithDtlsIdentityStore(
+ id, constraints, options, std::move(dtls_identity_store), true);
+ }
+
+ static PeerConnectionTestClient* CreateClientPreferNoConstraints(
+ const std::string& id,
+ const PeerConnectionFactory::Options* options) {
+ rtc::scoped_ptr<FakeDtlsIdentityStore> dtls_identity_store(
+ rtc::SSLStreamAdapter::HaveDtlsSrtp() ? new FakeDtlsIdentityStore()
+ : nullptr);
+
+ return CreateClientWithDtlsIdentityStore(
+ id, nullptr, options, std::move(dtls_identity_store), false);
}
~PeerConnectionTestClient() {
@@ -337,6 +350,7 @@ class PeerConnectionTestClient : public webrtc::PeerConnectionObserver,
void IceRestart() {
session_description_constraints_.SetMandatoryIceRestart(true);
+ session_description_options_.ice_restart = true;
SetExpectIceRestart(true);
}
@@ -357,12 +371,14 @@ class PeerConnectionTestClient : public webrtc::PeerConnectionObserver,
if (audio && can_receive_audio())
return;
session_description_constraints_.SetMandatoryReceiveAudio(audio);
+ session_description_options_.offer_to_receive_audio = audio ? 1 : 0;
}
void SetReceiveVideo(bool video) {
if (video && can_receive_video())
return;
session_description_constraints_.SetMandatoryReceiveVideo(video);
+ session_description_options_.offer_to_receive_video = video ? 1 : 0;
}
void RemoveMsidFromReceivedSdp(bool remove) { remove_msid_ = remove; }
@@ -373,22 +389,34 @@ class PeerConnectionTestClient : public webrtc::PeerConnectionObserver,
bool can_receive_audio() {
bool value;
- if (webrtc::FindConstraint(&session_description_constraints_,
- MediaConstraintsInterface::kOfferToReceiveAudio,
- &value, nullptr)) {
- return value;
+ if (prefer_constraint_apis_) {
+ if (webrtc::FindConstraint(
+ &session_description_constraints_,
+ MediaConstraintsInterface::kOfferToReceiveAudio, &value,
+ nullptr)) {
+ return value;
+ }
+ return true;
}
- return true;
+ return session_description_options_.offer_to_receive_audio > 0 ||
+ session_description_options_.offer_to_receive_audio ==
+ PeerConnectionInterface::RTCOfferAnswerOptions::kUndefined;
}
bool can_receive_video() {
bool value;
- if (webrtc::FindConstraint(&session_description_constraints_,
- MediaConstraintsInterface::kOfferToReceiveVideo,
- &value, nullptr)) {
- return value;
+ if (prefer_constraint_apis_) {
+ if (webrtc::FindConstraint(
+ &session_description_constraints_,
+ MediaConstraintsInterface::kOfferToReceiveVideo, &value,
+ nullptr)) {
+ return value;
+ }
+ return true;
}
- return true;
+ return session_description_options_.offer_to_receive_audio > 0 ||
perkj_webrtc 2016/03/10 15:35:24 video
hta-webrtc 2016/03/10 16:22:05 Ouch. Makes me feel I should write tests for my te
+ session_description_options_.offer_to_receive_audio ==
perkj_webrtc 2016/03/10 15:35:24 video
hta-webrtc 2016/03/10 16:22:05 Done.
+ PeerConnectionInterface::RTCOfferAnswerOptions::kUndefined;
}
void OnDataChannel(DataChannelInterface* data_channel) override {
@@ -745,9 +773,15 @@ class PeerConnectionTestClient : public webrtc::PeerConnectionObserver,
bool Init(
const MediaConstraintsInterface* constraints,
const PeerConnectionFactory::Options* options,
- rtc::scoped_ptr<webrtc::DtlsIdentityStoreInterface> dtls_identity_store) {
+ rtc::scoped_ptr<webrtc::DtlsIdentityStoreInterface> dtls_identity_store,
+ bool prefer_constraint_apis) {
EXPECT_TRUE(!peer_connection_);
EXPECT_TRUE(!peer_connection_factory_);
+ if (!prefer_constraint_apis) {
+ EXPECT_TRUE(!constraints);
+ }
+ prefer_constraint_apis_ = prefer_constraint_apis;
+
rtc::scoped_ptr<cricket::PortAllocator> port_allocator(
new cricket::FakePortAllocator(rtc::Thread::Current(), nullptr));
fake_audio_capture_module_ = FakeAudioCaptureModule::Create();
@@ -819,10 +853,18 @@ class PeerConnectionTestClient : public webrtc::PeerConnectionObserver,
rtc::scoped_refptr<MockCreateSessionDescriptionObserver>
observer(new rtc::RefCountedObject<
MockCreateSessionDescriptionObserver>());
- if (offer) {
- pc()->CreateOffer(observer, &session_description_constraints_);
+ if (prefer_constraint_apis_) {
+ if (offer) {
+ pc()->CreateOffer(observer, &session_description_constraints_);
+ } else {
+ pc()->CreateAnswer(observer, &session_description_constraints_);
+ }
} else {
- pc()->CreateAnswer(observer, &session_description_constraints_);
+ if (offer) {
+ pc()->CreateOffer(observer, session_description_options_);
+ } else {
+ pc()->CreateAnswer(observer, session_description_options_);
+ }
}
EXPECT_EQ_WAIT(true, observer->called(), kMaxWaitMs);
*desc = observer->release_desc();
@@ -895,6 +937,7 @@ class PeerConnectionTestClient : public webrtc::PeerConnectionObserver,
rtc::scoped_refptr<webrtc::PeerConnectionFactoryInterface>
peer_connection_factory_;
+ bool prefer_constraint_apis_ = true;
bool auto_add_stream_ = true;
typedef std::pair<std::string, std::string> IceUfragPwdPair;
@@ -924,6 +967,7 @@ class PeerConnectionTestClient : public webrtc::PeerConnectionObserver,
std::vector<cricket::VideoCapturer*> video_capturers_;
webrtc::FakeConstraints session_description_constraints_;
+ PeerConnectionInterface::RTCOfferAnswerOptions session_description_options_;
perkj_webrtc 2016/03/10 15:35:24 suggest change name to match the type. what about
hta-webrtc 2016/03/10 16:22:05 Good idea. The "session_description" moniker was n
bool remove_msid_ = false; // True if MSID should be removed in received SDP.
bool remove_bundle_ =
false; // True if bundle should be removed in received SDP.
@@ -1033,6 +1077,22 @@ class P2PTestConductor : public testing::Test {
nullptr);
}
+ bool CreateTestClientsThatPreferNoConstraints() {
+ initiating_client_.reset(
+ PeerConnectionTestClient::CreateClientPreferNoConstraints("Caller: ",
+ nullptr));
+ receiving_client_.reset(
+ PeerConnectionTestClient::CreateClientPreferNoConstraints("Callee: ",
+ nullptr));
+ if (!initiating_client_ || !receiving_client_) {
+ return false;
+ }
+ // Remember the choice for possible later resets of the clients.
+ prefer_constraint_apis_ = false;
+ SetSignalingReceivers();
+ return true;
+ }
+
void SetSignalingReceivers() {
initiating_client_->set_signaling_message_receiver(receiving_client_.get());
receiving_client_->set_signaling_message_receiver(initiating_client_.get());
@@ -1141,7 +1201,7 @@ class P2PTestConductor : public testing::Test {
// Make sure the new client is using a different certificate.
return PeerConnectionTestClient::CreateClientWithDtlsIdentityStore(
"New Peer: ", &setup_constraints, nullptr,
- std::move(dtls_identity_store));
+ std::move(dtls_identity_store), prefer_constraint_apis_);
}
void SendRtpData(webrtc::DataChannelInterface* dc, const std::string& data) {
@@ -1186,6 +1246,7 @@ class P2PTestConductor : public testing::Test {
rtc::SocketServerScope ss_scope_;
rtc::scoped_ptr<PeerConnectionTestClient> initiating_client_;
rtc::scoped_ptr<PeerConnectionTestClient> receiving_client_;
+ bool prefer_constraint_apis_ = true;
};
// Disable for TSan v2, see
@@ -1252,6 +1313,12 @@ TEST_F(P2PTestConductor, OneWayMediaCall) {
LocalP2PTest();
}
+TEST_F(P2PTestConductor, OneWayMediaCallWithoutConstraints) {
+ ASSERT_TRUE(CreateTestClientsThatPreferNoConstraints());
+ receiving_client()->set_auto_add_stream(false);
+ LocalP2PTest();
+}
+
// This test sets up a audio call initially and then upgrades to audio/video,
// using DTLS.
TEST_F(P2PTestConductor, LocalP2PTestDtlsRenegotiate) {

Powered by Google App Engine
This is Rietveld 408576698