Code cleanup: Make JsepSessionDescription::Initialize take std::unique_ptr

Bug: none
Change-Id: I5e03ff6a6f16bd2e67fa4830e218b510b702d1d4
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/132321
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27577}
This commit is contained in:
Harald Alvestrand 2019-04-12 07:01:29 +02:00 committed by Commit Bot
parent 8ad91372cf
commit 4d7160e41d
11 changed files with 79 additions and 63 deletions

View File

@ -44,8 +44,10 @@ class JsepSessionDescription : public SessionDescriptionInterface {
virtual ~JsepSessionDescription();
// Takes ownership of |description|.
// TODO(deadbeef): Make this use an std::unique_ptr<>, so ownership logic is
// more clear.
bool Initialize(std::unique_ptr<cricket::SessionDescription> description,
const std::string& session_id,
const std::string& session_version);
// Backwards compatible version. To be deprecated.
bool Initialize(cricket::SessionDescription* description,
const std::string& session_id,
const std::string& session_version);

View File

@ -150,7 +150,7 @@ std::unique_ptr<SessionDescriptionInterface> CreateSessionDescription(
std::unique_ptr<cricket::SessionDescription> description) {
auto jsep_description = absl::make_unique<JsepSessionDescription>(type);
bool initialize_success = jsep_description->Initialize(
description.release(), session_id, session_version);
std::move(description), session_id, session_version);
RTC_DCHECK(initialize_success);
return std::move(jsep_description);
}
@ -185,7 +185,7 @@ JsepSessionDescription::JsepSessionDescription(
JsepSessionDescription::~JsepSessionDescription() {}
bool JsepSessionDescription::Initialize(
cricket::SessionDescription* description,
std::unique_ptr<cricket::SessionDescription> description,
const std::string& session_id,
const std::string& session_version) {
if (!description)
@ -193,11 +193,18 @@ bool JsepSessionDescription::Initialize(
session_id_ = session_id;
session_version_ = session_version;
description_.reset(description);
description_ = std::move(description);
candidate_collection_.resize(number_of_mediasections());
return true;
}
bool JsepSessionDescription::Initialize(
cricket::SessionDescription* description,
const std::string& session_id,
const std::string& session_version) {
return Initialize(absl::WrapUnique(description), session_id, session_version);
}
bool JsepSessionDescription::AddCandidate(
const IceCandidateInterface* candidate) {
if (!candidate || candidate->sdp_mline_index() < 0)

View File

@ -53,15 +53,14 @@ static const uint32_t kCandidateGeneration = 2;
// This creates a session description with both audio and video media contents.
// In SDP this is described by two m lines, one audio and one video.
static cricket::SessionDescription* CreateCricketSessionDescription() {
cricket::SessionDescription* desc(new cricket::SessionDescription());
// AudioContentDescription
std::unique_ptr<cricket::AudioContentDescription> audio(
new cricket::AudioContentDescription());
static std::unique_ptr<cricket::SessionDescription>
CreateCricketSessionDescription() {
auto desc = absl::make_unique<cricket::SessionDescription>();
// AudioContentDescription
auto audio = absl::make_unique<cricket::AudioContentDescription>();
// VideoContentDescription
std::unique_ptr<cricket::VideoContentDescription> video(
new cricket::VideoContentDescription());
auto video = absl::make_unique<cricket::VideoContentDescription>();
audio->AddCodec(cricket::AudioCodec(103, "ISAC", 16000, 0, 0));
desc->AddContent(cricket::CN_AUDIO, MediaProtocolType::kRtp, audio.release());

View File

@ -2089,13 +2089,13 @@ TEST_F(JsepTransportControllerTest, ChangeTaggedMediaSectionMaxBundle) {
.ok());
std::unique_ptr<cricket::SessionDescription> remote_answer(
local_offer->Copy());
local_offer->Clone());
EXPECT_TRUE(transport_controller_
->SetRemoteDescription(SdpType::kAnswer, remote_answer.get())
.ok());
std::unique_ptr<cricket::SessionDescription> local_reoffer(
local_offer->Copy());
local_offer->Clone());
local_reoffer->contents()[0].rejected = true;
AddVideoSection(local_reoffer.get(), kVideoMid1, kIceUfrag1, kIcePwd1,
cricket::ICEMODE_FULL, cricket::CONNECTIONROLE_ACTPASS,
@ -2110,7 +2110,7 @@ TEST_F(JsepTransportControllerTest, ChangeTaggedMediaSectionMaxBundle) {
.ok());
std::unique_ptr<cricket::SessionDescription> remote_reanswer(
local_reoffer->Copy());
local_reoffer->Clone());
EXPECT_TRUE(
transport_controller_
->SetRemoteDescription(SdpType::kAnswer, remote_reanswer.get())

View File

@ -3191,7 +3191,7 @@ TEST(MediaSessionDescription, CopySessionDescription) {
vcd->AddLegacyStream(2);
source.AddContent(cricket::CN_VIDEO, MediaProtocolType::kRtp, vcd);
std::unique_ptr<SessionDescription> copy(source.Copy());
std::unique_ptr<SessionDescription> copy = source.Clone();
ASSERT_TRUE(copy.get() != NULL);
EXPECT_TRUE(copy->HasGroup(cricket::CN_AUDIO));
const ContentInfo* ac = copy->GetContentByName("audio");

View File

@ -3175,8 +3175,7 @@ TEST_P(PeerConnectionInterfaceTest,
std::unique_ptr<SessionDescriptionInterface> modified_offer =
webrtc::CreateSessionDescription(
webrtc::SdpType::kOffer, offer->session_id(),
offer->session_version(),
absl::WrapUnique(offer->description()->Copy()));
offer->session_version(), offer->description()->Clone());
EXPECT_TRUE(DoSetLocalDescription(std::move(offer)));
auto senders = pc_->GetSenders();

View File

@ -29,7 +29,7 @@ std::unique_ptr<SessionDescriptionInterface> CloneSessionDescriptionAsType(
SdpType type) {
RTC_DCHECK(sdesc);
auto clone = absl::make_unique<JsepSessionDescription>(type);
clone->Initialize(sdesc->description()->Copy(), sdesc->session_id(),
clone->Initialize(sdesc->description()->Clone(), sdesc->session_id(),
sdesc->session_version());
// As of writing, our version of GCC does not allow returning a unique_ptr of
// a subclass as a unique_ptr of a base class. To get around this, we need to

View File

@ -10,9 +10,11 @@
#include "pc/session_description.h"
#include <algorithm>
#include <utility>
#include "absl/algorithm/container.h"
#include "absl/memory/memory.h"
#include "rtc_base/checks.h"
namespace cricket {
@ -94,8 +96,9 @@ SessionDescription::~SessionDescription() {
}
}
SessionDescription* SessionDescription::Copy() const {
SessionDescription* copy = new SessionDescription(*this);
std::unique_ptr<SessionDescription> SessionDescription::Clone() const {
// Copy the non-special portions using the private copy constructor.
auto copy = absl::WrapUnique(new SessionDescription(*this));
// Copy all ContentDescriptions.
for (ContentInfos::iterator content = copy->contents_.begin();
content != copy->contents().end(); ++content) {
@ -104,6 +107,10 @@ SessionDescription* SessionDescription::Copy() const {
return copy;
}
SessionDescription* SessionDescription::Copy() const {
return Clone().release();
}
const ContentInfo* SessionDescription::GetContentByName(
const std::string& name) const {
return FindContentInfoByName(contents_, name);

View File

@ -14,6 +14,7 @@
#include <stddef.h>
#include <stdint.h>
#include <iosfwd>
#include <memory>
#include <string>
#include <vector>
@ -421,6 +422,8 @@ class SessionDescription {
SessionDescription();
~SessionDescription();
std::unique_ptr<SessionDescription> Clone() const;
// Older API - to be deprecated. Still expects caller to take ownership.
SessionDescription* Copy() const;
struct MediaTransportSetting;

View File

@ -998,7 +998,7 @@ bool SdpDeserialize(const std::string& message,
return false;
}
jdesc->Initialize(desc.release(), session_id, session_version);
jdesc->Initialize(std::move(desc), session_id, session_version);
for (const auto& candidate : candidates) {
jdesc->AddCandidate(candidate.get());

View File

@ -10,6 +10,7 @@
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <cstdint>
#include <map>
#include <memory>
@ -1130,7 +1131,7 @@ class WebRtcSdpTest : public ::testing::Test {
new JsepIceCandidate(std::string("audio_content_name"), 0, candidate1));
// Set up JsepSessionDescription.
jdesc_.Initialize(desc_.Copy(), kSessionId, kSessionVersion);
jdesc_.Initialize(desc_.Clone(), kSessionId, kSessionVersion);
std::string mline_id;
int mline_index = 0;
for (size_t i = 0; i < candidates_.size(); ++i) {
@ -1178,7 +1179,7 @@ class WebRtcSdpTest : public ::testing::Test {
group.AddContentName(kVideoContentName);
desc_.AddGroup(group);
ASSERT_TRUE(jdesc_.Initialize(desc_.Copy(), jdesc_.session_id(),
ASSERT_TRUE(jdesc_.Initialize(desc_.Clone(), jdesc_.session_id(),
jdesc_.session_version()));
}
@ -1214,7 +1215,7 @@ class WebRtcSdpTest : public ::testing::Test {
desc_.AddContent(kAudioContentName, MediaProtocolType::kRtp, audio_desc_);
desc_.AddContent(kVideoContentName, MediaProtocolType::kRtp, video_desc_);
ASSERT_TRUE(jdesc_.Initialize(desc_.Copy(), jdesc_.session_id(),
ASSERT_TRUE(jdesc_.Initialize(desc_.Clone(), jdesc_.session_id(),
jdesc_.session_version()));
}
@ -1263,7 +1264,7 @@ class WebRtcSdpTest : public ::testing::Test {
kVideoContentName3, TransportDescription(kUfragVideo3, kPwdVideo3)));
desc_.set_msid_signaling(cricket::kMsidSignalingMediaSection);
ASSERT_TRUE(jdesc_.Initialize(desc_.Copy(), jdesc_.session_id(),
ASSERT_TRUE(jdesc_.Initialize(desc_.Clone(), jdesc_.session_id(),
jdesc_.session_version()));
}
@ -1318,7 +1319,7 @@ class WebRtcSdpTest : public ::testing::Test {
desc_.AddTransportInfo(TransportInfo(
kAudioContentName3, TransportDescription(kUfragVoice3, kPwdVoice3)));
desc_.set_msid_signaling(msid_signaling);
ASSERT_TRUE(jdesc_.Initialize(desc_.Copy(), jdesc_.session_id(),
ASSERT_TRUE(jdesc_.Initialize(desc_.Clone(), jdesc_.session_id(),
jdesc_.session_version()));
}
@ -1340,7 +1341,7 @@ class WebRtcSdpTest : public ::testing::Test {
// Enable signaling a=msid lines.
desc_.set_msid_signaling(cricket::kMsidSignalingMediaSection);
ASSERT_TRUE(jdesc_.Initialize(desc_.Copy(), jdesc_.session_id(),
ASSERT_TRUE(jdesc_.Initialize(desc_.Clone(), jdesc_.session_id(),
jdesc_.session_version()));
}
@ -1724,7 +1725,7 @@ class WebRtcSdpTest : public ::testing::Test {
std::string new_sdp = kSdpFullString;
ReplaceDirection(direction, &new_sdp);
if (!jdesc_.Initialize(desc_.Copy(), jdesc_.session_id(),
if (!jdesc_.Initialize(desc_.Clone(), jdesc_.session_id(),
jdesc_.session_version())) {
return false;
}
@ -1802,7 +1803,7 @@ class WebRtcSdpTest : public ::testing::Test {
audio_desc_->set_direction(direction);
video_desc_->set_direction(direction);
if (!jdesc_.Initialize(desc_.Copy(), jdesc_.session_id(),
if (!jdesc_.Initialize(desc_.Clone(), jdesc_.session_id(),
jdesc_.session_version())) {
return false;
}
@ -1829,7 +1830,7 @@ class WebRtcSdpTest : public ::testing::Test {
SetIceUfragPwd(kVideoContentName, video_rejected ? "" : kUfragVideo,
video_rejected ? "" : kPwdVideo);
JsepSessionDescription jdesc_no_candidates(kDummyType);
if (!jdesc_no_candidates.Initialize(desc_.Copy(), jdesc_.session_id(),
if (!jdesc_no_candidates.Initialize(desc_.Clone(), jdesc_.session_id(),
jdesc_.session_version())) {
return false;
}
@ -1842,7 +1843,7 @@ class WebRtcSdpTest : public ::testing::Test {
bool encrypted) {
AddExtmap(encrypted);
JsepSessionDescription new_jdesc(SdpType::kOffer);
ASSERT_TRUE(new_jdesc.Initialize(desc_.Copy(), jdesc_.session_id(),
ASSERT_TRUE(new_jdesc.Initialize(desc_.Clone(), jdesc_.session_id(),
jdesc_.session_version()));
JsepSessionDescription jdesc_with_extmap(SdpType::kOffer);
std::string sdp_with_extmap = kSdpString;
@ -2035,7 +2036,7 @@ class WebRtcSdpTest : public ::testing::Test {
rtc::SocketAddress video_addr("0.0.0.0", 9);
audio_desc_->set_connection_address(audio_addr);
video_desc_->set_connection_address(video_addr);
ASSERT_TRUE(jdesc->Initialize(desc_.Copy(), kSessionId, kSessionVersion));
ASSERT_TRUE(jdesc->Initialize(desc_.Clone(), kSessionId, kSessionVersion));
}
protected:
@ -2119,7 +2120,7 @@ TEST_F(WebRtcSdpTest, SerializeSessionDescriptionWithBundle) {
group.AddContentName(kAudioContentName);
group.AddContentName(kVideoContentName);
desc_.AddGroup(group);
ASSERT_TRUE(jdesc_.Initialize(desc_.Copy(), jdesc_.session_id(),
ASSERT_TRUE(jdesc_.Initialize(desc_.Clone(), jdesc_.session_id(),
jdesc_.session_version()));
std::string message = webrtc::SdpSerialize(jdesc_);
std::string sdp_with_bundle = kSdpFullString;
@ -2134,7 +2135,7 @@ TEST_F(WebRtcSdpTest, SerializeSessionDescriptionWithBandwidth) {
vcd->set_bandwidth(100 * 1000);
AudioContentDescription* acd = GetFirstAudioContentDescription(&desc_);
acd->set_bandwidth(50 * 1000);
ASSERT_TRUE(jdesc_.Initialize(desc_.Copy(), jdesc_.session_id(),
ASSERT_TRUE(jdesc_.Initialize(desc_.Clone(), jdesc_.session_id(),
jdesc_.session_version()));
std::string message = webrtc::SdpSerialize(jdesc_);
std::string sdp_with_bandwidth = kSdpFullString;
@ -2154,7 +2155,7 @@ TEST_F(WebRtcSdpTest, SerializeSessionDescriptionWithIceOptions) {
transport_options.push_back(kIceOption2);
transport_options.push_back(kIceOption3);
AddIceOptions(kVideoContentName, transport_options);
ASSERT_TRUE(jdesc_.Initialize(desc_.Copy(), jdesc_.session_id(),
ASSERT_TRUE(jdesc_.Initialize(desc_.Clone(), jdesc_.session_id(),
jdesc_.session_version()));
std::string message = webrtc::SdpSerialize(jdesc_);
std::string sdp_with_ice_options = kSdpFullString;
@ -2295,7 +2296,7 @@ TEST_F(WebRtcSdpTest, SerializeSessionDescriptionWithExtmapEncrypted) {
AddExtmap(encrypted);
JsepSessionDescription desc_with_extmap(kDummyType);
ASSERT_TRUE(
desc_with_extmap.Initialize(desc_.Copy(), kSessionId, kSessionVersion));
desc_with_extmap.Initialize(desc_.Clone(), kSessionId, kSessionVersion));
TestSerialize(desc_with_extmap);
}
@ -2356,7 +2357,7 @@ TEST_F(WebRtcSdpTest, SerializeSessionDescriptionWithH264) {
h264_codec.SetParam("packetization-mode", "1");
video_desc_->AddCodec(h264_codec);
jdesc_.Initialize(desc_.Copy(), kSessionId, kSessionVersion);
jdesc_.Initialize(desc_.Clone(), kSessionId, kSessionVersion);
std::string message = webrtc::SdpSerialize(jdesc_);
size_t after_pt = message.find(" H264/90000");
@ -2414,7 +2415,7 @@ TEST_F(WebRtcSdpTest, DeserializeSessionDescriptionWithoutCarriageReturn) {
TEST_F(WebRtcSdpTest, DeserializeSessionDescriptionWithoutCandidates) {
// SessionDescription with desc but without candidates.
JsepSessionDescription jdesc_no_candidates(kDummyType);
ASSERT_TRUE(jdesc_no_candidates.Initialize(desc_.Copy(), kSessionId,
ASSERT_TRUE(jdesc_no_candidates.Initialize(desc_.Clone(), kSessionId,
kSessionVersion));
JsepSessionDescription new_jdesc(kDummyType);
EXPECT_TRUE(SdpDeserialize(kSdpString, &new_jdesc));
@ -2481,7 +2482,7 @@ TEST_F(WebRtcSdpTest, DeserializeJsepSessionDescriptionWithFingerprint) {
// Add a DTLS a=fingerprint attribute to our session description.
AddFingerprint();
JsepSessionDescription new_jdesc(kDummyType);
ASSERT_TRUE(new_jdesc.Initialize(desc_.Copy(), jdesc_.session_id(),
ASSERT_TRUE(new_jdesc.Initialize(desc_.Clone(), jdesc_.session_id(),
jdesc_.session_version()));
JsepSessionDescription jdesc_with_fingerprint(kDummyType);
@ -2503,7 +2504,7 @@ TEST_F(WebRtcSdpTest, DeserializeSessionDescriptionWithBundle) {
group.AddContentName(kAudioContentName);
group.AddContentName(kVideoContentName);
desc_.AddGroup(group);
ASSERT_TRUE(jdesc_.Initialize(desc_.Copy(), jdesc_.session_id(),
ASSERT_TRUE(jdesc_.Initialize(desc_.Clone(), jdesc_.session_id(),
jdesc_.session_version()));
EXPECT_TRUE(CompareSessionDescription(jdesc_, jdesc_with_bundle));
}
@ -2520,7 +2521,7 @@ TEST_F(WebRtcSdpTest, DeserializeSessionDescriptionWithBandwidth) {
vcd->set_bandwidth(100 * 1000);
AudioContentDescription* acd = GetFirstAudioContentDescription(&desc_);
acd->set_bandwidth(50 * 1000);
ASSERT_TRUE(jdesc_.Initialize(desc_.Copy(), jdesc_.session_id(),
ASSERT_TRUE(jdesc_.Initialize(desc_.Clone(), jdesc_.session_id(),
jdesc_.session_version()));
EXPECT_TRUE(CompareSessionDescription(jdesc_, jdesc_with_bandwidth));
}
@ -2543,7 +2544,7 @@ TEST_F(WebRtcSdpTest, DeserializeSessionDescriptionWithIceOptions) {
transport_options.push_back(kIceOption3);
transport_options.push_back(kIceOption2);
AddIceOptions(kVideoContentName, transport_options);
ASSERT_TRUE(jdesc_.Initialize(desc_.Copy(), jdesc_.session_id(),
ASSERT_TRUE(jdesc_.Initialize(desc_.Clone(), jdesc_.session_id(),
jdesc_.session_version()));
EXPECT_TRUE(CompareSessionDescription(jdesc_, jdesc_with_ice_options));
}
@ -2771,7 +2772,7 @@ TEST_F(WebRtcSdpTest, DeserializeInvalidCandidiate) {
TEST_F(WebRtcSdpTest, DeserializeSdpWithRtpDataChannels) {
AddRtpDataChannel();
JsepSessionDescription jdesc(kDummyType);
ASSERT_TRUE(jdesc.Initialize(desc_.Copy(), kSessionId, kSessionVersion));
ASSERT_TRUE(jdesc.Initialize(desc_.Clone(), kSessionId, kSessionVersion));
std::string sdp_with_data = kSdpString;
sdp_with_data.append(kSdpRtpDataChannelString);
@ -2787,7 +2788,7 @@ TEST_F(WebRtcSdpTest, DeserializeSdpWithSctpDataChannels) {
bool use_sctpmap = true;
AddSctpDataChannel(use_sctpmap);
JsepSessionDescription jdesc(kDummyType);
ASSERT_TRUE(jdesc.Initialize(desc_.Copy(), kSessionId, kSessionVersion));
ASSERT_TRUE(jdesc.Initialize(desc_.Clone(), kSessionId, kSessionVersion));
std::string sdp_with_data = kSdpString;
sdp_with_data.append(kSdpSctpDataChannelString);
@ -2814,7 +2815,7 @@ TEST_F(WebRtcSdpTest, DeserializeSdpWithSctpDataChannelsWithSctpPort) {
bool use_sctpmap = false;
AddSctpDataChannel(use_sctpmap);
JsepSessionDescription jdesc(kDummyType);
ASSERT_TRUE(jdesc.Initialize(desc_.Copy(), kSessionId, kSessionVersion));
ASSERT_TRUE(jdesc.Initialize(desc_.Clone(), kSessionId, kSessionVersion));
std::string sdp_with_data = kSdpString;
sdp_with_data.append(kSdpSctpDataChannelStringWithSctpPort);
@ -2841,7 +2842,7 @@ TEST_F(WebRtcSdpTest, DeserializeSdpWithSctpDataChannelsWithSctpColonPort) {
bool use_sctpmap = false;
AddSctpDataChannel(use_sctpmap);
JsepSessionDescription jdesc(kDummyType);
ASSERT_TRUE(jdesc.Initialize(desc_.Copy(), kSessionId, kSessionVersion));
ASSERT_TRUE(jdesc.Initialize(desc_.Clone(), kSessionId, kSessionVersion));
std::string sdp_with_data = kSdpString;
sdp_with_data.append(kSdpSctpDataChannelStringWithSctpColonPort);
@ -2912,7 +2913,7 @@ TEST_F(WebRtcSdpTest, DeserializeSdpWithMultiSctpPort) {
bool use_sctpmap = true;
AddSctpDataChannel(use_sctpmap);
JsepSessionDescription jdesc(kDummyType);
ASSERT_TRUE(jdesc.Initialize(desc_.Copy(), kSessionId, kSessionVersion));
ASSERT_TRUE(jdesc.Initialize(desc_.Clone(), kSessionId, kSessionVersion));
std::string sdp_with_data = kSdpString;
// Append m= attributes
@ -2939,7 +2940,7 @@ TEST_F(WebRtcSdpTest, DeserializeSdpWithCorruptedSctpDataChannels) {
void MutateJsepSctpPort(JsepSessionDescription* jdesc,
const SessionDescription& desc) {
// take our pre-built session description and change the SCTP port.
cricket::SessionDescription* mutant = desc.Copy();
std::unique_ptr<cricket::SessionDescription> mutant = desc.Clone();
DataContentDescription* dcdesc =
mutant->GetContentDescriptionByName(kDataContentName)->as_data();
std::vector<cricket::DataCodec> codecs(dcdesc->codecs());
@ -2948,9 +2949,8 @@ void MutateJsepSctpPort(JsepSessionDescription* jdesc,
codecs[0].SetParam(cricket::kCodecParamPort, kUnusualSctpPort);
dcdesc->set_codecs(codecs);
// note: mutant's owned by jdesc now.
ASSERT_TRUE(jdesc->Initialize(mutant, kSessionId, kSessionVersion));
mutant = NULL;
ASSERT_TRUE(
jdesc->Initialize(std::move(mutant), kSessionId, kSessionVersion));
}
TEST_F(WebRtcSdpTest, DeserializeSdpWithSctpDataChannelAndUnusualPort) {
@ -3017,7 +3017,7 @@ TEST_F(WebRtcSdpTest, DeserializeSdpWithSctpDataChannelsAndBandwidth) {
JsepSessionDescription jdesc(kDummyType);
DataContentDescription* dcd = GetFirstDataContentDescription(&desc_);
dcd->set_bandwidth(100 * 1000);
ASSERT_TRUE(jdesc.Initialize(desc_.Copy(), kSessionId, kSessionVersion));
ASSERT_TRUE(jdesc.Initialize(desc_.Clone(), kSessionId, kSessionVersion));
std::string sdp_with_bandwidth = kSdpString;
sdp_with_bandwidth.append(kSdpSctpDataChannelString);
@ -3374,7 +3374,7 @@ TEST_F(WebRtcSdpTest, SerializeAudioFmtpWithUnknownParameter) {
codecs[0].params["unknown-future-parameter"] = "SomeFutureValue";
acd->set_codecs(codecs);
ASSERT_TRUE(jdesc_.Initialize(desc_.Copy(), jdesc_.session_id(),
ASSERT_TRUE(jdesc_.Initialize(desc_.Clone(), jdesc_.session_id(),
jdesc_.session_version()));
std::string message = webrtc::SdpSerialize(jdesc_);
std::string sdp_with_fmtp = kSdpFullString;
@ -3391,7 +3391,7 @@ TEST_F(WebRtcSdpTest, SerializeAudioFmtpWithKnownFmtpParameter) {
codecs[0].params["stereo"] = "1";
acd->set_codecs(codecs);
ASSERT_TRUE(jdesc_.Initialize(desc_.Copy(), jdesc_.session_id(),
ASSERT_TRUE(jdesc_.Initialize(desc_.Clone(), jdesc_.session_id(),
jdesc_.session_version()));
std::string message = webrtc::SdpSerialize(jdesc_);
std::string sdp_with_fmtp = kSdpFullString;
@ -3408,7 +3408,7 @@ TEST_F(WebRtcSdpTest, SerializeAudioFmtpWithPTimeAndMaxPTime) {
codecs[0].params["maxptime"] = "120";
acd->set_codecs(codecs);
ASSERT_TRUE(jdesc_.Initialize(desc_.Copy(), jdesc_.session_id(),
ASSERT_TRUE(jdesc_.Initialize(desc_.Clone(), jdesc_.session_id(),
jdesc_.session_version()));
std::string message = webrtc::SdpSerialize(jdesc_);
std::string sdp_with_fmtp = kSdpFullString;
@ -3426,7 +3426,7 @@ TEST_F(WebRtcSdpTest, SerializeVideoFmtp) {
codecs[0].params["x-google-min-bitrate"] = "10";
vcd->set_codecs(codecs);
ASSERT_TRUE(jdesc_.Initialize(desc_.Copy(), jdesc_.session_id(),
ASSERT_TRUE(jdesc_.Initialize(desc_.Clone(), jdesc_.session_id(),
jdesc_.session_version()));
std::string message = webrtc::SdpSerialize(jdesc_);
std::string sdp_with_fmtp = kSdpFullString;
@ -3497,7 +3497,7 @@ TEST_F(WebRtcSdpTest, SerializeDtlsSetupAttribute) {
desc_.AddTransportInfo(audio_transport_info);
desc_.AddTransportInfo(video_transport_info);
ASSERT_TRUE(jdesc_.Initialize(desc_.Copy(), jdesc_.session_id(),
ASSERT_TRUE(jdesc_.Initialize(desc_.Clone(), jdesc_.session_id(),
jdesc_.session_version()));
std::string message = webrtc::SdpSerialize(jdesc_);
std::string sdp_with_dtlssetup = kSdpFullString;
@ -4098,7 +4098,7 @@ TEST_F(WebRtcSdpTest, SerializeAndDeserializeWithHostnameConnectionAddress) {
audio_desc_->set_connection_address(hostname_addr);
video_desc_->set_connection_address(hostname_addr);
ASSERT_TRUE(
expected_jsep.Initialize(desc_.Copy(), kSessionId, kSessionVersion));
expected_jsep.Initialize(desc_.Clone(), kSessionId, kSessionVersion));
// Serialization.
std::string message = webrtc::SdpSerialize(expected_jsep);
// Deserialization.
@ -4464,11 +4464,11 @@ TEST_F(WebRtcSdpTest, ParseMediaTransportIgnoreNonsenseAttributeLines) {
}
TEST_F(WebRtcSdpTest, SerializeMediaTransportSettings) {
cricket::SessionDescription* description = new cricket::SessionDescription();
auto description = absl::make_unique<cricket::SessionDescription>();
JsepSessionDescription output(SdpType::kOffer);
// JsepSessionDescription takes ownership of the description.
output.Initialize(description, "session_id", "session_version");
output.Initialize(std::move(description), "session_id", "session_version");
output.description()->AddMediaTransportSetting("foo", "bar");
std::string serialized_out;
output.ToString(&serialized_out);
@ -4478,8 +4478,7 @@ TEST_F(WebRtcSdpTest, SerializeMediaTransportSettings) {
TEST_F(WebRtcSdpTest, SerializeMediaTransportSettingsTestCopy) {
cricket::SessionDescription description;
description.AddMediaTransportSetting("name", "setting");
std::unique_ptr<cricket::SessionDescription> copy =
absl::WrapUnique(description.Copy());
std::unique_ptr<cricket::SessionDescription> copy = description.Clone();
ASSERT_EQ(1u, copy->MediaTransportSettings().size());
EXPECT_EQ("name", copy->MediaTransportSettings()[0].transport_name);
EXPECT_EQ("setting", copy->MediaTransportSettings()[0].transport_setting);