Index: webkit/media/crypto/proxy_decryptor.h |
diff --git a/webkit/media/crypto/proxy_decryptor.h b/webkit/media/crypto/proxy_decryptor.h |
index 3e81ce37e7b5bbae46e8f7d5c8a2cb981789f74b..5e3d3d7fd6c916c0b8525b2a4db262987f9c3849 100644 |
--- a/webkit/media/crypto/proxy_decryptor.h |
+++ b/webkit/media/crypto/proxy_decryptor.h |
@@ -11,6 +11,7 @@ |
#include "base/memory/weak_ptr.h" |
#include "base/synchronization/lock.h" |
#include "media/base/decryptor.h" |
+#include "media/base/media_keys.h" |
namespace WebKit { |
class WebFrame; |
@@ -19,11 +20,13 @@ class WebMediaPlayerClient; |
namespace webkit_media { |
+class PpapiDecryptor; |
+ |
// A decryptor proxy that creates a real decryptor object on demand and |
// forwards decryptor calls to it. |
// TODO(xhwang): Currently we don't support run-time switching among decryptor |
// objects. Fix this when needed. |
-class ProxyDecryptor { |
+class ProxyDecryptor : public media::MediaKeys { |
ddorwin
2013/05/24 20:39:12
We should probably rename this class in a future C
xhwang
2013/05/24 23:15:56
Any idea on the new name? How about MediaKeysManag
ddorwin
2013/05/28 19:44:33
I'm not sure. It still hides the separation of Dec
xhwang
2013/05/28 23:50:39
Added TODO.
|
public: |
ProxyDecryptor(WebKit::WebMediaPlayerClient* web_media_player_client, |
WebKit::WebFrame* web_frame, |
@@ -39,29 +42,31 @@ class ProxyDecryptor { |
// NULL immediately and reset. |
void SetDecryptorReadyCB(const media::DecryptorReadyCB& decryptor_ready_cb); |
- bool GenerateKeyRequest(const std::string& key_system, |
- const std::string& type, |
- const uint8* init_data, int init_data_length); |
- void AddKey(const std::string& key_system, |
- const uint8* key, int key_length, |
- const uint8* init_data, int init_data_length, |
- const std::string& session_id); |
- void CancelKeyRequest(const std::string& key_system, |
- const std::string& session_id); |
+ // MediaKeys implementation. |
+ virtual bool GenerateKeyRequest(const std::string& key_system, |
+ const std::string& type, |
+ const uint8* init_data, |
+ int init_data_length) OVERRIDE; |
+ virtual void AddKey(const std::string& key_system, |
+ const uint8* key, int key_length, |
+ const uint8* init_data, int init_data_length, |
+ const std::string& session_id) OVERRIDE; |
+ virtual void CancelKeyRequest(const std::string& key_system, |
+ const std::string& session_id) OVERRIDE; |
private: |
// Helper functions to create decryptors to handle the given |key_system|. |
#if defined(ENABLE_PEPPER_CDMS) |
- scoped_ptr<media::Decryptor> CreatePpapiDecryptor( |
+ scoped_ptr<PpapiDecryptor> CreatePpapiDecryptor( |
const std::string& key_system); |
#endif // defined(ENABLE_PEPPER_CDMS) |
- scoped_ptr<media::Decryptor> CreateDecryptor(const std::string& key_system); |
+ bool CreateDecryptor(const std::string& key_system); |
// Callbacks for firing key events. |
void KeyAdded(const std::string& key_system, const std::string& session_id); |
void KeyError(const std::string& key_system, |
const std::string& session_id, |
- media::Decryptor::KeyError error_code, |
+ media::MediaKeys::KeyError error_code, |
int system_code); |
void KeyMessage(const std::string& key_system, |
const std::string& session_id, |
@@ -89,9 +94,12 @@ class ProxyDecryptor { |
media::DecryptorReadyCB decryptor_ready_cb_; |
- // The real decryptor that does decryption for the ProxyDecryptor. |
- // This pointer is protected by the |lock_|. |
- scoped_ptr<media::Decryptor> decryptor_; |
+ // The real MediaKeys and Decryptor objects that perform key operations and |
+ // decryption for the ProxyDecryptor. These two pointers refer to the same |
+ // object and |media_keys_| takes the ownership. They are protected by the |
+ // |lock_|. |
+ scoped_ptr<media::MediaKeys> media_keys_; |
+ media::Decryptor* decryptor_; |
xhwang
2013/05/24 00:25:12
I like keeping MediaKeys and Decryptor separate. B
ddorwin
2013/05/24 20:39:12
The inheritance would be for convenience and not r
xhwang
2013/05/24 23:15:56
Done.
|
base::WeakPtrFactory<ProxyDecryptor> weak_ptr_factory_; |