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

Unified Diff: media/cdm/ppapi/external_clear_key/clear_key_cdm.h

Issue 265993002: Add Promises for EME (Chromium side) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: One more trybot issue Created 6 years, 6 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
« no previous file with comments | « media/cdm/ppapi/cdm_wrapper.h ('k') | media/cdm/ppapi/external_clear_key/clear_key_cdm.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/cdm/ppapi/external_clear_key/clear_key_cdm.h
diff --git a/media/cdm/ppapi/external_clear_key/clear_key_cdm.h b/media/cdm/ppapi/external_clear_key/clear_key_cdm.h
index d0ef3c787bf521f5ca6dcc8a2c242ec5d79adefe..e489c1b15c61bfd39ad3154e8f5d850d99b295bf 100644
--- a/media/cdm/ppapi/external_clear_key/clear_key_cdm.h
+++ b/media/cdm/ppapi/external_clear_key/clear_key_cdm.h
@@ -35,17 +35,27 @@ class ClearKeyCdm : public ClearKeyCdmInterface {
virtual ~ClearKeyCdm();
// ContentDecryptionModule implementation.
- virtual void CreateSession(
- uint32 session_id,
- const char* type, uint32 type_size,
- const uint8* init_data, uint32 init_data_size) OVERRIDE;
- virtual void LoadSession(
- uint32_t session_id,
- const char* web_session_id, uint32_t web_session_id_length) OVERRIDE;
- virtual void UpdateSession(
- uint32 session_id,
- const uint8* response, uint32 response_size) OVERRIDE;
- virtual void ReleaseSession(uint32 session_id) OVERRIDE;
+ virtual void CreateSession(uint32 promise_id,
+ const char* init_data_type,
+ uint32 init_data_type_size,
+ const uint8* init_data,
+ uint32 init_data_size,
+ cdm::SessionType session_type) OVERRIDE;
+ virtual void LoadSession(uint32 promise_id,
+ const char* web_session_id,
+ uint32_t web_session_id_length) OVERRIDE;
+ virtual void UpdateSession(uint32 promise_id,
+ const char* web_session_id,
+ uint32_t web_session_id_length,
+ const uint8* response,
+ uint32 response_size) OVERRIDE;
+ virtual void ReleaseSession(uint32 promise_id,
+ const char* web_session_id,
+ uint32_t web_session_id_length) OVERRIDE;
+ virtual void SetServerCertificate(
+ uint32 promise_id,
+ const uint8_t* server_certificate_data,
+ uint32_t server_certificate_data_size) OVERRIDE;
virtual void TimerExpired(void* context) OVERRIDE;
virtual cdm::Status Decrypt(const cdm::InputBuffer& encrypted_buffer,
cdm::DecryptedBlock* decrypted_block) OVERRIDE;
@@ -73,15 +83,20 @@ class ClearKeyCdm : public ClearKeyCdmInterface {
void LoadLoadableSession();
// ContentDecryptionModule callbacks.
- void OnSessionCreated(uint32 session_id, const std::string& web_session_id);
- void OnSessionMessage(uint32 session_id,
+ void OnSessionMessage(const std::string& web_session_id,
const std::vector<uint8>& message,
const GURL& destination_url);
- void OnSessionReady(uint32 session_id);
- void OnSessionClosed(uint32 session_id);
- void OnSessionError(uint32 session_id,
- MediaKeys::KeyError error_code,
- uint32 system_code);
+
+ // Handle the success/failure of a promise. These methods are responsible for
+ // calling |host_| to resolve or reject the promise.
+ void OnSessionCreated(uint32 promise_id, const std::string& web_session_id);
+ void OnSessionLoaded(uint32 promise_id, const std::string& web_session_id);
+ void OnSessionUpdated(uint32 promise_id, const std::string& web_session_id);
+ void OnSessionReleased(uint32 promise_id, const std::string& web_session_id);
+ void OnPromiseFailed(uint32 promise_id,
+ MediaKeys::Exception exception_code,
+ uint32 system_code,
+ const std::string& error_message);
// Prepares next heartbeat message and sets a timer for it.
void ScheduleNextHeartBeat();
@@ -117,18 +132,22 @@ class ClearKeyCdm : public ClearKeyCdmInterface {
// Callback for CDM File IO test.
void OnFileIOTestComplete(bool success);
+ // Keep track of the last session created.
+ void SetSessionId(const std::string& web_session_id);
+
AesDecryptor decryptor_;
ClearKeyCdmHost* host_;
const std::string key_system_;
- uint32 last_session_id_;
+ std::string last_session_id_;
std::string next_heartbeat_message_;
// TODO(xhwang): Extract testing code from main implementation.
// See http://crbug.com/341751
- uint32 session_id_for_emulated_loadsession_;
+ std::string session_id_for_emulated_loadsession_;
+ uint32_t promise_id_for_emulated_loadsession_;
// Timer delay in milliseconds for the next host_->SetTimer() call.
int64 timer_delay_ms_;
« no previous file with comments | « media/cdm/ppapi/cdm_wrapper.h ('k') | media/cdm/ppapi/external_clear_key/clear_key_cdm.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698