(reland) madia: Add helper function to register pepper CDMs
This relands commit eb61e1d9dde1d6c02919c3716a2fd6729267cbac with fix.
Original CL description:
This removes duplicate pepper CDM registration code.
Fix:
In chrome_content_renderer_client.cc, we whitelist Widevine CDM using
the plugin display name. So in content_settings_browsertest.cc I should
pass in the corrent display name for Widevine CDM.
[email protected],[email protected]
BUG=610581,582622
Review-Url: https://codereview.chromium.org/1991963002
Cr-Commit-Position: refs/heads/master@{#394574}
diff --git a/chrome/browser/media/encrypted_media_browsertest.cc b/chrome/browser/media/encrypted_media_browsertest.cc
index ffcf367..78cd3c8 100644
--- a/chrome/browser/media/encrypted_media_browsertest.cc
+++ b/chrome/browser/media/encrypted_media_browsertest.cc
@@ -23,21 +23,11 @@
#include "base/android/build_info.h"
#endif
-#include "widevine_cdm_version.h" // In SHARED_INTERMEDIATE_DIR.
-
#if defined(ENABLE_PEPPER_CDMS)
-// Platform-specific filename relative to the chrome executable.
-const char kClearKeyCdmAdapterFileName[] =
-#if defined(OS_MACOSX)
- "clearkeycdmadapter.plugin";
-#elif defined(OS_WIN)
- "clearkeycdmadapter.dll";
-#elif defined(OS_POSIX)
- "libclearkeycdmadapter.so";
+#include "chrome/browser/media/pepper_cdm_test_helper.h"
#endif
-const char kClearKeyCdmPluginMimeType[] = "application/x-ppapi-clearkey-cdm";
-#endif // defined(ENABLE_PEPPER_CDMS)
+#include "widevine_cdm_version.h" // In SHARED_INTERMEDIATE_DIR.
// Available key systems.
const char kClearKeyKeySystem[] = "org.w3.clearkey";
@@ -108,7 +98,7 @@
// Base class for encrypted media tests.
class EncryptedMediaTestBase : public MediaBrowserTest {
public:
- EncryptedMediaTestBase() : is_pepper_cdm_registered_(false) {}
+ EncryptedMediaTestBase() {}
bool IsExternalClearKey(const std::string& key_system) {
if (key_system == kExternalClearKeyKeySystem)
@@ -261,56 +251,17 @@
#if defined(ENABLE_PEPPER_CDMS)
if (IsExternalClearKey(key_system)) {
- RegisterPepperCdm(command_line, kClearKeyCdmAdapterFileName, key_system);
+ RegisterPepperCdm(command_line, kClearKeyCdmAdapterFileName,
+ kClearKeyCdmDisplayName, kClearKeyCdmPepperMimeType);
}
#if defined(WIDEVINE_CDM_AVAILABLE) && defined(WIDEVINE_CDM_IS_COMPONENT)
else if (IsWidevine(key_system)) { // NOLINT
- RegisterPepperCdm(command_line, kWidevineCdmAdapterFileName, key_system);
+ RegisterPepperCdm(command_line, kWidevineCdmAdapterFileName,
+ kWidevineCdmDisplayName, kWidevineCdmPluginMimeType);
}
#endif // defined(WIDEVINE_CDM_AVAILABLE) && defined(WIDEVINE_CDM_IS_COMPONENT)
#endif // defined(ENABLE_PEPPER_CDMS)
}
-
- private:
-#if defined(ENABLE_PEPPER_CDMS)
- void RegisterPepperCdm(base::CommandLine* command_line,
- const std::string& adapter_name,
- const std::string& key_system) {
- DCHECK(!is_pepper_cdm_registered_)
- << "RegisterPepperCdm() can only be called once.";
- is_pepper_cdm_registered_ = true;
-
- // Append the switch to register the Clear Key CDM 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)) << plugin_lib.value();
- base::FilePath::StringType pepper_plugin = plugin_lib.value();
- pepper_plugin.append(FILE_PATH_LITERAL("#CDM#0.1.0.0;"));
-#if defined(OS_WIN)
- pepper_plugin.append(base::ASCIIToUTF16(GetPepperType(key_system)));
-#else
- pepper_plugin.append(GetPepperType(key_system));
-#endif
- command_line->AppendSwitchNative(switches::kRegisterPepperPlugins,
- pepper_plugin);
- }
-
- // Adapted from key_systems.cc.
- std::string GetPepperType(const std::string& key_system) {
- if (IsExternalClearKey(key_system))
- return kClearKeyCdmPluginMimeType;
-#if defined(WIDEVINE_CDM_AVAILABLE)
- if (IsWidevine(key_system))
- return kWidevineCdmPluginMimeType;
-#endif // WIDEVINE_CDM_AVAILABLE
-
- NOTREACHED();
- return "";
- }
-#endif // defined(ENABLE_PEPPER_CDMS)
-
- bool is_pepper_cdm_registered_;
};
#if defined(ENABLE_PEPPER_CDMS)