Chromium Code Reviews| Index: chrome/browser/media/encrypted_media_istypesupported_browsertest.cc |
| diff --git a/chrome/browser/media/encrypted_media_istypesupported_browsertest.cc b/chrome/browser/media/encrypted_media_istypesupported_browsertest.cc |
| index 6685abbb09f81838253a07ecca1047384f06566f..c96d5782156dad0db758e74e4638c5b9ce40782c 100644 |
| --- a/chrome/browser/media/encrypted_media_istypesupported_browsertest.cc |
| +++ b/chrome/browser/media/encrypted_media_istypesupported_browsertest.cc |
| @@ -155,12 +155,13 @@ class EncryptedMediaIsTypeSupportedTest : public InProcessBrowserTest { |
| // |pepper_type_for_key_system|. |
| void RegisterPepperCdm(CommandLine* command_line, |
| const std::string& adapter_name, |
| - const std::string& pepper_type_for_key_system) { |
| + const std::string& pepper_type_for_key_system, |
| + bool expect_adapter_exists = true) { |
|
Bernhard Bauer
2013/09/16 19:16:03
Default arguments aren't allowed per the style gui
ddorwin
2013/09/16 21:44:51
It seems this falls under the specific exception f
|
| // Append the switch to register the appropriate adapter. |
| base::FilePath plugin_dir; |
| EXPECT_TRUE(PathService::Get(base::DIR_MODULE, &plugin_dir)); |
| base::FilePath plugin_lib = plugin_dir.AppendASCII(adapter_name); |
| - EXPECT_TRUE(base::PathExists(plugin_lib)); |
| + EXPECT_EQ(expect_adapter_exists, base::PathExists(plugin_lib)); |
| base::FilePath::StringType pepper_plugin = plugin_lib.value(); |
| pepper_plugin.append(FILE_PATH_LITERAL("#CDM#0.1.0.0;")); |
| #if defined(OS_WIN) |
| @@ -199,7 +200,7 @@ class EncryptedMediaIsTypeSupportedTest : public InProcessBrowserTest { |
| browser()->tab_strip_model()->GetActiveWebContents(), |
| command, |
| &result)); |
| - DCHECK(result == "success" || result == "NotSupportedError"); |
| + CHECK(result == "success" || result == "NotSupportedError") << result; |
| return (result == "success"); |
| } |
| @@ -296,8 +297,27 @@ class EncryptedMediaIsTypeSupportedWidevineTest |
| const std::string pepper_name("application/x-ppapi-widevine-cdm"); |
| RegisterPepperCdm(command_line, adapter_file_name, pepper_name); |
| } |
| -#endif // defined(ENABLE_PEPPER_CDMS) |
| +#endif // defined(WIDEVINE_CDM_AVAILABLE) && defined(ENABLE_PEPPER_CDMS) |
| +}; |
| + |
| +#if defined(ENABLE_PEPPER_CDMS) |
| +// Registers all possibly supported Pepper CDMs with the wrong path (filename). |
| +class EncryptedMediaIsTypeSupportedPepperCDMRegisteredWithWrongPathTest |
| + : public EncryptedMediaIsTypeSupportedTest { |
| + protected: |
| + virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { |
| + RegisterPepperCdm(command_line, |
| + "clearkeycdmadapterwrongname.dll", |
| + "application/x-ppapi-clearkey-cdm", |
| + false); |
| + RegisterPepperCdm(command_line, |
| + "widevinecdmadapterwrongname.dll", |
| + "application/x-ppapi-widevine-cdm", |
| + false); |
| + } |
| }; |
| +#endif // defined(ENABLE_PEPPER_CDMS) |
| + |
| IN_PROC_BROWSER_TEST_F(EncryptedMediaIsTypeSupportedTest, ClearKey_Basic) { |
| EXPECT_TRUE(IsConcreteSupportedKeySystem(kPrefixedClearKey)); |
| @@ -471,6 +491,7 @@ IN_PROC_BROWSER_TEST_F(EncryptedMediaIsTypeSupportedTest, |
| // External Clear Key |
| // |
| +// When defined(ENABLE_PEPPER_CDMS), this also tests the Pepper CDM check. |
| IN_PROC_BROWSER_TEST_F(EncryptedMediaIsTypeSupportedExternalClearKeyTest, |
| ExternalClearKey_Basic) { |
| EXPECT_ECK(IsConcreteSupportedKeySystem(kExternalClearKey)); |
| @@ -831,4 +852,63 @@ IN_PROC_BROWSER_TEST_F(EncryptedMediaIsTypeSupportedWidevineTest, |
| "audio/mp4", vorbis_codec(), kWidevineAlpha)); |
| } |
| +#if defined(ENABLE_PEPPER_CDMS) |
| +// Since this test fixture does not register the CDMs on the command line, the |
| +// check for the CDMs in chrome_key_systems.cc should fail, and they should not |
| +// be registered with KeySystems. |
| +IN_PROC_BROWSER_TEST_F(EncryptedMediaIsTypeSupportedTest, |
| + PepperCDMsNotRegistered) { |
| + EXPECT_FALSE(IsConcreteSupportedKeySystem(kExternalClearKey)); |
| + EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType( |
| + "video/webm", no_codecs(), kExternalClearKey)); |
| + |
| + // This will fail in all builds unless widevine is available but not a |
| + // component, in which case it is registered internally |
| +#if !defined(WIDEVINE_CDM_AVAILABLE) || defined(WIDEVINE_CDM_IS_COMPONENT) |
| + EXPECT_FALSE(IsConcreteSupportedKeySystem(kWidevineAlpha)); |
| + EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType( |
| + "video/webm", no_codecs(), kWidevineAlpha)); |
| +#endif |
| + |
| + // Clear Key should still be registered. |
| + EXPECT_TRUE(IsConcreteSupportedKeySystem(kPrefixedClearKey)); |
| + EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType( |
| + "video/webm", no_codecs(), kPrefixedClearKey)); |
| + |
| + // Not yet out from behind the vendor prefix. |
| + EXPECT_FALSE(IsConcreteSupportedKeySystem(kUnprefixedClearKey)); |
| + EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType( |
| + "video/webm", no_codecs(), kUnprefixedClearKey)); |
| +} |
| + |
| +// Since this test fixture does not register the CDMs on the command line, the |
| +// check for the CDMs in chrome_key_systems.cc should fail, and they should not |
| +// be registered with KeySystems. |
| +IN_PROC_BROWSER_TEST_F( |
| + EncryptedMediaIsTypeSupportedPepperCDMRegisteredWithWrongPathTest, |
| + PepperCDMsRegisteredButAdapterNotPresent) { |
| + EXPECT_FALSE(IsConcreteSupportedKeySystem(kExternalClearKey)); |
| + EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType( |
| + "video/webm", no_codecs(), kExternalClearKey)); |
| + |
| + // This will fail in all builds unless widevine is available but not a |
| + // component, in which case it is registered internally |
| +#if !defined(WIDEVINE_CDM_AVAILABLE) || defined(WIDEVINE_CDM_IS_COMPONENT) |
| + EXPECT_FALSE(IsConcreteSupportedKeySystem(kWidevineAlpha)); |
| + EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType( |
| + "video/webm", no_codecs(), kWidevineAlpha)); |
| +#endif |
| + |
| + // Clear Key should still be registered. |
| + EXPECT_TRUE(IsConcreteSupportedKeySystem(kPrefixedClearKey)); |
| + EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType( |
| + "video/webm", no_codecs(), kPrefixedClearKey)); |
| + |
| + // Not yet out from behind the vendor prefix. |
| + EXPECT_FALSE(IsConcreteSupportedKeySystem(kUnprefixedClearKey)); |
| + EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType( |
| + "video/webm", no_codecs(), kUnprefixedClearKey)); |
| +} |
| +#endif // defined(ENABLE_PEPPER_CDMS) |
| + |
| } // namespace chrome |