| Index: chrome/browser/media/encrypted_media_browsertest.cc
|
| diff --git a/chrome/browser/media/encrypted_media_browsertest.cc b/chrome/browser/media/encrypted_media_browsertest.cc
|
| index 738b6d85088225c80aedb3141f040068a0b8dd9a..21d2bb4fe15da4bbe316f4275e904ca34c020c65 100644
|
| --- a/chrome/browser/media/encrypted_media_browsertest.cc
|
| +++ b/chrome/browser/media/encrypted_media_browsertest.cc
|
| @@ -41,7 +41,6 @@ const char kClearKeyCdmPluginMimeType[] = "application/x-ppapi-clearkey-cdm";
|
|
|
| // Available key systems.
|
| const char kClearKeyKeySystem[] = "org.w3.clearkey";
|
| -const char kPrefixedClearKeyKeySystem[] = "webkit-org.w3.clearkey";
|
| const char kExternalClearKeyKeySystem[] = "org.chromium.externalclearkey";
|
| const char kExternalClearKeyFileIOTestKeySystem[] =
|
| "org.chromium.externalclearkey.fileiotest";
|
| @@ -74,9 +73,7 @@ const char kEmeLoadFailed[] = "EME_LOAD_FAILED";
|
| const char kEmeUpdateFailed[] = "EME_UPDATE_FAILED";
|
| const char kEmeErrorEvent[] = "EME_ERROR_EVENT";
|
| const char kEmeMessageUnexpectedType[] = "EME_MESSAGE_UNEXPECTED_TYPE";
|
| -const char kPrefixedEmeRenewalMissingHeader[] =
|
| - "PREFIXED_EME_RENEWAL_MISSING_HEADER";
|
| -const char kPrefixedEmeErrorEvent[] = "PREFIXED_EME_ERROR_EVENT";
|
| +const char kEmeRenewalMissingHeader[] = "EME_RENEWAL_MISSING_HEADER";
|
|
|
| const char kDefaultEmePlayer[] = "eme_player.html";
|
|
|
| @@ -86,12 +83,6 @@ enum SrcType {
|
| MSE
|
| };
|
|
|
| -// Whether to use prefixed or unprefixed EME.
|
| -enum EmeVersion {
|
| - PREFIXED,
|
| - UNPREFIXED
|
| -};
|
| -
|
| // Whether the video should be played once or twice.
|
| enum class PlayTwice { NO, YES };
|
|
|
| @@ -159,7 +150,6 @@ class EncryptedMediaTestBase : public MediaBrowserTest {
|
| const std::string& media_type,
|
| const std::string& key_system,
|
| SrcType src_type,
|
| - EmeVersion eme_version,
|
| const std::string& session_to_load,
|
| bool force_invalid_response,
|
| PlayTwice play_twice,
|
| @@ -174,8 +164,6 @@ class EncryptedMediaTestBase : public MediaBrowserTest {
|
| query_params.push_back(std::make_pair("keySystem", key_system));
|
| if (src_type == MSE)
|
| query_params.push_back(std::make_pair("useMSE", "1"));
|
| - if (eme_version == PREFIXED)
|
| - query_params.push_back(std::make_pair("usePrefixedEME", "1"));
|
| if (force_invalid_response)
|
| query_params.push_back(std::make_pair("forceInvalidResponse", "1"));
|
| if (!session_to_load.empty())
|
| @@ -189,18 +177,15 @@ class EncryptedMediaTestBase : public MediaBrowserTest {
|
| void RunSimpleEncryptedMediaTest(const std::string& media_file,
|
| const std::string& media_type,
|
| const std::string& key_system,
|
| - SrcType src_type,
|
| - EmeVersion eme_version) {
|
| + SrcType src_type) {
|
| std::string expected_title = kEnded;
|
| if (!IsPlayBackPossible(key_system)) {
|
| - expected_title = (eme_version == EmeVersion::UNPREFIXED)
|
| - ? kEmeUpdateFailed
|
| - : kPrefixedEmeErrorEvent;
|
| + expected_title = kEmeUpdateFailed;
|
| }
|
|
|
| RunEncryptedMediaTest(kDefaultEmePlayer, media_file, media_type, key_system,
|
| - src_type, eme_version, kNoSessionToLoad, false,
|
| - PlayTwice::NO, expected_title);
|
| + src_type, kNoSessionToLoad, false, PlayTwice::NO,
|
| + expected_title);
|
| // Check KeyMessage received for all key systems.
|
| bool receivedKeyMessage = false;
|
| EXPECT_TRUE(content::ExecuteScriptAndExtractBool(
|
| @@ -260,15 +245,12 @@ class EncryptedMediaTestBase : public MediaBrowserTest {
|
| title_watcher->AlsoWaitForTitle(
|
| base::ASCIIToUTF16(kEmeMessageUnexpectedType));
|
| title_watcher->AlsoWaitForTitle(
|
| - base::ASCIIToUTF16(kPrefixedEmeRenewalMissingHeader));
|
| - title_watcher->AlsoWaitForTitle(base::ASCIIToUTF16(kPrefixedEmeErrorEvent));
|
| + base::ASCIIToUTF16(kEmeRenewalMissingHeader));
|
| }
|
|
|
| void SetUpCommandLine(base::CommandLine* command_line) override {
|
| command_line->AppendSwitch(
|
| switches::kDisableGestureRequirementForMediaPlayback);
|
| - // For simplicity with respect to parameterized tests, enable for all tests.
|
| - command_line->AppendSwitch(switches::kEnablePrefixedEncryptedMedia);
|
| }
|
|
|
| void SetUpCommandLineForKeySystem(const std::string& key_system,
|
| @@ -344,46 +326,16 @@ class ECKEncryptedMediaTest : public EncryptedMediaTestBase {
|
| const std::string& expected_title) {
|
| // Since we do not test playback, arbitrarily choose a test file and source
|
| // type.
|
| - RunEncryptedMediaTest(
|
| - kDefaultEmePlayer, "bear-a_enc-a.webm", kWebMAudioOnly, key_system, SRC,
|
| - UNPREFIXED, kNoSessionToLoad, false, PlayTwice::NO, expected_title);
|
| - }
|
| -
|
| - void TestPlaybackCase(const std::string& session_to_load,
|
| - const std::string& expected_title) {
|
| - RunEncryptedMediaTest(kDefaultEmePlayer, "bear-320x240-v_enc-v.webm",
|
| - kWebMVideoOnly, kExternalClearKeyKeySystem, SRC,
|
| - UNPREFIXED, session_to_load, false, PlayTwice::NO,
|
| - expected_title);
|
| - }
|
| -
|
| - protected:
|
| - void SetUpCommandLine(base::CommandLine* command_line) override {
|
| - EncryptedMediaTestBase::SetUpCommandLine(command_line);
|
| - SetUpCommandLineForKeySystem(kExternalClearKeyKeySystem, command_line);
|
| - }
|
| -};
|
| -
|
| -// Tests encrypted media playback using ExternalClearKey key system in
|
| -// decrypt-and-decode mode for prefixed EME.
|
| -class ECKPrefixedEncryptedMediaTest : public EncryptedMediaTestBase {
|
| - public:
|
| - // We use special |key_system| names to do non-playback related tests, e.g.
|
| - // kExternalClearKeyFileIOTestKeySystem is used to test file IO.
|
| - void TestNonPlaybackCases(const std::string& key_system,
|
| - const std::string& expected_title) {
|
| - // Since we do not test playback, arbitrarily choose a test file and source
|
| - // type.
|
| - RunEncryptedMediaTest(
|
| - kDefaultEmePlayer, "bear-a_enc-a.webm", kWebMAudioOnly, key_system, SRC,
|
| - PREFIXED, kNoSessionToLoad, false, PlayTwice::NO, expected_title);
|
| + RunEncryptedMediaTest(kDefaultEmePlayer, "bear-a_enc-a.webm",
|
| + kWebMAudioOnly, key_system, SRC, kNoSessionToLoad,
|
| + false, PlayTwice::NO, expected_title);
|
| }
|
|
|
| void TestPlaybackCase(const std::string& session_to_load,
|
| const std::string& expected_title) {
|
| RunEncryptedMediaTest(kDefaultEmePlayer, "bear-320x240-v_enc-v.webm",
|
| kWebMVideoOnly, kExternalClearKeyKeySystem, SRC,
|
| - PREFIXED, session_to_load, false, PlayTwice::NO,
|
| + session_to_load, false, PlayTwice::NO,
|
| expected_title);
|
| }
|
|
|
| @@ -410,15 +362,13 @@ class WVEncryptedMediaTest : public EncryptedMediaTestBase {
|
| // Tests encrypted media playback with a combination of parameters:
|
| // - char*: Key system name.
|
| // - SrcType: Use MSE or SRC.
|
| -// - EmeVersion: Use PREFIXED or UNPREFIXED EME.
|
| //
|
| // Note: Only parameterized (*_P) tests can be used. Non-parameterized (*_F)
|
| // tests will crash at GetParam(). To add non-parameterized tests, use
|
| // EncryptedMediaTestBase or one of its subclasses (e.g. WVEncryptedMediaTest).
|
| -class EncryptedMediaTest
|
| - : public EncryptedMediaTestBase,
|
| - public testing::WithParamInterface<
|
| - std::tr1::tuple<const char*, SrcType, EmeVersion> > {
|
| +class EncryptedMediaTest : public EncryptedMediaTestBase,
|
| + public testing::WithParamInterface<
|
| + std::tr1::tuple<const char*, SrcType>> {
|
| public:
|
| std::string CurrentKeySystem() {
|
| return std::tr1::get<0>(GetParam());
|
| @@ -428,17 +378,10 @@ class EncryptedMediaTest
|
| return std::tr1::get<1>(GetParam());
|
| }
|
|
|
| - EmeVersion CurrentEmeVersion() {
|
| - return std::tr1::get<2>(GetParam());
|
| - }
|
| -
|
| void TestSimplePlayback(const std::string& encrypted_media,
|
| const std::string& media_type) {
|
| - RunSimpleEncryptedMediaTest(encrypted_media,
|
| - media_type,
|
| - CurrentKeySystem(),
|
| - CurrentSourceType(),
|
| - CurrentEmeVersion());
|
| + RunSimpleEncryptedMediaTest(encrypted_media, media_type, CurrentKeySystem(),
|
| + CurrentSourceType());
|
| }
|
|
|
| void TestMultiplePlayback(const std::string& encrypted_media,
|
| @@ -446,26 +389,21 @@ class EncryptedMediaTest
|
| DCHECK(IsPlayBackPossible(CurrentKeySystem()));
|
| RunEncryptedMediaTest(kDefaultEmePlayer, encrypted_media, media_type,
|
| CurrentKeySystem(), CurrentSourceType(),
|
| - CurrentEmeVersion(), kNoSessionToLoad, false,
|
| - PlayTwice::YES, kEnded);
|
| + kNoSessionToLoad, false, PlayTwice::YES, kEnded);
|
| }
|
|
|
| void RunInvalidResponseTest() {
|
| - std::string expected_response =
|
| - (CurrentEmeVersion() == EmeVersion::UNPREFIXED)
|
| - ? kEmeUpdateFailed
|
| - : kPrefixedEmeErrorEvent;
|
| - RunEncryptedMediaTest(
|
| - kDefaultEmePlayer, "bear-320x240-av_enc-av.webm", kWebMAudioVideo,
|
| - CurrentKeySystem(), CurrentSourceType(), CurrentEmeVersion(),
|
| - kNoSessionToLoad, true, PlayTwice::NO, expected_response);
|
| + RunEncryptedMediaTest(kDefaultEmePlayer, "bear-320x240-av_enc-av.webm",
|
| + kWebMAudioVideo, CurrentKeySystem(),
|
| + CurrentSourceType(), kNoSessionToLoad, true,
|
| + PlayTwice::NO, kEmeUpdateFailed);
|
| }
|
|
|
| void TestFrameSizeChange() {
|
| - RunEncryptedMediaTest(
|
| - "encrypted_frame_size_change.html", "frame_size_change-av_enc-v.webm",
|
| - kWebMAudioVideo, CurrentKeySystem(), CurrentSourceType(),
|
| - CurrentEmeVersion(), kNoSessionToLoad, false, PlayTwice::NO, kEnded);
|
| + RunEncryptedMediaTest("encrypted_frame_size_change.html",
|
| + "frame_size_change-av_enc-v.webm", kWebMAudioVideo,
|
| + CurrentKeySystem(), CurrentSourceType(),
|
| + kNoSessionToLoad, false, PlayTwice::NO, kEnded);
|
| }
|
|
|
| void TestConfigChange() {
|
| @@ -473,8 +411,6 @@ class EncryptedMediaTest
|
| base::StringPairs query_params;
|
| query_params.push_back(std::make_pair("keySystem", CurrentKeySystem()));
|
| query_params.push_back(std::make_pair("runEncrypted", "1"));
|
| - if (CurrentEmeVersion() == PREFIXED)
|
| - query_params.push_back(std::make_pair("usePrefixedEME", "1"));
|
| RunEncryptedMediaTestPage("mse_config_change.html",
|
| CurrentKeySystem(),
|
| query_params,
|
| @@ -499,7 +435,6 @@ class EncryptedMediaTest
|
| void TestDifferentContainers(EncryptedContainer video_format,
|
| EncryptedContainer audio_format) {
|
| DCHECK(IsMSESupported());
|
| - DCHECK_NE(CurrentEmeVersion(), PREFIXED);
|
| base::StringPairs query_params;
|
| query_params.push_back(std::make_pair("keySystem", CurrentKeySystem()));
|
| query_params.push_back(std::make_pair("runEncrypted", "1"));
|
| @@ -522,93 +457,42 @@ using ::testing::Combine;
|
| using ::testing::Values;
|
|
|
| #if !defined(OS_ANDROID)
|
| -INSTANTIATE_TEST_CASE_P(SRC_ClearKey_Prefixed,
|
| - EncryptedMediaTest,
|
| - Combine(Values(kPrefixedClearKeyKeySystem),
|
| - Values(SRC),
|
| - Values(PREFIXED)));
|
| -
|
| INSTANTIATE_TEST_CASE_P(SRC_ClearKey,
|
| EncryptedMediaTest,
|
| - Combine(Values(kClearKeyKeySystem),
|
| - Values(SRC),
|
| - Values(UNPREFIXED)));
|
| + Combine(Values(kClearKeyKeySystem), Values(SRC)));
|
| #endif // !defined(OS_ANDROID)
|
|
|
| -INSTANTIATE_TEST_CASE_P(MSE_ClearKey_Prefixed,
|
| - EncryptedMediaTest,
|
| - Combine(Values(kPrefixedClearKeyKeySystem),
|
| - Values(MSE),
|
| - Values(PREFIXED)));
|
| INSTANTIATE_TEST_CASE_P(MSE_ClearKey,
|
| EncryptedMediaTest,
|
| - Combine(Values(kClearKeyKeySystem),
|
| - Values(MSE),
|
| - Values(UNPREFIXED)));
|
| + Combine(Values(kClearKeyKeySystem), Values(MSE)));
|
|
|
| // External Clear Key is currently only used on platforms that use Pepper CDMs.
|
| #if defined(ENABLE_PEPPER_CDMS)
|
| -INSTANTIATE_TEST_CASE_P(SRC_ExternalClearKey_Prefixed,
|
| - EncryptedMediaTest,
|
| - Combine(Values(kExternalClearKeyKeySystem),
|
| - Values(SRC),
|
| - Values(PREFIXED)));
|
| INSTANTIATE_TEST_CASE_P(SRC_ExternalClearKey,
|
| EncryptedMediaTest,
|
| Combine(Values(kExternalClearKeyKeySystem),
|
| - Values(SRC),
|
| - Values(UNPREFIXED)));
|
| + Values(SRC)));
|
|
|
| -INSTANTIATE_TEST_CASE_P(MSE_ExternalClearKey_Prefixed,
|
| - EncryptedMediaTest,
|
| - Combine(Values(kExternalClearKeyKeySystem),
|
| - Values(MSE),
|
| - Values(PREFIXED)));
|
| INSTANTIATE_TEST_CASE_P(MSE_ExternalClearKey,
|
| EncryptedMediaTest,
|
| Combine(Values(kExternalClearKeyKeySystem),
|
| - Values(MSE),
|
| - Values(UNPREFIXED)));
|
| + Values(MSE)));
|
|
|
| const char kExternalClearKeyDecryptOnlyKeySystem[] =
|
| "org.chromium.externalclearkey.decryptonly";
|
|
|
| // To reduce test time, only run ExternalClearKeyDecryptOnly with MSE.
|
| -INSTANTIATE_TEST_CASE_P(MSE_ExternalClearKeyDecryptOnly_Prefixed,
|
| - EncryptedMediaTest,
|
| - Combine(Values(kExternalClearKeyDecryptOnlyKeySystem),
|
| - Values(MSE),
|
| - Values(PREFIXED)));
|
| INSTANTIATE_TEST_CASE_P(MSE_ExternalClearKeyDecryptOnly,
|
| EncryptedMediaTest,
|
| Combine(Values(kExternalClearKeyDecryptOnlyKeySystem),
|
| - Values(MSE),
|
| - Values(UNPREFIXED)));
|
| + Values(MSE)));
|
| #endif // defined(ENABLE_PEPPER_CDMS)
|
|
|
| #if defined(WIDEVINE_CDM_AVAILABLE)
|
| -
|
| -// Prefixed Widevine tests fail in Chrome OS official builds due to the request
|
| -// for permissions. Since prefixed EME is deprecated and will be removed soon,
|
| -// don't run these tests. http://crbug.com/430711
|
| -#if !(defined(OS_CHROMEOS) && defined(OFFICIAL_BUILD))
|
| -
|
| -// This test doesn't fully test playback with Widevine. So we only run Widevine
|
| -// test with MSE (no SRC) to reduce test time. Also, on Android EME only works
|
| -// with MSE and we cannot run this test with SRC.
|
| -INSTANTIATE_TEST_CASE_P(MSE_Widevine_Prefixed,
|
| - EncryptedMediaTest,
|
| - Combine(Values(kWidevineKeySystem),
|
| - Values(MSE),
|
| - Values(PREFIXED)));
|
| -#endif // !(defined(OS_CHROMEOS) && defined(OFFICIAL_BUILD))
|
| -
|
| #if !defined(OS_CHROMEOS)
|
| INSTANTIATE_TEST_CASE_P(MSE_Widevine,
|
| EncryptedMediaTest,
|
| - Combine(Values(kWidevineKeySystem),
|
| - Values(MSE),
|
| - Values(UNPREFIXED)));
|
| + Combine(Values(kWidevineKeySystem), Values(MSE)));
|
| #endif // !defined(OS_CHROMEOS)
|
| #endif // defined(WIDEVINE_CDM_AVAILABLE)
|
|
|
| @@ -711,10 +595,6 @@ IN_PROC_BROWSER_TEST_P(EncryptedMediaTest,
|
| DVLOG(0) << "Skipping test; Can only play MP4 encrypted streams by MSE.";
|
| return;
|
| }
|
| - if (CurrentEmeVersion() != UNPREFIXED) {
|
| - DVLOG(0) << "Skipping test; Only supported by unprefixed EME";
|
| - return;
|
| - }
|
| if (!IsPlayBackPossible(CurrentKeySystem())) {
|
| DVLOG(0) << "Skipping test - Test requires video playback.";
|
| return;
|
| @@ -730,10 +610,6 @@ IN_PROC_BROWSER_TEST_P(EncryptedMediaTest,
|
| DVLOG(0) << "Skipping test; Can only play MP4 encrypted streams by MSE.";
|
| return;
|
| }
|
| - if (CurrentEmeVersion() != UNPREFIXED) {
|
| - DVLOG(0) << "Skipping test; Only supported by unprefixed EME";
|
| - return;
|
| - }
|
| if (!IsPlayBackPossible(CurrentKeySystem())) {
|
| DVLOG(0) << "Skipping test - Test requires video playback.";
|
| return;
|
| @@ -749,10 +625,6 @@ IN_PROC_BROWSER_TEST_P(EncryptedMediaTest,
|
| DVLOG(0) << "Skipping test; Can only play MP4 encrypted streams by MSE.";
|
| return;
|
| }
|
| - if (CurrentEmeVersion() != UNPREFIXED) {
|
| - DVLOG(0) << "Skipping test; Only supported by unprefixed EME";
|
| - return;
|
| - }
|
| if (!IsPlayBackPossible(CurrentKeySystem())) {
|
| DVLOG(0) << "Skipping test - Test requires video playback.";
|
| return;
|
| @@ -763,18 +635,11 @@ IN_PROC_BROWSER_TEST_P(EncryptedMediaTest,
|
| #endif // defined(USE_PROPRIETARY_CODECS)
|
|
|
| #if defined(WIDEVINE_CDM_AVAILABLE)
|
| -// The parent key system cannot be used in generateKeyRequest.
|
| -IN_PROC_BROWSER_TEST_F(WVEncryptedMediaTest, ParentThrowsException_Prefixed) {
|
| - RunEncryptedMediaTest(kDefaultEmePlayer, "bear-a_enc-a.webm", kWebMAudioOnly,
|
| - "com.widevine", MSE, PREFIXED, kNoSessionToLoad, false,
|
| - PlayTwice::NO, kEmeNotSupportedError);
|
| -}
|
| -
|
| // The parent key system cannot be used when creating MediaKeys.
|
| IN_PROC_BROWSER_TEST_F(WVEncryptedMediaTest, ParentThrowsException) {
|
| RunEncryptedMediaTest(kDefaultEmePlayer, "bear-a_enc-a.webm", kWebMAudioOnly,
|
| - "com.widevine", MSE, UNPREFIXED, kNoSessionToLoad,
|
| - false, PlayTwice::NO, kEmeNotSupportedError);
|
| + "com.widevine", MSE, kNoSessionToLoad, false,
|
| + PlayTwice::NO, kEmeNotSupportedError);
|
| }
|
| #endif // defined(WIDEVINE_CDM_AVAILABLE)
|
|
|
| @@ -813,39 +678,4 @@ IN_PROC_BROWSER_TEST_F(ECKEncryptedMediaTest, LoadUnknownSession) {
|
| TestPlaybackCase(kUnknownSession, kEmeSessionNotFound);
|
| }
|
|
|
| -IN_PROC_BROWSER_TEST_F(ECKPrefixedEncryptedMediaTest, InitializeCDMFail) {
|
| - TestNonPlaybackCases(kExternalClearKeyInitializeFailKeySystem,
|
| - kPrefixedEmeErrorEvent);
|
| -}
|
| -
|
| -// When CDM crashes, we should still get a decode error.
|
| -// crbug.com/386657
|
| -IN_PROC_BROWSER_TEST_F(ECKPrefixedEncryptedMediaTest,
|
| - DISABLED_CDMCrashDuringDecode) {
|
| - IgnorePluginCrash();
|
| - TestNonPlaybackCases(kExternalClearKeyCrashKeySystem, kError);
|
| -}
|
| -
|
| -// Testing that the media browser test does fail on plugin crash.
|
| -// crbug.com/386657
|
| -IN_PROC_BROWSER_TEST_F(ECKPrefixedEncryptedMediaTest,
|
| - DISABLED_CDMExpectedCrash) {
|
| - // Plugin crash is not ignored by default, the test is expected to fail.
|
| - EXPECT_NONFATAL_FAILURE(
|
| - TestNonPlaybackCases(kExternalClearKeyCrashKeySystem, kError),
|
| - "plugin crash");
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(ECKPrefixedEncryptedMediaTest, FileIOTest) {
|
| - TestNonPlaybackCases(kExternalClearKeyFileIOTestKeySystem,
|
| - kFileIOTestSuccess);
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(ECKPrefixedEncryptedMediaTest, LoadLoadableSession) {
|
| - TestPlaybackCase(kLoadableSession, kEnded);
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(ECKPrefixedEncryptedMediaTest, LoadUnknownSession) {
|
| - TestPlaybackCase(kUnknownSession, kPrefixedEmeErrorEvent);
|
| -}
|
| #endif // defined(ENABLE_PEPPER_CDMS)
|
|
|