| Index: media/mojo/services/mojo_cdm.cc
|
| diff --git a/media/mojo/services/mojo_cdm.cc b/media/mojo/services/mojo_cdm.cc
|
| index 7822700e99bf89d767af1f84e75baa236608a150..dc6d5f8eb2177f226769e6c3fc2f4e6d9d393c4a 100644
|
| --- a/media/mojo/services/mojo_cdm.cc
|
| +++ b/media/mojo/services/mojo_cdm.cc
|
| @@ -31,12 +31,14 @@ static void RejectPromise(scoped_ptr<PromiseType> promise,
|
| }
|
|
|
| MojoCdm::MojoCdm(mojo::ContentDecryptionModulePtr remote_cdm,
|
| + int32_t cdm_id,
|
| const SessionMessageCB& session_message_cb,
|
| const SessionClosedCB& session_closed_cb,
|
| const SessionErrorCB& session_error_cb,
|
| const SessionKeysChangeCB& session_keys_change_cb,
|
| const SessionExpirationUpdateCB& session_expiration_update_cb)
|
| : remote_cdm_(remote_cdm.Pass()),
|
| + cdm_id_(cdm_id),
|
| session_message_cb_(session_message_cb),
|
| session_closed_cb_(session_closed_cb),
|
| session_error_cb_(session_error_cb),
|
| @@ -44,6 +46,7 @@ MojoCdm::MojoCdm(mojo::ContentDecryptionModulePtr remote_cdm,
|
| session_expiration_update_cb_(session_expiration_update_cb),
|
| weak_factory_(this) {
|
| DVLOG(1) << __FUNCTION__;
|
| + DCHECK_NE(CdmContext::kInvalidCdmId, cdm_id_);
|
| DCHECK(!session_message_cb_.is_null());
|
| DCHECK(!session_closed_cb_.is_null());
|
| DCHECK(!session_error_cb_.is_null());
|
| @@ -60,6 +63,7 @@ MojoCdm::~MojoCdm() {
|
| void MojoCdm::SetServerCertificate(const uint8_t* certificate_data,
|
| int certificate_data_length,
|
| scoped_ptr<SimpleCdmPromise> promise) {
|
| + DVLOG(2) << __FUNCTION__;
|
| remote_cdm_->SetServerCertificate(
|
| CreateMojoArray(certificate_data, certificate_data_length),
|
| base::Bind(&MojoCdm::OnPromiseResult<>, weak_factory_.GetWeakPtr(),
|
| @@ -71,6 +75,7 @@ void MojoCdm::CreateSession(const std::string& init_data_type,
|
| int init_data_length,
|
| SessionType session_type,
|
| scoped_ptr<NewSessionCdmPromise> promise) {
|
| + DVLOG(2) << __FUNCTION__;
|
| remote_cdm_->CreateSession(
|
| init_data_type, CreateMojoArray(init_data, init_data_length),
|
| static_cast<mojo::ContentDecryptionModule::SessionType>(session_type),
|
| @@ -80,6 +85,7 @@ void MojoCdm::CreateSession(const std::string& init_data_type,
|
|
|
| void MojoCdm::LoadSession(const std::string& session_id,
|
| scoped_ptr<NewSessionCdmPromise> promise) {
|
| + DVLOG(2) << __FUNCTION__;
|
| remote_cdm_->LoadSession(
|
| session_id,
|
| base::Bind(&MojoCdm::OnPromiseResult<std::string>,
|
| @@ -90,6 +96,7 @@ void MojoCdm::UpdateSession(const std::string& session_id,
|
| const uint8_t* response,
|
| int response_length,
|
| scoped_ptr<SimpleCdmPromise> promise) {
|
| + DVLOG(2) << __FUNCTION__;
|
| remote_cdm_->UpdateSession(
|
| session_id, CreateMojoArray(response, response_length),
|
| base::Bind(&MojoCdm::OnPromiseResult<>, weak_factory_.GetWeakPtr(),
|
| @@ -98,6 +105,7 @@ void MojoCdm::UpdateSession(const std::string& session_id,
|
|
|
| void MojoCdm::CloseSession(const std::string& session_id,
|
| scoped_ptr<SimpleCdmPromise> promise) {
|
| + DVLOG(2) << __FUNCTION__;
|
| remote_cdm_->CloseSession(session_id, base::Bind(&MojoCdm::OnPromiseResult<>,
|
| weak_factory_.GetWeakPtr(),
|
| base::Passed(&promise)));
|
| @@ -105,19 +113,30 @@ void MojoCdm::CloseSession(const std::string& session_id,
|
|
|
| void MojoCdm::RemoveSession(const std::string& session_id,
|
| scoped_ptr<SimpleCdmPromise> promise) {
|
| + DVLOG(2) << __FUNCTION__;
|
| remote_cdm_->RemoveSession(session_id, base::Bind(&MojoCdm::OnPromiseResult<>,
|
| weak_factory_.GetWeakPtr(),
|
| base::Passed(&promise)));
|
| }
|
|
|
| CdmContext* MojoCdm::GetCdmContext() {
|
| - NOTIMPLEMENTED();
|
| + DVLOG(2) << __FUNCTION__;
|
| + return this;
|
| +}
|
| +
|
| +media::Decryptor* MojoCdm::GetDecryptor() {
|
| return nullptr;
|
| }
|
|
|
| +int MojoCdm::GetCdmId() const {
|
| + DVLOG(2) << __FUNCTION__ << cdm_id_;
|
| + return cdm_id_;
|
| +}
|
| +
|
| void MojoCdm::OnSessionMessage(const mojo::String& session_id,
|
| mojo::Array<uint8_t> message,
|
| const mojo::String& destination_url) {
|
| + DVLOG(2) << __FUNCTION__;
|
| GURL verified_gurl = GURL(destination_url);
|
| if (!verified_gurl.is_valid() && !verified_gurl.is_empty()) {
|
| DLOG(WARNING) << "SessionMessage destination_url is invalid : "
|
| @@ -129,6 +148,7 @@ void MojoCdm::OnSessionMessage(const mojo::String& session_id,
|
| }
|
|
|
| void MojoCdm::OnSessionClosed(const mojo::String& session_id) {
|
| + DVLOG(2) << __FUNCTION__;
|
| session_closed_cb_.Run(session_id);
|
| }
|
|
|
| @@ -136,6 +156,7 @@ void MojoCdm::OnSessionError(const mojo::String& session_id,
|
| mojo::CdmException exception,
|
| uint32_t system_code,
|
| const mojo::String& error_message) {
|
| + DVLOG(2) << __FUNCTION__;
|
| session_error_cb_.Run(session_id,
|
| static_cast<MediaKeys::Exception>(exception),
|
| system_code, error_message);
|
| @@ -143,11 +164,13 @@ void MojoCdm::OnSessionError(const mojo::String& session_id,
|
|
|
| void MojoCdm::OnSessionKeysChange(const mojo::String& session_id,
|
| bool has_additional_usable_key) {
|
| + DVLOG(2) << __FUNCTION__;
|
| session_keys_change_cb_.Run(session_id, has_additional_usable_key);
|
| }
|
|
|
| void MojoCdm::OnSessionExpirationUpdate(const mojo::String& session_id,
|
| int64_t new_expiry_time_usec) {
|
| + DVLOG(2) << __FUNCTION__;
|
| session_expiration_update_cb_.Run(
|
| session_id, base::Time::FromInternalValue(new_expiry_time_usec));
|
| }
|
| @@ -156,6 +179,7 @@ template <typename... T>
|
| void MojoCdm::OnPromiseResult(scoped_ptr<CdmPromiseTemplate<T...>> promise,
|
| mojo::CdmPromiseResultPtr result,
|
| typename MojoTypeTrait<T>::MojoType... args) {
|
| + DVLOG(2) << __FUNCTION__;
|
| if (result->success)
|
| promise->resolve(args.template To<T>()...); // See ISO C++03 14.2/4.
|
| else
|
|
|