[go: nahoru, domu]

Reland: Add Stop() to AudioDecoder. (https://codereview.chromium.org/126793002/)

BUG=329379, 335181

Review URL: https://codereview.chromium.org/140823012

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@246529 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/media/filters/decrypting_audio_decoder_unittest.cc b/media/filters/decrypting_audio_decoder_unittest.cc
index 20d1597..050bcf85 100644
--- a/media/filters/decrypting_audio_decoder_unittest.cc
+++ b/media/filters/decrypting_audio_decoder_unittest.cc
@@ -83,6 +83,10 @@
         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 @@
     }
   }
 
+  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 @@
     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,