Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1148)

Unified Diff: media/filters/decrypting_demuxer_stream_unittest.cc

Issue 1423163004: media: Replace DecryptorReadyCB with CdmReadyCB. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix android Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: media/filters/decrypting_demuxer_stream_unittest.cc
diff --git a/media/filters/decrypting_demuxer_stream_unittest.cc b/media/filters/decrypting_demuxer_stream_unittest.cc
index c679b5616dac64ae133c64903b9b67f81a5743cd..da3547b3a7f15a781b4fb7dfd110f724a72ac0b3 100644
--- a/media/filters/decrypting_demuxer_stream_unittest.cc
+++ b/media/filters/decrypting_demuxer_stream_unittest.cc
@@ -51,20 +51,6 @@ ACTION_P(ReturnBuffer, buffer) {
arg0.Run(buffer.get() ? DemuxerStream::kOk : DemuxerStream::kAborted, buffer);
}
-// Sets the |decryptor| if the DecryptorReadyCB (arg0) is not null. Sets
-// |is_decryptor_set| to true if a non-NULL |decryptor| has been set through the
-// callback.
-ACTION_P3(SetDecryptorIfNotNull, decryptor, done_cb, is_decryptor_set) {
- if (!arg0.is_null())
- arg0.Run(decryptor, done_cb);
-
- *is_decryptor_set = !arg0.is_null() && decryptor;
-}
-
-ACTION_P2(ResetAndRunCallback, callback, param) {
- base::ResetAndReturn(callback).Run(param);
-}
-
MATCHER(IsEndOfStream, "end of stream") {
return arg->end_of_stream();
}
@@ -77,13 +63,13 @@ class DecryptingDemuxerStreamTest : public testing::Test {
: demuxer_stream_(new DecryptingDemuxerStream(
message_loop_.task_runner(),
new MediaLog(),
- base::Bind(
- &DecryptingDemuxerStreamTest::RequestDecryptorNotification,
- base::Unretained(this)),
+ base::Bind(&DecryptingDemuxerStreamTest::RequestCdmNotification,
+ base::Unretained(this)),
base::Bind(&DecryptingDemuxerStreamTest::OnWaitingForDecryptionKey,
base::Unretained(this)))),
+ cdm_context_(new StrictMock<MockCdmContext>()),
decryptor_(new StrictMock<MockDecryptor>()),
- is_decryptor_set_(false),
+ is_cdm_set_(false),
input_audio_stream_(
new StrictMock<MockDemuxerStream>(DemuxerStream::AUDIO)),
input_video_stream_(
@@ -93,7 +79,7 @@ class DecryptingDemuxerStreamTest : public testing::Test {
decrypted_buffer_(new DecoderBuffer(kFakeBufferSize)) {}
virtual ~DecryptingDemuxerStreamTest() {
- if (is_decryptor_set_)
+ if (is_cdm_set_)
EXPECT_CALL(*decryptor_, CancelDecrypt(_));
demuxer_stream_.reset();
message_loop_.RunUntilIdle();
@@ -115,14 +101,25 @@ class DecryptingDemuxerStreamTest : public testing::Test {
message_loop_.RunUntilIdle();
}
- void ExpectDecryptorNotification(Decryptor* decryptor, bool expected_result) {
- EXPECT_CALL(*this, RequestDecryptorNotification(_))
- .WillOnce(SetDecryptorIfNotNull(
- decryptor,
- base::Bind(&DecryptingDemuxerStreamTest::DecryptorSet,
- base::Unretained(this)),
- &is_decryptor_set_));
- EXPECT_CALL(*this, DecryptorSet(expected_result));
+ enum CdmType { NO_CDM, CDM_WITHOUT_DECRYPTOR, CDM_WITH_DECRYPTOR };
+
+ void SetCdmType(CdmType cdm_type) {
+ const bool has_cdm = cdm_type != NO_CDM;
+ const bool has_decryptor = cdm_type == CDM_WITH_DECRYPTOR;
+
+ EXPECT_CALL(*this, RequestCdmNotification(_))
+ .WillOnce(
+ RunCallback<0>(has_cdm ? cdm_context_.get() : nullptr,
+ base::Bind(&DecryptingDemuxerStreamTest::CdmSet,
+ base::Unretained(this))));
+
+ if (has_cdm) {
+ EXPECT_CALL(*cdm_context_, GetDecryptor())
+ .WillRepeatedly(Return(has_decryptor ? decryptor_.get() : nullptr));
+ }
+
+ EXPECT_CALL(*this, CdmSet(has_cdm && has_decryptor))
jrummell 2015/11/12 00:23:07 ditto on |has_cdm|.
xhwang 2015/11/12 06:28:37 Done.
+ .WillOnce(SaveArg<0>(&is_cdm_set_));
}
// The following functions are used to test stream-type-neutral logic in
@@ -131,7 +128,7 @@ class DecryptingDemuxerStreamTest : public testing::Test {
// demuxer stream.
void Initialize() {
- ExpectDecryptorNotification(decryptor_.get(), true);
+ SetCdmType(CDM_WITH_DECRYPTOR);
EXPECT_CALL(*decryptor_, RegisterNewKeyCB(Decryptor::kAudio, _))
.WillOnce(SaveArg<1>(&key_added_cb_));
@@ -247,7 +244,7 @@ class DecryptingDemuxerStreamTest : public testing::Test {
}
void Reset() {
- if (is_decryptor_set_) {
+ if (is_cdm_set_) {
EXPECT_CALL(*decryptor_, CancelDecrypt(Decryptor::kAudio))
.WillRepeatedly(InvokeWithoutArgs(
this, &DecryptingDemuxerStreamTest::AbortPendingDecryptCB));
@@ -257,20 +254,18 @@ class DecryptingDemuxerStreamTest : public testing::Test {
message_loop_.RunUntilIdle();
}
- MOCK_METHOD1(RequestDecryptorNotification, void(const DecryptorReadyCB&));
-
+ MOCK_METHOD1(RequestCdmNotification, void(const CdmReadyCB&));
MOCK_METHOD2(BufferReady, void(DemuxerStream::Status,
const scoped_refptr<DecoderBuffer>&));
-
- MOCK_METHOD1(DecryptorSet, void(bool));
-
+ MOCK_METHOD1(CdmSet, void(bool));
MOCK_METHOD0(OnWaitingForDecryptionKey, void(void));
base::MessageLoop message_loop_;
scoped_ptr<DecryptingDemuxerStream> demuxer_stream_;
- scoped_ptr<StrictMock<MockDecryptor> > decryptor_;
+ scoped_ptr<StrictMock<MockCdmContext>> cdm_context_;
+ scoped_ptr<StrictMock<MockDecryptor>> decryptor_;
// Whether a valid Decryptor has been set in the |demuxer_stream_|.
- bool is_decryptor_set_;
+ bool is_cdm_set_;
scoped_ptr<StrictMock<MockDemuxerStream> > input_audio_stream_;
scoped_ptr<StrictMock<MockDemuxerStream> > input_video_stream_;
@@ -293,7 +288,7 @@ TEST_F(DecryptingDemuxerStreamTest, Initialize_NormalAudio) {
}
TEST_F(DecryptingDemuxerStreamTest, Initialize_NormalVideo) {
- ExpectDecryptorNotification(decryptor_.get(), true);
+ SetCdmType(CDM_WITH_DECRYPTOR);
EXPECT_CALL(*decryptor_, RegisterNewKeyCB(Decryptor::kVideo, _))
.WillOnce(SaveArg<1>(&key_added_cb_));
@@ -313,8 +308,16 @@ TEST_F(DecryptingDemuxerStreamTest, Initialize_NormalVideo) {
ASSERT_EQ(input_config.extra_data(), output_config.extra_data());
}
-TEST_F(DecryptingDemuxerStreamTest, Initialize_NullDecryptor) {
- ExpectDecryptorNotification(NULL, false);
+TEST_F(DecryptingDemuxerStreamTest, Initialize_NoCdm) {
+ SetCdmType(NO_CDM);
+ AudioDecoderConfig input_config(kCodecVorbis, kSampleFormatPlanarF32,
+ CHANNEL_LAYOUT_STEREO, 44100,
+ EmptyExtraData(), true);
+ InitializeAudioAndExpectStatus(input_config, DECODER_ERROR_NOT_SUPPORTED);
+}
+
+TEST_F(DecryptingDemuxerStreamTest, Initialize_CdmWithoutDecryptor) {
+ SetCdmType(CDM_WITHOUT_DECRYPTOR);
AudioDecoderConfig input_config(kCodecVorbis, kSampleFormatPlanarF32,
CHANNEL_LAYOUT_STEREO, 44100,
EmptyExtraData(), true);
@@ -389,8 +392,7 @@ TEST_F(DecryptingDemuxerStreamTest, KeyAdded_DruingPendingDecrypt) {
// Test resetting in kDecryptorRequested state.
TEST_F(DecryptingDemuxerStreamTest, Reset_DuringDecryptorRequested) {
// One for decryptor request, one for canceling request during Reset().
- EXPECT_CALL(*this, RequestDecryptorNotification(_))
- .Times(2);
+ EXPECT_CALL(*this, RequestCdmNotification(_)).Times(2);
AudioDecoderConfig input_config(kCodecVorbis, kSampleFormatPlanarF32,
CHANNEL_LAYOUT_STEREO, 44100,
EmptyExtraData(), true);
@@ -510,8 +512,7 @@ TEST_F(DecryptingDemuxerStreamTest, Reset_DuringConfigChangedDemuxerRead) {
// Test destruction in kDecryptorRequested state.
TEST_F(DecryptingDemuxerStreamTest, Destroy_DuringDecryptorRequested) {
// One for decryptor request, one for canceling request during Reset().
- EXPECT_CALL(*this, RequestDecryptorNotification(_))
- .Times(2);
+ EXPECT_CALL(*this, RequestCdmNotification(_)).Times(2);
AudioDecoderConfig input_config(kCodecVorbis, kSampleFormatPlanarF32,
CHANNEL_LAYOUT_STEREO, 44100,
EmptyExtraData(), true);

Powered by Google App Engine
This is Rietveld 408576698