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

Unified Diff: content/renderer/media/crypto/proxy_media_keys.cc

Issue 555223004: Update MediaKeys interface for EME (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: reorder Created 6 years, 3 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: content/renderer/media/crypto/proxy_media_keys.cc
diff --git a/content/renderer/media/crypto/proxy_media_keys.cc b/content/renderer/media/crypto/proxy_media_keys.cc
index 17e918d80ec2338c847244448525903fa3d047a1..8bb00abfb97eedf516d5e2267e72acc150ef38b9 100644
--- a/content/renderer/media/crypto/proxy_media_keys.cc
+++ b/content/renderer/media/crypto/proxy_media_keys.cc
@@ -22,8 +22,13 @@ scoped_ptr<ProxyMediaKeys> ProxyMediaKeys::Create(
const media::SessionMessageCB& session_message_cb,
const media::SessionReadyCB& session_ready_cb,
const media::SessionClosedCB& session_closed_cb,
- const media::SessionErrorCB& session_error_cb) {
+ const media::SessionErrorCB& session_error_cb,
+ const media::SessionKeysChangeCB& session_keys_change_cb,
+ const media::SessionExpirationChangeCB& session_expiration_change_cb) {
DCHECK(manager);
+
+ // TODO(jrummell): Add support for SessionKeysChangeCB and
+ // SessionExpirationChangeCB.
scoped_ptr<ProxyMediaKeys> proxy_media_keys(
new ProxyMediaKeys(manager,
session_message_cb,
@@ -48,6 +53,13 @@ ProxyMediaKeys::~ProxyMediaKeys() {
session_id_to_promise_map_.clear();
}
+void ProxyMediaKeys::SetServerCertificate(
+ const uint8* certificate_data,
+ int certificate_data_length,
+ scoped_ptr<media::SimpleCdmPromise> promise) {
+ promise->reject(NOT_SUPPORTED_ERROR, 0, "Not yet implemented.");
+}
+
void ProxyMediaKeys::CreateSession(
const std::string& init_data_type,
const uint8* init_data,
@@ -107,9 +119,28 @@ void ProxyMediaKeys::UpdateSession(
std::vector<uint8>(response, response + response_length));
}
-void ProxyMediaKeys::ReleaseSession(
+void ProxyMediaKeys::CloseSession(const std::string& web_session_id,
+ scoped_ptr<media::SimpleCdmPromise> promise) {
+ // Both CloseSession() and RemoveSession() call ReleaseSession(), so calling
+ // either one will release the session. Calling both will result in an error
+ // for the second call.
+ // TODO(jrummell): Implement Close/Remove properly.
+ uint32 session_id = LookupSessionId(web_session_id);
+ if (!session_id) {
+ promise->reject(INVALID_ACCESS_ERROR, 0, "Session does not exist.");
+ return;
+ }
+
+ SavePromise(session_id, promise.PassAs<media::CdmPromise>());
+ manager_->ReleaseSession(cdm_id_, session_id);
+}
+
+void ProxyMediaKeys::RemoveSession(
const std::string& web_session_id,
scoped_ptr<media::SimpleCdmPromise> promise) {
+ // Both CloseSession() and RemoveSession() call ReleaseSession(), so calling
ddorwin 2014/09/11 23:31:11 Remove is not implemented on Android because persi
jrummell 2014/09/15 18:22:39 Done. I was more concerned about v0.1b calling CKR
+ // either one will release the session. Calling both will result in an error
+ // for the second call.
uint32 session_id = LookupSessionId(web_session_id);
if (!session_id) {
promise->reject(INVALID_ACCESS_ERROR, 0, "Session does not exist.");
@@ -120,6 +151,11 @@ void ProxyMediaKeys::ReleaseSession(
manager_->ReleaseSession(cdm_id_, session_id);
}
+void ProxyMediaKeys::GetUsableKeyIds(const std::string& web_session_id,
+ scoped_ptr<media::KeyIdsPromise> promise) {
+ promise->reject(NOT_SUPPORTED_ERROR, 0, "Not yet implemented.");
+}
+
void ProxyMediaKeys::OnSessionCreated(uint32 session_id,
const std::string& web_session_id) {
AssignWebSessionId(session_id, web_session_id);

Powered by Google App Engine
This is Rietveld 408576698