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