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

Unified Diff: media/cdm/ppapi/cdm_adapter.h

Issue 265993002: Add Promises for EME (Chromium side) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: latest CDM_5 Created 6 years, 7 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/cdm/ppapi/cdm_adapter.h
diff --git a/media/cdm/ppapi/cdm_adapter.h b/media/cdm/ppapi/cdm_adapter.h
index 51f45677d7822ac516ac44c7520cab3cb92ac0e0..e9700ab54286f6cd5b0cc76a72e23dbce693e387 100644
--- a/media/cdm/ppapi/cdm_adapter.h
+++ b/media/cdm/ppapi/cdm_adapter.h
@@ -37,7 +37,8 @@ void* GetCdmHost(int host_interface_version, void* user_data);
// Content Decryption Module (CDM).
class CdmAdapter : public pp::Instance,
public pp::ContentDecryptor_Private,
- public cdm::Host_4 {
+ public cdm::Host_4,
+ public cdm::Host_5 {
public:
CdmAdapter(PP_Instance instance, pp::Module* module);
virtual ~CdmAdapter();
@@ -51,14 +52,17 @@ class CdmAdapter : public pp::Instance,
// Note: Results of calls to these methods must be reported through the
// PPB_ContentDecryptor_Private interface.
virtual void Initialize(const std::string& key_system) OVERRIDE;
- virtual void CreateSession(uint32_t session_id,
- const std::string& content_type,
- pp::VarArrayBuffer init_data) OVERRIDE;
- virtual void LoadSession(uint32_t session_id,
+ virtual void CreateSession(uint32_t promise_id,
+ const std::string& init_data_type,
+ pp::VarArrayBuffer init_data,
+ PP_SessionType session_type) OVERRIDE;
+ virtual void LoadSession(uint32_t promise_id,
const std::string& web_session_id) OVERRIDE;
- virtual void UpdateSession(uint32_t session_id,
+ virtual void UpdateSession(uint32_t promise_id,
+ const std::string& web_session_id,
pp::VarArrayBuffer response) OVERRIDE;
- virtual void ReleaseSession(uint32_t session_id) OVERRIDE;
+ virtual void ReleaseSession(uint32_t promise_id,
+ const std::string& web_session_id) OVERRIDE;
virtual void Decrypt(
pp::Buffer_Dev encrypted_buffer,
const PP_EncryptedBlockInfo& encrypted_block_info) OVERRIDE;
@@ -77,9 +81,55 @@ class CdmAdapter : public pp::Instance,
pp::Buffer_Dev encrypted_buffer,
const PP_EncryptedBlockInfo& encrypted_block_info) OVERRIDE;
- // cdm::Host implementation.
+ // cdm::Host_5 implementation.
virtual cdm::Buffer* Allocate(uint32_t capacity) OVERRIDE;
virtual void SetTimer(int64_t delay_ms, void* context) OVERRIDE;
+ virtual cdm::Time GetCurrentTime() OVERRIDE;
+ virtual void OnResolveNewSessionPromise(
+ uint32_t promise_id,
+ const char* web_session_id,
+ uint32_t web_session_id_length) OVERRIDE;
+ virtual void OnResolvePromise(uint32_t promise_id) OVERRIDE;
+ virtual void OnRejectPromise(uint32_t promise_id,
+ cdm::Error error,
+ uint32_t system_code,
+ const char* error_message,
+ uint32_t error_message_length) OVERRIDE;
+ virtual void OnSessionMessage(const char* web_session_id,
+ uint32_t web_session_id_length,
+ const char* message,
+ uint32_t message_length,
+ const char* destination_url,
+ uint32_t destination_url_length) OVERRIDE;
+ virtual void OnSessionKeysChange(const char* web_session_id,
+ uint32_t web_session_id_length,
+ bool has_new_key);
ddorwin 2014/05/13 22:44:02 has_additional_usable_key
jrummell 2014/05/15 22:38:09 Done.
+ virtual void OnExpirationChange(const char* web_session_id,
+ uint32_t web_session_id_length,
+ cdm::Time new_expiry_time);
+ virtual void OnSessionReady(const char* web_session_id,
+ uint32_t web_session_id_length) OVERRIDE;
+ virtual void OnSessionClosed(const char* web_session_id,
+ uint32_t web_session_id_length) OVERRIDE;
+ virtual void OnSessionError(const char* web_session_id,
+ uint32_t web_session_id_length,
+ cdm::Error error,
+ uint32_t system_code,
+ const char* error_message,
+ uint32_t error_message_length) OVERRIDE;
+ virtual void SendPlatformChallenge(const char* service_id,
+ uint32_t service_id_length,
+ const char* challenge,
+ uint32_t challenge_length) OVERRIDE;
+ virtual void EnableOutputProtection(
+ uint32_t desired_protection_mask) OVERRIDE;
+ virtual void QueryOutputProtectionStatus() OVERRIDE;
+ virtual void OnDeferredInitializationDone(
+ cdm::StreamType stream_type,
+ cdm::Status decoder_status) OVERRIDE;
+ virtual cdm::FileIO* CreateFileIO(cdm::FileIOClient* client) OVERRIDE;
+
+ // cdm::Host_4 extras
virtual double GetCurrentWallTimeInSeconds() OVERRIDE;
virtual void OnSessionCreated(uint32_t session_id,
const char* web_session_id,
@@ -94,16 +144,6 @@ class CdmAdapter : public pp::Instance,
virtual void OnSessionError(uint32_t session_id,
cdm::MediaKeyError error_code,
uint32_t system_code) OVERRIDE;
- virtual void SendPlatformChallenge(
- const char* service_id, uint32_t service_id_length,
- const char* challenge, uint32_t challenge_length) OVERRIDE;
- virtual void EnableOutputProtection(
- uint32_t desired_protection_mask) OVERRIDE;
- virtual void QueryOutputProtectionStatus() OVERRIDE;
- virtual void OnDeferredInitializationDone(
- cdm::StreamType stream_type,
- cdm::Status decoder_status) OVERRIDE;
- virtual cdm::FileIO* CreateFileIO(cdm::FileIOClient* client) OVERRIDE;
private:
// These are reported to UMA server. Do not change the existing values!
@@ -118,24 +158,43 @@ class CdmAdapter : public pp::Instance,
typedef linked_ptr<VideoFrameImpl> LinkedVideoFrame;
typedef linked_ptr<AudioFramesImpl> LinkedAudioFrames;
+ struct SessionError {
+ SessionError(cdm::Error error,
+ uint32_t system_code,
+ std::string error_description);
+ cdm::Error error;
+ uint32_t system_code;
+ std::string error_description;
+ };
+
bool CreateCdmInstance(const std::string& key_system);
// <code>PPB_ContentDecryptor_Private</code> dispatchers. These are passed to
// <code>callback_factory_</code> to ensure that calls into
// <code>PPP_ContentDecryptor_Private</code> are asynchronous.
- void SendSessionCreatedInternal(int32_t result,
- uint32_t session_id,
- const std::string& web_session_id);
+ void SendPromiseResolvedInternal(int32_t result, uint32_t promise_id);
+ void SendPromiseResolvedWithSessionInternal(
+ int32_t result,
+ uint32_t promise_id,
+ const std::string& web_session_id);
+ void SendPromiseRejectedInternal(int32_t result,
+ uint32_t promise_id,
+ const SessionError& error);
void SendSessionMessageInternal(int32_t result,
- uint32_t session_id,
+ const std::string& web_session_id,
const std::vector<uint8>& message,
- const std::string& default_url);
- void SendSessionReadyInternal(int32_t result, uint32_t session_id);
- void SendSessionClosedInternal(int32_t result, uint32_t session_id);
+ const std::string& destination_url);
+ void SendSessionReadyInternal(int32_t result,
+ const std::string& web_session_id);
+ void SendSessionClosedInternal(int32_t result,
+ const std::string& web_session_id);
void SendSessionErrorInternal(int32_t result,
- uint32_t session_id,
- cdm::MediaKeyError error_code,
- uint32_t system_code);
+ const std::string& web_session_id,
+ const SessionError& error);
+ void RejectPromise(uint32_t promise_id,
+ cdm::Error error,
+ uint32_t system_code,
+ const std::string& error_message);
void DeliverBlock(int32_t result,
const cdm::Status& status,

Powered by Google App Engine
This is Rietveld 408576698