Chromium Code Reviews| Index: webkit/media/webmediaplayer_impl.cc |
| diff --git a/webkit/media/webmediaplayer_impl.cc b/webkit/media/webmediaplayer_impl.cc |
| index 891398f9be4d8f2dafa5030e89d26fcb9ab57ef1..1f9618c0360c7752124ef56ab13c556377d31b2c 100644 |
| --- a/webkit/media/webmediaplayer_impl.cc |
| +++ b/webkit/media/webmediaplayer_impl.cc |
| @@ -22,7 +22,6 @@ |
| #include "media/base/media_switches.h" |
| #include "media/base/pipeline.h" |
| #include "media/base/video_frame.h" |
| -#include "media/crypto/aes_decryptor.h" |
| #include "media/filters/audio_renderer_impl.h" |
| #include "media/filters/video_renderer_base.h" |
| #include "third_party/WebKit/Source/WebKit/chromium/public/WebVideoFrame.h" |
| @@ -35,6 +34,7 @@ |
| #include "webkit/media/buffered_data_source.h" |
| #include "webkit/media/filter_helpers.h" |
| #include "webkit/media/key_systems.h" |
| +#include "webkit/media/proxy_decryptor.h" |
| #include "webkit/media/webmediaplayer_delegate.h" |
| #include "webkit/media/webmediaplayer_proxy.h" |
| #include "webkit/media/webmediaplayer_util.h" |
| @@ -155,7 +155,7 @@ WebMediaPlayerImpl::WebMediaPlayerImpl( |
| filter_collection_->AddAudioRenderer( |
| new media::AudioRendererImpl(new media::NullAudioSink())); |
| - decryptor_.reset(new media::AesDecryptor(proxy_.get())); |
| + decryptor_.reset(new ProxyDecryptor(proxy_.get())); |
| } |
| WebMediaPlayerImpl::~WebMediaPlayerImpl() { |
| @@ -714,10 +714,17 @@ WebMediaPlayerImpl::generateKeyRequest(const WebString& key_system, |
| if (!IsSupportedKeySystem(key_system)) |
| return WebKit::WebMediaPlayer::MediaKeyExceptionKeySystemNotSupported; |
| + // We do not support run-time switching between key systems for now. |
| + if (!current_key_system_.isEmpty() && key_system != current_key_system_) |
| + return WebKit::WebMediaPlayer::MediaKeyExceptionInvalidPlayerState; |
| + |
| DVLOG(1) << "generateKeyRequest: " << key_system.utf8().data() << ": " |
| << std::string(reinterpret_cast<const char*>(init_data), |
| static_cast<size_t>(init_data_length)); |
| + if (current_key_system_.isEmpty()) |
| + current_key_system_ = key_system; |
| + |
| decryptor_->GenerateKeyRequest(key_system.utf8(), |
| init_data, init_data_length); |
| return WebKit::WebMediaPlayer::MediaKeyExceptionNoError; |
| @@ -736,6 +743,9 @@ WebKit::WebMediaPlayer::MediaKeyException WebMediaPlayerImpl::addKey( |
| if (!IsSupportedKeySystem(key_system)) |
| return WebKit::WebMediaPlayer::MediaKeyExceptionKeySystemNotSupported; |
| + if (current_key_system_.isEmpty() || key_system != current_key_system_) |
| + return WebKit::WebMediaPlayer::MediaKeyExceptionInvalidPlayerState; |
|
xhwang
2012/06/20 00:49:57
This will break all demos that call AddKey() befor
|
| + |
| DVLOG(1) << "addKey: " << key_system.utf8().data() << ": " |
| << std::string(reinterpret_cast<const char*>(key), |
| static_cast<size_t>(key_length)) << ", " |
| @@ -754,6 +764,9 @@ WebKit::WebMediaPlayer::MediaKeyException WebMediaPlayerImpl::cancelKeyRequest( |
| if (!IsSupportedKeySystem(key_system)) |
| return WebKit::WebMediaPlayer::MediaKeyExceptionKeySystemNotSupported; |
| + if (current_key_system_.isEmpty() || key_system != current_key_system_) |
| + return WebKit::WebMediaPlayer::MediaKeyExceptionInvalidPlayerState; |
| + |
| decryptor_->CancelKeyRequest(key_system.utf8(), session_id.utf8()); |
| return WebKit::WebMediaPlayer::MediaKeyExceptionNoError; |
| } |