| Index: content/renderer/media/crypto/proxy_media_keys.h
|
| diff --git a/content/renderer/media/crypto/proxy_media_keys.h b/content/renderer/media/crypto/proxy_media_keys.h
|
| index 05f1cb59f416bc413b344ff39391407b01c58d5f..03679401196c787550d3e15936d9c76ce52dc1cd 100644
|
| --- a/content/renderer/media/crypto/proxy_media_keys.h
|
| +++ b/content/renderer/media/crypto/proxy_media_keys.h
|
| @@ -13,6 +13,7 @@
|
| #include "base/containers/scoped_ptr_hash_map.h"
|
| #include "media/base/cdm_context.h"
|
| #include "media/base/cdm_promise.h"
|
| +#include "media/base/cdm_promise_adapter.h"
|
| #include "media/base/media_keys.h"
|
|
|
| class GURL;
|
| @@ -65,66 +66,51 @@ class ProxyMediaKeys : public media::MediaKeys, public media::CdmContext {
|
| int GetCdmId() const override;
|
|
|
| // Callbacks.
|
| - void OnSessionCreated(uint32 session_id, const std::string& web_session_id);
|
| - void OnSessionMessage(uint32 session_id,
|
| + void OnSessionMessage(const std::string& session_id,
|
| + media::MediaKeys::MessageType message_type,
|
| const std::vector<uint8>& message,
|
| const GURL& legacy_destination_url);
|
| - void OnSessionReady(uint32 session_id);
|
| - void OnSessionClosed(uint32 session_id);
|
| - void OnSessionError(uint32 session_id,
|
| - media::MediaKeys::KeyError error_code,
|
| - uint32 system_code);
|
| + void OnSessionClosed(const std::string& session_id);
|
| + void OnLegacySessionError(const std::string& session_id,
|
| + media::MediaKeys::Exception exception,
|
| + uint32 system_code,
|
| + const std::string& error_message);
|
| + void OnSessionKeysChange(const std::string& session_id,
|
| + bool has_additional_usable_key,
|
| + media::CdmKeysInfo keys_info);
|
| + void OnSessionExpirationUpdate(const std::string& session_id,
|
| + const base::Time& new_expiry_time);
|
| +
|
| + void OnPromiseResolved(uint32_t promise_id);
|
| + void OnPromiseResolvedWithSession(uint32_t promise_id,
|
| + const std::string& session_id);
|
| + void OnPromiseRejected(uint32_t promise_id,
|
| + media::MediaKeys::Exception exception,
|
| + uint32_t system_code,
|
| + const std::string& error_message);
|
|
|
| private:
|
| - // The Android-specific code that handles sessions uses integer session ids
|
| - // (basically a reference id), but media::MediaKeys bases everything on
|
| - // web_session_id (a string representing the actual session id as generated
|
| - // by the CDM). SessionIdMap is used to map between the web_session_id and
|
| - // the session_id used by the Android-specific code.
|
| - typedef base::hash_map<std::string, uint32_t> SessionIdMap;
|
| -
|
| - // The following types keep track of Promises. The index is the
|
| - // Android-specific session_id, so that returning results can be matched to
|
| - // the corresponding promise.
|
| - typedef base::ScopedPtrHashMap<uint32_t, media::CdmPromise> PromiseMap;
|
| -
|
| - ProxyMediaKeys(RendererCdmManager* manager,
|
| - const media::SessionMessageCB& session_message_cb,
|
| - const media::SessionClosedCB& session_closed_cb,
|
| - const media::SessionErrorCB& session_error_cb);
|
| + ProxyMediaKeys(
|
| + RendererCdmManager* manager,
|
| + const media::SessionMessageCB& session_message_cb,
|
| + const media::SessionClosedCB& session_closed_cb,
|
| + const media::SessionErrorCB& session_error_cb,
|
| + const media::SessionKeysChangeCB& session_keys_change_cb,
|
| + const media::SessionExpirationUpdateCB& session_expiration_update_cb);
|
|
|
| void InitializeCdm(const std::string& key_system,
|
| const GURL& security_origin);
|
|
|
| - // These functions keep track of Android-specific session_ids <->
|
| - // web_session_ids mappings.
|
| - // TODO(jrummell): Remove this once the Android-specific code changes to
|
| - // support string web session ids.
|
| - uint32_t CreateSessionId();
|
| - void AssignWebSessionId(uint32_t session_id,
|
| - const std::string& web_session_id);
|
| - uint32_t LookupSessionId(const std::string& web_session_id) const;
|
| - std::string LookupWebSessionId(uint32_t session_id) const;
|
| - void DropWebSessionId(const std::string& web_session_id);
|
| -
|
| - // Helper function to keep track of promises. Adding takes ownership of the
|
| - // promise, transferred back to caller on take.
|
| - void SavePromise(uint32_t session_id, scoped_ptr<media::CdmPromise> promise);
|
| - scoped_ptr<media::CdmPromise> TakePromise(uint32_t session_id);
|
| -
|
| RendererCdmManager* manager_;
|
| int cdm_id_;
|
|
|
| media::SessionMessageCB session_message_cb_;
|
| media::SessionClosedCB session_closed_cb_;
|
| media::SessionErrorCB session_error_cb_;
|
| + media::SessionKeysChangeCB session_keys_change_cb_;
|
| + media::SessionExpirationUpdateCB session_expiration_update_cb_;
|
|
|
| - // Android-specific. See comment above CreateSessionId().
|
| - uint32_t next_session_id_;
|
| - SessionIdMap web_session_to_session_id_map_;
|
| -
|
| - // Keep track of outstanding promises. This map owns the promise object.
|
| - PromiseMap session_id_to_promise_map_;
|
| + media::CdmPromiseAdapter cdm_promise_adapter_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(ProxyMediaKeys);
|
| };
|
|
|