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 for now. | |
ddorwin
2015/03/25 01:21:59
Remove " for now".
servolk
2015/03/25 02:20:20
Done.
| |
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\"'")); | |
ddorwin
2015/03/25 01:21:59
Also test these with a trailing dot.
And valid com
servolk
2015/03/25 02:20:20
Done.
| |
181 | |
182 // Invalid codecs that look like something similar to HEVC/H.265 | |
183 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hev1x\"'")); | |
184 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hvc1x\"'")); | |
185 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hvc0.1.L0.0\"'")); | |
186 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hev0.1.L0.0\"'")); | |
187 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hvc2.1.L0.0\"'")); | |
188 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hev2.1.L0.0\"'")); | |
176 } | 189 } |
177 | 190 |
178 void TestOGGUnacceptableCombinations(const std::string& mime) { | 191 void TestOGGUnacceptableCombinations(const std::string& mime) { |
179 // Codecs not belonging to OGG container. | 192 // Codecs not belonging to OGG container. |
180 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp8\"'")); | 193 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp8\"'")); |
181 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp8.0\"'")); | 194 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp8.0\"'")); |
182 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp8, opus\"'")); | 195 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp8, opus\"'")); |
183 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp8, vorbis\"'")); | 196 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp8, vorbis\"'")); |
184 | 197 |
185 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp9\"'")); | 198 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp9\"'")); |
(...skipping 375 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
561 | 574 |
562 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc1\"'")); | 575 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc1\"'")); |
563 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc3\"'")); | 576 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc3\"'")); |
564 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc1, mp4a\"'")); | 577 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc1, mp4a\"'")); |
565 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc3, mp4a\"'")); | 578 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc3, mp4a\"'")); |
566 | 579 |
567 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc1.4D401E\"'")); | 580 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc1.4D401E\"'")); |
568 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc3.64001F\"'")); | 581 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc3.64001F\"'")); |
569 | 582 |
570 TestMPEGUnacceptableCombinations("audio/x-m4a"); | 583 TestMPEGUnacceptableCombinations("audio/x-m4a"); |
584 | |
585 const char* kHevcSupported = kNot; | |
586 #if defined(ENABLE_HEVC_DEMUXING) | |
587 kHevcSupported = kPropProbably; | |
ddorwin
2015/03/25 01:21:59
Why not just #if/#else?
servolk
2015/03/25 02:20:20
Something like:
#if defined(ENABLE_HEVC_DEMUXING)
ddorwin
2015/03/25 18:02:58
Because immediately changing the value looks weird
servolk
2015/04/29 23:50:32
Done.
ddorwin
2015/06/12 00:52:26
It doesn't look like this was fully addressed. Add
| |
588 #endif | |
589 // TODO(servolk): Add more unit test coverage once we have more info about | |
ddorwin
2015/03/25 01:21:59
Detailed tests of the codec strings probably belon
servolk
2015/03/25 02:20:20
Yes, but that's going to be done when we actually
ddorwin
2015/03/25 18:02:58
I was just saying that the tests wouldn't be at th
servolk
2015/04/29 23:50:32
I think this whole test could use some refactoring
ddorwin
2015/06/12 00:52:26
It is verbose, and that is intentional. We have a
| |
590 // various HEVC levels/profiles. | |
591 EXPECT_EQ(kHevcSupported, CanPlay("'video/mp4; codecs=\"hvc1.1.L0.0\"'")); | |
ddorwin
2015/03/25 01:21:59
You are testing video/mp4 far away from the other
servolk
2015/03/25 02:20:20
Done (except HLS; HEVC is not supported via HLS at
ddorwin
2015/03/25 18:02:58
Then you should have negative tests.
servolk
2015/04/29 23:50:32
Done.
ddorwin
2015/06/12 00:52:26
It doesn't look like this was done. Added comments
| |
592 EXPECT_EQ(kHevcSupported, CanPlay("'video/mp4; codecs=\"hev1.1.L0.0\"'")); | |
593 EXPECT_EQ(kHevcSupported, | |
594 CanPlay("'video/mp4; codecs=\"hvc1.1.L0.0, mp4a.40.5\"'")); | |
595 EXPECT_EQ(kHevcSupported, | |
596 CanPlay("'video/mp4; codecs=\"hev1.1.L0.0, mp4a.40.5\"'")); | |
571 } | 597 } |
572 | 598 |
573 // When modifying this test, also change CodecSupportTest_Avc3Variants. | 599 // When modifying this test, also change CodecSupportTest_Avc3Variants. |
574 IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_Avc1Variants) { | 600 IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_Avc1Variants) { |
575 // avc1 without extensions results in "maybe" for compatibility. | 601 // avc1 without extensions results in "maybe" for compatibility. |
576 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1\"'")); | 602 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1\"'")); |
577 | 603 |
578 // Any 6-digit hexadecimal number will result in at least "maybe". | 604 // Any 6-digit hexadecimal number will result in at least "maybe". |
579 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.123456\"'")); | 605 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.123456\"'")); |
580 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.ABCDEF\"'")); | 606 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.ABCDEF\"'")); |
(...skipping 454 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1035 CanPlay("'application/vnd.apple.mpegurl; " | 1061 CanPlay("'application/vnd.apple.mpegurl; " |
1036 "codecs=\"avc1.42E01E, mp4a.40\"'")); | 1062 "codecs=\"avc1.42E01E, mp4a.40\"'")); |
1037 EXPECT_EQ(maybeCanPlayHLS, | 1063 EXPECT_EQ(maybeCanPlayHLS, |
1038 CanPlay("'application/vnd.apple.mpegurl; " | 1064 CanPlay("'application/vnd.apple.mpegurl; " |
1039 "codecs=\"avc3.42E01E, mp4a.40\"'")); | 1065 "codecs=\"avc3.42E01E, mp4a.40\"'")); |
1040 | 1066 |
1041 TestMPEGUnacceptableCombinations("application/vnd.apple.mpegurl"); | 1067 TestMPEGUnacceptableCombinations("application/vnd.apple.mpegurl"); |
1042 } | 1068 } |
1043 | 1069 |
1044 } // namespace content | 1070 } // namespace content |
OLD | NEW |