OLD | NEW |
---|---|
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 <string> | 5 #include <string> |
6 | 6 |
7 #include "content/browser/media/media_browsertest.h" | 7 #include "content/browser/media/media_browsertest.h" |
8 #include "content/public/test/browser_test_utils.h" | 8 #include "content/public/test/browser_test_utils.h" |
9 #include "content/public/test/content_browser_test_utils.h" | 9 #include "content/public/test/content_browser_test_utils.h" |
10 #include "content/shell/browser/shell.h" | 10 #include "content/shell/browser/shell.h" |
11 | 11 |
12 #if defined(OS_ANDROID) | 12 #if defined(OS_ANDROID) |
13 #include "base/android/build_info.h" | 13 #include "base/android/build_info.h" |
14 #endif | 14 #endif |
15 | 15 |
16 const char kProbably[] = "probably"; | 16 const char kProbably[] = "probably"; |
17 const char kMaybe[] = "maybe"; | 17 const char kMaybe[] = "maybe"; |
18 const char kNot[] = ""; | 18 const char kNot[] = ""; |
19 | 19 |
20 #if defined(USE_PROPRIETARY_CODECS) | 20 #if defined(USE_PROPRIETARY_CODECS) |
21 const char kPropProbably[] = "probably"; | 21 const char kPropProbably[] = "probably"; |
22 const char kPropMaybe[] = "maybe"; | 22 const char kPropMaybe[] = "maybe"; |
23 #else | 23 #else |
24 const char kPropProbably[] = ""; | 24 const char kPropProbably[] = ""; |
25 const char kPropMaybe[] = ""; | 25 const char kPropMaybe[] = ""; |
26 #endif // USE_PROPRIETARY_CODECS | 26 #endif // USE_PROPRIETARY_CODECS |
27 | 27 |
28 // TODO(amogh.bihani): Change the opus tests when opus is on | |
29 // Android. (http://crbug.com/318436). | |
30 #if !defined(OS_ANDROID) | 28 #if !defined(OS_ANDROID) |
31 const char kOggVideoProbably[] = "probably"; | 29 const char kOggVideoProbably[] = "probably"; |
32 const char kOggVideoMaybe[] = "maybe"; | 30 const char kOggVideoMaybe[] = "maybe"; |
33 const char kTheoraProbably[] = "probably"; | 31 const char kTheoraProbably[] = "probably"; |
34 const char kOggOpusProbably[] = "probably"; | 32 const char kOggOpusProbably[] = "probably"; |
33 const char* kMpeg2AacProbably = kPropProbably; | |
35 #else | 34 #else |
36 const char kOggVideoProbably[] = ""; | 35 const char kOggVideoProbably[] = ""; |
37 const char kOggVideoMaybe[] = ""; | 36 const char kOggVideoMaybe[] = ""; |
38 const char kTheoraProbably[] = ""; | 37 const char kTheoraProbably[] = ""; |
39 const char kOggOpusProbably[] = ""; | 38 const char kOggOpusProbably[] = ""; |
39 const char kMpeg2AacProbably[] = ""; | |
40 #endif // !OS_ANDROID | 40 #endif // !OS_ANDROID |
41 | 41 |
42 namespace content { | 42 namespace content { |
43 | 43 |
44 class MediaCanPlayTypeTest : public MediaBrowserTest { | 44 class MediaCanPlayTypeTest : public MediaBrowserTest { |
45 public: | 45 public: |
46 MediaCanPlayTypeTest() : url_("about:blank") { } | 46 MediaCanPlayTypeTest() : url_("about:blank") { } |
47 | 47 |
48 void SetUpOnMainThread() override { NavigateToURL(shell(), url_); } | 48 void SetUpOnMainThread() override { NavigateToURL(shell(), url_); } |
49 | 49 |
50 std::string CanPlay(const std::string& type) { | 50 std::string CanPlay(const std::string& type) { |
51 std::string command("document.createElement('video').canPlayType("); | 51 std::string command("document.createElement('video').canPlayType("); |
52 command.append(type); | 52 command.append(type); |
53 command.append(")"); | 53 command.append(")"); |
54 | 54 |
55 std::string result; | 55 std::string result; |
56 EXPECT_TRUE(ExecuteScriptAndExtractString( | 56 EXPECT_TRUE(ExecuteScriptAndExtractString( |
57 shell()->web_contents(), | 57 shell()->web_contents(), |
58 "window.domAutomationController.send(" + command + ");", | 58 "window.domAutomationController.send(" + command + ");", |
59 &result)); | 59 &result)); |
60 return result; | 60 return result; |
61 } | 61 } |
62 | 62 |
63 void TestMPEGUnacceptableCombinations(std::string mime) { | 63 void TestMPEGUnacceptableCombinations(std::string mime) { |
64 // Codecs must be followed by valid hexadecimal number. | 64 // AVC codecs must be followed by valid 6-digit hexadecimal number. |
65 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1.unknown\"'")); | 65 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1.12345\"'")); |
66 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3.unknown\"'")); | 66 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3.12345\"'")); |
67 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a.unknown\"'")); | 67 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1.1234567\"'")); |
68 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3.1234567\"'")); | |
69 // TODO(ddorwin): These four should return "". See crbug.com/457076. | |
70 // EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1.number\"'")); | |
71 // EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3.number\"'")); | |
72 // EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1.12345.\"'")); | |
73 // EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3.12345.\"'")); | |
74 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1.123456.\"'")); | |
75 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3.123456.\"'")); | |
76 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1.123456.7\"'")); | |
77 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3.123456.7\"'")); | |
78 | |
79 // AAC codecs must be followed by one or two valid hexadecimal numbers. | |
80 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a.no\"'")); | |
81 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a.0k\"'")); | |
82 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a.0k.0k\"'")); | |
83 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a.4.\"'")); | |
84 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a.40.0k\"'")); | |
85 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a.40.\"'")); | |
86 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a.40k\"'")); | |
87 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a.40.2k\"'")); | |
88 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a.40.2k\"'")); | |
89 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a.40.2.\"'")); | |
90 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a.40.2.0\"'")); | |
91 | |
92 // Just "mp4a" is not supported like just "avc1" is supported. | |
wolenetz
2015/02/18 22:44:33
nit: rework comment. I kept reading this the wrong
ddorwin
2015/02/20 05:26:24
Done.
| |
93 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a\"'")); | |
94 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a.\"'")); | |
95 | |
96 // Other names for the codecs are not supported. | |
97 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"h264\"'")); | |
98 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"h.264\"'")); | |
99 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"H264\"'")); | |
100 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"H.264\"'")); | |
101 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"aac\"'")); | |
102 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"AAC\"'")); | |
68 | 103 |
69 // Codecs must not end with a dot. | 104 // Codecs must not end with a dot. |
70 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1.\"'")); | 105 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1.\"'")); |
71 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3.\"'")); | 106 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3.\"'")); |
72 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a\"'")); | |
73 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a.\"'")); | 107 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a.\"'")); |
74 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a.40.\"'")); | 108 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a.40.\"'")); |
75 | 109 |
110 // A simple substring match is not sufficient. | |
111 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"lavc1337\"'")); | |
112 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\";mp4a+\"'")); | |
113 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\";mp4a.40+\"'")); | |
114 | |
76 // Codecs not belonging to MPEG container. | 115 // Codecs not belonging to MPEG container. |
77 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vorbis\"'")); | 116 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vorbis\"'")); |
78 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1, vorbis\"'")); | 117 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1, vorbis\"'")); |
79 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3, vorbis\"'")); | 118 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3, vorbis\"'")); |
80 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1.4D401E, vorbis\"'")); | 119 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1.4D401E, vorbis\"'")); |
81 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3.64001F, vorbis\"'")); | 120 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3.64001F, vorbis\"'")); |
82 | 121 |
83 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"opus\"'")); | 122 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"opus\"'")); |
84 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1, opus\"'")); | 123 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1, opus\"'")); |
85 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3, opus\"'")); | 124 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3, opus\"'")); |
(...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
345 EXPECT_EQ(kProbably, CanPlay("'application/ogg; codecs=\"vorbis\"'")); | 384 EXPECT_EQ(kProbably, CanPlay("'application/ogg; codecs=\"vorbis\"'")); |
346 EXPECT_EQ(kTheoraProbably, CanPlay("'application/ogg; codecs=\"theora\"'")); | 385 EXPECT_EQ(kTheoraProbably, CanPlay("'application/ogg; codecs=\"theora\"'")); |
347 EXPECT_EQ(kOggOpusProbably, CanPlay("'application/ogg; codecs=\"opus\"'")); | 386 EXPECT_EQ(kOggOpusProbably, CanPlay("'application/ogg; codecs=\"opus\"'")); |
348 EXPECT_EQ(kTheoraProbably, | 387 EXPECT_EQ(kTheoraProbably, |
349 CanPlay("'application/ogg; codecs=\"theora, vorbis\"'")); | 388 CanPlay("'application/ogg; codecs=\"theora, vorbis\"'")); |
350 EXPECT_EQ(kTheoraProbably, | 389 EXPECT_EQ(kTheoraProbably, |
351 CanPlay("'application/ogg; codecs=\"theora, opus\"'")); | 390 CanPlay("'application/ogg; codecs=\"theora, opus\"'")); |
352 EXPECT_EQ(kOggOpusProbably, | 391 EXPECT_EQ(kOggOpusProbably, |
353 CanPlay("'application/ogg; codecs=\"opus, vorbis\"'")); | 392 CanPlay("'application/ogg; codecs=\"opus, vorbis\"'")); |
354 | 393 |
355 TestOGGUnacceptableCombinations("application/ogg"); | 394 TestOGGUnacceptableCombinations("application/ogg"); |
wolenetz
2015/02/18 22:44:33
aside: please fix this one indent while you're tou
ddorwin
2015/02/20 05:26:23
Done.
| |
356 } | 395 } |
357 | 396 |
358 IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_mp3) { | 397 IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_mp3) { |
359 EXPECT_EQ(kNot, CanPlay("'video/mp3'")); | 398 EXPECT_EQ(kNot, CanPlay("'video/mp3'")); |
360 EXPECT_EQ(kNot, CanPlay("'video/mpeg'")); | 399 EXPECT_EQ(kNot, CanPlay("'video/mpeg'")); |
361 EXPECT_EQ(kNot, CanPlay("'video/x-mp3'")); | 400 EXPECT_EQ(kNot, CanPlay("'video/x-mp3'")); |
362 | 401 |
363 // audio/mpeg without a codecs parameter (RFC 3003 compliant) | 402 // audio/mpeg without a codecs parameter (RFC 3003 compliant) |
364 EXPECT_EQ(kPropProbably, CanPlay("'audio/mpeg'")); | 403 EXPECT_EQ(kPropProbably, CanPlay("'audio/mpeg'")); |
365 | 404 |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
408 EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"mp4a.40.02\"'")); | 447 EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"mp4a.40.02\"'")); |
409 | 448 |
410 TestMPEGUnacceptableCombinations("audio/x-mp3"); | 449 TestMPEGUnacceptableCombinations("audio/x-mp3"); |
411 } | 450 } |
412 | 451 |
413 IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_mp4) { | 452 IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_mp4) { |
414 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4'")); | 453 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4'")); |
415 | 454 |
416 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1\"'")); | 455 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1\"'")); |
417 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc3\"'")); | 456 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc3\"'")); |
457 EXPECT_EQ(kNot, CanPlay("'video/mp4; codecs=\"mp4a\"'")); | |
wolenetz
2015/02/18 22:44:32
nit: this is redundant with the "just like" portio
ddorwin
2015/02/20 05:26:24
Done.
| |
418 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"mp4a.40\"'")); | 458 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"mp4a.40\"'")); |
419 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1, mp4a.40\"'")); | 459 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1, mp4a.40\"'")); |
420 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc3, mp4a.40\"'")); | 460 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc3, mp4a.40\"'")); |
421 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1, avc3\"'")); | 461 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1, avc3\"'")); |
422 | 462 |
423 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42E01E\"'")); | 463 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42E01E\"'")); |
424 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc3.42E01E\"'")); | 464 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc3.42E01E\"'")); |
425 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc3.42801E\"'")); | 465 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc3.42801E\"'")); |
426 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc3.42C01E\"'")); | 466 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc3.42C01E\"'")); |
427 | 467 |
(...skipping 23 matching lines...) Expand all Loading... | |
451 CanPlay("'video/mp4; codecs=\"avc1.42E01E, mp4a.40\"'")); | 491 CanPlay("'video/mp4; codecs=\"avc1.42E01E, mp4a.40\"'")); |
452 EXPECT_EQ(kPropMaybe, | 492 EXPECT_EQ(kPropMaybe, |
453 CanPlay("'video/mp4; codecs=\"avc3.42E01E, mp4a.40\"'")); | 493 CanPlay("'video/mp4; codecs=\"avc3.42E01E, mp4a.40\"'")); |
454 | 494 |
455 TestMPEGUnacceptableCombinations("video/mp4"); | 495 TestMPEGUnacceptableCombinations("video/mp4"); |
456 | 496 |
457 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v'")); | 497 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v'")); |
458 | 498 |
459 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc1\"'")); | 499 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc1\"'")); |
460 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc3\"'")); | 500 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc3\"'")); |
501 EXPECT_EQ(kNot, CanPlay("'video/x-m4v; codecs=\"mp4a\"'")); | |
wolenetz
2015/02/18 22:44:33
nit: ditto redundant w/"just like" portion of call
ddorwin
2015/02/20 05:26:23
Done.
| |
461 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"mp4a.40\"'")); | 502 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"mp4a.40\"'")); |
462 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc1, mp4a.40\"'")); | 503 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc1, mp4a.40\"'")); |
463 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc3, mp4a.40\"'")); | 504 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc3, mp4a.40\"'")); |
464 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc1, avc3\"'")); | 505 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc1, avc3\"'")); |
465 | 506 |
466 EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"avc1.42E01E\"'")); | 507 EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"avc1.42E01E\"'")); |
467 EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"avc3.42E01E\"'")); | 508 EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"avc3.42E01E\"'")); |
468 EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"avc3.42801E\"'")); | 509 EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"avc3.42801E\"'")); |
469 EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"avc3.42C01E\"'")); | 510 EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"avc3.42C01E\"'")); |
470 | 511 |
(...skipping 20 matching lines...) Expand all Loading... | |
491 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc3, mp4a.40.2\"'")); | 532 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc3, mp4a.40.2\"'")); |
492 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc3, mp4a.40.02\"'")); | 533 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc3, mp4a.40.02\"'")); |
493 EXPECT_EQ(kPropMaybe, | 534 EXPECT_EQ(kPropMaybe, |
494 CanPlay("'video/x-m4v; codecs=\"avc1.42E01E, mp4a.40\"'")); | 535 CanPlay("'video/x-m4v; codecs=\"avc1.42E01E, mp4a.40\"'")); |
495 EXPECT_EQ(kPropMaybe, | 536 EXPECT_EQ(kPropMaybe, |
496 CanPlay("'video/x-m4v; codecs=\"avc3.42E01E, mp4a.40\"'")); | 537 CanPlay("'video/x-m4v; codecs=\"avc3.42E01E, mp4a.40\"'")); |
497 | 538 |
498 TestMPEGUnacceptableCombinations("video/x-m4v"); | 539 TestMPEGUnacceptableCombinations("video/x-m4v"); |
499 | 540 |
500 EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4'")); | 541 EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4'")); |
542 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a\"'")); | |
wolenetz
2015/02/18 22:44:33
nit ditto
ddorwin
2015/02/20 05:26:24
Done.
| |
501 EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4; codecs=\"mp4a.40\"'")); | 543 EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4; codecs=\"mp4a.40\"'")); |
502 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.2\"'")); | 544 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.2\"'")); |
503 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.02\"'")); | 545 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.02\"'")); |
504 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.5\"'")); | 546 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.5\"'")); |
505 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.05\"'")); | 547 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.05\"'")); |
506 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.29\"'")); | 548 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.29\"'")); |
507 | 549 |
508 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc1\"'")); | 550 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc1\"'")); |
509 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc3\"'")); | 551 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc3\"'")); |
510 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc1, mp4a.40\"'")); | 552 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc1, mp4a.40\"'")); |
511 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc3, mp4a.40\"'")); | 553 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc3, mp4a.40\"'")); |
512 | 554 |
513 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc1.4D401E\"'")); | 555 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc1.4D401E\"'")); |
514 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc3.64001F\"'")); | 556 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc3.64001F\"'")); |
515 | 557 |
516 TestMPEGUnacceptableCombinations("audio/mp4"); | 558 TestMPEGUnacceptableCombinations("audio/mp4"); |
517 | 559 |
518 EXPECT_EQ(kPropMaybe, CanPlay("'audio/x-m4a'")); | 560 EXPECT_EQ(kPropMaybe, CanPlay("'audio/x-m4a'")); |
561 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"mp4a\"'")); | |
wolenetz
2015/02/18 22:44:32
nit ditto
ddorwin
2015/02/20 05:26:23
Done.
| |
519 EXPECT_EQ(kPropMaybe, CanPlay("'audio/x-m4a; codecs=\"mp4a.40\"'")); | 562 EXPECT_EQ(kPropMaybe, CanPlay("'audio/x-m4a; codecs=\"mp4a.40\"'")); |
520 EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.40.2\"'")); | 563 EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.40.2\"'")); |
521 EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.40.02\"'")); | 564 EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.40.02\"'")); |
522 EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.40.5\"'")); | 565 EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.40.5\"'")); |
523 EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.40.05\"'")); | 566 EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.40.05\"'")); |
524 EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.40.29\"'")); | 567 EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.40.29\"'")); |
525 | 568 |
526 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc1\"'")); | 569 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc1\"'")); |
527 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc3\"'")); | 570 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc3\"'")); |
528 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc1, mp4a\"'")); | 571 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc1, mp4a\"'")); |
529 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc3, mp4a\"'")); | 572 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc3, mp4a\"'")); |
530 | 573 |
531 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc1.4D401E\"'")); | 574 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc1.4D401E\"'")); |
532 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc3.64001F\"'")); | 575 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc3.64001F\"'")); |
533 | 576 |
534 TestMPEGUnacceptableCombinations("audio/x-m4a"); | 577 TestMPEGUnacceptableCombinations("audio/x-m4a"); |
535 } | 578 } |
536 | 579 |
580 // When modifying this test, also change CodecSupportTest_Avc3Variants. | |
wolenetz
2015/02/18 22:44:33
nit: combine into one test that loops through all
ddorwin
2015/02/20 05:26:24
Done, but I don't like it. I think I will revert.
wolenetz
2015/02/23 19:57:45
Yeah, I agree with your reasons for not doing this
ddorwin
2015/02/24 00:09:20
Acknowledged.
| |
581 IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_Avc1Variants) { | |
582 // avc1 without extensions results in "maybe" for compatibility. | |
583 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1\"'")); | |
584 | |
585 // Any 6-digit hexadecimal number will result in at least "maybe". | |
586 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.123456\"'")); | |
587 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.ABCDEF\"'")); | |
588 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.abcdef\"'")); | |
589 EXPECT_EQ(kNot, CanPlay("'video/mp4; codecs=\"avc1.12345\"'")); | |
wolenetz
2015/02/18 22:44:33
nit ditto for these two kNot lines: (redundant wit
ddorwin
2015/02/20 05:26:24
Yeah, these tests are quick, and I think it's nice
wolenetz
2015/02/23 19:57:44
Acknowledged.
| |
590 EXPECT_EQ(kNot, CanPlay("'video/mp4; codecs=\"avc1.1234567\"'")); | |
591 | |
592 // Both upper and lower case hexadecimal digits are accepted. | |
593 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42E01E\"'")); | |
wolenetz
2015/02/18 22:44:32
hmm there's more redundancy. I suspect many of the
ddorwin
2015/02/20 05:26:24
Acknowledged.
| |
594 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42e01e\"'")); | |
595 | |
596 // From a YouTube DASH MSE test manifest. | |
wolenetz
2015/02/18 22:44:33
4d401e is duplicated, below.
This seems like a pa
ddorwin
2015/02/20 05:26:23
Yes. This was an attempt to make sure we were cove
wolenetz
2015/02/23 19:57:44
Acknowledged.
| |
597 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.4d401f\"'")); | |
598 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.4d401e\"'")); | |
599 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.4d4015\"'")); | |
600 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.640028\"'")); | |
601 | |
602 // | |
603 // Baseline Profile (66 == 0x42). | |
604 // The first four digits must be 42E0, but Chrome also allows 42[8-F]0. | |
605 // (See http://crbug.com/408552#c17.) | |
606 // The last two digits must be any valid level. | |
607 // | |
608 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42E00A\"'")); | |
609 | |
610 // The third digit must be 8-F. | |
611 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42001E\"'")); | |
wolenetz
2015/02/18 22:44:33
aside: thanks for formatting these lines to line u
ddorwin
2015/02/20 05:26:24
Acknowledged.
| |
612 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42101E\"'")); | |
613 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42201E\"'")); | |
614 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42301E\"'")); | |
615 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42401E\"'")); | |
616 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42501E\"'")); | |
617 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42601E\"'")); | |
618 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42701E\"'")); | |
619 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42801E\"'")); | |
620 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42901E\"'")); | |
621 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42A01E\"'")); | |
622 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42B01E\"'")); | |
623 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42C01E\"'")); | |
624 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42D01E\"'")); | |
625 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42E01E\"'")); | |
626 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42F01E\"'")); | |
627 | |
628 // The fourth digit must be 0. | |
629 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E11E\"'")); | |
630 | |
631 // | |
632 // Main Profile (77 == 0x4D). | |
633 // The first four digits must be 4D40. | |
634 // The last two digits must be any valid level. | |
635 // | |
636 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.4D400A\"'")); | |
637 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.4D401E\"'")); | |
638 | |
639 // Other values are not allowed for the third and fourth digits. | |
640 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.4D301E\"'")); | |
641 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.4D501E\"'")); | |
642 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.4D411E\"'")); | |
643 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.4D4F1E\"'")); | |
644 | |
645 // | |
646 // High Profile (100 == 0x64). | |
647 // The first four digits must be 6400. | |
648 // The last two digits must be any valid level. | |
649 // | |
650 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.64000A\"'")); | |
651 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.64001E\"'")); | |
652 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.64001F\"'")); | |
653 | |
654 // Other values are not allowed for the third and fourth digits. | |
655 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.64101E\"'")); | |
656 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.64f01E\"'")); | |
657 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.64011E\"'")); | |
658 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.640F1E\"'")); | |
659 | |
660 // | |
661 // Other profiles are not known to be supported. | |
662 // | |
663 | |
664 // Extended Profile (88 == 0x58). | |
665 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.58A01E\"'")); | |
666 } | |
667 | |
668 IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_Avc3Variants) { | |
669 // TODO(ddorwin): Copy the final Avc1Variants contents here and s/avc1/avc3/. | |
wolenetz
2015/02/18 22:44:33
nit ditto: parameterize avc# and use a helper for
ddorwin
2015/02/20 05:26:23
Ditto.
wolenetz
2015/02/23 19:57:45
Acknowledged.
| |
670 } | |
671 | |
672 // Tests AVC levels using AVC1 Baseline (0x42E0zz). | |
673 // Other supported values for the first for hexadecimal digits should behave | |
wolenetz
2015/02/18 22:44:33
nit: s/for hex/four hex/
ddorwin
2015/02/20 05:26:23
Done.
| |
674 // the same way but are not tested. | |
675 // For each full level, the following are tested: | |
676 // * The hexadecimal value before it is not supported. | |
677 // * The hexadecimal value for the main level and all sub-levels are supported. | |
678 // * The hexadecimal value after the last sub-level it is not supported. | |
679 // * Decimal representations of the levels are not supported. | |
680 | |
681 IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_AvcLevels) { | |
682 // Level 0 is not supported. | |
683 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E000\"'")); | |
684 | |
685 // Levels 1 (0x0A), 1.1 (0x0B), 1.2 (0x0C), 1.3 (0x0D). | |
686 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E009\"'")); | |
687 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42E00A\"'")); | |
688 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42E00B\"'")); | |
689 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42E00C\"'")); | |
690 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42E00D\"'")); | |
691 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E00E\"'")); | |
692 // Verify that decimal representations of levels are not supported. | |
693 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E001\"'")); | |
694 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E010\"'")); | |
695 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E011\"'")); | |
696 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E012\"'")); | |
697 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E013\"'")); | |
698 | |
699 // Levels 2 (0x14), 2.1 (0x15), 2.2 (0x16) | |
700 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E013\"'")); | |
701 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42E014\"'")); | |
702 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42E015\"'")); | |
703 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42E016\"'")); | |
704 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E017\"'")); | |
705 // Verify that decimal representations of levels are not supported. | |
706 // However, 20 is level 3.2. | |
707 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E002\"'")); | |
708 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42E020\"'")); | |
709 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E021\"'")); | |
710 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E022\"'")); | |
711 | |
712 // Levels 3 (0x1e), 3.1 (0x1F), 3.2 (0x20) | |
713 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E01D\"'")); | |
714 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42E01E\"'")); | |
715 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42E01F\"'")); | |
716 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42E020\"'")); | |
717 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E021\"'")); | |
718 // Verify that decimal representations of levels are not supported. | |
719 // However, 32 is level 5. | |
720 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E003\"'")); | |
721 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E030\"'")); | |
722 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E031\"'")); | |
723 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42E032\"'")); | |
724 | |
725 // Levels 4 (0x28), 4.1 (0x29), 4.2 (0x2A) | |
726 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E027\"'")); | |
727 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42E028\"'")); | |
728 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42E029\"'")); | |
729 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42E02A\"'")); | |
730 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E02B\"'")); | |
731 // Verify that decimal representations of levels are not supported. | |
732 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E004\"'")); | |
733 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E040\"'")); | |
734 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E041\"'")); | |
735 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E042\"'")); | |
736 | |
737 // Levels 5 (0x32), 5.1 (0x33). | |
738 // Note: Level 5.2 (0x34) is not considered valid. | |
wolenetz
2015/02/18 22:44:33
The version of ISO14496-10 acolwell@ used may have
ddorwin
2015/02/20 05:26:24
Done.
| |
739 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E031\"'")); | |
740 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42E032\"'")); | |
741 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42E033\"'")); | |
742 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E034\"'")); | |
743 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E035\"'")); | |
744 // Verify that decimal representations of levels are not supported. | |
745 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E005\"'")); | |
746 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E050\"'")); | |
747 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E051\"'")); | |
748 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E052\"'")); | |
749 } | |
750 | |
751 IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_Mp4aVariants) { | |
752 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a\"'")); | |
wolenetz
2015/02/18 22:44:33
nit ditto redundancy...
ddorwin
2015/02/20 05:26:23
This is specifically testing mp4a, so I think it's
wolenetz
2015/02/23 19:57:45
Acknowledged.
| |
753 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.\"'")); | |
754 | |
755 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.6\"'")); | |
wolenetz
2015/02/18 22:44:33
nit: include comments in this method identifying w
ddorwin
2015/02/20 05:26:23
Hmm. I'm not sure how to do this without adding mo
wolenetz
2015/02/23 19:57:44
(nit) Perhaps a comment section at the top of this
ddorwin
2015/02/24 00:09:20
Done.
| |
756 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.60\"'")); | |
757 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.61\"'")); | |
758 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.62\"'")); | |
759 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.63\"'")); | |
760 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.65\"'")); | |
761 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.65\"'")); | |
762 // MPEG2 AAC Main, LC, and SSR are supported except on Android. | |
763 EXPECT_EQ(kMpeg2AacProbably, CanPlay("'audio/mp4; codecs=\"mp4a.66\"'")); | |
764 EXPECT_EQ(kMpeg2AacProbably, CanPlay("'audio/mp4; codecs=\"mp4a.67\"'")); | |
765 EXPECT_EQ(kMpeg2AacProbably, CanPlay("'audio/mp4; codecs=\"mp4a.68\"'")); | |
766 // MP3. | |
767 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.69\"'")); | |
768 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.6A\"'")); | |
769 // MP3. | |
770 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.6B\"'")); | |
771 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.6b\"'")); | |
772 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.6C\"'")); | |
773 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.6D\"'")); | |
774 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.6E\"'")); | |
775 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.6F\"'")); | |
776 | |
777 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.76\"'")); | |
778 | |
779 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.4\"'")); | |
780 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.39\"'")); | |
781 | |
782 // mp4a.40 without further extension is ambiguous and results in "maybe". | |
783 EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4; codecs=\"mp4a.40\"'")); | |
784 | |
785 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.40.\"'")); | |
786 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.40.0\"'")); | |
787 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.40.1\"'")); | |
788 // MPEG4 AAC LC. | |
789 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.2\"'")); | |
790 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.40.3\"'")); | |
791 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.40.4\"'")); | |
792 // MPEG4 AAC SBR v1. | |
793 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.5\"'")); | |
794 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.40.6\"'")); | |
795 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.40.7\"'")); | |
796 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.40.8\"'")); | |
797 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.40.9\"'")); | |
798 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.40.10\"'")); | |
799 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.40.20\"'")); | |
800 // MPEG4 AAC SBR PS v2. | |
801 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.29\"'")); | |
wolenetz
2015/02/18 22:44:33
nit: try mp4a.40.1D, mp4a.40.1d, mp4a.40.41 should
ddorwin
2015/02/20 05:26:24
Done.
| |
802 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.40.30\"'")); | |
803 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.40.40\"'")); | |
804 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.40.50\"'")); | |
805 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.40.290\"'")); | |
806 | |
807 // Allow leading zeros in aud-oti for specific MPEG4 AAC strings. | |
808 // See http://crbug.com/440607. | |
809 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.40.00\"'")); | |
810 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.40.01\"'")); | |
811 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.02\"'")); | |
812 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.40.03\"'")); | |
813 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.40.04\"'")); | |
814 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.05\"'")); | |
815 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.40.029\"'")); | |
816 | |
817 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.41\"'")); | |
818 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.41.2\"'")); | |
819 | |
820 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.4.2\"'")); | |
821 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.400.2\"'")); | |
822 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.040.2\"'")); | |
823 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.4.5\"'")); | |
824 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.400.5\"'")); | |
825 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.040.5\"'")); | |
826 } | |
827 | |
537 IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_HLS) { | 828 IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_HLS) { |
538 // HLS are supported only on Android IceCreamSandwich and above (API level 14) | 829 // HLS are supported only on Android IceCreamSandwich and above (API level 14) |
539 std::string probablyCanPlayHLS = kNot; | 830 std::string probablyCanPlayHLS = kNot; |
540 std::string maybeCanPlayHLS = kNot; | 831 std::string maybeCanPlayHLS = kNot; |
541 #if defined(OS_ANDROID) | 832 #if defined(OS_ANDROID) |
542 if (base::android::BuildInfo::GetInstance()->sdk_int() > 13) { | 833 if (base::android::BuildInfo::GetInstance()->sdk_int() > 13) { |
543 probablyCanPlayHLS = kProbably; | 834 probablyCanPlayHLS = kProbably; |
544 maybeCanPlayHLS = kMaybe; | 835 maybeCanPlayHLS = kMaybe; |
545 } | 836 } |
546 #endif | 837 #endif |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
659 CanPlay("'application/vnd.apple.mpegurl; " | 950 CanPlay("'application/vnd.apple.mpegurl; " |
660 "codecs=\"avc1.42E01E, mp4a.40\"'")); | 951 "codecs=\"avc1.42E01E, mp4a.40\"'")); |
661 EXPECT_EQ(maybeCanPlayHLS, | 952 EXPECT_EQ(maybeCanPlayHLS, |
662 CanPlay("'application/vnd.apple.mpegurl; " | 953 CanPlay("'application/vnd.apple.mpegurl; " |
663 "codecs=\"avc3.42E01E, mp4a.40\"'")); | 954 "codecs=\"avc3.42E01E, mp4a.40\"'")); |
664 | 955 |
665 TestMPEGUnacceptableCombinations("application/vnd.apple.mpegurl"); | 956 TestMPEGUnacceptableCombinations("application/vnd.apple.mpegurl"); |
666 } | 957 } |
667 | 958 |
668 } // namespace content | 959 } // namespace content |
OLD | NEW |