#include "media/base/decryptor.h"
#include "media/base/media_keys.h"
-class GURL;
-
-namespace blink {
#if defined(ENABLE_PEPPER_CDMS)
-class WebFrame;
-class WebMediaPlayerClient;
-#endif // defined(ENABLE_PEPPER_CDMS)
-}
+#include "content/renderer/media/crypto/pepper_cdm_wrapper.h"
+#endif
+
+class GURL;
namespace content {
typedef base::Callback<void(const std::string& session_id)> KeyAddedCB;
typedef base::Callback<void(const std::string& session_id,
media::MediaKeys::KeyError error_code,
- int system_code)> KeyErrorCB;
+ uint32 system_code)> KeyErrorCB;
typedef base::Callback<void(const std::string& session_id,
const std::vector<uint8>& message,
const std::string& default_url)> KeyMessageCB;
ProxyDecryptor(
#if defined(ENABLE_PEPPER_CDMS)
- blink::WebMediaPlayerClient* web_media_player_client,
- blink::WebFrame* web_frame,
+ const CreatePepperCdmCB& create_pepper_cdm_cb,
#elif defined(OS_ANDROID)
RendererMediaPlayerManager* manager,
- int media_keys_id,
#endif // defined(ENABLE_PEPPER_CDMS)
const KeyAddedCB& key_added_cb,
const KeyErrorCB& key_error_cb,
// Decryptor is associated.
media::Decryptor* GetDecryptor();
+#if defined(OS_ANDROID)
+ // Returns the CDM ID associated with this object. May be kInvalidCdmId if no
+ // CDM ID is associated, such as when Clear Key is used.
+ int GetCdmId();
+#endif
+
// Only call this once.
- bool InitializeCDM(const std::string& key_system, const GURL& frame_url);
+ bool InitializeCDM(const std::string& key_system,
+ const GURL& security_origin);
// May only be called after InitializeCDM() succeeds.
bool GenerateKeyRequest(const std::string& type,
// Helper function to create MediaKeys to handle the given |key_system|.
scoped_ptr<media::MediaKeys> CreateMediaKeys(const std::string& key_system,
- const GURL& frame_url);
+ const GURL& security_origin);
// Callbacks for firing session events.
void OnSessionCreated(uint32 session_id, const std::string& web_session_id);
void OnSessionClosed(uint32 session_id);
void OnSessionError(uint32 session_id,
media::MediaKeys::KeyError error_code,
- int system_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;
// stored by copy.
const std::string& LookupWebSessionId(uint32 session_id) const;
- base::WeakPtrFactory<ProxyDecryptor> weak_ptr_factory_;
-
#if defined(ENABLE_PEPPER_CDMS)
- // Callback for cleaning up a Pepper-based CDM.
- void DestroyHelperPlugin();
-
- // Needed to create the PpapiDecryptor.
- blink::WebMediaPlayerClient* web_media_player_client_;
- blink::WebFrame* web_frame_;
+ // Callback to create the Pepper plugin.
+ CreatePepperCdmCB create_pepper_cdm_cb_;
#elif defined(OS_ANDROID)
RendererMediaPlayerManager* manager_;
- int media_keys_id_;
+ int cdm_id_;
#endif // defined(ENABLE_PEPPER_CDMS)
// The real MediaKeys that manages key operations for the ProxyDecryptor.
bool is_clear_key_;
+ // NOTE: Weak pointers must be invalidated before all other member variables.
+ base::WeakPtrFactory<ProxyDecryptor> weak_ptr_factory_;
+
DISALLOW_COPY_AND_ASSIGN(ProxyDecryptor);
};