| Index: webrtc/pc/mediasession_unittest.cc
|
| diff --git a/webrtc/pc/mediasession_unittest.cc b/webrtc/pc/mediasession_unittest.cc
|
| index 6676240b0c4e8b258e5098b1e996d4b5a1559ac9..6837e50fa6bd915a115f6b0ce60b2cc415f85610 100644
|
| --- a/webrtc/pc/mediasession_unittest.cc
|
| +++ b/webrtc/pc/mediasession_unittest.cc
|
| @@ -912,27 +912,27 @@ TEST_F(MediaSessionDescriptionFactoryTest, TestCreateDataAnswer) {
|
| std::unique_ptr<SessionDescription> answer(
|
| f2_.CreateAnswer(offer.get(), opts, NULL));
|
| const ContentInfo* ac = answer->GetContentByName("audio");
|
| - const ContentInfo* vc = answer->GetContentByName("data");
|
| + const ContentInfo* dc = answer->GetContentByName("data");
|
| ASSERT_TRUE(ac != NULL);
|
| - ASSERT_TRUE(vc != NULL);
|
| + ASSERT_TRUE(dc != NULL);
|
| EXPECT_EQ(std::string(NS_JINGLE_RTP), ac->type);
|
| - EXPECT_EQ(std::string(NS_JINGLE_RTP), vc->type);
|
| + EXPECT_EQ(std::string(NS_JINGLE_RTP), dc->type);
|
| const AudioContentDescription* acd =
|
| static_cast<const AudioContentDescription*>(ac->description);
|
| - const DataContentDescription* vcd =
|
| - static_cast<const DataContentDescription*>(vc->description);
|
| + const DataContentDescription* dcd =
|
| + static_cast<const DataContentDescription*>(dc->description);
|
| EXPECT_EQ(MEDIA_TYPE_AUDIO, acd->type());
|
| EXPECT_EQ(MAKE_VECTOR(kAudioCodecsAnswer), acd->codecs());
|
| EXPECT_EQ(kAutoBandwidth, acd->bandwidth()); // negotiated auto bw
|
| EXPECT_NE(0U, acd->first_ssrc()); // a random nonzero ssrc
|
| EXPECT_TRUE(acd->rtcp_mux()); // negotiated rtcp-mux
|
| ASSERT_CRYPTO(acd, 1U, CS_AES_CM_128_HMAC_SHA1_32);
|
| - EXPECT_EQ(MEDIA_TYPE_DATA, vcd->type());
|
| - EXPECT_EQ(MAKE_VECTOR(kDataCodecsAnswer), vcd->codecs());
|
| - EXPECT_NE(0U, vcd->first_ssrc()); // a random nonzero ssrc
|
| - EXPECT_TRUE(vcd->rtcp_mux()); // negotiated rtcp-mux
|
| - ASSERT_CRYPTO(vcd, 1U, CS_AES_CM_128_HMAC_SHA1_80);
|
| - EXPECT_EQ(std::string(cricket::kMediaProtocolSavpf), vcd->protocol());
|
| + EXPECT_EQ(MEDIA_TYPE_DATA, dcd->type());
|
| + EXPECT_EQ(MAKE_VECTOR(kDataCodecsAnswer), dcd->codecs());
|
| + EXPECT_NE(0U, dcd->first_ssrc()); // a random nonzero ssrc
|
| + EXPECT_TRUE(dcd->rtcp_mux()); // negotiated rtcp-mux
|
| + ASSERT_CRYPTO(dcd, 1U, CS_AES_CM_128_HMAC_SHA1_80);
|
| + EXPECT_EQ(std::string(cricket::kMediaProtocolSavpf), dcd->protocol());
|
| }
|
|
|
| TEST_F(MediaSessionDescriptionFactoryTest, TestCreateDataAnswerGcm) {
|
| @@ -946,27 +946,70 @@ TEST_F(MediaSessionDescriptionFactoryTest, TestCreateDataAnswerGcm) {
|
| std::unique_ptr<SessionDescription> answer(
|
| f2_.CreateAnswer(offer.get(), opts, NULL));
|
| const ContentInfo* ac = answer->GetContentByName("audio");
|
| - const ContentInfo* vc = answer->GetContentByName("data");
|
| + const ContentInfo* dc = answer->GetContentByName("data");
|
| ASSERT_TRUE(ac != NULL);
|
| - ASSERT_TRUE(vc != NULL);
|
| + ASSERT_TRUE(dc != NULL);
|
| EXPECT_EQ(std::string(NS_JINGLE_RTP), ac->type);
|
| - EXPECT_EQ(std::string(NS_JINGLE_RTP), vc->type);
|
| + EXPECT_EQ(std::string(NS_JINGLE_RTP), dc->type);
|
| const AudioContentDescription* acd =
|
| static_cast<const AudioContentDescription*>(ac->description);
|
| - const DataContentDescription* vcd =
|
| - static_cast<const DataContentDescription*>(vc->description);
|
| + const DataContentDescription* dcd =
|
| + static_cast<const DataContentDescription*>(dc->description);
|
| EXPECT_EQ(MEDIA_TYPE_AUDIO, acd->type());
|
| EXPECT_EQ(MAKE_VECTOR(kAudioCodecsAnswer), acd->codecs());
|
| EXPECT_EQ(kAutoBandwidth, acd->bandwidth()); // negotiated auto bw
|
| EXPECT_NE(0U, acd->first_ssrc()); // a random nonzero ssrc
|
| EXPECT_TRUE(acd->rtcp_mux()); // negotiated rtcp-mux
|
| ASSERT_CRYPTO(acd, 1U, CS_AEAD_AES_256_GCM);
|
| - EXPECT_EQ(MEDIA_TYPE_DATA, vcd->type());
|
| - EXPECT_EQ(MAKE_VECTOR(kDataCodecsAnswer), vcd->codecs());
|
| - EXPECT_NE(0U, vcd->first_ssrc()); // a random nonzero ssrc
|
| - EXPECT_TRUE(vcd->rtcp_mux()); // negotiated rtcp-mux
|
| - ASSERT_CRYPTO(vcd, 1U, CS_AEAD_AES_256_GCM);
|
| - EXPECT_EQ(std::string(cricket::kMediaProtocolSavpf), vcd->protocol());
|
| + EXPECT_EQ(MEDIA_TYPE_DATA, dcd->type());
|
| + EXPECT_EQ(MAKE_VECTOR(kDataCodecsAnswer), dcd->codecs());
|
| + EXPECT_NE(0U, dcd->first_ssrc()); // a random nonzero ssrc
|
| + EXPECT_TRUE(dcd->rtcp_mux()); // negotiated rtcp-mux
|
| + ASSERT_CRYPTO(dcd, 1U, CS_AEAD_AES_256_GCM);
|
| + EXPECT_EQ(std::string(cricket::kMediaProtocolSavpf), dcd->protocol());
|
| +}
|
| +
|
| +// The use_sctpmap flag should be set in a DataContentDescription by default.
|
| +// The answer's use_sctpmap flag should match the offer's.
|
| +TEST_F(MediaSessionDescriptionFactoryTest, TestCreateDataAnswerUsesSctpmap) {
|
| + MediaSessionOptions opts;
|
| + opts.data_channel_type = cricket::DCT_SCTP;
|
| + std::unique_ptr<SessionDescription> offer(f1_.CreateOffer(opts, NULL));
|
| + ASSERT_TRUE(offer.get() != NULL);
|
| + ContentInfo* dc_offer = offer->GetContentByName("data");
|
| + ASSERT_TRUE(dc_offer != NULL);
|
| + DataContentDescription* dcd_offer =
|
| + static_cast<DataContentDescription*>(dc_offer->description);
|
| + EXPECT_TRUE(dcd_offer->use_sctpmap());
|
| +
|
| + std::unique_ptr<SessionDescription> answer(
|
| + f2_.CreateAnswer(offer.get(), opts, NULL));
|
| + const ContentInfo* dc_answer = answer->GetContentByName("data");
|
| + ASSERT_TRUE(dc_answer != NULL);
|
| + const DataContentDescription* dcd_answer =
|
| + static_cast<const DataContentDescription*>(dc_answer->description);
|
| + EXPECT_TRUE(dcd_answer->use_sctpmap());
|
| +}
|
| +
|
| +// The answer's use_sctpmap flag should match the offer's.
|
| +TEST_F(MediaSessionDescriptionFactoryTest, TestCreateDataAnswerWithoutSctpmap) {
|
| + MediaSessionOptions opts;
|
| + opts.data_channel_type = cricket::DCT_SCTP;
|
| + std::unique_ptr<SessionDescription> offer(f1_.CreateOffer(opts, NULL));
|
| + ASSERT_TRUE(offer.get() != NULL);
|
| + ContentInfo* dc_offer = offer->GetContentByName("data");
|
| + ASSERT_TRUE(dc_offer != NULL);
|
| + DataContentDescription* dcd_offer =
|
| + static_cast<DataContentDescription*>(dc_offer->description);
|
| + dcd_offer->set_use_sctpmap(false);
|
| +
|
| + std::unique_ptr<SessionDescription> answer(
|
| + f2_.CreateAnswer(offer.get(), opts, NULL));
|
| + const ContentInfo* dc_answer = answer->GetContentByName("data");
|
| + ASSERT_TRUE(dc_answer != NULL);
|
| + const DataContentDescription* dcd_answer =
|
| + static_cast<const DataContentDescription*>(dc_answer->description);
|
| + EXPECT_FALSE(dcd_answer->use_sctpmap());
|
| }
|
|
|
| // Verifies that the order of the media contents in the offer is preserved in
|
|
|