Chromium Code Reviews| 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_); |
|
ddorwin
2015/01/06 00:57:28
Will this change if/when Mojo supports GetDecrypto
xhwang
2015/01/06 19:54:54
For simplicity, I am assigning a valid CDM ID to a
ddorwin
2015/01/07 00:37:13
Acknowledged. Thanks.
|
| 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; |
|
ddorwin
2015/01/06 00:57:28
Should this never be called? i.e. NOTREACHED()
xhwang
2015/01/06 19:54:54
Currently yes. When we start to support the deskto
|
| } |
| +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 |