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 |