| Index: webkit/media/webmediaplayer_impl.cc
|
| diff --git a/webkit/media/webmediaplayer_impl.cc b/webkit/media/webmediaplayer_impl.cc
|
| index d69547bd2929f9066a001484d16b61feed0d715d..de9415e9a3c00a47b93fac7b176a7368b47b3527 100644
|
| --- a/webkit/media/webmediaplayer_impl.cc
|
| +++ b/webkit/media/webmediaplayer_impl.cc
|
| @@ -35,6 +35,7 @@
|
| #include "v8/include/v8.h"
|
| #include "webkit/media/buffered_data_source.h"
|
| #include "webkit/media/filter_helpers.h"
|
| +#include "webkit/media/media_switches.h"
|
| #include "webkit/media/webmediaplayer_delegate.h"
|
| #include "webkit/media/webmediaplayer_proxy.h"
|
| #include "webkit/media/webmediaplayer_util.h"
|
| @@ -151,11 +152,6 @@ WebMediaPlayerImpl::WebMediaPlayerImpl(
|
| audio_renderer_sink_(audio_renderer_sink),
|
| is_local_source_(false),
|
| supports_save_(true),
|
| - decryptor_(message_loop_factory_->GetMessageLoop(
|
| - media::MessageLoopFactory::kPipeline),
|
| - proxy_.get(),
|
| - client,
|
| - frame),
|
| starting_(false) {
|
| media_log_->AddEvent(
|
| media_log_->CreateEvent(media::MediaLogEvent::WEBMEDIAPLAYER_CREATED));
|
| @@ -191,6 +187,12 @@ WebMediaPlayerImpl::WebMediaPlayerImpl(
|
| // Create default audio renderer.
|
| filter_collection_->AddAudioRenderer(
|
| new media::AudioRendererImpl(new media::NullAudioSink()));
|
| +
|
| + const CommandLine* cmd_line = CommandLine::ForCurrentProcess();
|
| + if (cmd_line->HasSwitch(switches::kEnableEncryptedMedia)) {
|
| + decryptor_.reset(new ProxyDecryptor(message_loop_factory_->GetMessageLoop(
|
| + media::MessageLoopFactory::kPipeline), proxy_.get(), client, frame));
|
| + }
|
| }
|
|
|
| WebMediaPlayerImpl::~WebMediaPlayerImpl() {
|
| @@ -275,7 +277,7 @@ void WebMediaPlayerImpl::load(const WebKit::WebURL& url, CORSMode cors_mode) {
|
| BuildMediaSourceCollection(chunk_demuxer_,
|
| message_loop_factory_.get(),
|
| filter_collection_.get(),
|
| - &decryptor_);
|
| + decryptor_.get());
|
| supports_save_ = false;
|
| StartPipeline();
|
| return;
|
| @@ -297,7 +299,7 @@ void WebMediaPlayerImpl::load(const WebKit::WebURL& url, CORSMode cors_mode) {
|
| BuildDefaultCollection(proxy_->data_source(),
|
| message_loop_factory_.get(),
|
| filter_collection_.get(),
|
| - &decryptor_);
|
| + decryptor_.get());
|
| }
|
|
|
| void WebMediaPlayerImpl::cancelLoad() {
|
| @@ -805,7 +807,7 @@ WebMediaPlayerImpl::GenerateKeyRequestInternal(
|
| // TODO(xhwang): We assume all streams are from the same container (thus have
|
| // the same "type") for now. In the future, the "type" should be passed down
|
| // from the application.
|
| - if (!decryptor_.GenerateKeyRequest(key_system.utf8(),
|
| + if (!decryptor_->GenerateKeyRequest(key_system.utf8(),
|
| init_data_type_,
|
| init_data, init_data_length)) {
|
| current_key_system_.reset();
|
| @@ -852,7 +854,7 @@ WebMediaPlayer::MediaKeyException WebMediaPlayerImpl::AddKeyInternal(
|
| static_cast<size_t>(init_data_length))
|
| << " [" << session_id.utf8().data() << "]";
|
|
|
| - decryptor_.AddKey(key_system.utf8(), key, key_length,
|
| + decryptor_->AddKey(key_system.utf8(), key, key_length,
|
| init_data, init_data_length, session_id.utf8());
|
| return WebMediaPlayer::MediaKeyExceptionNoError;
|
| }
|
| @@ -876,7 +878,7 @@ WebMediaPlayerImpl::CancelKeyRequestInternal(
|
| if (current_key_system_.isEmpty() || key_system != current_key_system_)
|
| return WebMediaPlayer::MediaKeyExceptionInvalidPlayerState;
|
|
|
| - decryptor_.CancelKeyRequest(key_system.utf8(), session_id.utf8());
|
| + decryptor_->CancelKeyRequest(key_system.utf8(), session_id.utf8());
|
| return WebMediaPlayer::MediaKeyExceptionNoError;
|
| }
|
|
|
| @@ -1025,6 +1027,10 @@ void WebMediaPlayerImpl::OnNeedKey(const std::string& key_system,
|
| int init_data_size) {
|
| DCHECK_EQ(main_loop_, MessageLoop::current());
|
|
|
| + // Do not fire NeedKey event if encrypted media is not enabled.
|
| + if (!decryptor_)
|
| + return;
|
| +
|
| UMA_HISTOGRAM_COUNTS(kMediaEme + std::string("NeedKey"), 1);
|
|
|
| DCHECK(init_data_type_.empty() || type.empty() || type == init_data_type_);
|
|
|