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_); |