| Index: content/browser/media/media_canplaytype_browsertest.cc
|
| diff --git a/content/browser/media/media_canplaytype_browsertest.cc b/content/browser/media/media_canplaytype_browsertest.cc
|
| index 39b1f4724a97a998b38f463ae6134852c289337d..a23b6858fd00ac43f21b4cd746f701d68ce25dcc 100644
|
| --- a/content/browser/media/media_canplaytype_browsertest.cc
|
| +++ b/content/browser/media/media_canplaytype_browsertest.cc
|
| @@ -14,6 +14,7 @@
|
| #include "content/shell/browser/shell.h"
|
| #include "media/base/media_switches.h"
|
| #include "media/media_features.h"
|
| +#include "ui/base/ui_base_switches.h"
|
|
|
| #if defined(OS_ANDROID)
|
| #include "base/android/build_info.h"
|
| @@ -351,8 +352,7 @@ class MediaCanPlayTypeTest : public MediaBrowserTest {
|
| EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp9, opus\"'"));
|
| EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp9, vorbis\"'"));
|
| EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp09\"'"));
|
| - EXPECT_EQ(kNot,
|
| - CanPlay("'" + mime + "; codecs=\"vp09.00.01.08.02.01.01.00\"'"));
|
| + EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp09.00.01.08\"'"));
|
|
|
| EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1\"'"));
|
| EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3\"'"));
|
| @@ -410,10 +410,7 @@ class MediaCanPlayTypeTest : public MediaBrowserTest {
|
| EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp9.0, 1\"'"));
|
| EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp08\"'"));
|
| EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp09\"'"));
|
| - EXPECT_EQ(kNot,
|
| - CanPlay("'" + mime + "; codecs=\"vp08.00.01.08.02.01.01.00\"'"));
|
| - EXPECT_EQ(kNot,
|
| - CanPlay("'" + mime + "; codecs=\"vp09.00.01.08.02.01.01.00\"'"));
|
| + EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp09.00.01.08\"'"));
|
|
|
| EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"theora\"'"));
|
| EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"theora, vorbis\"'"));
|
| @@ -476,10 +473,7 @@ class MediaCanPlayTypeTest : public MediaBrowserTest {
|
| EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp9.0, 1\"'"));
|
| EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp08\"'"));
|
| EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp09\"'"));
|
| - EXPECT_EQ(kNot,
|
| - CanPlay("'" + mime + "; codecs=\"vp08.00.01.08.02.01.01.00\"'"));
|
| - EXPECT_EQ(kNot,
|
| - CanPlay("'" + mime + "; codecs=\"vp09.00.01.08.02.01.01.00\"'"));
|
| + EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp09.00.01.08\"'"));
|
|
|
| EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vorbis\"'"));
|
| EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"opus\"'"));
|
| @@ -571,8 +565,7 @@ class MediaCanPlayTypeTest : public MediaBrowserTest {
|
| EXPECT_EQ(kNot,
|
| CanPlay("'" + mime + "; codecs=\"hvc1.1.6.L93.B0,mp4a.40.5\"'"));
|
|
|
| - EXPECT_EQ(kNot,
|
| - CanPlay("'" + mime + "; codecs=\"vp09.01.01.08.04.03.00.00\"'"));
|
| + EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp09.00.01.08\"'"));
|
|
|
| EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"ac-3\"'"));
|
| EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"ec-3\"'"));
|
| @@ -877,8 +870,7 @@ IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_mp4) {
|
| CanPlay("'video/mp4; codecs=\"hvc1.1.6.L93.B0, mp4a.40.5\"'"));
|
|
|
| // switches::kEnableVp9InMp4 is enabled in MediaBrowserTest.
|
| - EXPECT_EQ(kPropProbably,
|
| - CanPlay("'video/mp4; codecs=\"vp09.00.01.08.02.01.01.00\"'"));
|
| + EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"vp09.00.01.08\"'"));
|
|
|
| TestMPEGUnacceptableCombinations("video/mp4");
|
| EXPECT_EQ(kNot, CanPlay("'video/mp4; codecs=\"flac\"'"));
|
| @@ -938,8 +930,7 @@ IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_mp4) {
|
| EXPECT_EQ(kNot,
|
| CanPlay("'video/x-m4v; codecs=\"hvc1.1.6.L93.B0, mp4a.40.5\"'"));
|
|
|
| - EXPECT_EQ(kNot,
|
| - CanPlay("'video/x-m4v; codecs=\"vp09.00.01.08.02.01.01.00\"'"));
|
| + EXPECT_EQ(kNot, CanPlay("'video/x-m4v; codecs=\"vp09.00.01.08\"'"));
|
|
|
| EXPECT_EQ(kNot, CanPlay("'video/x-m4v; codecs=\"ac-3\"'"));
|
| EXPECT_EQ(kNot, CanPlay("'video/x-m4v; codecs=\"mp4a.a5\"'"));
|
| @@ -983,7 +974,7 @@ IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_mp4) {
|
| EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"hev1.1.6.L93.B0,mp4a.40.5\"'"));
|
| EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"hvc1.1.6.L93.B0,mp4a.40.5\"'"));
|
|
|
| - EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"vp09.00.01.08.02.01.01.00\"'"));
|
| + EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"vp09.00.01.08\"'"));
|
|
|
| EXPECT_EQ(kAc3Eac3Probably, CanPlay("'audio/mp4; codecs=\"ac-3\"'"));
|
| EXPECT_EQ(kAc3Eac3Probably, CanPlay("'audio/mp4; codecs=\"mp4a.a5\"'"));
|
| @@ -1027,8 +1018,7 @@ IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_mp4) {
|
| EXPECT_EQ(kNot,
|
| CanPlay("'audio/x-m4a; codecs=\"hvc1.1.6.L93.B0, mp4a.40.5\"'"));
|
|
|
| - EXPECT_EQ(kNot,
|
| - CanPlay("'audio/x-m4a; codecs=\"vp09.00.01.08.02.01.01.00\"'"));
|
| + EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"vp09.00.01.08\"'"));
|
|
|
| EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"ac-3\"'"));
|
| EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"mp4a.a5\"'"));
|
| @@ -1523,56 +1513,72 @@ IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_Mpeg2TsAudio) {
|
| EXPECT_EQ(kNot, CanPlay("'audio/mp2t; codecs=\"mp4a.40.2\"'"));
|
| }
|
|
|
| -class MediaCanPlayTypeTestMp4Vp9Demuxing
|
| +// New VP9 string is behind a variety of flags depending on container and
|
| +// whether HDR is enabled.
|
| +struct CanPlayTypeNewVp9Params {
|
| + const std::string command_line_flag;
|
| + const std::string container;
|
| + const char* prop_probably;
|
| + const char* prop_maybe;
|
| +};
|
| +
|
| +class MediaCanPlayNewVp9TypeTest
|
| : public MediaCanPlayTypeTest,
|
| - public ::testing::WithParamInterface<bool> {
|
| + public ::testing::WithParamInterface<CanPlayTypeNewVp9Params> {
|
| public:
|
| void SetUpCommandLine(base::CommandLine* command_line) override {
|
| - const bool enable_mp4_vp9_demuxing = GetParam();
|
| - if (enable_mp4_vp9_demuxing)
|
| - command_line->AppendSwitch(switches::kEnableVp9InMp4);
|
| + const CanPlayTypeNewVp9Params& params = GetParam();
|
| + if (!params.command_line_flag.empty())
|
| + command_line->AppendSwitch(params.command_line_flag);
|
| }
|
| };
|
|
|
| -IN_PROC_BROWSER_TEST_P(MediaCanPlayTypeTestMp4Vp9Demuxing,
|
| - CodecSupportTest_Mp4Vp9Variants) {
|
| - // Malformed codecs string.
|
| - EXPECT_EQ(kNot, CanPlay("'video/mp4; codecs=\"vp09.00.-1.08\"'"));
|
| -
|
| - // Codecs strings with missing fields.
|
| - EXPECT_EQ(kNot, CanPlay("'video/mp4; codecs=\"vp09\"'"));
|
| - EXPECT_EQ(kNot, CanPlay("'video/mp4; codecs=\"vp09.00.01.08\"'"));
|
| - EXPECT_EQ(kNot, CanPlay("'video/mp4; codecs=\"vp09.01.01..02.01.01.00\"'"));
|
| - EXPECT_EQ(kNot, CanPlay("'video/mp4; codecs=\"vp09.01.01.08.05.01.01\"'"));
|
| - EXPECT_EQ(kNot, CanPlay("'video/mp4; codecs=\"vp09.04\"'"));
|
| -
|
| - // Unexpected bit depth.
|
| - EXPECT_EQ(kNot, CanPlay("'video/mp4; codecs=\"vp09.01.01.09.02.01.01.00\"'"));
|
| - // Unexpected chroma subsampling.
|
| - EXPECT_EQ(kNot, CanPlay("'video/mp4; codecs=\"vp09.01.01.08.04.04.00.00\"'"));
|
| - // Unexpected transfer function.
|
| - EXPECT_EQ(kNot, CanPlay("'video/mp4; codecs=\"vp09.01.01.08.04.03.02.00\"'"));
|
| - // Unexpected profile.
|
| - EXPECT_EQ(kNot, CanPlay("'video/mp4; codecs=\"vp09.04.01.08.02.01.01.00\"'"));
|
| -
|
| - const bool enable_mp4_vp9_demuxing = GetParam();
|
| - const char* mp4_vp9_probably = enable_mp4_vp9_demuxing ? kPropProbably : kNot;
|
| - const char* mp4_vp9_maybe = enable_mp4_vp9_demuxing ? kPropMaybe : kNot;
|
| -
|
| - EXPECT_EQ(mp4_vp9_probably,
|
| - CanPlay("'video/mp4; codecs=\"vp09.00.01.08.02.01.01.00\"'"));
|
| - EXPECT_EQ(mp4_vp9_probably,
|
| - CanPlay("'video/mp4; codecs=\"vp09.00.01.08.04.03.00.00\"'"));
|
| - EXPECT_EQ(mp4_vp9_maybe,
|
| - CanPlay("'video/mp4; codecs=\"vp09.01.01.08.02.01.01.00\"'"));
|
| - EXPECT_EQ(mp4_vp9_maybe,
|
| - CanPlay("'video/mp4; codecs=\"vp09.02.01.08.02.01.01.00\"'"));
|
| - EXPECT_EQ(mp4_vp9_maybe,
|
| - CanPlay("'video/mp4; codecs=\"vp09.03.01.08.02.01.01.00\"'"));
|
| +// See more complete codec string testing in media/base/video_codecs_unittest.cc
|
| +IN_PROC_BROWSER_TEST_P(MediaCanPlayNewVp9TypeTest,
|
| + CodecSupportTest_NewVp9Variants) {
|
| + const CanPlayTypeNewVp9Params& params = GetParam();
|
| +
|
| + // E.g. "'video/webm; "
|
| + std::string mime_prefix = "'" + params.container + "; ";
|
| +
|
| + // Malformed codecs string never allowed.
|
| + EXPECT_EQ(kNot, CanPlay(mime_prefix + "codecs=\"vp09.00.-1.08\"'"));
|
| +
|
| + const char* new_vp9_probably = params.prop_probably;
|
| + const char* new_vp9_maybe = params.prop_maybe;
|
| +
|
| + // Test a few valid strings.
|
| + EXPECT_EQ(new_vp9_probably,
|
| + CanPlay(mime_prefix + "codecs=\"vp09.00.01.08\"'"));
|
| + EXPECT_EQ(new_vp9_probably,
|
| + CanPlay(mime_prefix + "codecs=\"vp09.00.01.08.01.01.01.00.00\"'"));
|
| +
|
| + // Platform support is sadly ambiguous for profiles > 0.
|
| + // TODO(chcunningham): Plumb proper querying of platform support - give a firm
|
| + // answer.
|
| + EXPECT_EQ(new_vp9_maybe, CanPlay(mime_prefix + "codecs=\"vp09.01.01.08\"'"));
|
| + EXPECT_EQ(new_vp9_maybe, CanPlay(mime_prefix + "codecs=\"vp09.02.01.08\"'"));
|
| + EXPECT_EQ(new_vp9_maybe, CanPlay(mime_prefix + "codecs=\"vp09.03.01.08\"'"));
|
| }
|
|
|
| -INSTANTIATE_TEST_CASE_P(EnableDisableMp4Vp9Demuxing,
|
| - MediaCanPlayTypeTestMp4Vp9Demuxing,
|
| - ::testing::Bool());
|
| +const CanPlayTypeNewVp9Params kNewVp9ParamVariants[] = {
|
| + // Expect CanPlay(...) = kNotEmpty when command line flag empty.
|
| + {"", "video/mp4", kNot, kNot},
|
| + {"", "video/webm", kNot, kNot},
|
| + // Expect CanPlay(...) = kProbably/kMaybe for MP4, but not for WebM for
|
| + // these command line flags.
|
| + {switches::kEnableVp9InMp4, "video/mp4", kPropProbably, kPropMaybe},
|
| + {switches::kEnableVp9InMp4, "video/webm", kNot, kNot},
|
| + // Expect CanPlay(...) = kProbably/kMaybe for WebM, but not for MP4 for
|
| + // these command line flags.
|
| + {switches::kEnableHDROutput, "video/mp4", kNot, kNot},
|
| + {switches::kEnableNewVp9CodecString, "video/mp4", kNot, kNot},
|
| + {switches::kEnableHDROutput, "video/webm", kProbably, kMaybe},
|
| + {switches::kEnableNewVp9CodecString, "video/webm", kProbably, kMaybe},
|
| +};
|
| +
|
| +INSTANTIATE_TEST_CASE_P(CodecSupportTest_NewVp9String,
|
| + MediaCanPlayNewVp9TypeTest,
|
| + ::testing::ValuesIn(kNewVp9ParamVariants));
|
|
|
| } // namespace content
|
|
|