Index: chrome/renderer/media/chrome_key_systems.cc |
diff --git a/chrome/renderer/media/chrome_key_systems.cc b/chrome/renderer/media/chrome_key_systems.cc |
index 5ed6abb1cf6998c4cc57204bd1b3b8d9f9c85168..d71ae8671fae9b6b4bf099a52d5cea662a95bcba 100644 |
--- a/chrome/renderer/media/chrome_key_systems.cc |
+++ b/chrome/renderer/media/chrome_key_systems.cc |
@@ -15,6 +15,7 @@ |
#include "base/strings/utf_string_conversions.h" |
#include "build/build_config.h" |
#include "chrome/common/render_messages.h" |
+#include "components/cdm/renderer/external_clear_key_key_system_properties.h" |
#include "components/cdm/renderer/widevine_key_system_properties.h" |
#include "content/public/renderer/render_thread.h" |
#include "media/base/eme_constants.h" |
@@ -42,9 +43,6 @@ using media::KeySystemProperties; |
using media::SupportedCodecs; |
#if defined(ENABLE_PEPPER_CDMS) |
-static const char kExternalClearKeyPepperType[] = |
- "application/x-ppapi-clearkey-cdm"; |
- |
static bool IsPepperCdmAvailable( |
const std::string& pepper_type, |
std::vector<base::string16>* additional_param_names, |
@@ -60,76 +58,6 @@ static bool IsPepperCdmAvailable( |
return is_available; |
} |
-// KeySystemProperties implementation for external Clear Key systems. |
-class ExternalClearKeyProperties : public KeySystemProperties { |
- public: |
- explicit ExternalClearKeyProperties(const std::string& key_system_name) |
- : key_system_name_(key_system_name) {} |
- |
- std::string GetKeySystemName() const override { return key_system_name_; } |
- bool IsSupportedInitDataType( |
- media::EmeInitDataType init_data_type) const override { |
- switch (init_data_type) { |
- case media::EmeInitDataType::WEBM: |
- case media::EmeInitDataType::KEYIDS: |
- return true; |
- |
- case media::EmeInitDataType::CENC: |
-#if defined(USE_PROPRIETARY_CODECS) |
- return true; |
-#else |
- return false; |
-#endif // defined(USE_PROPRIETARY_CODECS) |
- |
- case media::EmeInitDataType::UNKNOWN: |
- return false; |
- } |
- NOTREACHED(); |
- return false; |
- } |
- |
- SupportedCodecs GetSupportedCodecs() const override { |
-#if defined(USE_PROPRIETARY_CODECS) |
- return media::EME_CODEC_MP4_ALL | media::EME_CODEC_WEBM_ALL; |
-#else |
- return media::EME_CODEC_WEBM_ALL; |
-#endif |
- } |
- |
- media::EmeConfigRule GetRobustnessConfigRule( |
- media::EmeMediaType media_type, |
- const std::string& requested_robustness) const override { |
- return requested_robustness.empty() ? media::EmeConfigRule::SUPPORTED |
- : media::EmeConfigRule::NOT_SUPPORTED; |
- } |
- |
- // Persistent license sessions are faked. |
- media::EmeSessionTypeSupport GetPersistentLicenseSessionSupport() |
- const override { |
- return media::EmeSessionTypeSupport::SUPPORTED; |
- } |
- |
- media::EmeSessionTypeSupport GetPersistentReleaseMessageSessionSupport() |
- const override { |
- return media::EmeSessionTypeSupport::NOT_SUPPORTED; |
- } |
- |
- media::EmeFeatureSupport GetPersistentStateSupport() const override { |
- return media::EmeFeatureSupport::REQUESTABLE; |
- } |
- |
- media::EmeFeatureSupport GetDistinctiveIdentifierSupport() const override { |
- return media::EmeFeatureSupport::NOT_SUPPORTED; |
- } |
- |
- std::string GetPepperType() const override { |
- return kExternalClearKeyPepperType; |
- } |
- |
- private: |
- const std::string key_system_name_; |
-}; |
- |
// External Clear Key (used for testing). |
static void AddExternalClearKey( |
std::vector<std::unique_ptr<KeySystemProperties>>* concrete_key_systems) { |
@@ -150,40 +78,40 @@ static void AddExternalClearKey( |
std::vector<base::string16> additional_param_names; |
std::vector<base::string16> additional_param_values; |
- if (!IsPepperCdmAvailable(kExternalClearKeyPepperType, |
+ if (!IsPepperCdmAvailable(cdm::kExternalClearKeyPepperType, |
&additional_param_names, |
&additional_param_values)) { |
return; |
} |
concrete_key_systems->emplace_back( |
- new ExternalClearKeyProperties(kExternalClearKeyKeySystem)); |
+ new cdm::ExternalClearKeyProperties(kExternalClearKeyKeySystem)); |
// Add support of decrypt-only mode in ClearKeyCdm. |
- concrete_key_systems->emplace_back( |
- new ExternalClearKeyProperties(kExternalClearKeyDecryptOnlyKeySystem)); |
+ concrete_key_systems->emplace_back(new cdm::ExternalClearKeyProperties( |
+ kExternalClearKeyDecryptOnlyKeySystem)); |
// A key system that triggers renewal message in ClearKeyCdm. |
concrete_key_systems->emplace_back( |
- new ExternalClearKeyProperties(kExternalClearKeyRenewalKeySystem)); |
+ new cdm::ExternalClearKeyProperties(kExternalClearKeyRenewalKeySystem)); |
// A key system that triggers the FileIO test in ClearKeyCdm. |
- concrete_key_systems->emplace_back( |
- new ExternalClearKeyProperties(kExternalClearKeyFileIOTestKeySystem)); |
+ concrete_key_systems->emplace_back(new cdm::ExternalClearKeyProperties( |
+ kExternalClearKeyFileIOTestKeySystem)); |
// A key system that triggers the output protection test in ClearKeyCdm. |
- concrete_key_systems->emplace_back(new ExternalClearKeyProperties( |
+ concrete_key_systems->emplace_back(new cdm::ExternalClearKeyProperties( |
kExternalClearKeyOutputProtectionTestKeySystem)); |
// A key system that Chrome thinks is supported by ClearKeyCdm, but actually |
// will be refused by ClearKeyCdm. This is to test the CDM initialization |
// failure case. |
- concrete_key_systems->emplace_back( |
- new ExternalClearKeyProperties(kExternalClearKeyInitializeFailKeySystem)); |
+ concrete_key_systems->emplace_back(new cdm::ExternalClearKeyProperties( |
+ kExternalClearKeyInitializeFailKeySystem)); |
// A key system that triggers a crash in ClearKeyCdm. |
concrete_key_systems->emplace_back( |
- new ExternalClearKeyProperties(kExternalClearKeyCrashKeySystem)); |
+ new cdm::ExternalClearKeyProperties(kExternalClearKeyCrashKeySystem)); |
} |
#if defined(WIDEVINE_CDM_AVAILABLE) |