Chromium Code Reviews| Index: webkit/media/crypto/proxy_decryptor.h |
| diff --git a/webkit/media/crypto/proxy_decryptor.h b/webkit/media/crypto/proxy_decryptor.h |
| index 9f65a6dd4884ad4e2fd92045ac57ebb25ab73459..95bc0431bf9112851bc62779689b7a662b40c896 100644 |
| --- a/webkit/media/crypto/proxy_decryptor.h |
| +++ b/webkit/media/crypto/proxy_decryptor.h |
| @@ -10,6 +10,7 @@ |
| #include "base/memory/scoped_ptr.h" |
| #include "base/synchronization/lock.h" |
| #include "media/base/decryptor.h" |
| +#include "media/base/decryptor_client.h" |
| namespace base { |
| class MessageLoopProxy; |
| @@ -30,10 +31,29 @@ namespace webkit_media { |
| // forwards decryptor calls to it. |
| // TODO(xhwang): Currently we don't support run-time switching among decryptor |
| // objects. Fix this when needed. |
| -class ProxyDecryptor : public media::Decryptor { |
| +class ProxyDecryptor : public media::Decryptor, public media::DecryptorClient { |
| public: |
| + typedef base::Callback<void(const std::string& key_system, |
| + const std::string& session_id)> KeyAddedCB; |
| + typedef base::Callback<void(const std::string& key_system, |
| + const std::string& session_id, |
| + media::Decryptor::KeyError error_code, |
| + int system_code)> KeyErrorCB; |
| + typedef base::Callback<void(const std::string& key_system, |
| + const std::string& session_id, |
| + scoped_array<uint8> message, |
| + int message_length, |
| + const std::string& default_url)> KeyMessageCB; |
| + typedef base::Callback<void(const std::string& key_system, |
| + const std::string& session_id, |
| + scoped_array<uint8> init_data, |
| + int init_data_size)> NeedKeyCB; |
|
Ami GONE FROM CHROMIUM
2012/10/23 06:52:22
ISTM this CL went half-way to the real goal: delet
xhwang
2012/10/23 07:32:13
Agreed that if we choose the pure callback path th
|
| + |
| ProxyDecryptor(const scoped_refptr<base::MessageLoopProxy>& message_loop, |
| - media::DecryptorClient* decryptor_client, |
| + const KeyAddedCB& key_added_cb, |
| + const KeyErrorCB& key_error_cb, |
| + const KeyMessageCB& key_message_cb, |
| + const NeedKeyCB& need_key_cb, |
| WebKit::WebMediaPlayerClient* web_media_player_client, |
| WebKit::WebFrame* web_frame); |
| virtual ~ProxyDecryptor(); |
| @@ -85,6 +105,23 @@ class ProxyDecryptor : public media::Decryptor { |
| virtual void ResetDecoder(StreamType stream_type) OVERRIDE; |
| virtual void DeinitializeDecoder(StreamType stream_type) OVERRIDE; |
| + // media::DecryptorClient implementation. |
| + virtual void KeyAdded(const std::string& key_system, |
| + const std::string& session_id) OVERRIDE; |
| + virtual void KeyError(const std::string& key_system, |
| + const std::string& session_id, |
| + Decryptor::KeyError error_code, |
| + int system_code) OVERRIDE; |
| + virtual void KeyMessage(const std::string& key_system, |
| + const std::string& session_id, |
| + scoped_array<uint8> message, |
| + int message_length, |
| + const std::string& default_url) OVERRIDE; |
| + virtual void NeedKey(const std::string& key_system, |
| + const std::string& session_id, |
| + scoped_array<uint8> init_data, |
| + int init_data_length) OVERRIDE; |
| + |
| private: |
| // Helper functions to create decryptors to handle the given |key_system|. |
| scoped_ptr<media::Decryptor> CreatePpapiDecryptor( |
| @@ -105,8 +142,11 @@ class ProxyDecryptor : public media::Decryptor { |
| // key/session-related methods do not run on this message loop. |
| scoped_refptr<base::MessageLoopProxy> const decryption_message_loop_; |
| - // DecryptorClient through which key events are fired. |
| - media::DecryptorClient* client_; |
| + // Callbacks for firing key events. |
| + KeyAddedCB key_added_cb_; |
| + KeyErrorCB key_error_cb_; |
| + KeyMessageCB key_message_cb_; |
| + NeedKeyCB need_key_cb_; |
| // Needed to create the PpapiDecryptor. |
| WebKit::WebMediaPlayerClient* web_media_player_client_; |