Chromium Code Reviews| 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, |