/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this file, * You can obtain one at http://mozilla.org/MPL/2.0/. */ #include #include "MockJsepCodecPreferences.h" #include "PeerConnectionImpl.h" #include "api/rtp_parameters.h" #include "gtest/gtest.h" namespace mozilla { static std::strong_ordering RtpExtensionHeaderUriComparator( const PeerConnectionImpl::RtpExtensionHeader& aHeader, const char* aUri) { return aHeader.extensionname <=> nsDependentCString(aUri); } static const PeerConnectionImpl::RtpExtensionHeader* FindExtension( const nsTArray& aHeaders, const char* aUri) { auto idx = aHeaders.IndexOf(aUri, 0, &RtpExtensionHeaderUriComparator); if (idx == aHeaders.NoIndex) { return nullptr; } return &aHeaders[idx]; } TEST(PeerConnectionImplTest, GetDefaultRtpExtensionsTransportCCBoth) { MockJsepCodecPreferences prefs; prefs.mUseTransportCC = true; prefs.mUseAudioTransportCC = true; AutoTArray headers; PeerConnectionImpl::GetDefaultRtpExtensions(prefs, &headers); const auto* ext = FindExtension(headers, webrtc::RtpExtension::kTransportSequenceNumberUri); ASSERT_NE(nullptr, ext); EXPECT_EQ(JsepMediaType::kAudioVideo, ext->mMediaType); } TEST(PeerConnectionImplTest, GetDefaultRtpExtensionsTransportCCVideoOnly) { MockJsepCodecPreferences prefs; prefs.mUseTransportCC = true; prefs.mUseAudioTransportCC = false; AutoTArray headers; PeerConnectionImpl::GetDefaultRtpExtensions(prefs, &headers); const auto* ext = FindExtension(headers, webrtc::RtpExtension::kTransportSequenceNumberUri); ASSERT_NE(nullptr, ext); EXPECT_EQ(JsepMediaType::kVideo, ext->mMediaType); } TEST(PeerConnectionImplTest, GetDefaultRtpExtensionsTransportCCAudioOnly) { MockJsepCodecPreferences prefs; prefs.mUseTransportCC = false; prefs.mUseAudioTransportCC = true; AutoTArray headers; PeerConnectionImpl::GetDefaultRtpExtensions(prefs, &headers); const auto* ext = FindExtension(headers, webrtc::RtpExtension::kTransportSequenceNumberUri); ASSERT_NE(nullptr, ext); EXPECT_EQ(JsepMediaType::kAudio, ext->mMediaType); } TEST(PeerConnectionImplTest, GetDefaultRtpExtensionsTransportCCNeither) { MockJsepCodecPreferences prefs; prefs.mUseTransportCC = false; prefs.mUseAudioTransportCC = false; AutoTArray headers; PeerConnectionImpl::GetDefaultRtpExtensions(prefs, &headers); EXPECT_EQ(nullptr, FindExtension(headers, webrtc::RtpExtension::kTransportSequenceNumberUri)); } } // namespace mozilla