| Index: content/renderer/media/crypto/proxy_decryptor.h
|
| diff --git a/content/renderer/media/crypto/proxy_decryptor.h b/content/renderer/media/crypto/proxy_decryptor.h
|
| index 951b7c3eb545314e2248adf30b0bb9d55dfc583d..efdcf3a6607c5064143fb80f5fcc571b8b250d67 100644
|
| --- a/content/renderer/media/crypto/proxy_decryptor.h
|
| +++ b/content/renderer/media/crypto/proxy_decryptor.h
|
| @@ -5,15 +5,13 @@
|
| #ifndef CONTENT_RENDERER_MEDIA_CRYPTO_PROXY_DECRYPTOR_H_
|
| #define CONTENT_RENDERER_MEDIA_CRYPTO_PROXY_DECRYPTOR_H_
|
|
|
| -#include <map>
|
| -#include <set>
|
| #include <string>
|
| #include <vector>
|
|
|
| #include "base/basictypes.h"
|
| +#include "base/containers/hash_tables.h"
|
| #include "base/memory/scoped_ptr.h"
|
| #include "base/memory/weak_ptr.h"
|
| -#include "base/synchronization/lock.h"
|
| #include "media/base/decryptor.h"
|
| #include "media/base/media_keys.h"
|
|
|
| @@ -33,12 +31,6 @@ class RendererMediaPlayerManager;
|
| // A decryptor proxy that creates a real decryptor object on demand and
|
| // forwards decryptor calls to it.
|
| //
|
| -// Now that the Pepper API calls use session ID to match responses with
|
| -// requests, this class maintains a mapping between session ID and web session
|
| -// ID. Callers of this class expect web session IDs in the responses.
|
| -// Session IDs are internal unique references to the session. Web session IDs
|
| -// are the CDM generated ID for the session, and are what are visible to users.
|
| -//
|
| // TODO(xhwang): Currently we don't support run-time switching among decryptor
|
| // objects. Fix this when needed.
|
| // TODO(xhwang): The ProxyDecryptor is not a Decryptor. Find a better name!
|
| @@ -89,31 +81,23 @@ class ProxyDecryptor {
|
| void CancelKeyRequest(const std::string& session_id);
|
|
|
| private:
|
| - // Session_id <-> web_session_id map.
|
| - typedef std::map<uint32, std::string> SessionIdMap;
|
| -
|
| // Helper function to create MediaKeys to handle the given |key_system|.
|
| scoped_ptr<media::MediaKeys> CreateMediaKeys(const std::string& key_system,
|
| const GURL& security_origin);
|
|
|
| // Callbacks for firing session events.
|
| - 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& default_url);
|
| - void OnSessionReady(uint32 session_id);
|
| - void OnSessionClosed(uint32 session_id);
|
| - void OnSessionError(uint32 session_id,
|
| - media::MediaKeys::KeyError error_code,
|
| - uint32 system_code);
|
| -
|
| - // Helper function to determine session_id for the provided |web_session_id|.
|
| - uint32 LookupSessionId(const std::string& web_session_id) const;
|
| + void OnSessionReady(const std::string& web_session_id);
|
| + void OnSessionClosed(const std::string& web_session_id);
|
| + void OnSessionError(const std::string& web_session_id,
|
| + media::MediaKeys::Exception exception_code,
|
| + uint32 system_code,
|
| + const std::string& error_message);
|
|
|
| - // Helper function to determine web_session_id for the provided |session_id|.
|
| - // The returned web_session_id is only valid on the main thread, and should be
|
| - // stored by copy.
|
| - const std::string& LookupWebSessionId(uint32 session_id) const;
|
| + // Called when a session is actually created or loaded.
|
| + void SetSessionId(bool persistent, const std::string& web_session_id);
|
|
|
| #if defined(ENABLE_PEPPER_CDMS)
|
| // Callback to create the Pepper plugin.
|
| @@ -131,14 +115,8 @@ class ProxyDecryptor {
|
| KeyErrorCB key_error_cb_;
|
| KeyMessageCB key_message_cb_;
|
|
|
| - // Session IDs are used to uniquely track sessions so that CDM callbacks
|
| - // can get mapped to the correct session ID. Session ID should be unique
|
| - // per renderer process for debugging purposes.
|
| - static uint32 next_session_id_;
|
| -
|
| - SessionIdMap sessions_;
|
| -
|
| - std::set<uint32> persistent_sessions_;
|
| + // Keep track of both persistent and non-persistent sessions.
|
| + base::hash_map<std::string, bool> active_sessions_;
|
|
|
| bool is_clear_key_;
|
|
|
|
|