(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)