Change PeerConnection test helpers to take unique_ptr

This changes DoSet(Local|Remote)Description helper function in
the PeerConnection unit tests to take a unique_ptr to the new
session rather than a bare pointer (of which it took ownership).

Bug: None
Change-Id: I75ef0992f09676455423980972634e3e6a700b85
Reviewed-on: https://chromium-review.googlesource.com/662365
Reviewed-by: Taylor Brandstetter <deadbeef@webrtc.org>
Commit-Queue: Steve Anton <steveanton@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#19807}
This commit is contained in:
Steve Anton
2017-09-11 18:27:34 -07:00
committed by Commit Bot
parent 6ba5e2c0f6
commit db45ca80d1

View File

@ -332,7 +332,6 @@ using webrtc::DataBuffer;
using webrtc::DataChannelInterface;
using webrtc::FakeConstraints;
using webrtc::IceCandidateInterface;
using webrtc::JsepSessionDescription;
using webrtc::MediaConstraintsInterface;
using webrtc::MediaStream;
using webrtc::MediaStreamInterface;
@ -918,14 +917,16 @@ class PeerConnectionInterfaceTest : public testing::Test {
return DoCreateOfferAnswer(desc, false, constraints);
}
bool DoSetSessionDescription(SessionDescriptionInterface* desc, bool local) {
bool DoSetSessionDescription(
std::unique_ptr<SessionDescriptionInterface> desc,
bool local) {
rtc::scoped_refptr<MockSetSessionDescriptionObserver>
observer(new rtc::RefCountedObject<
MockSetSessionDescriptionObserver>());
if (local) {
pc_->SetLocalDescription(observer, desc);
pc_->SetLocalDescription(observer, desc.release());
} else {
pc_->SetRemoteDescription(observer, desc);
pc_->SetRemoteDescription(observer, desc.release());
}
if (pc_->signaling_state() != PeerConnectionInterface::kClosed) {
EXPECT_EQ_WAIT(true, observer->called(), kTimeout);
@ -933,12 +934,14 @@ class PeerConnectionInterfaceTest : public testing::Test {
return observer->result();
}
bool DoSetLocalDescription(SessionDescriptionInterface* desc) {
return DoSetSessionDescription(desc, true);
bool DoSetLocalDescription(
std::unique_ptr<SessionDescriptionInterface> desc) {
return DoSetSessionDescription(std::move(desc), true);
}
bool DoSetRemoteDescription(SessionDescriptionInterface* desc) {
return DoSetSessionDescription(desc, false);
bool DoSetRemoteDescription(
std::unique_ptr<SessionDescriptionInterface> desc) {
return DoSetSessionDescription(std::move(desc), false);
}
// Calls PeerConnection::GetStats and check the return value.
@ -980,18 +983,18 @@ class PeerConnectionInterfaceTest : public testing::Test {
ASSERT_TRUE(DoCreateOffer(&offer, nullptr));
std::string sdp;
EXPECT_TRUE(offer->ToString(&sdp));
SessionDescriptionInterface* remote_offer =
std::unique_ptr<SessionDescriptionInterface> remote_offer(
webrtc::CreateSessionDescription(SessionDescriptionInterface::kOffer,
sdp, NULL);
EXPECT_TRUE(DoSetRemoteDescription(remote_offer));
sdp, nullptr));
EXPECT_TRUE(DoSetRemoteDescription(std::move(remote_offer)));
EXPECT_EQ(PeerConnectionInterface::kHaveRemoteOffer, observer_.state_);
}
void CreateAndSetRemoteOffer(const std::string& sdp) {
SessionDescriptionInterface* remote_offer =
std::unique_ptr<SessionDescriptionInterface> remote_offer(
webrtc::CreateSessionDescription(SessionDescriptionInterface::kOffer,
sdp, nullptr);
EXPECT_TRUE(DoSetRemoteDescription(remote_offer));
sdp, nullptr));
EXPECT_TRUE(DoSetRemoteDescription(std::move(remote_offer)));
EXPECT_EQ(PeerConnectionInterface::kHaveRemoteOffer, observer_.state_);
}
@ -1008,10 +1011,10 @@ class PeerConnectionInterfaceTest : public testing::Test {
// https://code.google.com/p/webrtc/issues/detail?id=1356
std::string sdp;
EXPECT_TRUE(answer->ToString(&sdp));
SessionDescriptionInterface* new_answer =
std::unique_ptr<SessionDescriptionInterface> new_answer(
webrtc::CreateSessionDescription(SessionDescriptionInterface::kAnswer,
sdp, NULL);
EXPECT_TRUE(DoSetLocalDescription(new_answer));
sdp, nullptr));
EXPECT_TRUE(DoSetLocalDescription(std::move(new_answer)));
EXPECT_EQ(PeerConnectionInterface::kStable, observer_.state_);
}
@ -1021,10 +1024,10 @@ class PeerConnectionInterfaceTest : public testing::Test {
std::string sdp;
EXPECT_TRUE(answer->ToString(&sdp));
SessionDescriptionInterface* pr_answer =
std::unique_ptr<SessionDescriptionInterface> pr_answer(
webrtc::CreateSessionDescription(SessionDescriptionInterface::kPrAnswer,
sdp, NULL);
EXPECT_TRUE(DoSetLocalDescription(pr_answer));
sdp, nullptr));
EXPECT_TRUE(DoSetLocalDescription(std::move(pr_answer)));
EXPECT_EQ(PeerConnectionInterface::kHaveLocalPrAnswer, observer_.state_);
}
@ -1047,37 +1050,37 @@ class PeerConnectionInterfaceTest : public testing::Test {
// https://code.google.com/p/webrtc/issues/detail?id=1356
std::string sdp;
EXPECT_TRUE(offer->ToString(&sdp));
SessionDescriptionInterface* new_offer =
webrtc::CreateSessionDescription(
SessionDescriptionInterface::kOffer,
sdp, NULL);
std::unique_ptr<SessionDescriptionInterface> new_offer(
webrtc::CreateSessionDescription(SessionDescriptionInterface::kOffer,
sdp, nullptr));
EXPECT_TRUE(DoSetLocalDescription(new_offer));
EXPECT_TRUE(DoSetLocalDescription(std::move(new_offer)));
EXPECT_EQ(PeerConnectionInterface::kHaveLocalOffer, observer_.state_);
// Wait for the ice_complete message, so that SDP will have candidates.
EXPECT_TRUE_WAIT(observer_.ice_complete_, kTimeout);
}
void CreateAnswerAsRemoteDescription(const std::string& sdp) {
webrtc::JsepSessionDescription* answer = new webrtc::JsepSessionDescription(
SessionDescriptionInterface::kAnswer);
EXPECT_TRUE(answer->Initialize(sdp, NULL));
EXPECT_TRUE(DoSetRemoteDescription(answer));
std::unique_ptr<SessionDescriptionInterface> answer(
webrtc::CreateSessionDescription(SessionDescriptionInterface::kAnswer,
sdp, nullptr));
ASSERT_TRUE(answer);
EXPECT_TRUE(DoSetRemoteDescription(std::move(answer)));
EXPECT_EQ(PeerConnectionInterface::kStable, observer_.state_);
}
void CreatePrAnswerAndAnswerAsRemoteDescription(const std::string& sdp) {
webrtc::JsepSessionDescription* pr_answer =
new webrtc::JsepSessionDescription(
SessionDescriptionInterface::kPrAnswer);
EXPECT_TRUE(pr_answer->Initialize(sdp, NULL));
EXPECT_TRUE(DoSetRemoteDescription(pr_answer));
std::unique_ptr<SessionDescriptionInterface> pr_answer(
webrtc::CreateSessionDescription(SessionDescriptionInterface::kPrAnswer,
sdp, nullptr));
ASSERT_TRUE(pr_answer);
EXPECT_TRUE(DoSetRemoteDescription(std::move(pr_answer)));
EXPECT_EQ(PeerConnectionInterface::kHaveRemotePrAnswer, observer_.state_);
webrtc::JsepSessionDescription* answer =
new webrtc::JsepSessionDescription(
SessionDescriptionInterface::kAnswer);
EXPECT_TRUE(answer->Initialize(sdp, NULL));
EXPECT_TRUE(DoSetRemoteDescription(answer));
std::unique_ptr<SessionDescriptionInterface> answer(
webrtc::CreateSessionDescription(SessionDescriptionInterface::kAnswer,
sdp, nullptr));
ASSERT_TRUE(answer);
EXPECT_TRUE(DoSetRemoteDescription(std::move(answer)));
EXPECT_EQ(PeerConnectionInterface::kStable, observer_.state_);
}
@ -1172,9 +1175,7 @@ class PeerConnectionInterfaceTest : public testing::Test {
std::unique_ptr<SessionDescriptionInterface>
CreateAnswerWithOneAudioStream() {
std::unique_ptr<SessionDescriptionInterface> offer =
CreateOfferWithOneAudioStream();
EXPECT_TRUE(DoSetRemoteDescription(offer.release()));
EXPECT_TRUE(DoSetRemoteDescription(CreateOfferWithOneAudioStream()));
std::unique_ptr<SessionDescriptionInterface> answer;
EXPECT_TRUE(DoCreateAnswer(&answer, nullptr));
return answer;
@ -1207,10 +1208,10 @@ class PeerConnectionInterfaceTest : public testing::Test {
ASSERT_TRUE(desc != nullptr);
std::string sdp;
EXPECT_TRUE((*desc)->ToString(&sdp));
SessionDescriptionInterface* remote_offer =
std::unique_ptr<SessionDescriptionInterface> remote_offer(
webrtc::CreateSessionDescription(SessionDescriptionInterface::kOffer,
sdp, NULL);
EXPECT_TRUE(DoSetRemoteDescription(remote_offer));
sdp, nullptr));
EXPECT_TRUE(DoSetRemoteDescription(std::move(remote_offer)));
EXPECT_EQ(PeerConnectionInterface::kHaveRemoteOffer, observer_.state_);
}
@ -1221,10 +1222,11 @@ class PeerConnectionInterfaceTest : public testing::Test {
ASSERT_TRUE(desc != nullptr);
std::string sdp;
EXPECT_TRUE((*desc)->ToString(&sdp));
SessionDescriptionInterface* new_offer = webrtc::CreateSessionDescription(
SessionDescriptionInterface::kOffer, sdp, NULL);
std::unique_ptr<SessionDescriptionInterface> new_offer(
webrtc::CreateSessionDescription(SessionDescriptionInterface::kOffer,
sdp, nullptr));
EXPECT_TRUE(DoSetLocalDescription(new_offer));
EXPECT_TRUE(DoSetLocalDescription(std::move(new_offer)));
EXPECT_EQ(PeerConnectionInterface::kHaveLocalOffer, observer_.state_);
}
@ -1574,7 +1576,7 @@ TEST_F(PeerConnectionInterfaceTest, AddTrackRemoveTrack) {
EXPECT_TRUE(
ContainsTrack(video_desc->streams(), kStreamLabel1, "video_track"));
EXPECT_TRUE(DoSetLocalDescription(offer.release()));
EXPECT_TRUE(DoSetLocalDescription(std::move(offer)));
// Now try removing the tracks.
EXPECT_TRUE(pc_->RemoveTrack(audio_sender));
@ -1595,7 +1597,7 @@ TEST_F(PeerConnectionInterfaceTest, AddTrackRemoveTrack) {
EXPECT_FALSE(
ContainsTrack(video_desc->streams(), kStreamLabel1, "video_track"));
EXPECT_TRUE(DoSetLocalDescription(offer.release()));
EXPECT_TRUE(DoSetLocalDescription(std::move(offer)));
// Calling RemoveTrack on a sender no longer attached to a PeerConnection
// should return false.
@ -1698,12 +1700,12 @@ TEST_F(PeerConnectionInterfaceTest, IceCandidates) {
std::unique_ptr<SessionDescriptionInterface> offer;
AddVideoStream(kStreamLabel1);
EXPECT_TRUE(DoCreateOffer(&offer, nullptr));
EXPECT_TRUE(DoSetRemoteDescription(offer.release()));
EXPECT_TRUE(DoSetRemoteDescription(std::move(offer)));
// SetLocalDescription takes ownership of answer.
std::unique_ptr<SessionDescriptionInterface> answer;
EXPECT_TRUE(DoCreateAnswer(&answer, nullptr));
EXPECT_TRUE(DoSetLocalDescription(answer.release()));
EXPECT_TRUE(DoSetLocalDescription(std::move(answer)));
EXPECT_TRUE_WAIT(observer_.last_candidate_.get() != NULL, kTimeout);
EXPECT_TRUE_WAIT(observer_.ice_complete_, kTimeout);
@ -1751,7 +1753,7 @@ TEST_F(PeerConnectionInterfaceTest, SsrcInOfferAnswer) {
EXPECT_NE(audio_ssrc, video_ssrc);
// Test CreateAnswer
EXPECT_TRUE(DoSetRemoteDescription(offer.release()));
EXPECT_TRUE(DoSetRemoteDescription(std::move(offer)));
std::unique_ptr<SessionDescriptionInterface> answer;
ASSERT_TRUE(DoCreateAnswer(&answer, nullptr));
audio_ssrc = 0;
@ -2203,14 +2205,15 @@ TEST_F(PeerConnectionInterfaceTest, TestRejectDataChannelInAnswer) {
// Create an answer where the m-line for data channels are rejected.
std::string sdp;
EXPECT_TRUE(pc_->local_description()->ToString(&sdp));
webrtc::JsepSessionDescription* answer = new webrtc::JsepSessionDescription(
SessionDescriptionInterface::kAnswer);
EXPECT_TRUE(answer->Initialize(sdp, NULL));
std::unique_ptr<SessionDescriptionInterface> answer(
webrtc::CreateSessionDescription(SessionDescriptionInterface::kAnswer,
sdp, nullptr));
ASSERT_TRUE(answer);
cricket::ContentInfo* data_info =
answer->description()->GetContentByName("data");
data_info->rejected = true;
DoSetRemoteDescription(answer);
DoSetRemoteDescription(std::move(answer));
EXPECT_EQ(DataChannelInterface::kClosed, offer_channel->state());
}
@ -2223,10 +2226,10 @@ TEST_F(PeerConnectionInterfaceTest, ReceiveFireFoxOffer) {
true);
CreatePeerConnection(&constraints);
AddAudioVideoStream(kStreamLabel1, "audio_label", "video_label");
SessionDescriptionInterface* desc =
std::unique_ptr<SessionDescriptionInterface> desc(
webrtc::CreateSessionDescription(SessionDescriptionInterface::kOffer,
webrtc::kFireFoxSdpOffer, nullptr);
EXPECT_TRUE(DoSetSessionDescription(desc, false));
webrtc::kFireFoxSdpOffer, nullptr));
EXPECT_TRUE(DoSetSessionDescription(std::move(desc), false));
CreateAnswerAsLocalDescription();
ASSERT_TRUE(pc_->local_description() != NULL);
ASSERT_TRUE(pc_->remote_description() != NULL);
@ -2262,9 +2265,10 @@ TEST_F(PeerConnectionInterfaceTest, ReceiveDtlsSdesFallbackOffer) {
ASSERT_NE(nullptr, fake_certificate_generator_);
EXPECT_EQ_WAIT(1, fake_certificate_generator_->generated_certificates(),
kTimeout);
SessionDescriptionInterface* desc = webrtc::CreateSessionDescription(
SessionDescriptionInterface::kOffer, kDtlsSdesFallbackSdp, nullptr);
EXPECT_TRUE(DoSetSessionDescription(desc, false));
std::unique_ptr<SessionDescriptionInterface> desc(
webrtc::CreateSessionDescription(SessionDescriptionInterface::kOffer,
kDtlsSdesFallbackSdp, nullptr));
EXPECT_TRUE(DoSetSessionDescription(std::move(desc), false));
CreateAnswerAsLocalDescription();
}
@ -2276,16 +2280,16 @@ TEST_F(PeerConnectionInterfaceTest, ReceiveUpdatedAudioOfferWithBadCodecs) {
AddVoiceStream("audio_label");
CreateOfferAsLocalDescription();
SessionDescriptionInterface* answer =
std::unique_ptr<SessionDescriptionInterface> answer(
webrtc::CreateSessionDescription(SessionDescriptionInterface::kAnswer,
webrtc::kAudioSdp, nullptr);
EXPECT_TRUE(DoSetSessionDescription(answer, false));
webrtc::kAudioSdp, nullptr));
EXPECT_TRUE(DoSetSessionDescription(std::move(answer), false));
SessionDescriptionInterface* updated_offer =
std::unique_ptr<SessionDescriptionInterface> updated_offer(
webrtc::CreateSessionDescription(SessionDescriptionInterface::kOffer,
webrtc::kAudioSdpWithUnsupportedCodecs,
nullptr);
EXPECT_TRUE(DoSetSessionDescription(updated_offer, false));
nullptr));
EXPECT_TRUE(DoSetSessionDescription(std::move(updated_offer), false));
CreateAnswerAsLocalDescription();
}
@ -2630,16 +2634,16 @@ TEST_F(PeerConnectionInterfaceTest, CloseAndTestMethods) {
std::string sdp;
ASSERT_TRUE(pc_->remote_description()->ToString(&sdp));
SessionDescriptionInterface* remote_offer =
webrtc::CreateSessionDescription(SessionDescriptionInterface::kOffer,
sdp, NULL);
EXPECT_FALSE(DoSetRemoteDescription(remote_offer));
std::unique_ptr<SessionDescriptionInterface> remote_offer(
webrtc::CreateSessionDescription(SessionDescriptionInterface::kOffer, sdp,
nullptr));
EXPECT_FALSE(DoSetRemoteDescription(std::move(remote_offer)));
ASSERT_TRUE(pc_->local_description()->ToString(&sdp));
SessionDescriptionInterface* local_offer =
webrtc::CreateSessionDescription(SessionDescriptionInterface::kOffer,
sdp, NULL);
EXPECT_FALSE(DoSetLocalDescription(local_offer));
std::unique_ptr<SessionDescriptionInterface> local_offer(
webrtc::CreateSessionDescription(SessionDescriptionInterface::kOffer, sdp,
nullptr));
EXPECT_FALSE(DoSetLocalDescription(std::move(local_offer)));
}
// Test that GetStats can still be called after PeerConnection::Close.
@ -2688,14 +2692,14 @@ TEST_F(PeerConnectionInterfaceTest,
CreatePeerConnection(&constraints);
std::unique_ptr<SessionDescriptionInterface> desc_ms1 =
CreateSessionDescriptionAndReference(1, 1);
EXPECT_TRUE(DoSetRemoteDescription(desc_ms1.release()));
EXPECT_TRUE(DoSetRemoteDescription(std::move(desc_ms1)));
EXPECT_TRUE(CompareStreamCollections(observer_.remote_streams(),
reference_collection_));
// Add extra audio and video tracks to the same MediaStream.
std::unique_ptr<SessionDescriptionInterface> desc_ms1_two_tracks =
CreateSessionDescriptionAndReference(2, 2);
EXPECT_TRUE(DoSetRemoteDescription(desc_ms1_two_tracks.release()));
EXPECT_TRUE(DoSetRemoteDescription(std::move(desc_ms1_two_tracks)));
EXPECT_TRUE(CompareStreamCollections(observer_.remote_streams(),
reference_collection_));
rtc::scoped_refptr<AudioTrackInterface> audio_track2 =
@ -2713,7 +2717,7 @@ TEST_F(PeerConnectionInterfaceTest,
EXPECT_CALL(audio_track_observer, OnChanged()).Times(Exactly(1));
EXPECT_CALL(video_track_observer, OnChanged()).Times(Exactly(1));
EXPECT_TRUE(DoSetRemoteDescription(desc_ms2.release()));
EXPECT_TRUE(DoSetRemoteDescription(std::move(desc_ms2)));
EXPECT_TRUE(CompareStreamCollections(observer_.remote_streams(),
reference_collection_));
// Track state may be updated asynchronously.
@ -2750,7 +2754,7 @@ TEST_F(PeerConnectionInterfaceTest, RejectMediaContent) {
cricket::ContentInfo* video_info =
local_answer->description()->GetContentByName("video");
video_info->rejected = true;
EXPECT_TRUE(DoSetLocalDescription(local_answer.release()));
EXPECT_TRUE(DoSetLocalDescription(std::move(local_answer)));
EXPECT_EQ(webrtc::MediaStreamTrackInterface::kEnded, remote_video->state());
EXPECT_EQ(webrtc::MediaStreamTrackInterface::kLive, remote_audio->state());
@ -2764,7 +2768,7 @@ TEST_F(PeerConnectionInterfaceTest, RejectMediaContent) {
local_offer->description()->GetContentByName("audio");
ASSERT_TRUE(audio_info != nullptr);
audio_info->rejected = true;
EXPECT_TRUE(DoSetLocalDescription(local_offer.release()));
EXPECT_TRUE(DoSetLocalDescription(std::move(local_offer)));
// Track state may be updated asynchronously.
EXPECT_EQ_WAIT(webrtc::MediaStreamTrackInterface::kEnded,
remote_audio->state(), kTimeout);
@ -2793,7 +2797,7 @@ TEST_F(PeerConnectionInterfaceTest, RemoveTrackThenRejectMediaContent) {
cricket::ContentInfo* audio_info =
local_answer->description()->GetContentByName("audio");
audio_info->rejected = true;
EXPECT_TRUE(DoSetLocalDescription(local_answer.release()));
EXPECT_TRUE(DoSetLocalDescription(std::move(local_answer)));
// No crash is a pass.
}
@ -2963,7 +2967,7 @@ TEST_F(PeerConnectionInterfaceTest, LocalDescriptionChanged) {
pc_->AddStream(stream_collection->at(0));
std::unique_ptr<SessionDescriptionInterface> offer;
ASSERT_TRUE(DoCreateOffer(&offer, nullptr));
EXPECT_TRUE(DoSetLocalDescription(offer.release()));
EXPECT_TRUE(DoSetLocalDescription(std::move(offer)));
auto senders = pc_->GetSenders();
EXPECT_EQ(4u, senders.size());
@ -2977,7 +2981,7 @@ TEST_F(PeerConnectionInterfaceTest, LocalDescriptionChanged) {
stream_collection = CreateStreamCollection(1, 1);
pc_->AddStream(stream_collection->at(0));
ASSERT_TRUE(DoCreateOffer(&offer, nullptr));
EXPECT_TRUE(DoSetLocalDescription(offer.release()));
EXPECT_TRUE(DoSetLocalDescription(std::move(offer)));
senders = pc_->GetSenders();
EXPECT_EQ(2u, senders.size());
@ -3004,7 +3008,7 @@ TEST_F(PeerConnectionInterfaceTest,
ASSERT_TRUE(DoCreateOffer(&offer, nullptr));
pc_->RemoveStream(stream_collection->at(0));
EXPECT_TRUE(DoSetLocalDescription(offer.release()));
EXPECT_TRUE(DoSetLocalDescription(std::move(offer)));
auto senders = pc_->GetSenders();
EXPECT_EQ(0u, senders.size());
@ -3032,11 +3036,11 @@ TEST_F(PeerConnectionInterfaceTest,
std::unique_ptr<SessionDescriptionInterface> offer;
ASSERT_TRUE(DoCreateOffer(&offer, nullptr));
// Grab a copy of the offer before it gets passed into the PC.
std::unique_ptr<JsepSessionDescription> modified_offer(
new JsepSessionDescription(JsepSessionDescription::kOffer));
std::unique_ptr<webrtc::JsepSessionDescription> modified_offer(
new webrtc::JsepSessionDescription(SessionDescriptionInterface::kOffer));
modified_offer->Initialize(offer->description()->Copy(), offer->session_id(),
offer->session_version());
EXPECT_TRUE(DoSetLocalDescription(offer.release()));
EXPECT_TRUE(DoSetLocalDescription(std::move(offer)));
auto senders = pc_->GetSenders();
EXPECT_EQ(2u, senders.size());
@ -3062,7 +3066,7 @@ TEST_F(PeerConnectionInterfaceTest,
}
}
EXPECT_TRUE(DoSetLocalDescription(modified_offer.release()));
EXPECT_TRUE(DoSetLocalDescription(std::move(modified_offer)));
senders = pc_->GetSenders();
EXPECT_EQ(2u, senders.size());
EXPECT_TRUE(ContainsSender(senders, kAudioTracks[0]));
@ -3085,7 +3089,7 @@ TEST_F(PeerConnectionInterfaceTest,
pc_->AddStream(stream_collection->at(0));
std::unique_ptr<SessionDescriptionInterface> offer;
ASSERT_TRUE(DoCreateOffer(&offer, nullptr));
EXPECT_TRUE(DoSetLocalDescription(offer.release()));
EXPECT_TRUE(DoSetLocalDescription(std::move(offer)));
auto senders = pc_->GetSenders();
EXPECT_EQ(2u, senders.size());
@ -3100,7 +3104,7 @@ TEST_F(PeerConnectionInterfaceTest,
pc_->AddStream(stream_1);
ASSERT_TRUE(DoCreateOffer(&offer, nullptr));
EXPECT_TRUE(DoSetLocalDescription(offer.release()));
EXPECT_TRUE(DoSetLocalDescription(std::move(offer)));
auto new_senders = pc_->GetSenders();
// Should be the same senders as before, but with updated stream id.
@ -3214,12 +3218,13 @@ TEST_F(PeerConnectionInterfaceTest, SetConfigurationCausingPartialIceRestart) {
EXPECT_TRUE(pc_->SetConfiguration(config));
// Do ICE restart for the first m= section, initiated by remote peer.
webrtc::JsepSessionDescription* remote_offer =
new webrtc::JsepSessionDescription(SessionDescriptionInterface::kOffer);
EXPECT_TRUE(remote_offer->Initialize(kSdpStringWithStream1, nullptr));
std::unique_ptr<webrtc::SessionDescriptionInterface> remote_offer(
webrtc::CreateSessionDescription(SessionDescriptionInterface::kOffer,
kSdpStringWithStream1, nullptr));
ASSERT_TRUE(remote_offer);
remote_offer->description()->transport_infos()[0].description.ice_ufrag =
"modified";
EXPECT_TRUE(DoSetRemoteDescription(remote_offer));
EXPECT_TRUE(DoSetRemoteDescription(std::move(remote_offer)));
CreateAnswerAsLocalDescription();
// Grab the ufrags.
@ -3246,65 +3251,73 @@ TEST_F(PeerConnectionInterfaceTest, CurrentAndPendingDescriptions) {
// Create initial local offer and get SDP (which will also be used as
// answer/pranswer);
std::unique_ptr<SessionDescriptionInterface> offer;
ASSERT_TRUE(DoCreateOffer(&offer, nullptr));
std::unique_ptr<SessionDescriptionInterface> local_offer;
ASSERT_TRUE(DoCreateOffer(&local_offer, nullptr));
std::string sdp;
EXPECT_TRUE(offer->ToString(&sdp));
EXPECT_TRUE(local_offer->ToString(&sdp));
// Set local offer.
SessionDescriptionInterface* local_offer = offer.release();
EXPECT_TRUE(DoSetLocalDescription(local_offer));
EXPECT_EQ(local_offer, pc_->pending_local_description());
SessionDescriptionInterface* local_offer_ptr = local_offer.get();
EXPECT_TRUE(DoSetLocalDescription(std::move(local_offer)));
EXPECT_EQ(local_offer_ptr, pc_->pending_local_description());
EXPECT_EQ(nullptr, pc_->pending_remote_description());
EXPECT_EQ(nullptr, pc_->current_local_description());
EXPECT_EQ(nullptr, pc_->current_remote_description());
// Set remote pranswer.
SessionDescriptionInterface* remote_pranswer =
std::unique_ptr<SessionDescriptionInterface> remote_pranswer(
webrtc::CreateSessionDescription(SessionDescriptionInterface::kPrAnswer,
sdp, nullptr);
EXPECT_TRUE(DoSetRemoteDescription(remote_pranswer));
EXPECT_EQ(local_offer, pc_->pending_local_description());
EXPECT_EQ(remote_pranswer, pc_->pending_remote_description());
sdp, nullptr));
SessionDescriptionInterface* remote_pranswer_ptr = remote_pranswer.get();
EXPECT_TRUE(DoSetRemoteDescription(std::move(remote_pranswer)));
EXPECT_EQ(local_offer_ptr, pc_->pending_local_description());
EXPECT_EQ(remote_pranswer_ptr, pc_->pending_remote_description());
EXPECT_EQ(nullptr, pc_->current_local_description());
EXPECT_EQ(nullptr, pc_->current_remote_description());
// Set remote answer.
SessionDescriptionInterface* remote_answer = webrtc::CreateSessionDescription(
SessionDescriptionInterface::kAnswer, sdp, nullptr);
EXPECT_TRUE(DoSetRemoteDescription(remote_answer));
std::unique_ptr<SessionDescriptionInterface> remote_answer(
webrtc::CreateSessionDescription(SessionDescriptionInterface::kAnswer,
sdp, nullptr));
SessionDescriptionInterface* remote_answer_ptr = remote_answer.get();
EXPECT_TRUE(DoSetRemoteDescription(std::move(remote_answer)));
EXPECT_EQ(nullptr, pc_->pending_local_description());
EXPECT_EQ(nullptr, pc_->pending_remote_description());
EXPECT_EQ(local_offer, pc_->current_local_description());
EXPECT_EQ(remote_answer, pc_->current_remote_description());
EXPECT_EQ(local_offer_ptr, pc_->current_local_description());
EXPECT_EQ(remote_answer_ptr, pc_->current_remote_description());
// Set remote offer.
SessionDescriptionInterface* remote_offer = webrtc::CreateSessionDescription(
SessionDescriptionInterface::kOffer, sdp, nullptr);
EXPECT_TRUE(DoSetRemoteDescription(remote_offer));
EXPECT_EQ(remote_offer, pc_->pending_remote_description());
std::unique_ptr<SessionDescriptionInterface> remote_offer(
webrtc::CreateSessionDescription(SessionDescriptionInterface::kOffer, sdp,
nullptr));
SessionDescriptionInterface* remote_offer_ptr = remote_offer.get();
EXPECT_TRUE(DoSetRemoteDescription(std::move(remote_offer)));
EXPECT_EQ(remote_offer_ptr, pc_->pending_remote_description());
EXPECT_EQ(nullptr, pc_->pending_local_description());
EXPECT_EQ(local_offer, pc_->current_local_description());
EXPECT_EQ(remote_answer, pc_->current_remote_description());
EXPECT_EQ(local_offer_ptr, pc_->current_local_description());
EXPECT_EQ(remote_answer_ptr, pc_->current_remote_description());
// Set local pranswer.
SessionDescriptionInterface* local_pranswer =
std::unique_ptr<SessionDescriptionInterface> local_pranswer(
webrtc::CreateSessionDescription(SessionDescriptionInterface::kPrAnswer,
sdp, nullptr);
EXPECT_TRUE(DoSetLocalDescription(local_pranswer));
EXPECT_EQ(remote_offer, pc_->pending_remote_description());
EXPECT_EQ(local_pranswer, pc_->pending_local_description());
EXPECT_EQ(local_offer, pc_->current_local_description());
EXPECT_EQ(remote_answer, pc_->current_remote_description());
sdp, nullptr));
SessionDescriptionInterface* local_pranswer_ptr = local_pranswer.get();
EXPECT_TRUE(DoSetLocalDescription(std::move(local_pranswer)));
EXPECT_EQ(remote_offer_ptr, pc_->pending_remote_description());
EXPECT_EQ(local_pranswer_ptr, pc_->pending_local_description());
EXPECT_EQ(local_offer_ptr, pc_->current_local_description());
EXPECT_EQ(remote_answer_ptr, pc_->current_remote_description());
// Set local answer.
SessionDescriptionInterface* local_answer = webrtc::CreateSessionDescription(
SessionDescriptionInterface::kAnswer, sdp, nullptr);
EXPECT_TRUE(DoSetLocalDescription(local_answer));
std::unique_ptr<SessionDescriptionInterface> local_answer(
webrtc::CreateSessionDescription(SessionDescriptionInterface::kAnswer,
sdp, nullptr));
SessionDescriptionInterface* local_answer_ptr = local_answer.get();
EXPECT_TRUE(DoSetLocalDescription(std::move(local_answer)));
EXPECT_EQ(nullptr, pc_->pending_remote_description());
EXPECT_EQ(nullptr, pc_->pending_local_description());
EXPECT_EQ(remote_offer, pc_->current_remote_description());
EXPECT_EQ(local_answer, pc_->current_local_description());
EXPECT_EQ(remote_offer_ptr, pc_->current_remote_description());
EXPECT_EQ(local_answer_ptr, pc_->current_local_description());
}
// Tests that it won't crash when calling StartRtcEventLog or StopRtcEventLog
@ -3337,7 +3350,7 @@ TEST_F(PeerConnectionInterfaceTest, OffersAndAnswersHaveTrickleIceOption) {
EXPECT_TRUE(desc->transport_infos()[1].description.HasOption("trickle"));
// Apply the offer as a remote description, then create an answer.
EXPECT_TRUE(DoSetRemoteDescription(offer.release()));
EXPECT_TRUE(DoSetRemoteDescription(std::move(offer)));
std::unique_ptr<SessionDescriptionInterface> answer;
ASSERT_TRUE(DoCreateAnswer(&answer, &constraints));
desc = answer->description();
@ -3379,7 +3392,7 @@ TEST_F(PeerConnectionInterfaceTest, IceRenominationOptionInOfferAndAnswer) {
// Set the offer as a remote description, then create an answer and ensure it
// has the renomination flag too.
EXPECT_TRUE(DoSetRemoteDescription(offer.release()));
EXPECT_TRUE(DoSetRemoteDescription(std::move(offer)));
std::unique_ptr<SessionDescriptionInterface> answer;
ASSERT_TRUE(DoCreateAnswer(&answer, nullptr));
desc = answer->description();
@ -3422,7 +3435,7 @@ TEST_F(PeerConnectionInterfaceTest, CreateAnswerWithOfferToReceiveConstraints) {
constraints.SetMandatoryReceiveVideo(true);
std::unique_ptr<SessionDescriptionInterface> offer;
ASSERT_TRUE(DoCreateOffer(&offer, &constraints));
EXPECT_TRUE(DoSetRemoteDescription(offer.release()));
EXPECT_TRUE(DoSetRemoteDescription(std::move(offer)));
// Now create answer that rejects audio/video.
constraints.SetMandatoryReceiveAudio(false);
@ -3460,12 +3473,12 @@ TEST_F(PeerConnectionInterfaceTest,
pc_->CreateDataChannel("test", nullptr);
std::unique_ptr<SessionDescriptionInterface> offer;
ASSERT_TRUE(DoCreateOffer(&offer, nullptr));
EXPECT_TRUE(DoSetRemoteDescription(offer.release()));
EXPECT_TRUE(DoSetRemoteDescription(std::move(offer)));
// Create and set answer as well.
std::unique_ptr<SessionDescriptionInterface> answer;
ASSERT_TRUE(DoCreateAnswer(&answer, nullptr));
EXPECT_TRUE(DoSetLocalDescription(answer.release()));
EXPECT_TRUE(DoSetLocalDescription(std::move(answer)));
}
TEST_F(PeerConnectionInterfaceTest, SetBitrateWithoutMinSucceeds) {