Index: media/filters/decrypting_audio_decoder_unittest.cc |
diff --git a/media/filters/decrypting_audio_decoder_unittest.cc b/media/filters/decrypting_audio_decoder_unittest.cc |
index 20d1597332e18c771bdad0373c9016be5ad203f5..050bcf8555bed458befaba2103c2fc857a790eb2 100644 |
--- a/media/filters/decrypting_audio_decoder_unittest.cc |
+++ b/media/filters/decrypting_audio_decoder_unittest.cc |
@@ -83,6 +83,10 @@ class DecryptingAudioDecoderTest : public testing::Test { |
decoded_frame_list_() { |
} |
+ virtual ~DecryptingAudioDecoderTest() { |
+ Stop(); |
+ } |
+ |
void InitializeAndExpectStatus(const AudioDecoderConfig& config, |
PipelineStatus status) { |
// Initialize data now that the config is known. Since the code uses |
@@ -207,6 +211,16 @@ class DecryptingAudioDecoderTest : public testing::Test { |
} |
} |
+ void AbortAllPendingCBs() { |
+ if (!pending_init_cb_.is_null()) { |
+ ASSERT_TRUE(pending_audio_decode_cb_.is_null()); |
+ base::ResetAndReturn(&pending_init_cb_).Run(false); |
+ return; |
+ } |
+ |
+ AbortPendingAudioDecodeCB(); |
+ } |
+ |
void Reset() { |
EXPECT_CALL(*decryptor_, ResetDecoder(Decryptor::kAudio)) |
.WillRepeatedly(InvokeWithoutArgs( |
@@ -216,6 +230,18 @@ class DecryptingAudioDecoderTest : public testing::Test { |
message_loop_.RunUntilIdle(); |
} |
+ void Stop() { |
+ EXPECT_CALL(*decryptor_, RegisterNewKeyCB(Decryptor::kAudio, |
+ IsNullCallback())) |
+ .Times(AtMost(1)); |
+ EXPECT_CALL(*decryptor_, DeinitializeDecoder(Decryptor::kAudio)) |
+ .WillRepeatedly(InvokeWithoutArgs( |
+ this, &DecryptingAudioDecoderTest::AbortAllPendingCBs)); |
+ |
+ decoder_->Stop(NewExpectedClosure()); |
+ message_loop_.RunUntilIdle(); |
+ } |
+ |
MOCK_METHOD1(RequestDecryptorNotification, void(const DecryptorReadyCB&)); |
MOCK_METHOD2(FrameReady, |