xref: /aosp_15_r20/external/webrtc/api/rtp_parameters_unittest.cc (revision d9f758449e529ab9291ac668be2861e7a55c2422)
1*d9f75844SAndroid Build Coastguard Worker /*
2*d9f75844SAndroid Build Coastguard Worker  *  Copyright (c) 2017 The WebRTC project authors. All Rights Reserved.
3*d9f75844SAndroid Build Coastguard Worker  *
4*d9f75844SAndroid Build Coastguard Worker  *  Use of this source code is governed by a BSD-style license
5*d9f75844SAndroid Build Coastguard Worker  *  that can be found in the LICENSE file in the root of the source
6*d9f75844SAndroid Build Coastguard Worker  *  tree. An additional intellectual property rights grant can be found
7*d9f75844SAndroid Build Coastguard Worker  *  in the file PATENTS.  All contributing project authors may
8*d9f75844SAndroid Build Coastguard Worker  *  be found in the AUTHORS file in the root of the source tree.
9*d9f75844SAndroid Build Coastguard Worker  */
10*d9f75844SAndroid Build Coastguard Worker 
11*d9f75844SAndroid Build Coastguard Worker #include "api/rtp_parameters.h"
12*d9f75844SAndroid Build Coastguard Worker 
13*d9f75844SAndroid Build Coastguard Worker #include "test/gtest.h"
14*d9f75844SAndroid Build Coastguard Worker 
15*d9f75844SAndroid Build Coastguard Worker namespace webrtc {
16*d9f75844SAndroid Build Coastguard Worker 
17*d9f75844SAndroid Build Coastguard Worker using webrtc::RtpExtension;
18*d9f75844SAndroid Build Coastguard Worker 
19*d9f75844SAndroid Build Coastguard Worker static const char kExtensionUri1[] = "extension-uri1";
20*d9f75844SAndroid Build Coastguard Worker static const char kExtensionUri2[] = "extension-uri2";
21*d9f75844SAndroid Build Coastguard Worker 
22*d9f75844SAndroid Build Coastguard Worker static const RtpExtension kExtension1(kExtensionUri1, 1);
23*d9f75844SAndroid Build Coastguard Worker static const RtpExtension kExtension1Encrypted(kExtensionUri1, 10, true);
24*d9f75844SAndroid Build Coastguard Worker static const RtpExtension kExtension2(kExtensionUri2, 2);
25*d9f75844SAndroid Build Coastguard Worker 
TEST(RtpExtensionTest,DeduplicateHeaderExtensions)26*d9f75844SAndroid Build Coastguard Worker TEST(RtpExtensionTest, DeduplicateHeaderExtensions) {
27*d9f75844SAndroid Build Coastguard Worker   std::vector<RtpExtension> extensions;
28*d9f75844SAndroid Build Coastguard Worker   std::vector<RtpExtension> filtered;
29*d9f75844SAndroid Build Coastguard Worker 
30*d9f75844SAndroid Build Coastguard Worker   extensions.clear();
31*d9f75844SAndroid Build Coastguard Worker   extensions.push_back(kExtension1);
32*d9f75844SAndroid Build Coastguard Worker   extensions.push_back(kExtension1Encrypted);
33*d9f75844SAndroid Build Coastguard Worker   filtered = RtpExtension::DeduplicateHeaderExtensions(
34*d9f75844SAndroid Build Coastguard Worker       extensions, RtpExtension::Filter::kDiscardEncryptedExtension);
35*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(1u, filtered.size());
36*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(std::vector<RtpExtension>{kExtension1}, filtered);
37*d9f75844SAndroid Build Coastguard Worker 
38*d9f75844SAndroid Build Coastguard Worker   extensions.clear();
39*d9f75844SAndroid Build Coastguard Worker   extensions.push_back(kExtension1);
40*d9f75844SAndroid Build Coastguard Worker   extensions.push_back(kExtension1Encrypted);
41*d9f75844SAndroid Build Coastguard Worker   filtered = RtpExtension::DeduplicateHeaderExtensions(
42*d9f75844SAndroid Build Coastguard Worker       extensions, RtpExtension::Filter::kPreferEncryptedExtension);
43*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(1u, filtered.size());
44*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(std::vector<RtpExtension>{kExtension1Encrypted}, filtered);
45*d9f75844SAndroid Build Coastguard Worker 
46*d9f75844SAndroid Build Coastguard Worker   extensions.clear();
47*d9f75844SAndroid Build Coastguard Worker   extensions.push_back(kExtension1);
48*d9f75844SAndroid Build Coastguard Worker   extensions.push_back(kExtension1Encrypted);
49*d9f75844SAndroid Build Coastguard Worker   filtered = RtpExtension::DeduplicateHeaderExtensions(
50*d9f75844SAndroid Build Coastguard Worker       extensions, RtpExtension::Filter::kRequireEncryptedExtension);
51*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(1u, filtered.size());
52*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(std::vector<RtpExtension>{kExtension1Encrypted}, filtered);
53*d9f75844SAndroid Build Coastguard Worker 
54*d9f75844SAndroid Build Coastguard Worker   extensions.clear();
55*d9f75844SAndroid Build Coastguard Worker   extensions.push_back(kExtension1Encrypted);
56*d9f75844SAndroid Build Coastguard Worker   extensions.push_back(kExtension1);
57*d9f75844SAndroid Build Coastguard Worker   filtered = RtpExtension::DeduplicateHeaderExtensions(
58*d9f75844SAndroid Build Coastguard Worker       extensions, RtpExtension::Filter::kDiscardEncryptedExtension);
59*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(1u, filtered.size());
60*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(std::vector<RtpExtension>{kExtension1}, filtered);
61*d9f75844SAndroid Build Coastguard Worker 
62*d9f75844SAndroid Build Coastguard Worker   extensions.clear();
63*d9f75844SAndroid Build Coastguard Worker   extensions.push_back(kExtension1Encrypted);
64*d9f75844SAndroid Build Coastguard Worker   extensions.push_back(kExtension1);
65*d9f75844SAndroid Build Coastguard Worker   filtered = RtpExtension::DeduplicateHeaderExtensions(
66*d9f75844SAndroid Build Coastguard Worker       extensions, RtpExtension::Filter::kPreferEncryptedExtension);
67*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(1u, filtered.size());
68*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(std::vector<RtpExtension>{kExtension1Encrypted}, filtered);
69*d9f75844SAndroid Build Coastguard Worker 
70*d9f75844SAndroid Build Coastguard Worker   extensions.clear();
71*d9f75844SAndroid Build Coastguard Worker   extensions.push_back(kExtension1Encrypted);
72*d9f75844SAndroid Build Coastguard Worker   extensions.push_back(kExtension1);
73*d9f75844SAndroid Build Coastguard Worker   filtered = RtpExtension::DeduplicateHeaderExtensions(
74*d9f75844SAndroid Build Coastguard Worker       extensions, RtpExtension::Filter::kRequireEncryptedExtension);
75*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(1u, filtered.size());
76*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(std::vector<RtpExtension>{kExtension1Encrypted}, filtered);
77*d9f75844SAndroid Build Coastguard Worker 
78*d9f75844SAndroid Build Coastguard Worker   extensions.clear();
79*d9f75844SAndroid Build Coastguard Worker   extensions.push_back(kExtension1);
80*d9f75844SAndroid Build Coastguard Worker   extensions.push_back(kExtension2);
81*d9f75844SAndroid Build Coastguard Worker   filtered = RtpExtension::DeduplicateHeaderExtensions(
82*d9f75844SAndroid Build Coastguard Worker       extensions, RtpExtension::Filter::kDiscardEncryptedExtension);
83*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(2u, filtered.size());
84*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(extensions, filtered);
85*d9f75844SAndroid Build Coastguard Worker   filtered = RtpExtension::DeduplicateHeaderExtensions(
86*d9f75844SAndroid Build Coastguard Worker       extensions, RtpExtension::Filter::kPreferEncryptedExtension);
87*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(2u, filtered.size());
88*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(extensions, filtered);
89*d9f75844SAndroid Build Coastguard Worker   filtered = RtpExtension::DeduplicateHeaderExtensions(
90*d9f75844SAndroid Build Coastguard Worker       extensions, RtpExtension::Filter::kRequireEncryptedExtension);
91*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(0u, filtered.size());
92*d9f75844SAndroid Build Coastguard Worker 
93*d9f75844SAndroid Build Coastguard Worker   extensions.clear();
94*d9f75844SAndroid Build Coastguard Worker   extensions.push_back(kExtension1);
95*d9f75844SAndroid Build Coastguard Worker   extensions.push_back(kExtension2);
96*d9f75844SAndroid Build Coastguard Worker   extensions.push_back(kExtension1Encrypted);
97*d9f75844SAndroid Build Coastguard Worker   filtered = RtpExtension::DeduplicateHeaderExtensions(
98*d9f75844SAndroid Build Coastguard Worker       extensions, RtpExtension::Filter::kDiscardEncryptedExtension);
99*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(2u, filtered.size());
100*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ((std::vector<RtpExtension>{kExtension1, kExtension2}), filtered);
101*d9f75844SAndroid Build Coastguard Worker   filtered = RtpExtension::DeduplicateHeaderExtensions(
102*d9f75844SAndroid Build Coastguard Worker       extensions, RtpExtension::Filter::kPreferEncryptedExtension);
103*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(2u, filtered.size());
104*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ((std::vector<RtpExtension>{kExtension1Encrypted, kExtension2}),
105*d9f75844SAndroid Build Coastguard Worker             filtered);
106*d9f75844SAndroid Build Coastguard Worker   filtered = RtpExtension::DeduplicateHeaderExtensions(
107*d9f75844SAndroid Build Coastguard Worker       extensions, RtpExtension::Filter::kRequireEncryptedExtension);
108*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(1u, filtered.size());
109*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ((std::vector<RtpExtension>{kExtension1Encrypted}), filtered);
110*d9f75844SAndroid Build Coastguard Worker }
111*d9f75844SAndroid Build Coastguard Worker 
112*d9f75844SAndroid Build Coastguard Worker // Test that the filtered vector is sorted so that for a given unsorted array of
113*d9f75844SAndroid Build Coastguard Worker // extensions, the filtered vector will always be laied out the same (for easy
114*d9f75844SAndroid Build Coastguard Worker // comparison).
TEST(RtpExtensionTest,DeduplicateHeaderExtensionsSorted)115*d9f75844SAndroid Build Coastguard Worker TEST(RtpExtensionTest, DeduplicateHeaderExtensionsSorted) {
116*d9f75844SAndroid Build Coastguard Worker   const std::vector<RtpExtension> extensions = {
117*d9f75844SAndroid Build Coastguard Worker       RtpExtension("cde1", 11, false), RtpExtension("cde2", 12, true),
118*d9f75844SAndroid Build Coastguard Worker       RtpExtension("abc1", 3, false),  RtpExtension("abc2", 4, true),
119*d9f75844SAndroid Build Coastguard Worker       RtpExtension("cde3", 9, true),   RtpExtension("cde4", 10, false),
120*d9f75844SAndroid Build Coastguard Worker       RtpExtension("abc3", 1, true),   RtpExtension("abc4", 2, false),
121*d9f75844SAndroid Build Coastguard Worker       RtpExtension("bcd3", 7, false),  RtpExtension("bcd1", 8, true),
122*d9f75844SAndroid Build Coastguard Worker       RtpExtension("bcd2", 5, true),   RtpExtension("bcd4", 6, false),
123*d9f75844SAndroid Build Coastguard Worker   };
124*d9f75844SAndroid Build Coastguard Worker 
125*d9f75844SAndroid Build Coastguard Worker   auto encrypted = RtpExtension::DeduplicateHeaderExtensions(
126*d9f75844SAndroid Build Coastguard Worker       extensions, RtpExtension::Filter::kRequireEncryptedExtension);
127*d9f75844SAndroid Build Coastguard Worker 
128*d9f75844SAndroid Build Coastguard Worker   const std::vector<RtpExtension> expected_sorted_encrypted = {
129*d9f75844SAndroid Build Coastguard Worker       RtpExtension("abc2", 4, true),  RtpExtension("abc3", 1, true),
130*d9f75844SAndroid Build Coastguard Worker       RtpExtension("bcd1", 8, true),  RtpExtension("bcd2", 5, true),
131*d9f75844SAndroid Build Coastguard Worker       RtpExtension("cde2", 12, true), RtpExtension("cde3", 9, true)};
132*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(expected_sorted_encrypted, encrypted);
133*d9f75844SAndroid Build Coastguard Worker 
134*d9f75844SAndroid Build Coastguard Worker   auto unencypted = RtpExtension::DeduplicateHeaderExtensions(
135*d9f75844SAndroid Build Coastguard Worker       extensions, RtpExtension::Filter::kDiscardEncryptedExtension);
136*d9f75844SAndroid Build Coastguard Worker 
137*d9f75844SAndroid Build Coastguard Worker   const std::vector<RtpExtension> expected_sorted_unencrypted = {
138*d9f75844SAndroid Build Coastguard Worker       RtpExtension("abc1", 3, false),  RtpExtension("abc4", 2, false),
139*d9f75844SAndroid Build Coastguard Worker       RtpExtension("bcd3", 7, false),  RtpExtension("bcd4", 6, false),
140*d9f75844SAndroid Build Coastguard Worker       RtpExtension("cde1", 11, false), RtpExtension("cde4", 10, false)};
141*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(expected_sorted_unencrypted, unencypted);
142*d9f75844SAndroid Build Coastguard Worker }
143*d9f75844SAndroid Build Coastguard Worker 
TEST(RtpExtensionTest,FindHeaderExtensionByUriAndEncryption)144*d9f75844SAndroid Build Coastguard Worker TEST(RtpExtensionTest, FindHeaderExtensionByUriAndEncryption) {
145*d9f75844SAndroid Build Coastguard Worker   std::vector<RtpExtension> extensions;
146*d9f75844SAndroid Build Coastguard Worker 
147*d9f75844SAndroid Build Coastguard Worker   extensions.clear();
148*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(nullptr, RtpExtension::FindHeaderExtensionByUriAndEncryption(
149*d9f75844SAndroid Build Coastguard Worker                          extensions, kExtensionUri1, false));
150*d9f75844SAndroid Build Coastguard Worker 
151*d9f75844SAndroid Build Coastguard Worker   extensions.clear();
152*d9f75844SAndroid Build Coastguard Worker   extensions.push_back(kExtension1);
153*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(kExtension1, *RtpExtension::FindHeaderExtensionByUriAndEncryption(
154*d9f75844SAndroid Build Coastguard Worker                              extensions, kExtensionUri1, false));
155*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(nullptr, RtpExtension::FindHeaderExtensionByUriAndEncryption(
156*d9f75844SAndroid Build Coastguard Worker                          extensions, kExtensionUri1, true));
157*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(nullptr, RtpExtension::FindHeaderExtensionByUriAndEncryption(
158*d9f75844SAndroid Build Coastguard Worker                          extensions, kExtensionUri2, false));
159*d9f75844SAndroid Build Coastguard Worker 
160*d9f75844SAndroid Build Coastguard Worker   extensions.clear();
161*d9f75844SAndroid Build Coastguard Worker   extensions.push_back(kExtension1);
162*d9f75844SAndroid Build Coastguard Worker   extensions.push_back(kExtension2);
163*d9f75844SAndroid Build Coastguard Worker   extensions.push_back(kExtension1Encrypted);
164*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(kExtension1, *RtpExtension::FindHeaderExtensionByUriAndEncryption(
165*d9f75844SAndroid Build Coastguard Worker                              extensions, kExtensionUri1, false));
166*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(kExtension2, *RtpExtension::FindHeaderExtensionByUriAndEncryption(
167*d9f75844SAndroid Build Coastguard Worker                              extensions, kExtensionUri2, false));
168*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(kExtension1Encrypted,
169*d9f75844SAndroid Build Coastguard Worker             *RtpExtension::FindHeaderExtensionByUriAndEncryption(
170*d9f75844SAndroid Build Coastguard Worker                 extensions, kExtensionUri1, true));
171*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(nullptr, RtpExtension::FindHeaderExtensionByUriAndEncryption(
172*d9f75844SAndroid Build Coastguard Worker                          extensions, kExtensionUri2, true));
173*d9f75844SAndroid Build Coastguard Worker }
174*d9f75844SAndroid Build Coastguard Worker 
TEST(RtpExtensionTest,FindHeaderExtensionByUri)175*d9f75844SAndroid Build Coastguard Worker TEST(RtpExtensionTest, FindHeaderExtensionByUri) {
176*d9f75844SAndroid Build Coastguard Worker   std::vector<RtpExtension> extensions;
177*d9f75844SAndroid Build Coastguard Worker 
178*d9f75844SAndroid Build Coastguard Worker   extensions.clear();
179*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(nullptr, RtpExtension::FindHeaderExtensionByUri(
180*d9f75844SAndroid Build Coastguard Worker                          extensions, kExtensionUri1,
181*d9f75844SAndroid Build Coastguard Worker                          RtpExtension::Filter::kDiscardEncryptedExtension));
182*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(nullptr, RtpExtension::FindHeaderExtensionByUri(
183*d9f75844SAndroid Build Coastguard Worker                          extensions, kExtensionUri1,
184*d9f75844SAndroid Build Coastguard Worker                          RtpExtension::Filter::kPreferEncryptedExtension));
185*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(nullptr, RtpExtension::FindHeaderExtensionByUri(
186*d9f75844SAndroid Build Coastguard Worker                          extensions, kExtensionUri1,
187*d9f75844SAndroid Build Coastguard Worker                          RtpExtension::Filter::kRequireEncryptedExtension));
188*d9f75844SAndroid Build Coastguard Worker 
189*d9f75844SAndroid Build Coastguard Worker   extensions.clear();
190*d9f75844SAndroid Build Coastguard Worker   extensions.push_back(kExtension1);
191*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(kExtension1, *RtpExtension::FindHeaderExtensionByUri(
192*d9f75844SAndroid Build Coastguard Worker                              extensions, kExtensionUri1,
193*d9f75844SAndroid Build Coastguard Worker                              RtpExtension::Filter::kDiscardEncryptedExtension));
194*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(kExtension1, *RtpExtension::FindHeaderExtensionByUri(
195*d9f75844SAndroid Build Coastguard Worker                              extensions, kExtensionUri1,
196*d9f75844SAndroid Build Coastguard Worker                              RtpExtension::Filter::kPreferEncryptedExtension));
197*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(nullptr, RtpExtension::FindHeaderExtensionByUri(
198*d9f75844SAndroid Build Coastguard Worker                          extensions, kExtensionUri1,
199*d9f75844SAndroid Build Coastguard Worker                          RtpExtension::Filter::kRequireEncryptedExtension));
200*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(nullptr, RtpExtension::FindHeaderExtensionByUri(
201*d9f75844SAndroid Build Coastguard Worker                          extensions, kExtensionUri2,
202*d9f75844SAndroid Build Coastguard Worker                          RtpExtension::Filter::kDiscardEncryptedExtension));
203*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(nullptr, RtpExtension::FindHeaderExtensionByUri(
204*d9f75844SAndroid Build Coastguard Worker                          extensions, kExtensionUri2,
205*d9f75844SAndroid Build Coastguard Worker                          RtpExtension::Filter::kPreferEncryptedExtension));
206*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(nullptr, RtpExtension::FindHeaderExtensionByUri(
207*d9f75844SAndroid Build Coastguard Worker                          extensions, kExtensionUri2,
208*d9f75844SAndroid Build Coastguard Worker                          RtpExtension::Filter::kRequireEncryptedExtension));
209*d9f75844SAndroid Build Coastguard Worker 
210*d9f75844SAndroid Build Coastguard Worker   extensions.clear();
211*d9f75844SAndroid Build Coastguard Worker   extensions.push_back(kExtension1);
212*d9f75844SAndroid Build Coastguard Worker   extensions.push_back(kExtension1Encrypted);
213*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(kExtension1, *RtpExtension::FindHeaderExtensionByUri(
214*d9f75844SAndroid Build Coastguard Worker                              extensions, kExtensionUri1,
215*d9f75844SAndroid Build Coastguard Worker                              RtpExtension::Filter::kDiscardEncryptedExtension));
216*d9f75844SAndroid Build Coastguard Worker 
217*d9f75844SAndroid Build Coastguard Worker   extensions.clear();
218*d9f75844SAndroid Build Coastguard Worker   extensions.push_back(kExtension1);
219*d9f75844SAndroid Build Coastguard Worker   extensions.push_back(kExtension1Encrypted);
220*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(kExtension1Encrypted,
221*d9f75844SAndroid Build Coastguard Worker             *RtpExtension::FindHeaderExtensionByUri(
222*d9f75844SAndroid Build Coastguard Worker                 extensions, kExtensionUri1,
223*d9f75844SAndroid Build Coastguard Worker                 RtpExtension::Filter::kPreferEncryptedExtension));
224*d9f75844SAndroid Build Coastguard Worker 
225*d9f75844SAndroid Build Coastguard Worker   extensions.clear();
226*d9f75844SAndroid Build Coastguard Worker   extensions.push_back(kExtension1);
227*d9f75844SAndroid Build Coastguard Worker   extensions.push_back(kExtension1Encrypted);
228*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(kExtension1Encrypted,
229*d9f75844SAndroid Build Coastguard Worker             *RtpExtension::FindHeaderExtensionByUri(
230*d9f75844SAndroid Build Coastguard Worker                 extensions, kExtensionUri1,
231*d9f75844SAndroid Build Coastguard Worker                 RtpExtension::Filter::kRequireEncryptedExtension));
232*d9f75844SAndroid Build Coastguard Worker 
233*d9f75844SAndroid Build Coastguard Worker   extensions.clear();
234*d9f75844SAndroid Build Coastguard Worker   extensions.push_back(kExtension1Encrypted);
235*d9f75844SAndroid Build Coastguard Worker   extensions.push_back(kExtension1);
236*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(kExtension1, *RtpExtension::FindHeaderExtensionByUri(
237*d9f75844SAndroid Build Coastguard Worker                              extensions, kExtensionUri1,
238*d9f75844SAndroid Build Coastguard Worker                              RtpExtension::Filter::kDiscardEncryptedExtension));
239*d9f75844SAndroid Build Coastguard Worker 
240*d9f75844SAndroid Build Coastguard Worker   extensions.clear();
241*d9f75844SAndroid Build Coastguard Worker   extensions.push_back(kExtension1Encrypted);
242*d9f75844SAndroid Build Coastguard Worker   extensions.push_back(kExtension1);
243*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(kExtension1Encrypted,
244*d9f75844SAndroid Build Coastguard Worker             *RtpExtension::FindHeaderExtensionByUri(
245*d9f75844SAndroid Build Coastguard Worker                 extensions, kExtensionUri1,
246*d9f75844SAndroid Build Coastguard Worker                 RtpExtension::Filter::kPreferEncryptedExtension));
247*d9f75844SAndroid Build Coastguard Worker 
248*d9f75844SAndroid Build Coastguard Worker   extensions.clear();
249*d9f75844SAndroid Build Coastguard Worker   extensions.push_back(kExtension1Encrypted);
250*d9f75844SAndroid Build Coastguard Worker   extensions.push_back(kExtension1);
251*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(kExtension1Encrypted,
252*d9f75844SAndroid Build Coastguard Worker             *RtpExtension::FindHeaderExtensionByUri(
253*d9f75844SAndroid Build Coastguard Worker                 extensions, kExtensionUri1,
254*d9f75844SAndroid Build Coastguard Worker                 RtpExtension::Filter::kRequireEncryptedExtension));
255*d9f75844SAndroid Build Coastguard Worker 
256*d9f75844SAndroid Build Coastguard Worker   extensions.clear();
257*d9f75844SAndroid Build Coastguard Worker   extensions.push_back(kExtension1);
258*d9f75844SAndroid Build Coastguard Worker   extensions.push_back(kExtension2);
259*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(kExtension1, *RtpExtension::FindHeaderExtensionByUri(
260*d9f75844SAndroid Build Coastguard Worker                              extensions, kExtensionUri1,
261*d9f75844SAndroid Build Coastguard Worker                              RtpExtension::Filter::kDiscardEncryptedExtension));
262*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(kExtension1, *RtpExtension::FindHeaderExtensionByUri(
263*d9f75844SAndroid Build Coastguard Worker                              extensions, kExtensionUri1,
264*d9f75844SAndroid Build Coastguard Worker                              RtpExtension::Filter::kPreferEncryptedExtension));
265*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(nullptr, RtpExtension::FindHeaderExtensionByUri(
266*d9f75844SAndroid Build Coastguard Worker                          extensions, kExtensionUri1,
267*d9f75844SAndroid Build Coastguard Worker                          RtpExtension::Filter::kRequireEncryptedExtension));
268*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(kExtension2, *RtpExtension::FindHeaderExtensionByUri(
269*d9f75844SAndroid Build Coastguard Worker                              extensions, kExtensionUri2,
270*d9f75844SAndroid Build Coastguard Worker                              RtpExtension::Filter::kDiscardEncryptedExtension));
271*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(kExtension2, *RtpExtension::FindHeaderExtensionByUri(
272*d9f75844SAndroid Build Coastguard Worker                              extensions, kExtensionUri2,
273*d9f75844SAndroid Build Coastguard Worker                              RtpExtension::Filter::kPreferEncryptedExtension));
274*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(nullptr, RtpExtension::FindHeaderExtensionByUri(
275*d9f75844SAndroid Build Coastguard Worker                          extensions, kExtensionUri2,
276*d9f75844SAndroid Build Coastguard Worker                          RtpExtension::Filter::kRequireEncryptedExtension));
277*d9f75844SAndroid Build Coastguard Worker 
278*d9f75844SAndroid Build Coastguard Worker   extensions.clear();
279*d9f75844SAndroid Build Coastguard Worker   extensions.push_back(kExtension1);
280*d9f75844SAndroid Build Coastguard Worker   extensions.push_back(kExtension2);
281*d9f75844SAndroid Build Coastguard Worker   extensions.push_back(kExtension1Encrypted);
282*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(kExtension1, *RtpExtension::FindHeaderExtensionByUri(
283*d9f75844SAndroid Build Coastguard Worker                              extensions, kExtensionUri1,
284*d9f75844SAndroid Build Coastguard Worker                              RtpExtension::Filter::kDiscardEncryptedExtension));
285*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(kExtension1Encrypted,
286*d9f75844SAndroid Build Coastguard Worker             *RtpExtension::FindHeaderExtensionByUri(
287*d9f75844SAndroid Build Coastguard Worker                 extensions, kExtensionUri1,
288*d9f75844SAndroid Build Coastguard Worker                 RtpExtension::Filter::kPreferEncryptedExtension));
289*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(kExtension1Encrypted,
290*d9f75844SAndroid Build Coastguard Worker             *RtpExtension::FindHeaderExtensionByUri(
291*d9f75844SAndroid Build Coastguard Worker                 extensions, kExtensionUri1,
292*d9f75844SAndroid Build Coastguard Worker                 RtpExtension::Filter::kRequireEncryptedExtension));
293*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(kExtension2, *RtpExtension::FindHeaderExtensionByUri(
294*d9f75844SAndroid Build Coastguard Worker                              extensions, kExtensionUri2,
295*d9f75844SAndroid Build Coastguard Worker                              RtpExtension::Filter::kDiscardEncryptedExtension));
296*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(kExtension2, *RtpExtension::FindHeaderExtensionByUri(
297*d9f75844SAndroid Build Coastguard Worker                              extensions, kExtensionUri2,
298*d9f75844SAndroid Build Coastguard Worker                              RtpExtension::Filter::kPreferEncryptedExtension));
299*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(nullptr, RtpExtension::FindHeaderExtensionByUri(
300*d9f75844SAndroid Build Coastguard Worker                          extensions, kExtensionUri2,
301*d9f75844SAndroid Build Coastguard Worker                          RtpExtension::Filter::kRequireEncryptedExtension));
302*d9f75844SAndroid Build Coastguard Worker }
303*d9f75844SAndroid Build Coastguard Worker }  // namespace webrtc
304