Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(86)

Unified Diff: media/mojo/services/mojo_cdm.cc

Issue 840473002: media: Support creation and SetCdm() for mojo based CDM. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698