| Index: webkit/media/crypto/ppapi_decryptor.cc
|
| diff --git a/webkit/media/crypto/ppapi_decryptor.cc b/webkit/media/crypto/ppapi_decryptor.cc
|
| index 53f523c6ac4dc808e80db0c0bf8479f4a4496d4b..7563b38fa5d1415b2d7e93409410eb9e077b3e34 100644
|
| --- a/webkit/media/crypto/ppapi_decryptor.cc
|
| +++ b/webkit/media/crypto/ppapi_decryptor.cc
|
| @@ -14,7 +14,6 @@
|
| #include "base/message_loop_proxy.h"
|
| #include "media/base/audio_decoder_config.h"
|
| #include "media/base/decoder_buffer.h"
|
| -#include "media/base/decryptor_client.h"
|
| #include "media/base/video_decoder_config.h"
|
| #include "media/base/video_frame.h"
|
| #include "webkit/media/crypto/key_systems.h"
|
| @@ -24,21 +23,24 @@
|
| namespace webkit_media {
|
|
|
| PpapiDecryptor::PpapiDecryptor(
|
| - media::DecryptorClient* client,
|
| - const scoped_refptr<webkit::ppapi::PluginInstance>& plugin_instance)
|
| - : client_(client),
|
| - plugin_instance_(plugin_instance),
|
| + const scoped_refptr<webkit::ppapi::PluginInstance>& plugin_instance,
|
| + const media::KeyAddedCB& key_added_cb,
|
| + const media::KeyErrorCB& key_error_cb,
|
| + const media::KeyMessageCB& key_message_cb,
|
| + const media::NeedKeyCB& need_key_cb)
|
| + : plugin_instance_(plugin_instance),
|
| + key_added_cb_(key_added_cb),
|
| + key_error_cb_(key_error_cb),
|
| + key_message_cb_(key_message_cb),
|
| + need_key_cb_(need_key_cb),
|
| plugin_cdm_delegate_(NULL),
|
| render_loop_proxy_(base::MessageLoopProxy::current()),
|
| ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)),
|
| weak_this_(weak_ptr_factory_.GetWeakPtr()) {
|
| - DCHECK(client_);
|
| DCHECK(plugin_instance_);
|
| }
|
|
|
| PpapiDecryptor::~PpapiDecryptor() {
|
| - if (plugin_cdm_delegate_)
|
| - plugin_cdm_delegate_->set_decrypt_client(NULL);
|
| plugin_cdm_delegate_ = NULL;
|
| plugin_instance_ = NULL;
|
| }
|
| @@ -56,7 +58,11 @@ bool PpapiDecryptor::GenerateKeyRequest(const std::string& key_system,
|
| DVLOG(1) << "PpapiDecryptor: plugin cdm delegate creation failed.";
|
| return false;
|
| }
|
| - plugin_cdm_delegate_->set_decrypt_client(client_);
|
| + plugin_cdm_delegate_->SetKeyEventCallbacks(
|
| + base::Bind(&PpapiDecryptor::KeyAdded, weak_this_),
|
| + base::Bind(&PpapiDecryptor::KeyError, weak_this_),
|
| + base::Bind(&PpapiDecryptor::KeyMessage, weak_this_),
|
| + base::Bind(&PpapiDecryptor::NeedKey, weak_this_));
|
| }
|
|
|
| if (!plugin_cdm_delegate_->GenerateKeyRequest(
|
| @@ -82,11 +88,11 @@ void PpapiDecryptor::AddKey(const std::string& key_system,
|
| ReportFailureToCallPlugin(key_system, session_id);
|
| }
|
|
|
| - if (!audio_key_added_cb_.is_null())
|
| - audio_key_added_cb_.Run();
|
| + if (!new_audio_key_cb_.is_null())
|
| + new_audio_key_cb_.Run();
|
|
|
| - if (!video_key_added_cb_.is_null())
|
| - video_key_added_cb_.Run();
|
| + if (!new_video_key_cb_.is_null())
|
| + new_video_key_cb_.Run();
|
| }
|
|
|
| void PpapiDecryptor::CancelKeyRequest(const std::string& key_system,
|
| @@ -98,14 +104,14 @@ void PpapiDecryptor::CancelKeyRequest(const std::string& key_system,
|
| ReportFailureToCallPlugin(key_system, session_id);
|
| }
|
|
|
| -void PpapiDecryptor::RegisterKeyAddedCB(StreamType stream_type,
|
| - const KeyAddedCB& key_added_cb) {
|
| +void PpapiDecryptor::RegisterNewKeyCB(StreamType stream_type,
|
| + const NewKeyCB& new_key_cb) {
|
| switch (stream_type) {
|
| case kAudio:
|
| - audio_key_added_cb_ = key_added_cb;
|
| + new_audio_key_cb_ = new_key_cb;
|
| break;
|
| case kVideo:
|
| - video_key_added_cb_ = key_added_cb;
|
| + new_video_key_cb_ = new_key_cb;
|
| break;
|
| default:
|
| NOTREACHED();
|
| @@ -232,7 +238,7 @@ void PpapiDecryptor::DeinitializeDecoder(StreamType stream_type) {
|
| void PpapiDecryptor::ReportFailureToCallPlugin(const std::string& key_system,
|
| const std::string& session_id) {
|
| DVLOG(1) << "Failed to call plugin.";
|
| - client_->KeyError(key_system, session_id, kUnknownError, 0);
|
| + key_error_cb_.Run(key_system, session_id, kUnknownError, 0);
|
| }
|
|
|
| void PpapiDecryptor::OnDecoderInitialized(StreamType stream_type,
|
| @@ -251,4 +257,36 @@ void PpapiDecryptor::OnDecoderInitialized(StreamType stream_type,
|
| }
|
| }
|
|
|
| +void PpapiDecryptor::KeyAdded(const std::string& key_system,
|
| + const std::string& session_id) {
|
| + DCHECK(render_loop_proxy_->BelongsToCurrentThread());
|
| + key_added_cb_.Run(key_system, session_id);
|
| +}
|
| +
|
| +void PpapiDecryptor::KeyError(const std::string& key_system,
|
| + const std::string& session_id,
|
| + media::Decryptor::KeyError error_code,
|
| + int system_code) {
|
| + DCHECK(render_loop_proxy_->BelongsToCurrentThread());
|
| + key_error_cb_.Run(key_system, session_id, error_code, system_code);
|
| +}
|
| +
|
| +void PpapiDecryptor::KeyMessage(const std::string& key_system,
|
| + const std::string& session_id,
|
| + const std::string& message,
|
| + const std::string& default_url) {
|
| + DCHECK(render_loop_proxy_->BelongsToCurrentThread());
|
| + key_message_cb_.Run(key_system, session_id, message, default_url);
|
| +}
|
| +
|
| +void PpapiDecryptor::NeedKey(const std::string& key_system,
|
| + const std::string& session_id,
|
| + const std::string& type,
|
| + scoped_array<uint8> init_data,
|
| + int init_data_size) {
|
| + DCHECK(render_loop_proxy_->BelongsToCurrentThread());
|
| + need_key_cb_.Run(key_system, session_id, type,
|
| + init_data.Pass(), init_data_size);
|
| +}
|
| +
|
| } // namespace webkit_media
|
|
|