Index: webkit/media/webmediaplayer_impl.cc |
diff --git a/webkit/media/webmediaplayer_impl.cc b/webkit/media/webmediaplayer_impl.cc |
index d69547bd2929f9066a001484d16b61feed0d715d..47f656317fb8d85eb026dbd56481d730694f55e0 100644 |
--- a/webkit/media/webmediaplayer_impl.cc |
+++ b/webkit/media/webmediaplayer_impl.cc |
@@ -128,6 +128,7 @@ WebMediaPlayerImpl::WebMediaPlayerImpl( |
media::AudioRendererSink* audio_renderer_sink, |
media::MessageLoopFactory* message_loop_factory, |
MediaStreamClient* media_stream_client, |
+ bool encrypted_media_enabled, |
media::MediaLog* media_log) |
: frame_(frame), |
network_state_(WebMediaPlayer::NetworkStateEmpty), |
@@ -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,11 @@ WebMediaPlayerImpl::WebMediaPlayerImpl( |
// Create default audio renderer. |
filter_collection_->AddAudioRenderer( |
new media::AudioRendererImpl(new media::NullAudioSink())); |
+ |
+ if (encrypted_media_enabled) { |
scherkus (not reviewing)
2012/11/27 23:17:43
I believe you can simplify a lot of this CL by:
xhwang
2012/11/29 02:24:14
Done.
|
+ decryptor_.reset(new ProxyDecryptor(message_loop_factory_->GetMessageLoop( |
+ media::MessageLoopFactory::kPipeline), proxy_.get(), client, frame)); |
+ } |
} |
WebMediaPlayerImpl::~WebMediaPlayerImpl() { |
@@ -275,7 +276,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 +298,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 +806,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 +853,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 +877,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 +1026,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_); |