Commit 8f501160 authored by jrummell's avatar jrummell Committed by Commit bot

Add support for cdm::ContentDecryptionModule_8, remove CDM_6

BUG=450861
TEST=existing EME layout tests pass

Review URL: https://codereview.chromium.org/1023003002

Cr-Commit-Position: refs/heads/master@{#321617}
parent 39f970af
...@@ -274,7 +274,7 @@ deps = { ...@@ -274,7 +274,7 @@ deps = {
Var('chromium_git') + '/chromium/deps/opus.git' + '@' + 'cae696156f1e60006e39821e79a1811ae1933c69', Var('chromium_git') + '/chromium/deps/opus.git' + '@' + 'cae696156f1e60006e39821e79a1811ae1933c69',
'src/media/cdm/ppapi/api': 'src/media/cdm/ppapi/api':
Var('chromium_git') + '/chromium/cdm.git' + '@' + '7b7c6cc620e13c8057b4b6bff19e5955feb2c8fa', # from svn revision 293617 Var('chromium_git') + '/chromium/cdm.git' + '@' + '7377023e384f296cbb27644eb2c485275f1f92e8', # from svn revision 294518
'src/third_party/mesa/src': 'src/third_party/mesa/src':
Var('chromium_git') + '/chromium/deps/mesa.git' + '@' + '071d25db04c23821a12a8b260ab9d96a097402f0', Var('chromium_git') + '/chromium/deps/mesa.git' + '@' + '071d25db04c23821a12a8b260ab9d96a097402f0',
......
...@@ -232,6 +232,19 @@ cdm::SessionType PpSessionTypeToCdmSessionType(PP_SessionType session_type) { ...@@ -232,6 +232,19 @@ cdm::SessionType PpSessionTypeToCdmSessionType(PP_SessionType session_type) {
return cdm::kTemporary; return cdm::kTemporary;
} }
cdm::InitDataType InitDataTypeToCdmInitDataType(
const std::string& init_data_type) {
if (init_data_type == "cenc")
return cdm::kCenc;
if (init_data_type == "webm")
return cdm::kWebM;
if (init_data_type == "keyids")
return cdm::kKeyIds;
PP_NOTREACHED();
return cdm::kKeyIds;
}
PP_CdmExceptionCode CdmExceptionTypeToPpCdmExceptionType(cdm::Error error) { PP_CdmExceptionCode CdmExceptionTypeToPpCdmExceptionType(cdm::Error error) {
switch (error) { switch (error) {
case cdm::kNotSupportedError: case cdm::kNotSupportedError:
...@@ -278,6 +291,10 @@ PP_CdmKeyStatus CdmKeyStatusToPpKeyStatus(cdm::KeyStatus status) { ...@@ -278,6 +291,10 @@ PP_CdmKeyStatus CdmKeyStatusToPpKeyStatus(cdm::KeyStatus status) {
return PP_CDMKEYSTATUS_EXPIRED; return PP_CDMKEYSTATUS_EXPIRED;
case cdm::kOutputNotAllowed: case cdm::kOutputNotAllowed:
return PP_CDMKEYSTATUS_OUTPUTNOTALLOWED; return PP_CDMKEYSTATUS_OUTPUTNOTALLOWED;
case cdm::kOutputDownscaled:
return PP_CDMKEYSTATUS_OUTPUTDOWNSCALED;
case cdm::kStatusPending:
return PP_CDMKEYSTATUS_STATUSPENDING;
} }
PP_NOTREACHED(); PP_NOTREACHED();
...@@ -340,6 +357,8 @@ void CdmAdapter::Initialize(const std::string& key_system, ...@@ -340,6 +357,8 @@ void CdmAdapter::Initialize(const std::string& key_system,
bool allow_distinctive_identifier, bool allow_distinctive_identifier,
bool allow_persistent_state) { bool allow_persistent_state) {
PP_DCHECK(!key_system.empty()); PP_DCHECK(!key_system.empty());
// TODO(jrummell): Remove this check when CDM creation is asynchronous.
// http://crbug.com/469003
PP_DCHECK(key_system_.empty() || (key_system_ == key_system && cdm_)); PP_DCHECK(key_system_.empty() || (key_system_ == key_system && cdm_));
#if defined(CHECK_DOCUMENT_URL) #if defined(CHECK_DOCUMENT_URL)
...@@ -368,6 +387,7 @@ void CdmAdapter::Initialize(const std::string& key_system, ...@@ -368,6 +387,7 @@ void CdmAdapter::Initialize(const std::string& key_system,
key_system_ = key_system; key_system_ = key_system;
allow_distinctive_identifier_ = allow_distinctive_identifier; allow_distinctive_identifier_ = allow_distinctive_identifier;
allow_persistent_state_ = allow_persistent_state; allow_persistent_state_ = allow_persistent_state;
cdm_->Initialize(allow_distinctive_identifier, allow_persistent_state);
} }
void CdmAdapter::SetServerCertificate(uint32_t promise_id, void CdmAdapter::SetServerCertificate(uint32_t promise_id,
...@@ -399,6 +419,8 @@ void CdmAdapter::SetServerCertificate(uint32_t promise_id, ...@@ -399,6 +419,8 @@ void CdmAdapter::SetServerCertificate(uint32_t promise_id,
promise_id, server_certificate_ptr, server_certificate_size); promise_id, server_certificate_ptr, server_certificate_size);
} }
// TODO(jrummell): |init_data_type| should be an enum all the way through
// Chromium. http://crbug.com/469228
void CdmAdapter::CreateSessionAndGenerateRequest( void CdmAdapter::CreateSessionAndGenerateRequest(
uint32_t promise_id, uint32_t promise_id,
PP_SessionType session_type, PP_SessionType session_type,
...@@ -419,7 +441,7 @@ void CdmAdapter::CreateSessionAndGenerateRequest( ...@@ -419,7 +441,7 @@ void CdmAdapter::CreateSessionAndGenerateRequest(
cdm_->CreateSessionAndGenerateRequest( cdm_->CreateSessionAndGenerateRequest(
promise_id, PpSessionTypeToCdmSessionType(session_type), promise_id, PpSessionTypeToCdmSessionType(session_type),
init_data_type.data(), init_data_type.size(), InitDataTypeToCdmInitDataType(init_data_type),
static_cast<const uint8_t*>(init_data.Map()), init_data.ByteLength()); static_cast<const uint8_t*>(init_data.Map()), init_data.ByteLength());
} }
...@@ -678,14 +700,6 @@ void CdmAdapter::OnResolvePromise(uint32_t promise_id) { ...@@ -678,14 +700,6 @@ void CdmAdapter::OnResolvePromise(uint32_t promise_id) {
&CdmAdapter::SendPromiseResolvedInternal, promise_id)); &CdmAdapter::SendPromiseResolvedInternal, promise_id));
} }
// cdm::Host_6 only
void CdmAdapter::OnResolveKeyIdsPromise(uint32_t promise_id,
const cdm::BinaryData* usable_key_ids,
uint32_t usable_key_ids_size) {
// This should never be called as GetUsableKeyIds() has been removed.
PP_NOTREACHED();
}
void CdmAdapter::OnRejectPromise(uint32_t promise_id, void CdmAdapter::OnRejectPromise(uint32_t promise_id,
cdm::Error error, cdm::Error error,
uint32_t system_code, uint32_t system_code,
...@@ -716,7 +730,6 @@ void CdmAdapter::RejectPromise(uint32_t promise_id, ...@@ -716,7 +730,6 @@ void CdmAdapter::RejectPromise(uint32_t promise_id,
SessionError(error, system_code, error_message))); SessionError(error, system_code, error_message)));
} }
// cdm::Host_7 only.
void CdmAdapter::OnSessionMessage(const char* session_id, void CdmAdapter::OnSessionMessage(const char* session_id,
uint32_t session_id_size, uint32_t session_id_size,
cdm::MessageType message_type, cdm::MessageType message_type,
...@@ -738,27 +751,6 @@ void CdmAdapter::OnSessionMessage(const char* session_id, ...@@ -738,27 +751,6 @@ void CdmAdapter::OnSessionMessage(const char* session_id,
std::string(legacy_destination_url, legacy_destination_url_size)))); std::string(legacy_destination_url, legacy_destination_url_size))));
} }
// cdm::Host_6 only.
void CdmAdapter::OnSessionMessage(const char* session_id,
uint32_t session_id_size,
const char* message,
uint32_t message_size,
const char* destination_url,
uint32_t destination_url_size) {
// |destination_url| is no longer passed to unprefixed EME applications,
// so it will be dropped. All messages will appear as license renewals
// if |destination_url| is provided, license request if not.
cdm::MessageType message_type = (destination_url_size > 0)
? cdm::MessageType::kLicenseRenewal
: cdm::MessageType::kLicenseRequest;
PostOnMain(callback_factory_.NewCallback(
&CdmAdapter::SendSessionMessageInternal,
SessionMessage(std::string(session_id, session_id_size), message_type,
message, message_size,
std::string(destination_url, destination_url_size))));
}
// cdm::Host_7 only.
void CdmAdapter::OnSessionKeysChange(const char* session_id, void CdmAdapter::OnSessionKeysChange(const char* session_id,
uint32_t session_id_size, uint32_t session_id_size,
bool has_additional_usable_key, bool has_additional_usable_key,
...@@ -790,16 +782,6 @@ void CdmAdapter::OnSessionKeysChange(const char* session_id, ...@@ -790,16 +782,6 @@ void CdmAdapter::OnSessionKeysChange(const char* session_id,
key_information)); key_information));
} }
// cdm::Host_6 only.
void CdmAdapter::OnSessionUsableKeysChange(const char* session_id,
uint32_t session_id_size,
bool has_additional_usable_key) {
PostOnMain(callback_factory_.NewCallback(
&CdmAdapter::SendSessionKeysChangeInternal,
std::string(session_id, session_id_size), has_additional_usable_key,
std::vector<PP_KeyInformation>()));
}
void CdmAdapter::OnExpirationChange(const char* session_id, void CdmAdapter::OnExpirationChange(const char* session_id,
uint32_t session_id_size, uint32_t session_id_size,
cdm::Time new_expiry_time) { cdm::Time new_expiry_time) {
...@@ -815,29 +797,17 @@ void CdmAdapter::OnSessionClosed(const char* session_id, ...@@ -815,29 +797,17 @@ void CdmAdapter::OnSessionClosed(const char* session_id,
std::string(session_id, session_id_size))); std::string(session_id, session_id_size)));
} }
// cdm::Host_6 only.
void CdmAdapter::OnSessionError(const char* session_id,
uint32_t session_id_size,
cdm::Error error,
uint32_t system_code,
const char* error_message,
uint32_t error_message_size) {
PostOnMain(callback_factory_.NewCallback(
&CdmAdapter::SendSessionErrorInternal,
std::string(session_id, session_id_size),
SessionError(error, system_code,
std::string(error_message, error_message_size))));
}
// cdm::Host_7 only.
void CdmAdapter::OnLegacySessionError(const char* session_id, void CdmAdapter::OnLegacySessionError(const char* session_id,
uint32_t session_id_size, uint32_t session_id_size,
cdm::Error error, cdm::Error error,
uint32_t system_code, uint32_t system_code,
const char* error_message, const char* error_message,
uint32_t error_message_size) { uint32_t error_message_size) {
OnSessionError(session_id, session_id_size, error, system_code, error_message, PostOnMain(callback_factory_.NewCallback(
error_message_size); &CdmAdapter::SendSessionErrorInternal,
std::string(session_id, session_id_size),
SessionError(error, system_code,
std::string(error_message, error_message_size))));
} }
// Helpers to pass the event to Pepper. // Helpers to pass the event to Pepper.
...@@ -1346,7 +1316,7 @@ void* GetCdmHost(int host_interface_version, void* user_data) { ...@@ -1346,7 +1316,7 @@ void* GetCdmHost(int host_interface_version, void* user_data) {
return NULL; return NULL;
static_assert( static_assert(
cdm::ContentDecryptionModule::Host::kVersion == cdm::Host_7::kVersion, cdm::ContentDecryptionModule::Host::kVersion == cdm::Host_8::kVersion,
"update the code below"); "update the code below");
// Ensure IsSupportedCdmHostVersion matches implementation of this function. // Ensure IsSupportedCdmHostVersion matches implementation of this function.
...@@ -1356,22 +1326,22 @@ void* GetCdmHost(int host_interface_version, void* user_data) { ...@@ -1356,22 +1326,22 @@ void* GetCdmHost(int host_interface_version, void* user_data) {
PP_DCHECK( PP_DCHECK(
// Future version is not supported. // Future version is not supported.
!IsSupportedCdmHostVersion(cdm::Host_7::kVersion + 1) && !IsSupportedCdmHostVersion(cdm::Host_8::kVersion + 1) &&
// Current version is supported. // Current version is supported.
IsSupportedCdmHostVersion(cdm::Host_7::kVersion) && IsSupportedCdmHostVersion(cdm::Host_8::kVersion) &&
// Include all previous supported versions (if any) here. // Include all previous supported versions (if any) here.
IsSupportedCdmHostVersion(cdm::Host_6::kVersion) && IsSupportedCdmHostVersion(cdm::Host_7::kVersion) &&
// One older than the oldest supported version is not supported. // One older than the oldest supported version is not supported.
!IsSupportedCdmHostVersion(cdm::Host_6::kVersion - 1)); !IsSupportedCdmHostVersion(cdm::Host_7::kVersion - 1));
PP_DCHECK(IsSupportedCdmHostVersion(host_interface_version)); PP_DCHECK(IsSupportedCdmHostVersion(host_interface_version));
CdmAdapter* cdm_adapter = static_cast<CdmAdapter*>(user_data); CdmAdapter* cdm_adapter = static_cast<CdmAdapter*>(user_data);
CDM_DLOG() << "Create CDM Host with version " << host_interface_version; CDM_DLOG() << "Create CDM Host with version " << host_interface_version;
switch (host_interface_version) { switch (host_interface_version) {
case cdm::Host_8::kVersion:
return static_cast<cdm::Host_8*>(cdm_adapter);
case cdm::Host_7::kVersion: case cdm::Host_7::kVersion:
return static_cast<cdm::Host_7*>(cdm_adapter); return static_cast<cdm::Host_7*>(cdm_adapter);
case cdm::Host_6::kVersion:
return static_cast<cdm::Host_6*>(cdm_adapter);
default: default:
PP_NOTREACHED(); PP_NOTREACHED();
return NULL; return NULL;
......
...@@ -37,8 +37,8 @@ void* GetCdmHost(int host_interface_version, void* user_data); ...@@ -37,8 +37,8 @@ void* GetCdmHost(int host_interface_version, void* user_data);
// Content Decryption Module (CDM). // Content Decryption Module (CDM).
class CdmAdapter : public pp::Instance, class CdmAdapter : public pp::Instance,
public pp::ContentDecryptor_Private, public pp::ContentDecryptor_Private,
public cdm::Host_6, public cdm::Host_7,
public cdm::Host_7 { public cdm::Host_8 {
public: public:
CdmAdapter(PP_Instance instance, pp::Module* module); CdmAdapter(PP_Instance instance, pp::Module* module);
virtual ~CdmAdapter(); virtual ~CdmAdapter();
...@@ -84,7 +84,7 @@ class CdmAdapter : public pp::Instance, ...@@ -84,7 +84,7 @@ class CdmAdapter : public pp::Instance,
pp::Buffer_Dev encrypted_buffer, pp::Buffer_Dev encrypted_buffer,
const PP_EncryptedBlockInfo& encrypted_block_info) override; const PP_EncryptedBlockInfo& encrypted_block_info) override;
// cdm::Host_6 and cdm::Host_7 implementation. // cdm::Host_7 and cdm::Host_8 implementation.
cdm::Buffer* Allocate(uint32_t capacity) override; cdm::Buffer* Allocate(uint32_t capacity) override;
void SetTimer(int64_t delay_ms, void* context) override; void SetTimer(int64_t delay_ms, void* context) override;
cdm::Time GetCurrentWallTime() override; cdm::Time GetCurrentWallTime() override;
...@@ -97,22 +97,6 @@ class CdmAdapter : public pp::Instance, ...@@ -97,22 +97,6 @@ class CdmAdapter : public pp::Instance,
uint32_t system_code, uint32_t system_code,
const char* error_message, const char* error_message,
uint32_t error_message_size) override; uint32_t error_message_size) override;
void OnExpirationChange(const char* session_id,
uint32_t session_id_size,
cdm::Time new_expiry_time) override;
void OnSessionClosed(const char* session_id,
uint32_t session_id_size) override;
void SendPlatformChallenge(const char* service_id,
uint32_t service_id_size,
const char* challenge,
uint32_t challenge_size) override;
void EnableOutputProtection(uint32_t desired_protection_mask) override;
void QueryOutputProtectionStatus() override;
void OnDeferredInitializationDone(cdm::StreamType stream_type,
cdm::Status decoder_status) override;
cdm::FileIO* CreateFileIO(cdm::FileIOClient* client) override;
// cdm::Host_7 implementation.
void OnSessionMessage(const char* session_id, void OnSessionMessage(const char* session_id,
uint32_t session_id_size, uint32_t session_id_size,
cdm::MessageType message_type, cdm::MessageType message_type,
...@@ -125,32 +109,26 @@ class CdmAdapter : public pp::Instance, ...@@ -125,32 +109,26 @@ class CdmAdapter : public pp::Instance,
bool has_additional_usable_key, bool has_additional_usable_key,
const cdm::KeyInformation* keys_info, const cdm::KeyInformation* keys_info,
uint32_t keys_info_count) override; uint32_t keys_info_count) override;
void OnExpirationChange(const char* session_id,
uint32_t session_id_size,
cdm::Time new_expiry_time) override;
void OnSessionClosed(const char* session_id,
uint32_t session_id_size) override;
void OnLegacySessionError(const char* session_id, void OnLegacySessionError(const char* session_id,
uint32_t session_id_size, uint32_t session_id_size,
cdm::Error error, cdm::Error error,
uint32_t system_code, uint32_t system_code,
const char* error_message, const char* error_message,
uint32_t error_message_size) override; uint32_t error_message_size) override;
void SendPlatformChallenge(const char* service_id,
// cdm::Host_6 implementation. uint32_t service_id_size,
void OnResolveKeyIdsPromise(uint32_t promise_id, const char* challenge,
const cdm::BinaryData* usable_key_ids, uint32_t challenge_size) override;
uint32_t usable_key_ids_size) override; void EnableOutputProtection(uint32_t desired_protection_mask) override;
void OnSessionMessage(const char* session_id, void QueryOutputProtectionStatus() override;
uint32_t session_id_size, void OnDeferredInitializationDone(cdm::StreamType stream_type,
const char* message, cdm::Status decoder_status) override;
uint32_t message_size, cdm::FileIO* CreateFileIO(cdm::FileIOClient* client) override;
const char* destination_url,
uint32_t destination_url_size) override;
void OnSessionUsableKeysChange(const char* session_id,
uint32_t session_id_size,
bool has_additional_usable_key) override;
void OnSessionError(const char* session_id,
uint32_t session_id_size,
cdm::Error error,
uint32_t system_code,
const char* error_message,
uint32_t error_message_size) override;
private: private:
// These are reported to UMA server. Do not change the existing values! // These are reported to UMA server. Do not change the existing values!
......
...@@ -42,13 +42,14 @@ class CdmWrapper { ...@@ -42,13 +42,14 @@ class CdmWrapper {
virtual ~CdmWrapper() {}; virtual ~CdmWrapper() {};
virtual void Initialize(bool allow_distinctive_identifier,
bool allow_persistent_state) = 0;
virtual void SetServerCertificate(uint32_t promise_id, virtual void SetServerCertificate(uint32_t promise_id,
const uint8_t* server_certificate_data, const uint8_t* server_certificate_data,
uint32_t server_certificate_data_size) = 0; uint32_t server_certificate_data_size) = 0;
virtual void CreateSessionAndGenerateRequest(uint32_t promise_id, virtual void CreateSessionAndGenerateRequest(uint32_t promise_id,
cdm::SessionType session_type, cdm::SessionType session_type,
const char* init_data_type, cdm::InitDataType init_data_type,
uint32_t init_data_type_size,
const uint8_t* init_data, const uint8_t* init_data,
uint32_t init_data_size) = 0; uint32_t init_data_size) = 0;
virtual void LoadSession(uint32_t promise_id, virtual void LoadSession(uint32_t promise_id,
...@@ -119,6 +120,11 @@ class CdmWrapperImpl : public CdmWrapper { ...@@ -119,6 +120,11 @@ class CdmWrapperImpl : public CdmWrapper {
cdm_->Destroy(); cdm_->Destroy();
} }
virtual void Initialize(bool allow_distinctive_identifier,
bool allow_persistent_state) override {
cdm_->Initialize(allow_distinctive_identifier, allow_persistent_state);
}
virtual void SetServerCertificate( virtual void SetServerCertificate(
uint32_t promise_id, uint32_t promise_id,
const uint8_t* server_certificate_data, const uint8_t* server_certificate_data,
...@@ -130,13 +136,11 @@ class CdmWrapperImpl : public CdmWrapper { ...@@ -130,13 +136,11 @@ class CdmWrapperImpl : public CdmWrapper {
virtual void CreateSessionAndGenerateRequest( virtual void CreateSessionAndGenerateRequest(
uint32_t promise_id, uint32_t promise_id,
cdm::SessionType session_type, cdm::SessionType session_type,
const char* init_data_type, cdm::InitDataType init_data_type,
uint32_t init_data_type_size,
const uint8_t* init_data, const uint8_t* init_data,
uint32_t init_data_size) override { uint32_t init_data_size) override {
cdm_->CreateSessionAndGenerateRequest(promise_id, session_type, cdm_->CreateSessionAndGenerateRequest(
init_data_type, init_data_type_size, promise_id, session_type, init_data_type, init_data, init_data_size);
init_data, init_data_size);
} }
virtual void LoadSession(uint32_t promise_id, virtual void LoadSession(uint32_t promise_id,
...@@ -229,42 +233,38 @@ class CdmWrapperImpl : public CdmWrapper { ...@@ -229,42 +233,38 @@ class CdmWrapperImpl : public CdmWrapper {
DISALLOW_COPY_AND_ASSIGN(CdmWrapperImpl); DISALLOW_COPY_AND_ASSIGN(CdmWrapperImpl);
}; };
// Overrides for the cdm::Host_6 methods. // Overrides for the cdm::Host_7 methods.
// TODO(jrummell): Remove these once Host_6 interface is removed. // TODO(jrummell): Remove these once Host_7 interface is removed.
template <> template <>
void CdmWrapperImpl<cdm::ContentDecryptionModule_6>:: void CdmWrapperImpl<cdm::ContentDecryptionModule_7>::Initialize(
bool allow_distinctive_identifier,
bool allow_persistent_state) {
}
template <>
void CdmWrapperImpl<cdm::ContentDecryptionModule_7>::
CreateSessionAndGenerateRequest(uint32_t promise_id, CreateSessionAndGenerateRequest(uint32_t promise_id,
cdm::SessionType session_type, cdm::SessionType session_type,
const char* init_data_type, cdm::InitDataType init_data_type,
uint32_t init_data_type_size,
const uint8_t* init_data, const uint8_t* init_data,
uint32_t init_data_size) { uint32_t init_data_size) {
cdm_->CreateSession(promise_id, init_data_type, init_data_type_size, std::string init_data_type_as_string = "unknown";
init_data, init_data_size, session_type); switch (init_data_type) {
} case cdm::kCenc:
init_data_type_as_string = "cenc";
template <> break;
void CdmWrapperImpl<cdm::ContentDecryptionModule_6>::LoadSession( case cdm::kKeyIds:
uint32_t promise_id, init_data_type_as_string = "keyids";
cdm::SessionType session_type, break;
const char* session_id, case cdm::kWebM:
uint32_t session_id_size) { init_data_type_as_string = "webm";
cdm_->LoadSession(promise_id, session_id, session_id_size); break;
}
template <>
void CdmWrapperImpl<cdm::ContentDecryptionModule_6>::
OnQueryOutputProtectionStatus(cdm::QueryResult result,
uint32_t link_mask,
uint32_t output_protection_mask) {
if (result == cdm::kQuerySucceeded) {
cdm_->OnQueryOutputProtectionStatus(link_mask, output_protection_mask);
return;
} }
// Invalid results, so return 0, 0 to indicate failure. cdm_->CreateSessionAndGenerateRequest(
cdm_->OnQueryOutputProtectionStatus(0, 0); promise_id, session_type, &init_data_type_as_string[0],
init_data_type_as_string.length(), init_data, init_data_size);
} }
CdmWrapper* CdmWrapper::Create(const char* key_system, CdmWrapper* CdmWrapper::Create(const char* key_system,
...@@ -272,7 +272,7 @@ CdmWrapper* CdmWrapper::Create(const char* key_system, ...@@ -272,7 +272,7 @@ CdmWrapper* CdmWrapper::Create(const char* key_system,
GetCdmHostFunc get_cdm_host_func, GetCdmHostFunc get_cdm_host_func,
void* user_data) { void* user_data) {
static_assert(cdm::ContentDecryptionModule::kVersion == static_assert(cdm::ContentDecryptionModule::kVersion ==
cdm::ContentDecryptionModule_7::kVersion, cdm::ContentDecryptionModule_8::kVersion,
"update the code below"); "update the code below");
// Ensure IsSupportedCdmInterfaceVersion() matches this implementation. // Ensure IsSupportedCdmInterfaceVersion() matches this implementation.
...@@ -280,13 +280,13 @@ CdmWrapper* CdmWrapper::Create(const char* key_system, ...@@ -280,13 +280,13 @@ CdmWrapper* CdmWrapper::Create(const char* key_system,
// If this check fails, update this function and DCHECK or update // If this check fails, update this function and DCHECK or update
// IsSupportedCdmInterfaceVersion(). // IsSupportedCdmInterfaceVersion().
PP_DCHECK(!IsSupportedCdmInterfaceVersion( PP_DCHECK(!IsSupportedCdmInterfaceVersion(
cdm::ContentDecryptionModule_7::kVersion + 1) && cdm::ContentDecryptionModule_8::kVersion + 1) &&
IsSupportedCdmInterfaceVersion( IsSupportedCdmInterfaceVersion(
cdm::ContentDecryptionModule_7::kVersion) && cdm::ContentDecryptionModule_8::kVersion) &&
IsSupportedCdmInterfaceVersion( IsSupportedCdmInterfaceVersion(
cdm::ContentDecryptionModule_6::kVersion) && cdm::ContentDecryptionModule_7::kVersion) &&
!IsSupportedCdmInterfaceVersion( !IsSupportedCdmInterfaceVersion(
cdm::ContentDecryptionModule_6::kVersion - 1)); cdm::ContentDecryptionModule_7::kVersion - 1));
// Try to create the CDM using the latest CDM interface version. // Try to create the CDM using the latest CDM interface version.
CdmWrapper* cdm_wrapper = CdmWrapper* cdm_wrapper =
...@@ -296,7 +296,7 @@ CdmWrapper* CdmWrapper::Create(const char* key_system, ...@@ -296,7 +296,7 @@ CdmWrapper* CdmWrapper::Create(const char* key_system,
// If |cdm_wrapper| is NULL, try to create the CDM using older supported // If |cdm_wrapper| is NULL, try to create the CDM using older supported
// versions of the CDM interface here. // versions of the CDM interface here.
if (!cdm_wrapper) { if (!cdm_wrapper) {
cdm_wrapper = CdmWrapperImpl<cdm::ContentDecryptionModule_6>::Create( cdm_wrapper = CdmWrapperImpl<cdm::ContentDecryptionModule_7>::Create(
key_system, key_system_size, get_cdm_host_func, user_data); key_system, key_system_size, get_cdm_host_func, user_data);
} }
...@@ -308,7 +308,7 @@ CdmWrapper* CdmWrapper::Create(const char* key_system, ...@@ -308,7 +308,7 @@ CdmWrapper* CdmWrapper::Create(const char* key_system,
// does not have. // does not have.
// Also update supported_cdm_versions.h. // Also update supported_cdm_versions.h.
static_assert(cdm::ContentDecryptionModule::kVersion == static_assert(cdm::ContentDecryptionModule::kVersion ==
cdm::ContentDecryptionModule_7::kVersion, cdm::ContentDecryptionModule_8::kVersion,
"ensure cdm wrapper templates have old version support"); "ensure cdm wrapper templates have old version support");
} // namespace media } // namespace media
......
...@@ -171,8 +171,6 @@ static media::MediaKeys::SessionType ConvertSessionType( ...@@ -171,8 +171,6 @@ static media::MediaKeys::SessionType ConvertSessionType(
} }
cdm::KeyStatus ConvertKeyStatus(media::CdmKeyInformation::KeyStatus status) { cdm::KeyStatus ConvertKeyStatus(media::CdmKeyInformation::KeyStatus status) {
// TODO(jrummell): Update OUTPUT_DOWNSCALED and KEY_STATUS_PENDING once CDM
// interface supports them. http://crbug.com/450861
switch (status) { switch (status) {
case media::CdmKeyInformation::KeyStatus::USABLE: case media::CdmKeyInformation::KeyStatus::USABLE:
return cdm::kUsable; return cdm::kUsable;
...@@ -183,9 +181,9 @@ cdm::KeyStatus ConvertKeyStatus(media::CdmKeyInformation::KeyStatus status) { ...@@ -183,9 +181,9 @@ cdm::KeyStatus ConvertKeyStatus(media::CdmKeyInformation::KeyStatus status) {
case media::CdmKeyInformation::KeyStatus::OUTPUT_NOT_ALLOWED: case media::CdmKeyInformation::KeyStatus::OUTPUT_NOT_ALLOWED:
return cdm::kOutputNotAllowed; return cdm::kOutputNotAllowed;
case media::CdmKeyInformation::KeyStatus::OUTPUT_DOWNSCALED: case media::CdmKeyInformation::KeyStatus::OUTPUT_DOWNSCALED:
return cdm::kInternalError; return cdm::kOutputDownscaled;
case media::CdmKeyInformation::KeyStatus::KEY_STATUS_PENDING: case media::CdmKeyInformation::KeyStatus::KEY_STATUS_PENDING:
return cdm::kInternalError; return cdm::kStatusPending;
} }
NOTIMPLEMENTED(); NOTIMPLEMENTED();
return cdm::kInternalError; return cdm::kInternalError;
......
...@@ -21,12 +21,12 @@ bool IsSupportedCdmModuleVersion(int version) { ...@@ -21,12 +21,12 @@ bool IsSupportedCdmModuleVersion(int version) {
bool IsSupportedCdmInterfaceVersion(int version) { bool IsSupportedCdmInterfaceVersion(int version) {
static_assert(cdm::ContentDecryptionModule::kVersion == static_assert(cdm::ContentDecryptionModule::kVersion ==
cdm::ContentDecryptionModule_7::kVersion, cdm::ContentDecryptionModule_8::kVersion,
"update the code below"); "update the code below");
switch(version) { switch(version) {
// Supported versions in decreasing order. // Supported versions in decreasing order.
case cdm::ContentDecryptionModule_8::kVersion:
case cdm::ContentDecryptionModule_7::kVersion: case cdm::ContentDecryptionModule_7::kVersion:
case cdm::ContentDecryptionModule_6::kVersion:
return true; return true;
default: default:
return false; return false;
...@@ -35,12 +35,12 @@ bool IsSupportedCdmInterfaceVersion(int version) { ...@@ -35,12 +35,12 @@ bool IsSupportedCdmInterfaceVersion(int version) {
bool IsSupportedCdmHostVersion(int version) { bool IsSupportedCdmHostVersion(int version) {
static_assert(cdm::ContentDecryptionModule::Host::kVersion == static_assert(cdm::ContentDecryptionModule::Host::kVersion ==
cdm::ContentDecryptionModule_7::Host::kVersion, cdm::ContentDecryptionModule_8::Host::kVersion,
"update the code below"); "update the code below");
switch(version) { switch(version) {
// Supported versions in decreasing order. // Supported versions in decreasing order.
case cdm::Host_8::kVersion:
case cdm::Host_7::kVersion: case cdm::Host_7::kVersion:
case cdm::Host_6::kVersion:
return true; return true;
default: default:
return false; return false;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment