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 fec56248e0bc97e5063ed3b8eaa244e3e0b8a584..fa2a36cf947a69408c06dced673665c4fa41ff18 100644 |
--- a/media/filters/decrypting_demuxer_stream_unittest.cc |
+++ b/media/filters/decrypting_demuxer_stream_unittest.cc |
@@ -53,9 +53,9 @@ ACTION_P(ReturnBuffer, 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_P2(SetDecryptorIfNotNull, decryptor, is_decryptor_set) { |
+ACTION_P3(SetDecryptorIfNotNull, decryptor, done_cb, is_decryptor_set) { |
if (!arg0.is_null()) |
- arg0.Run(decryptor); |
+ arg0.Run(decryptor, done_cb); |
*is_decryptor_set = !arg0.is_null() && decryptor; |
} |
@@ -112,14 +112,23 @@ 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)); |
+ } |
+ |
// The following functions are used to test stream-type-neutral logic in |
// DecryptingDemuxerStream. Therefore, we don't specify audio or video in the |
// function names. But for testing purpose, they all use an audio input |
// demuxer stream. |
void Initialize() { |
- EXPECT_CALL(*this, RequestDecryptorNotification(_)) |
- .WillOnce(SetDecryptorIfNotNull(decryptor_.get(), &is_decryptor_set_)); |
+ ExpectDecryptorNotification(decryptor_.get(), true); |
EXPECT_CALL(*decryptor_, RegisterNewKeyCB(Decryptor::kAudio, _)) |
.WillOnce(SaveArg<1>(&key_added_cb_)); |
@@ -249,6 +258,8 @@ class DecryptingDemuxerStreamTest : public testing::Test { |
MOCK_METHOD2(BufferReady, void(DemuxerStream::Status, |
const scoped_refptr<DecoderBuffer>&)); |
+ MOCK_METHOD1(DecryptorSet, void(bool)); |
+ |
base::MessageLoop message_loop_; |
scoped_ptr<DecryptingDemuxerStream> demuxer_stream_; |
scoped_ptr<StrictMock<MockDecryptor> > decryptor_; |
@@ -276,8 +287,7 @@ TEST_F(DecryptingDemuxerStreamTest, Initialize_NormalAudio) { |
} |
TEST_F(DecryptingDemuxerStreamTest, Initialize_NormalVideo) { |
- EXPECT_CALL(*this, RequestDecryptorNotification(_)) |
- .WillOnce(SetDecryptorIfNotNull(decryptor_.get(), &is_decryptor_set_)); |
+ ExpectDecryptorNotification(decryptor_.get(), true); |
EXPECT_CALL(*decryptor_, RegisterNewKeyCB(Decryptor::kVideo, _)) |
.WillOnce(SaveArg<1>(&key_added_cb_)); |
@@ -303,10 +313,7 @@ TEST_F(DecryptingDemuxerStreamTest, Initialize_NormalVideo) { |
} |
TEST_F(DecryptingDemuxerStreamTest, Initialize_NullDecryptor) { |
- EXPECT_CALL(*this, RequestDecryptorNotification(_)) |
- .WillRepeatedly(SetDecryptorIfNotNull(static_cast<Decryptor*>(NULL), |
- &is_decryptor_set_)); |
- |
+ ExpectDecryptorNotification(NULL, false); |
AudioDecoderConfig input_config(kCodecVorbis, kSampleFormatPlanarF32, |
CHANNEL_LAYOUT_STEREO, 44100, NULL, 0, true); |
InitializeAudioAndExpectStatus(input_config, DECODER_ERROR_NOT_SUPPORTED); |