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

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

Issue 850183002: media: Support unprefixed EME API on Android. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase only Created 5 years, 11 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.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);
};

Powered by Google App Engine
This is Rietveld 408576698