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" |
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
166 | 166 |
167 // Unknown codecs. | 167 // Unknown codecs. |
168 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc2\"'")); | 168 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc2\"'")); |
169 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc4\"'")); | 169 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc4\"'")); |
170 | 170 |
171 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1x\"'")); | 171 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1x\"'")); |
172 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3x\"'")); | 172 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3x\"'")); |
173 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4ax\"'")); | 173 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4ax\"'")); |
174 | 174 |
175 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"unknown\"'")); | 175 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"unknown\"'")); |
176 | |
177 // Don't allow incomplete/ambiguous codec ids for HEVC. | |
178 // Codec string must have info about codec level/profile, e.g. hvc1.1.L0.0 | |
179 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hev1\"'")); | |
180 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hvc1\"'")); | |
181 // Make sure trailing dots are not allowed. | |
182 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hev1.\"'")); | |
183 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hvc1.\"'")); | |
184 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hev1.1.L0.0.\"'")); | |
185 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hvc1.1.L0.0.\"'")); | |
186 | |
187 // Invalid codecs that look like something similar to HEVC/H.265 | |
188 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hev1x\"'")); | |
189 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hvc1x\"'")); | |
190 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hvc0.1.L0.0\"'")); | |
191 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hev0.1.L0.0\"'")); | |
192 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hvc2.1.L0.0\"'")); | |
193 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hev2.1.L0.0\"'")); | |
176 } | 194 } |
177 | 195 |
178 void TestOGGUnacceptableCombinations(const std::string& mime) { | 196 void TestOGGUnacceptableCombinations(const std::string& mime) { |
179 // Codecs not belonging to OGG container. | 197 // Codecs not belonging to OGG container. |
180 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp8\"'")); | 198 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp8\"'")); |
181 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp8.0\"'")); | 199 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp8.0\"'")); |
182 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp8, opus\"'")); | 200 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp8, opus\"'")); |
183 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp8, vorbis\"'")); | 201 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp8, vorbis\"'")); |
184 | 202 |
185 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp9\"'")); | 203 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp9\"'")); |
(...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
481 | 499 |
482 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1, mp4a.40.2\"'")); | 500 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1, mp4a.40.2\"'")); |
483 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1, mp4a.40.02\"'")); | 501 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1, mp4a.40.02\"'")); |
484 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc3, mp4a.40.2\"'")); | 502 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc3, mp4a.40.2\"'")); |
485 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc3, mp4a.40.02\"'")); | 503 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc3, mp4a.40.02\"'")); |
486 EXPECT_EQ(kPropMaybe, | 504 EXPECT_EQ(kPropMaybe, |
487 CanPlay("'video/mp4; codecs=\"avc1.42E01E, mp4a.40\"'")); | 505 CanPlay("'video/mp4; codecs=\"avc1.42E01E, mp4a.40\"'")); |
488 EXPECT_EQ(kPropMaybe, | 506 EXPECT_EQ(kPropMaybe, |
489 CanPlay("'video/mp4; codecs=\"avc3.42E01E, mp4a.40\"'")); | 507 CanPlay("'video/mp4; codecs=\"avc3.42E01E, mp4a.40\"'")); |
490 | 508 |
509 const char* kHevcSupported = kNot; | |
ddorwin
2015/03/25 18:02:58
It's odd to define a constant like this in the mid
| |
510 #if defined(ENABLE_HEVC_DEMUXING) | |
511 kHevcSupported = kPropProbably; | |
512 #endif | |
513 | |
514 // TODO(servolk): Add more unit test coverage once we have more info about | |
515 // various HEVC levels/profiles. | |
516 EXPECT_EQ(kHevcSupported, CanPlay("'video/mp4; codecs=\"hvc1.1.L0.0\"'")); | |
517 EXPECT_EQ(kHevcSupported, CanPlay("'video/mp4; codecs=\"hev1.1.L0.0\"'")); | |
518 EXPECT_EQ(kHevcSupported, | |
519 CanPlay("'video/mp4; codecs=\"hvc1.1.L0.0, mp4a.40.5\"'")); | |
520 EXPECT_EQ(kHevcSupported, | |
521 CanPlay("'video/mp4; codecs=\"hev1.1.L0.0, mp4a.40.5\"'")); | |
522 | |
491 TestMPEGUnacceptableCombinations("video/mp4"); | 523 TestMPEGUnacceptableCombinations("video/mp4"); |
492 | 524 |
493 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v'")); | 525 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v'")); |
494 | 526 |
495 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc1\"'")); | 527 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc1\"'")); |
496 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc3\"'")); | 528 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc3\"'")); |
497 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"mp4a.40\"'")); | 529 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"mp4a.40\"'")); |
498 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc1, mp4a.40\"'")); | 530 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc1, mp4a.40\"'")); |
499 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc3, mp4a.40\"'")); | 531 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc3, mp4a.40\"'")); |
500 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc1, avc3\"'")); | 532 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc1, avc3\"'")); |
(...skipping 23 matching lines...) Expand all Loading... | |
524 | 556 |
525 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc1, mp4a.40.2\"'")); | 557 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc1, mp4a.40.2\"'")); |
526 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc1, mp4a.40.02\"'")); | 558 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc1, mp4a.40.02\"'")); |
527 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc3, mp4a.40.2\"'")); | 559 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc3, mp4a.40.2\"'")); |
528 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc3, mp4a.40.02\"'")); | 560 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc3, mp4a.40.02\"'")); |
529 EXPECT_EQ(kPropMaybe, | 561 EXPECT_EQ(kPropMaybe, |
530 CanPlay("'video/x-m4v; codecs=\"avc1.42E01E, mp4a.40\"'")); | 562 CanPlay("'video/x-m4v; codecs=\"avc1.42E01E, mp4a.40\"'")); |
531 EXPECT_EQ(kPropMaybe, | 563 EXPECT_EQ(kPropMaybe, |
532 CanPlay("'video/x-m4v; codecs=\"avc3.42E01E, mp4a.40\"'")); | 564 CanPlay("'video/x-m4v; codecs=\"avc3.42E01E, mp4a.40\"'")); |
533 | 565 |
566 EXPECT_EQ(kHevcSupported, CanPlay("'video/x-m4v; codecs=\"hvc1.1.L0.0\"'")); | |
567 EXPECT_EQ(kHevcSupported, CanPlay("'video/x-m4v; codecs=\"hev1.1.L0.0\"'")); | |
568 EXPECT_EQ(kHevcSupported, | |
569 CanPlay("'video/x-m4v; codecs=\"hvc1.1.L0.0, mp4a.40.5\"'")); | |
570 EXPECT_EQ(kHevcSupported, | |
571 CanPlay("'video/x-m4v; codecs=\"hev1.1.L0.0, mp4a.40.5\"'")); | |
572 | |
534 TestMPEGUnacceptableCombinations("video/x-m4v"); | 573 TestMPEGUnacceptableCombinations("video/x-m4v"); |
535 | 574 |
536 EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4'")); | 575 EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4'")); |
537 EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4; codecs=\"mp4a.40\"'")); | 576 EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4; codecs=\"mp4a.40\"'")); |
538 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.2\"'")); | 577 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.2\"'")); |
539 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.02\"'")); | 578 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.02\"'")); |
540 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.5\"'")); | 579 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.5\"'")); |
541 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.05\"'")); | 580 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.05\"'")); |
542 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.29\"'")); | 581 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.29\"'")); |
543 | 582 |
544 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc1\"'")); | 583 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc1\"'")); |
545 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc3\"'")); | 584 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc3\"'")); |
546 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc1, mp4a.40\"'")); | 585 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc1, mp4a.40\"'")); |
547 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc3, mp4a.40\"'")); | 586 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc3, mp4a.40\"'")); |
548 | 587 |
549 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc1.4D401E\"'")); | 588 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc1.4D401E\"'")); |
550 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc3.64001F\"'")); | 589 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc3.64001F\"'")); |
551 | 590 |
591 EXPECT_EQ(kHevcSupported, CanPlay("'audio/mp4; codecs=\"hvc1.1.L0.0\"'")); | |
592 EXPECT_EQ(kHevcSupported, CanPlay("'audio/mp4; codecs=\"hev1.1.L0.0\"'")); | |
593 EXPECT_EQ(kHevcSupported, | |
594 CanPlay("'audio/mp4; codecs=\"hvc1.1.L0.0, mp4a.40.5\"'")); | |
595 EXPECT_EQ(kHevcSupported, | |
596 CanPlay("'audio/mp4; codecs=\"hev1.1.L0.0, mp4a.40.5\"'")); | |
597 | |
552 TestMPEGUnacceptableCombinations("audio/mp4"); | 598 TestMPEGUnacceptableCombinations("audio/mp4"); |
553 | 599 |
554 EXPECT_EQ(kPropMaybe, CanPlay("'audio/x-m4a'")); | 600 EXPECT_EQ(kPropMaybe, CanPlay("'audio/x-m4a'")); |
555 EXPECT_EQ(kPropMaybe, CanPlay("'audio/x-m4a; codecs=\"mp4a.40\"'")); | 601 EXPECT_EQ(kPropMaybe, CanPlay("'audio/x-m4a; codecs=\"mp4a.40\"'")); |
556 EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.40.2\"'")); | 602 EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.40.2\"'")); |
557 EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.40.02\"'")); | 603 EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.40.02\"'")); |
558 EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.40.5\"'")); | 604 EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.40.5\"'")); |
559 EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.40.05\"'")); | 605 EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.40.05\"'")); |
560 EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.40.29\"'")); | 606 EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.40.29\"'")); |
561 | 607 |
562 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc1\"'")); | 608 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc1\"'")); |
563 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc3\"'")); | 609 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc3\"'")); |
564 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc1, mp4a\"'")); | 610 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc1, mp4a\"'")); |
565 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc3, mp4a\"'")); | 611 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc3, mp4a\"'")); |
566 | 612 |
567 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc1.4D401E\"'")); | 613 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc1.4D401E\"'")); |
568 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc3.64001F\"'")); | 614 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc3.64001F\"'")); |
569 | 615 |
616 EXPECT_EQ(kHevcSupported, CanPlay("'audio/x-m4a; codecs=\"hvc1.1.L0.0\"'")); | |
617 EXPECT_EQ(kHevcSupported, CanPlay("'audio/x-m4a; codecs=\"hev1.1.L0.0\"'")); | |
618 EXPECT_EQ(kHevcSupported, | |
619 CanPlay("'audio/x-m4a; codecs=\"hvc1.1.L0.0, mp4a.40.5\"'")); | |
620 EXPECT_EQ(kHevcSupported, | |
621 CanPlay("'audio/x-m4a; codecs=\"hev1.1.L0.0, mp4a.40.5\"'")); | |
622 | |
570 TestMPEGUnacceptableCombinations("audio/x-m4a"); | 623 TestMPEGUnacceptableCombinations("audio/x-m4a"); |
571 } | 624 } |
572 | 625 |
573 // When modifying this test, also change CodecSupportTest_Avc3Variants. | 626 // When modifying this test, also change CodecSupportTest_Avc3Variants. |
574 IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_Avc1Variants) { | 627 IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_Avc1Variants) { |
575 // avc1 without extensions results in "maybe" for compatibility. | 628 // avc1 without extensions results in "maybe" for compatibility. |
576 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1\"'")); | 629 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1\"'")); |
577 | 630 |
578 // Any 6-digit hexadecimal number will result in at least "maybe". | 631 // Any 6-digit hexadecimal number will result in at least "maybe". |
579 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.123456\"'")); | 632 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.123456\"'")); |
(...skipping 455 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1035 CanPlay("'application/vnd.apple.mpegurl; " | 1088 CanPlay("'application/vnd.apple.mpegurl; " |
1036 "codecs=\"avc1.42E01E, mp4a.40\"'")); | 1089 "codecs=\"avc1.42E01E, mp4a.40\"'")); |
1037 EXPECT_EQ(maybeCanPlayHLS, | 1090 EXPECT_EQ(maybeCanPlayHLS, |
1038 CanPlay("'application/vnd.apple.mpegurl; " | 1091 CanPlay("'application/vnd.apple.mpegurl; " |
1039 "codecs=\"avc3.42E01E, mp4a.40\"'")); | 1092 "codecs=\"avc3.42E01E, mp4a.40\"'")); |
1040 | 1093 |
1041 TestMPEGUnacceptableCombinations("application/vnd.apple.mpegurl"); | 1094 TestMPEGUnacceptableCombinations("application/vnd.apple.mpegurl"); |
1042 } | 1095 } |
1043 | 1096 |
1044 } // namespace content | 1097 } // namespace content |
OLD | NEW |