summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorxhwang@chromium.org <xhwang@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-11-02 23:04:03 +0000
committerxhwang@chromium.org <xhwang@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-11-02 23:04:03 +0000
commit82d7abd7b2726db828134466e4bd98910246d41f (patch)
tree4a16ab1817df9f1ba4e758c303ddef271fa7d27e
parenta45d8566cf820425ce3c95d3b5d21950767f3b0e (diff)
downloadchromium_src-82d7abd7b2726db828134466e4bd98910246d41f.zip
chromium_src-82d7abd7b2726db828134466e4bd98910246d41f.tar.gz
chromium_src-82d7abd7b2726db828134466e4bd98910246d41f.tar.bz2
Add RegisterKeyAddedCB in Decryptor interface.
Previously KeyAddedCB is registered with InitializeXXXDecoder calls. Generalize this to a separate RegisterKeyAddedCB call so that we can also support the decrypt-only path. BUG=123421 TEST=media_unittests passes. EME demo page still works. Review URL: https://chromiumcodereview.appspot.com/11348056 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@165792 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--media/base/decryptor.h21
-rw-r--r--media/base/mock_filters.cc10
-rw-r--r--media/base/mock_filters.h18
-rw-r--r--media/crypto/aes_decryptor.cc27
-rw-r--r--media/crypto/aes_decryptor.h11
-rw-r--r--media/filters/decrypting_audio_decoder.cc6
-rw-r--r--media/filters/decrypting_audio_decoder_unittest.cc8
-rw-r--r--media/filters/decrypting_video_decoder.cc7
-rw-r--r--media/filters/decrypting_video_decoder_unittest.cc13
-rw-r--r--webkit/media/crypto/ppapi_decryptor.cc42
-rw-r--r--webkit/media/crypto/ppapi_decryptor.h12
-rw-r--r--webkit/media/crypto/proxy_decryptor.cc11
-rw-r--r--webkit/media/crypto/proxy_decryptor.h8
13 files changed, 115 insertions, 79 deletions
diff --git a/media/base/decryptor.h b/media/base/decryptor.h
index de293e9..2efd03b 100644
--- a/media/base/decryptor.h
+++ b/media/base/decryptor.h
@@ -89,6 +89,17 @@ class MEDIA_EXPORT Decryptor {
virtual void CancelKeyRequest(const std::string& key_system,
const std::string& session_id) = 0;
+ // Indicates that a key has been added to the Decryptor.
+ typedef base::Callback<void()> KeyAddedCB;
+
+ // Registers a KeyAddedCB which should be called when a key is added to the
+ // decryptor. Only one KeyAddedCB can be registered for one |stream_type|.
+ // If this function is called multiple times for the same |stream_type|, the
+ // previously registered callback will be replaced. In other words,
+ // registering a null callback cancels the originally registered callback.
+ virtual void RegisterKeyAddedCB(StreamType stream_type,
+ const KeyAddedCB& key_added_cb) = 0;
+
// Indicates completion of a decryption operation.
//
// First parameter: The status of the decryption operation.
@@ -125,18 +136,12 @@ class MEDIA_EXPORT Decryptor {
// - Set to true if initialization was successful. False if an error occurred.
typedef base::Callback<void(bool)> DecoderInitCB;
- // Indicates that a key has been added to the Decryptor.
- typedef base::Callback<void()> KeyAddedCB;
-
// Initializes a decoder with the given |config|, executing the |init_cb|
// upon completion.
- // |key_added_cb| should be called when a key is added to the decryptor.
virtual void InitializeAudioDecoder(scoped_ptr<AudioDecoderConfig> config,
- const DecoderInitCB& init_cb,
- const KeyAddedCB& key_added_cb) = 0;
+ const DecoderInitCB& init_cb) = 0;
virtual void InitializeVideoDecoder(scoped_ptr<VideoDecoderConfig> config,
- const DecoderInitCB& init_cb,
- const KeyAddedCB& key_added_cb) = 0;
+ const DecoderInitCB& init_cb) = 0;
// Helper structure for managing multiple decoded audio buffers per input.
// TODO(xhwang): Rename this to AudioFrames.
diff --git a/media/base/mock_filters.cc b/media/base/mock_filters.cc
index d32501e..bf6beac 100644
--- a/media/base/mock_filters.cc
+++ b/media/base/mock_filters.cc
@@ -46,16 +46,14 @@ MockDecryptor::~MockDecryptor() {}
void MockDecryptor::InitializeAudioDecoder(
scoped_ptr<AudioDecoderConfig> config,
- const DecoderInitCB& init_cb,
- const KeyAddedCB& key_added_cb) {
- InitializeAudioDecoderMock(*config, init_cb, key_added_cb);
+ const DecoderInitCB& init_cb) {
+ InitializeAudioDecoderMock(*config, init_cb);
}
void MockDecryptor::InitializeVideoDecoder(
scoped_ptr<VideoDecoderConfig> config,
- const DecoderInitCB& init_cb,
- const KeyAddedCB& key_added_cb) {
- InitializeVideoDecoderMock(*config, init_cb, key_added_cb);
+ const DecoderInitCB& init_cb) {
+ InitializeVideoDecoderMock(*config, init_cb);
}
MockDecryptorClient::MockDecryptorClient() {}
diff --git a/media/base/mock_filters.h b/media/base/mock_filters.h
index 3c98ae8..b0698df 100644
--- a/media/base/mock_filters.h
+++ b/media/base/mock_filters.h
@@ -208,6 +208,8 @@ class MockDecryptor : public Decryptor {
const std::string& session_id));
MOCK_METHOD2(CancelKeyRequest, void(const std::string& key_system,
const std::string& session_id));
+ MOCK_METHOD2(RegisterKeyAddedCB, void(StreamType stream_type,
+ const KeyAddedCB& key_added_cb));
MOCK_METHOD3(Decrypt, void(StreamType stream_type,
const scoped_refptr<DecoderBuffer>& encrypted,
const DecryptCB& decrypt_cb));
@@ -215,14 +217,12 @@ class MockDecryptor : public Decryptor {
// TODO(xhwang): The following two methods are workarounds of the issue that
// move-only parameters are not supported in mocked methods. Remove when the
// issue is fixed: http://code.google.com/p/googletest/issues/detail?id=395
- MOCK_METHOD3(InitializeAudioDecoderMock,
+ MOCK_METHOD2(InitializeAudioDecoderMock,
void(const AudioDecoderConfig& config,
- const DecoderInitCB& init_cb,
- const KeyAddedCB& key_added_cb));
- MOCK_METHOD3(InitializeVideoDecoderMock,
+ const DecoderInitCB& init_cb));
+ MOCK_METHOD2(InitializeVideoDecoderMock,
void(const VideoDecoderConfig& config,
- const DecoderInitCB& init_cb,
- const KeyAddedCB& key_added_cb));
+ const DecoderInitCB& init_cb));
MOCK_METHOD2(DecryptAndDecodeAudio,
void(const scoped_refptr<media::DecoderBuffer>& encrypted,
const AudioDecodeCB& audio_decode_cb));
@@ -233,11 +233,9 @@ class MockDecryptor : public Decryptor {
MOCK_METHOD1(DeinitializeDecoder, void(StreamType stream_type));
virtual void InitializeAudioDecoder(scoped_ptr<AudioDecoderConfig> config,
- const DecoderInitCB& init_cb,
- const KeyAddedCB& key_added_cb) OVERRIDE;
+ const DecoderInitCB& init_cb) OVERRIDE;
virtual void InitializeVideoDecoder(scoped_ptr<VideoDecoderConfig> config,
- const DecoderInitCB& init_cb,
- const KeyAddedCB& key_added_cb) OVERRIDE;
+ const DecoderInitCB& init_cb) OVERRIDE;
private:
DISALLOW_COPY_AND_ASSIGN(MockDecryptor);
diff --git a/media/crypto/aes_decryptor.cc b/media/crypto/aes_decryptor.cc
index fe964f6c..fb16486 100644
--- a/media/crypto/aes_decryptor.cc
+++ b/media/crypto/aes_decryptor.cc
@@ -194,6 +194,13 @@ void AesDecryptor::AddKey(const std::string& key_system,
}
SetKey(key_id_string, decryption_key.Pass());
+
+ if (!audio_key_added_cb_.is_null())
+ audio_key_added_cb_.Run();
+
+ if (!video_key_added_cb_.is_null())
+ video_key_added_cb_.Run();
+
client_->KeyAdded(key_system, session_id);
}
@@ -201,6 +208,20 @@ void AesDecryptor::CancelKeyRequest(const std::string& key_system,
const std::string& session_id) {
}
+void AesDecryptor::RegisterKeyAddedCB(StreamType stream_type,
+ const KeyAddedCB& key_added_cb) {
+ switch (stream_type) {
+ case kAudio:
+ audio_key_added_cb_ = key_added_cb;
+ break;
+ case kVideo:
+ video_key_added_cb_ = key_added_cb;
+ break;
+ default:
+ NOTREACHED();
+ }
+}
+
void AesDecryptor::Decrypt(StreamType stream_type,
const scoped_refptr<DecoderBuffer>& encrypted,
const DecryptCB& decrypt_cb) {
@@ -240,15 +261,13 @@ void AesDecryptor::CancelDecrypt(StreamType stream_type) {
}
void AesDecryptor::InitializeAudioDecoder(scoped_ptr<AudioDecoderConfig> config,
- const DecoderInitCB& init_cb,
- const KeyAddedCB& key_added_cb) {
+ const DecoderInitCB& init_cb) {
// AesDecryptor does not support audio decoding.
init_cb.Run(false);
}
void AesDecryptor::InitializeVideoDecoder(scoped_ptr<VideoDecoderConfig> config,
- const DecoderInitCB& init_cb,
- const KeyAddedCB& key_added_cb) {
+ const DecoderInitCB& init_cb) {
// AesDecryptor does not support video decoding.
init_cb.Run(false);
}
diff --git a/media/crypto/aes_decryptor.h b/media/crypto/aes_decryptor.h
index 966738b..e983805 100644
--- a/media/crypto/aes_decryptor.h
+++ b/media/crypto/aes_decryptor.h
@@ -46,16 +46,16 @@ class MEDIA_EXPORT AesDecryptor : public Decryptor {
const std::string& session_id) OVERRIDE;
virtual void CancelKeyRequest(const std::string& key_system,
const std::string& session_id) OVERRIDE;
+ virtual void RegisterKeyAddedCB(StreamType stream_type,
+ const KeyAddedCB& key_added_cb) OVERRIDE;
virtual void Decrypt(StreamType stream_type,
const scoped_refptr<DecoderBuffer>& encrypted,
const DecryptCB& decrypt_cb) OVERRIDE;
virtual void CancelDecrypt(StreamType stream_type) OVERRIDE;
virtual void InitializeAudioDecoder(scoped_ptr<AudioDecoderConfig> config,
- const DecoderInitCB& init_cb,
- const KeyAddedCB& key_added_cb) OVERRIDE;
+ const DecoderInitCB& init_cb) OVERRIDE;
virtual void InitializeVideoDecoder(scoped_ptr<VideoDecoderConfig> config,
- const DecoderInitCB& init_cb,
- const KeyAddedCB& key_added_cb) OVERRIDE;
+ const DecoderInitCB& init_cb) OVERRIDE;
virtual void DecryptAndDecodeAudio(
const scoped_refptr<DecoderBuffer>& encrypted,
const AudioDecodeCB& audio_decode_cb) OVERRIDE;
@@ -113,6 +113,9 @@ class MEDIA_EXPORT AesDecryptor : public Decryptor {
DecryptorClient* const client_;
+ KeyAddedCB audio_key_added_cb_;
+ KeyAddedCB video_key_added_cb_;
+
DISALLOW_COPY_AND_ASSIGN(AesDecryptor);
};
diff --git a/media/filters/decrypting_audio_decoder.cc b/media/filters/decrypting_audio_decoder.cc
index 5ecc3e7..fd5cd0d 100644
--- a/media/filters/decrypting_audio_decoder.cc
+++ b/media/filters/decrypting_audio_decoder.cc
@@ -171,8 +171,7 @@ void DecryptingAudioDecoder::SetDecryptor(Decryptor* decryptor) {
state_ = kPendingDecoderInit;
decryptor_->InitializeAudioDecoder(
scoped_config.Pass(),
- BIND_TO_LOOP(&DecryptingAudioDecoder::FinishInitialization),
- BIND_TO_LOOP(&DecryptingAudioDecoder::OnKeyAdded));
+ BIND_TO_LOOP(&DecryptingAudioDecoder::FinishInitialization));
}
void DecryptingAudioDecoder::FinishInitialization(bool success) {
@@ -198,6 +197,9 @@ void DecryptingAudioDecoder::FinishInitialization(bool success) {
bytes_per_sample_ = ChannelLayoutToChannelCount(channel_layout_) *
bits_per_channel_ / kBitsPerByte;
+ decryptor_->RegisterKeyAddedCB(
+ Decryptor::kAudio, BIND_TO_LOOP(&DecryptingAudioDecoder::OnKeyAdded));
+
state_ = kIdle;
base::ResetAndReturn(&init_cb_).Run(PIPELINE_OK);
}
diff --git a/media/filters/decrypting_audio_decoder_unittest.cc b/media/filters/decrypting_audio_decoder_unittest.cc
index a77438a..bf3684fc 100644
--- a/media/filters/decrypting_audio_decoder_unittest.cc
+++ b/media/filters/decrypting_audio_decoder_unittest.cc
@@ -118,11 +118,13 @@ class DecryptingAudioDecoderTest : public testing::Test {
}
void Initialize() {
- EXPECT_CALL(*decryptor_, InitializeAudioDecoderMock(_, _, _))
+ EXPECT_CALL(*decryptor_, InitializeAudioDecoderMock(_, _))
.Times(AtMost(1))
- .WillOnce(DoAll(RunCallback1(true), SaveArg<2>(&key_added_cb_)));
+ .WillOnce(RunCallback1(true));
EXPECT_CALL(*this, RequestDecryptorNotification(_))
.WillOnce(RunCallback0(decryptor_.get()));
+ EXPECT_CALL(*decryptor_, RegisterKeyAddedCB(Decryptor::kAudio, _))
+ .WillOnce(SaveArg<1>(&key_added_cb_));
config_.Initialize(kCodecVorbis, 16, CHANNEL_LAYOUT_STEREO, 44100,
NULL, 0, true, true);
@@ -278,7 +280,7 @@ TEST_F(DecryptingAudioDecoderTest, Initialize_InvalidAudioConfig) {
// Ensure decoder handles unsupported audio configs without crashing.
TEST_F(DecryptingAudioDecoderTest, Initialize_UnsupportedAudioConfig) {
- EXPECT_CALL(*decryptor_, InitializeAudioDecoderMock(_, _, _))
+ EXPECT_CALL(*decryptor_, InitializeAudioDecoderMock(_, _))
.WillOnce(RunCallback1(false));
EXPECT_CALL(*this, RequestDecryptorNotification(_))
.WillOnce(RunCallback0(decryptor_.get()));
diff --git a/media/filters/decrypting_video_decoder.cc b/media/filters/decrypting_video_decoder.cc
index f7ba299..c819a2e 100644
--- a/media/filters/decrypting_video_decoder.cc
+++ b/media/filters/decrypting_video_decoder.cc
@@ -104,6 +104,7 @@ void DecryptingVideoDecoder::Stop(const base::Closure& closure) {
// render thread to be processing messages to complete (such as PPAPI
// callbacks).
if (decryptor_) {
+ decryptor_->RegisterKeyAddedCB(Decryptor::kVideo, Decryptor::KeyAddedCB());
decryptor_->DeinitializeDecoder(Decryptor::kVideo);
decryptor_ = NULL;
}
@@ -180,8 +181,7 @@ void DecryptingVideoDecoder::SetDecryptor(Decryptor* decryptor) {
state_ = kPendingDecoderInit;
decryptor_->InitializeVideoDecoder(
scoped_config.Pass(),
- BIND_TO_LOOP(&DecryptingVideoDecoder::FinishInitialization),
- BIND_TO_LOOP(&DecryptingVideoDecoder::OnKeyAdded));
+ BIND_TO_LOOP(&DecryptingVideoDecoder::FinishInitialization));
}
void DecryptingVideoDecoder::FinishInitialization(bool success) {
@@ -202,6 +202,9 @@ void DecryptingVideoDecoder::FinishInitialization(bool success) {
return;
}
+ decryptor_->RegisterKeyAddedCB(
+ Decryptor::kVideo, BIND_TO_LOOP(&DecryptingVideoDecoder::OnKeyAdded));
+
// Success!
state_ = kIdle;
base::ResetAndReturn(&init_cb_).Run(PIPELINE_OK);
diff --git a/media/filters/decrypting_video_decoder_unittest.cc b/media/filters/decrypting_video_decoder_unittest.cc
index 7da9a37..2b3666b 100644
--- a/media/filters/decrypting_video_decoder_unittest.cc
+++ b/media/filters/decrypting_video_decoder_unittest.cc
@@ -121,9 +121,11 @@ class DecryptingVideoDecoderTest : public testing::Test {
}
void Initialize() {
- EXPECT_CALL(*decryptor_, InitializeVideoDecoderMock(_, _, _))
+ EXPECT_CALL(*decryptor_, InitializeVideoDecoderMock(_, _))
.Times(AtMost(1))
- .WillOnce(DoAll(RunCallback1(true), SaveArg<2>(&key_added_cb_)));
+ .WillOnce(RunCallback1(true));
+ EXPECT_CALL(*decryptor_, RegisterKeyAddedCB(Decryptor::kVideo, _))
+ .WillOnce(SaveArg<1>(&key_added_cb_));
config_.Initialize(kCodecVP8, VIDEO_CODEC_PROFILE_UNKNOWN, kVideoFormat,
kCodedSize, kVisibleRect, kNaturalSize,
@@ -234,6 +236,9 @@ class DecryptingVideoDecoderTest : public testing::Test {
}
void Stop() {
+ EXPECT_CALL(*decryptor_, RegisterKeyAddedCB(Decryptor::kVideo,
+ IsNullCallback()))
+ .Times(AtMost(1));
EXPECT_CALL(*decryptor_, DeinitializeDecoder(Decryptor::kVideo))
.WillRepeatedly(InvokeWithoutArgs(
this, &DecryptingVideoDecoderTest::AbortAllPendingCBs));
@@ -296,7 +301,7 @@ TEST_F(DecryptingVideoDecoderTest, Initialize_InvalidVideoConfig) {
// Ensure decoder handles unsupported video configs without crashing.
TEST_F(DecryptingVideoDecoderTest, Initialize_UnsupportedVideoConfig) {
- EXPECT_CALL(*decryptor_, InitializeVideoDecoderMock(_, _, _))
+ EXPECT_CALL(*decryptor_, InitializeVideoDecoderMock(_, _))
.WillOnce(RunCallback1(false));
VideoDecoderConfig config(kCodecVP8, VIDEO_CODEC_PROFILE_UNKNOWN,
@@ -477,7 +482,7 @@ TEST_F(DecryptingVideoDecoderTest, Stop_DuringDecryptorRequested) {
// Test stopping when the decoder is in kPendingDecoderInit state.
TEST_F(DecryptingVideoDecoderTest, Stop_DuringPendingDecoderInit) {
- EXPECT_CALL(*decryptor_, InitializeVideoDecoderMock(_, _, _))
+ EXPECT_CALL(*decryptor_, InitializeVideoDecoderMock(_, _))
.WillOnce(SaveArg<1>(&pending_init_cb_));
config_.Initialize(kCodecVP8, VIDEO_CODEC_PROFILE_UNKNOWN, kVideoFormat,
diff --git a/webkit/media/crypto/ppapi_decryptor.cc b/webkit/media/crypto/ppapi_decryptor.cc
index 5ae10c3..5da0800 100644
--- a/webkit/media/crypto/ppapi_decryptor.cc
+++ b/webkit/media/crypto/ppapi_decryptor.cc
@@ -96,6 +96,20 @@ void PpapiDecryptor::CancelKeyRequest(const std::string& key_system,
ReportFailureToCallPlugin(key_system, session_id);
}
+void PpapiDecryptor::RegisterKeyAddedCB(StreamType stream_type,
+ const KeyAddedCB& key_added_cb) {
+ switch (stream_type) {
+ case kAudio:
+ audio_key_added_cb_ = key_added_cb;
+ break;
+ case kVideo:
+ video_key_added_cb_ = key_added_cb;
+ break;
+ default:
+ NOTREACHED();
+ }
+}
+
void PpapiDecryptor::Decrypt(
StreamType stream_type,
const scoped_refptr<media::DecoderBuffer>& encrypted,
@@ -119,12 +133,11 @@ void PpapiDecryptor::CancelDecrypt(StreamType stream_type) {
void PpapiDecryptor::InitializeAudioDecoder(
scoped_ptr<media::AudioDecoderConfig> config,
- const DecoderInitCB& init_cb,
- const KeyAddedCB& key_added_cb) {
+ const DecoderInitCB& init_cb) {
if (!render_loop_proxy_->BelongsToCurrentThread()) {
render_loop_proxy_->PostTask(FROM_HERE, base::Bind(
&PpapiDecryptor::InitializeAudioDecoder, weak_this_,
- base::Passed(&config), init_cb, key_added_cb));
+ base::Passed(&config), init_cb));
return;
}
@@ -134,8 +147,7 @@ void PpapiDecryptor::InitializeAudioDecoder(
audio_decoder_init_cb_ = init_cb;
if (!cdm_plugin_->InitializeAudioDecoder(*config, base::Bind(
- &PpapiDecryptor::OnDecoderInitialized, weak_this_,
- kAudio, key_added_cb))) {
+ &PpapiDecryptor::OnDecoderInitialized, weak_this_, kAudio))) {
base::ResetAndReturn(&audio_decoder_init_cb_).Run(false);
return;
}
@@ -143,12 +155,11 @@ void PpapiDecryptor::InitializeAudioDecoder(
void PpapiDecryptor::InitializeVideoDecoder(
scoped_ptr<media::VideoDecoderConfig> config,
- const DecoderInitCB& init_cb,
- const KeyAddedCB& key_added_cb) {
+ const DecoderInitCB& init_cb) {
if (!render_loop_proxy_->BelongsToCurrentThread()) {
render_loop_proxy_->PostTask(FROM_HERE, base::Bind(
&PpapiDecryptor::InitializeVideoDecoder, weak_this_,
- base::Passed(&config), init_cb, key_added_cb));
+ base::Passed(&config), init_cb));
return;
}
@@ -158,8 +169,7 @@ void PpapiDecryptor::InitializeVideoDecoder(
video_decoder_init_cb_ = init_cb;
if (!cdm_plugin_->InitializeVideoDecoder(*config, base::Bind(
- &PpapiDecryptor::OnDecoderInitialized, weak_this_,
- kVideo, key_added_cb))) {
+ &PpapiDecryptor::OnDecoderInitialized, weak_this_, kVideo))) {
base::ResetAndReturn(&video_decoder_init_cb_).Run(false);
return;
}
@@ -212,6 +222,7 @@ void PpapiDecryptor::DeinitializeDecoder(StreamType stream_type) {
&PpapiDecryptor::DeinitializeDecoder, weak_this_, stream_type));
return;
}
+
DVLOG(2) << "DeinitializeDecoder() - stream_type: " << stream_type;
cdm_plugin_->DeinitializeDecoder(stream_type);
}
@@ -223,27 +234,16 @@ void PpapiDecryptor::ReportFailureToCallPlugin(const std::string& key_system,
}
void PpapiDecryptor::OnDecoderInitialized(StreamType stream_type,
- const KeyAddedCB& key_added_cb,
bool success) {
- DCHECK(!key_added_cb.is_null());
-
switch (stream_type) {
case kAudio:
- DCHECK(audio_key_added_cb_.is_null());
DCHECK(!audio_decoder_init_cb_.is_null());
- if (success)
- audio_key_added_cb_ = key_added_cb;
base::ResetAndReturn(&audio_decoder_init_cb_).Run(success);
break;
-
case kVideo:
- DCHECK(video_key_added_cb_.is_null());
DCHECK(!video_decoder_init_cb_.is_null());
- if (success)
- video_key_added_cb_ = key_added_cb;
base::ResetAndReturn(&video_decoder_init_cb_).Run(success);
break;
-
default:
NOTREACHED();
}
diff --git a/webkit/media/crypto/ppapi_decryptor.h b/webkit/media/crypto/ppapi_decryptor.h
index c27e046..4ac5c1e 100644
--- a/webkit/media/crypto/ppapi_decryptor.h
+++ b/webkit/media/crypto/ppapi_decryptor.h
@@ -51,18 +51,18 @@ class PpapiDecryptor : public media::Decryptor {
const std::string& session_id) OVERRIDE;
virtual void CancelKeyRequest(const std::string& key_system,
const std::string& session_id) OVERRIDE;
+ virtual void RegisterKeyAddedCB(StreamType stream_type,
+ const KeyAddedCB& key_added_cb) OVERRIDE;
virtual void Decrypt(StreamType stream_type,
const scoped_refptr<media::DecoderBuffer>& encrypted,
const DecryptCB& decrypt_cb) OVERRIDE;
virtual void CancelDecrypt(StreamType stream_type) OVERRIDE;
virtual void InitializeAudioDecoder(
scoped_ptr<media::AudioDecoderConfig> config,
- const DecoderInitCB& init_cb,
- const KeyAddedCB& key_added_cb) OVERRIDE;
+ const DecoderInitCB& init_cb) OVERRIDE;
virtual void InitializeVideoDecoder(
scoped_ptr<media::VideoDecoderConfig> config,
- const DecoderInitCB& init_cb,
- const KeyAddedCB& key_added_cb) OVERRIDE;
+ const DecoderInitCB& init_cb) OVERRIDE;
virtual void DecryptAndDecodeAudio(
const scoped_refptr<media::DecoderBuffer>& encrypted,
const AudioDecodeCB& audio_decode_cb) OVERRIDE;
@@ -76,9 +76,7 @@ class PpapiDecryptor : public media::Decryptor {
void ReportFailureToCallPlugin(const std::string& key_system,
const std::string& session_id);
- void OnDecoderInitialized(StreamType stream_type,
- const KeyAddedCB& key_added_cb,
- bool success);
+ void OnDecoderInitialized(StreamType stream_type, bool success);
media::DecryptorClient* client_;
scoped_refptr<webkit::ppapi::PluginInstance> cdm_plugin_;
diff --git a/webkit/media/crypto/proxy_decryptor.cc b/webkit/media/crypto/proxy_decryptor.cc
index ea1ffba..12dd3b6 100644
--- a/webkit/media/crypto/proxy_decryptor.cc
+++ b/webkit/media/crypto/proxy_decryptor.cc
@@ -153,6 +153,11 @@ void ProxyDecryptor::CancelKeyRequest(const std::string& key_system,
decryptor_->CancelKeyRequest(key_system, session_id);
}
+void ProxyDecryptor::RegisterKeyAddedCB(StreamType stream_type,
+ const KeyAddedCB& key_added_cb) {
+ NOTREACHED() << "KeyAddedCB should not be registered with ProxyDecryptor.";
+}
+
void ProxyDecryptor::Decrypt(
StreamType stream_type,
const scoped_refptr<media::DecoderBuffer>& encrypted,
@@ -211,15 +216,13 @@ void ProxyDecryptor::CancelDecrypt(StreamType stream_type) {
void ProxyDecryptor::InitializeAudioDecoder(
scoped_ptr<media::AudioDecoderConfig> config,
- const DecoderInitCB& init_cb,
- const KeyAddedCB& key_added_cb) {
+ const DecoderInitCB& init_cb) {
NOTREACHED() << "ProxyDecryptor does not support audio decoding";
}
void ProxyDecryptor::InitializeVideoDecoder(
scoped_ptr<media::VideoDecoderConfig> config,
- const DecoderInitCB& init_cb,
- const KeyAddedCB& key_added_cb) {
+ const DecoderInitCB& init_cb) {
NOTREACHED() << "ProxyDecryptor does not support video decoding";
}
diff --git a/webkit/media/crypto/proxy_decryptor.h b/webkit/media/crypto/proxy_decryptor.h
index 6ca0027..b0833ff 100644
--- a/webkit/media/crypto/proxy_decryptor.h
+++ b/webkit/media/crypto/proxy_decryptor.h
@@ -65,18 +65,18 @@ class ProxyDecryptor : public media::Decryptor {
const std::string& session_id) OVERRIDE;
virtual void CancelKeyRequest(const std::string& key_system,
const std::string& session_id) OVERRIDE;
+ virtual void RegisterKeyAddedCB(StreamType stream_type,
+ const KeyAddedCB& key_added_cb) OVERRIDE;
virtual void Decrypt(StreamType stream_type,
const scoped_refptr<media::DecoderBuffer>& encrypted,
const DecryptCB& decrypt_cb) OVERRIDE;
virtual void CancelDecrypt(StreamType stream_type) OVERRIDE;
virtual void InitializeAudioDecoder(
scoped_ptr<media::AudioDecoderConfig> config,
- const DecoderInitCB& init_cb,
- const KeyAddedCB& key_added_cb) OVERRIDE;
+ const DecoderInitCB& init_cb) OVERRIDE;
virtual void InitializeVideoDecoder(
scoped_ptr<media::VideoDecoderConfig> config,
- const DecoderInitCB& init_cb,
- const KeyAddedCB& key_added_cb) OVERRIDE;
+ const DecoderInitCB& init_cb) OVERRIDE;
virtual void DecryptAndDecodeAudio(
const scoped_refptr<media::DecoderBuffer>& encrypted,
const AudioDecodeCB& audio_decode_cb) OVERRIDE;