Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(62)

Side by Side Diff: media/formats/webm/webm_content_encodings_client_unittest.cc

Issue 1306923004: Reland MSE: Verify MediaLog events created by existing WebM unit tests (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "media/formats/webm/webm_content_encodings_client.h"
6
7 #include <string>
8
5 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/strings/string_number_conversions.h"
11 #include "media/base/mock_media_log.h"
6 #include "media/formats/webm/webm_constants.h" 12 #include "media/formats/webm/webm_constants.h"
7 #include "media/formats/webm/webm_content_encodings_client.h"
8 #include "media/formats/webm/webm_parser.h" 13 #include "media/formats/webm/webm_parser.h"
14 #include "testing/gmock/include/gmock/gmock.h"
9 #include "testing/gtest/include/gtest/gtest.h" 15 #include "testing/gtest/include/gtest/gtest.h"
10 16
17 using ::testing::StrictMock;
18
11 namespace media { 19 namespace media {
12 20
21 // Matchers for verifying common media log entry strings.
22 MATCHER(MissingContentEncoding, "") {
23 return CONTAINS_STRING(arg, "Missing ContentEncoding.");
24 }
25
26 MATCHER(UnexpectedContentEncodingOrder, "") {
27 return CONTAINS_STRING(arg, "Unexpected ContentEncodingOrder.");
28 }
29
30 MATCHER(UnexpectedContentEncodingScope, "") {
31 return CONTAINS_STRING(arg, "Unexpected ContentEncodingScope.");
32 }
33
34 MATCHER(ContentCompressionNotSupported, "") {
35 return CONTAINS_STRING(arg, "ContentCompression not supported.");
36 }
37
38 MATCHER(MissingContentEncryption, "") {
39 return CONTAINS_STRING(
40 arg,
41 "ContentEncodingType is encryption but ContentEncryption is missing.");
42 }
43
44 MATCHER_P(UnexpectedContentEncAlgo, algo, "") {
45 return CONTAINS_STRING(
46 arg, "Unexpected ContentEncAlgo " + base::IntToString(algo) + ".");
47 }
48
13 class WebMContentEncodingsClientTest : public testing::Test { 49 class WebMContentEncodingsClientTest : public testing::Test {
14 public: 50 public:
15 WebMContentEncodingsClientTest() 51 WebMContentEncodingsClientTest()
16 : client_(new MediaLog()), parser_(kWebMIdContentEncodings, &client_) {} 52 : media_log_(new StrictMock<MockMediaLog>()),
53 client_(media_log_),
54 parser_(kWebMIdContentEncodings, &client_) {}
17 55
18 void ParseAndExpectToFail(const uint8* buf, int size) { 56 void ParseAndExpectToFail(const uint8* buf, int size) {
19 int result = parser_.Parse(buf, size); 57 int result = parser_.Parse(buf, size);
20 EXPECT_EQ(-1, result); 58 EXPECT_EQ(-1, result);
21 } 59 }
22 60
23 protected: 61 protected:
62 scoped_refptr<StrictMock<MockMediaLog>> media_log_;
24 WebMContentEncodingsClient client_; 63 WebMContentEncodingsClient client_;
25 WebMListParser parser_; 64 WebMListParser parser_;
26 }; 65 };
27 66
28 TEST_F(WebMContentEncodingsClientTest, EmptyContentEncodings) { 67 TEST_F(WebMContentEncodingsClientTest, EmptyContentEncodings) {
29 const uint8 kContentEncodings[] = { 68 const uint8 kContentEncodings[] = {
30 0x6D, 0x80, 0x80, // ContentEncodings (size = 0) 69 0x6D, 0x80, 0x80, // ContentEncodings (size = 0)
31 }; 70 };
32 int size = sizeof(kContentEncodings); 71 int size = sizeof(kContentEncodings);
72 EXPECT_MEDIA_LOG(MissingContentEncoding());
33 ParseAndExpectToFail(kContentEncodings, size); 73 ParseAndExpectToFail(kContentEncodings, size);
34 } 74 }
35 75
36 TEST_F(WebMContentEncodingsClientTest, EmptyContentEncoding) { 76 TEST_F(WebMContentEncodingsClientTest, EmptyContentEncoding) {
37 const uint8 kContentEncodings[] = { 77 const uint8 kContentEncodings[] = {
38 0x6D, 0x80, 0x83, // ContentEncodings (size = 3) 78 0x6D, 0x80, 0x83, // ContentEncodings (size = 3)
39 0x63, 0x40, 0x80, // ContentEncoding (size = 0) 79 0x63, 0x40, 0x80, // ContentEncoding (size = 0)
40 }; 80 };
41 int size = sizeof(kContentEncodings); 81 int size = sizeof(kContentEncodings);
42 ParseAndExpectToFail(kContentEncodings, size); 82 ParseAndExpectToFail(kContentEncodings, size);
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
175 215
176 TEST_F(WebMContentEncodingsClientTest, InvalidContentEncodingOrder) { 216 TEST_F(WebMContentEncodingsClientTest, InvalidContentEncodingOrder) {
177 const uint8 kContentEncodings[] = { 217 const uint8 kContentEncodings[] = {
178 0x6D, 0x80, 0x8E, // ContentEncodings (size = 14) 218 0x6D, 0x80, 0x8E, // ContentEncodings (size = 14)
179 0x62, 0x40, 0x8B, // ContentEncoding (size = 11) 219 0x62, 0x40, 0x8B, // ContentEncoding (size = 11)
180 0x50, 0x31, 0x81, 0xEE, // ContentEncodingOrder (size = 1), invalid 220 0x50, 0x31, 0x81, 0xEE, // ContentEncodingOrder (size = 1), invalid
181 0x50, 0x33, 0x81, 0x01, // ContentEncodingType (size = 1) 221 0x50, 0x33, 0x81, 0x01, // ContentEncodingType (size = 1)
182 0x50, 0x35, 0x80, // ContentEncryption (size = 0) 222 0x50, 0x35, 0x80, // ContentEncryption (size = 0)
183 }; 223 };
184 int size = sizeof(kContentEncodings); 224 int size = sizeof(kContentEncodings);
225 EXPECT_MEDIA_LOG(UnexpectedContentEncodingOrder());
185 ParseAndExpectToFail(kContentEncodings, size); 226 ParseAndExpectToFail(kContentEncodings, size);
186 } 227 }
187 228
188 TEST_F(WebMContentEncodingsClientTest, InvalidContentEncodingScope) { 229 TEST_F(WebMContentEncodingsClientTest, InvalidContentEncodingScope) {
189 const uint8 kContentEncodings[] = { 230 const uint8 kContentEncodings[] = {
190 0x6D, 0x80, 0x8E, // ContentEncodings (size = 14) 231 0x6D, 0x80, 0x8E, // ContentEncodings (size = 14)
191 0x62, 0x40, 0x8B, // ContentEncoding (size = 11) 232 0x62, 0x40, 0x8B, // ContentEncoding (size = 11)
192 0x50, 0x32, 0x81, 0xEE, // ContentEncodingScope (size = 1), invalid 233 0x50, 0x32, 0x81, 0xEE, // ContentEncodingScope (size = 1), invalid
193 0x50, 0x33, 0x81, 0x01, // ContentEncodingType (size = 1) 234 0x50, 0x33, 0x81, 0x01, // ContentEncodingType (size = 1)
194 0x50, 0x35, 0x80, // ContentEncryption (size = 0) 235 0x50, 0x35, 0x80, // ContentEncryption (size = 0)
195 }; 236 };
196 int size = sizeof(kContentEncodings); 237 int size = sizeof(kContentEncodings);
238 EXPECT_MEDIA_LOG(UnexpectedContentEncodingScope());
197 ParseAndExpectToFail(kContentEncodings, size); 239 ParseAndExpectToFail(kContentEncodings, size);
198 } 240 }
199 241
200 TEST_F(WebMContentEncodingsClientTest, InvalidContentEncodingType) { 242 TEST_F(WebMContentEncodingsClientTest, InvalidContentEncodingType) {
201 const uint8 kContentEncodings[] = { 243 const uint8 kContentEncodings[] = {
202 0x6D, 0x80, 0x8E, // ContentEncodings (size = 14) 244 0x6D, 0x80, 0x8E, // ContentEncodings (size = 14)
203 0x62, 0x40, 0x8B, // ContentEncoding (size = 11) 245 0x62, 0x40, 0x8B, // ContentEncoding (size = 11)
204 0x50, 0x33, 0x81, 0x00, // ContentEncodingType (size = 1), invalid 246 0x50, 0x33, 0x81, 0x00, // ContentEncodingType (size = 1), invalid
205 0x50, 0x35, 0x80, // ContentEncryption (size = 0) 247 0x50, 0x35, 0x80, // ContentEncryption (size = 0)
206 }; 248 };
207 int size = sizeof(kContentEncodings); 249 int size = sizeof(kContentEncodings);
250 EXPECT_MEDIA_LOG(ContentCompressionNotSupported());
208 ParseAndExpectToFail(kContentEncodings, size); 251 ParseAndExpectToFail(kContentEncodings, size);
209 } 252 }
210 253
211 // ContentEncodingType is encryption but no ContentEncryption present. 254 // ContentEncodingType is encryption but no ContentEncryption present.
212 TEST_F(WebMContentEncodingsClientTest, MissingContentEncryption) { 255 TEST_F(WebMContentEncodingsClientTest, MissingContentEncryption) {
213 const uint8 kContentEncodings[] = { 256 const uint8 kContentEncodings[] = {
214 0x6D, 0x80, 0x87, // ContentEncodings (size = 7) 257 0x6D, 0x80, 0x87, // ContentEncodings (size = 7)
215 0x62, 0x40, 0x84, // ContentEncoding (size = 4) 258 0x62, 0x40, 0x84, // ContentEncoding (size = 4)
216 0x50, 0x33, 0x81, 0x01, // ContentEncodingType (size = 1) 259 0x50, 0x33, 0x81, 0x01, // ContentEncodingType (size = 1)
217 // ContentEncryption missing 260 // ContentEncryption missing
218 }; 261 };
219 int size = sizeof(kContentEncodings); 262 int size = sizeof(kContentEncodings);
263 EXPECT_MEDIA_LOG(MissingContentEncryption());
220 ParseAndExpectToFail(kContentEncodings, size); 264 ParseAndExpectToFail(kContentEncodings, size);
221 } 265 }
222 266
223 TEST_F(WebMContentEncodingsClientTest, InvalidContentEncAlgo) { 267 TEST_F(WebMContentEncodingsClientTest, InvalidContentEncAlgo) {
224 const uint8 kContentEncodings[] = { 268 const uint8 kContentEncodings[] = {
225 0x6D, 0x80, 0x99, // ContentEncodings (size = 25) 269 0x6D, 0x80, 0x99, // ContentEncodings (size = 25)
226 0x62, 0x40, 0x96, // ContentEncoding (size = 22) 270 0x62, 0x40, 0x96, // ContentEncoding (size = 22)
227 0x50, 0x33, 0x81, 0x01, // ContentEncodingType (size = 1) 271 0x50, 0x33, 0x81, 0x01, // ContentEncodingType (size = 1)
228 0x50, 0x35, 0x8F, // ContentEncryption (size = 15) 272 0x50, 0x35, 0x8F, // ContentEncryption (size = 15)
229 0x47, 0xE1, 0x81, 0xEE, // ContentEncAlgo (size = 1), invalid 273 0x47, 0xE1, 0x81, 0xEE, // ContentEncAlgo (size = 1), invalid
230 0x47, 0xE2, 0x88, // ContentEncKeyID (size = 8) 274 0x47, 0xE2, 0x88, // ContentEncKeyID (size = 8)
231 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 275 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
232 }; 276 };
233 int size = sizeof(kContentEncodings); 277 int size = sizeof(kContentEncodings);
278 EXPECT_MEDIA_LOG(UnexpectedContentEncAlgo(0xEE));
234 ParseAndExpectToFail(kContentEncodings, size); 279 ParseAndExpectToFail(kContentEncodings, size);
235 } 280 }
236 281
237 } // namespace media 282 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698