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

Side by Side Diff: media/filters/decrypting_demuxer_stream_unittest.cc

Issue 2086353002: Remove calls to deprecated MessageLoop methods in media. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 6 months 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <stdint.h> 5 #include <stdint.h>
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
11 #include "base/callback_helpers.h" 11 #include "base/callback_helpers.h"
12 #include "base/macros.h" 12 #include "base/macros.h"
13 #include "base/message_loop/message_loop.h" 13 #include "base/message_loop/message_loop.h"
14 #include "base/run_loop.h"
14 #include "media/base/decoder_buffer.h" 15 #include "media/base/decoder_buffer.h"
15 #include "media/base/decrypt_config.h" 16 #include "media/base/decrypt_config.h"
16 #include "media/base/gmock_callback_support.h" 17 #include "media/base/gmock_callback_support.h"
17 #include "media/base/media_util.h" 18 #include "media/base/media_util.h"
18 #include "media/base/mock_filters.h" 19 #include "media/base/mock_filters.h"
19 #include "media/base/test_helpers.h" 20 #include "media/base/test_helpers.h"
20 #include "media/filters/decrypting_demuxer_stream.h" 21 #include "media/filters/decrypting_demuxer_stream.h"
21 #include "testing/gmock/include/gmock/gmock.h" 22 #include "testing/gmock/include/gmock/gmock.h"
22 23
23 using ::testing::_; 24 using ::testing::_;
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 input_video_stream_( 77 input_video_stream_(
77 new StrictMock<MockDemuxerStream>(DemuxerStream::VIDEO)), 78 new StrictMock<MockDemuxerStream>(DemuxerStream::VIDEO)),
78 clear_buffer_(CreateFakeEncryptedStreamBuffer(true)), 79 clear_buffer_(CreateFakeEncryptedStreamBuffer(true)),
79 encrypted_buffer_(CreateFakeEncryptedStreamBuffer(false)), 80 encrypted_buffer_(CreateFakeEncryptedStreamBuffer(false)),
80 decrypted_buffer_(new DecoderBuffer(kFakeBufferSize)) {} 81 decrypted_buffer_(new DecoderBuffer(kFakeBufferSize)) {}
81 82
82 virtual ~DecryptingDemuxerStreamTest() { 83 virtual ~DecryptingDemuxerStreamTest() {
83 if (is_initialized_) 84 if (is_initialized_)
84 EXPECT_CALL(*decryptor_, CancelDecrypt(_)); 85 EXPECT_CALL(*decryptor_, CancelDecrypt(_));
85 demuxer_stream_.reset(); 86 demuxer_stream_.reset();
86 message_loop_.RunUntilIdle(); 87 base::RunLoop().RunUntilIdle();
87 } 88 }
88 89
89 void OnInitialized(PipelineStatus expected_status, PipelineStatus status) { 90 void OnInitialized(PipelineStatus expected_status, PipelineStatus status) {
90 EXPECT_EQ(expected_status, status); 91 EXPECT_EQ(expected_status, status);
91 is_initialized_ = status == PIPELINE_OK; 92 is_initialized_ = status == PIPELINE_OK;
92 } 93 }
93 94
94 void InitializeAudioAndExpectStatus(const AudioDecoderConfig& config, 95 void InitializeAudioAndExpectStatus(const AudioDecoderConfig& config,
95 PipelineStatus expected_status) { 96 PipelineStatus expected_status) {
96 input_audio_stream_->set_audio_decoder_config(config); 97 input_audio_stream_->set_audio_decoder_config(config);
97 demuxer_stream_->Initialize( 98 demuxer_stream_->Initialize(
98 input_audio_stream_.get(), cdm_context_.get(), 99 input_audio_stream_.get(), cdm_context_.get(),
99 base::Bind(&DecryptingDemuxerStreamTest::OnInitialized, 100 base::Bind(&DecryptingDemuxerStreamTest::OnInitialized,
100 base::Unretained(this), expected_status)); 101 base::Unretained(this), expected_status));
101 message_loop_.RunUntilIdle(); 102 base::RunLoop().RunUntilIdle();
102 } 103 }
103 104
104 void InitializeVideoAndExpectStatus(const VideoDecoderConfig& config, 105 void InitializeVideoAndExpectStatus(const VideoDecoderConfig& config,
105 PipelineStatus expected_status) { 106 PipelineStatus expected_status) {
106 input_video_stream_->set_video_decoder_config(config); 107 input_video_stream_->set_video_decoder_config(config);
107 demuxer_stream_->Initialize( 108 demuxer_stream_->Initialize(
108 input_video_stream_.get(), cdm_context_.get(), 109 input_video_stream_.get(), cdm_context_.get(),
109 base::Bind(&DecryptingDemuxerStreamTest::OnInitialized, 110 base::Bind(&DecryptingDemuxerStreamTest::OnInitialized,
110 base::Unretained(this), expected_status)); 111 base::Unretained(this), expected_status));
111 message_loop_.RunUntilIdle(); 112 base::RunLoop().RunUntilIdle();
112 } 113 }
113 114
114 enum CdmType { CDM_WITHOUT_DECRYPTOR, CDM_WITH_DECRYPTOR }; 115 enum CdmType { CDM_WITHOUT_DECRYPTOR, CDM_WITH_DECRYPTOR };
115 116
116 void SetCdmType(CdmType cdm_type) { 117 void SetCdmType(CdmType cdm_type) {
117 const bool has_decryptor = cdm_type == CDM_WITH_DECRYPTOR; 118 const bool has_decryptor = cdm_type == CDM_WITH_DECRYPTOR;
118 EXPECT_CALL(*cdm_context_, GetDecryptor()) 119 EXPECT_CALL(*cdm_context_, GetDecryptor())
119 .WillRepeatedly(Return(has_decryptor ? decryptor_.get() : nullptr)); 120 .WillRepeatedly(Return(has_decryptor ? decryptor_.get() : nullptr));
120 } 121 }
121 122
(...skipping 29 matching lines...) Expand all
151 const scoped_refptr<DecoderBuffer>& decrypted_buffer) { 152 const scoped_refptr<DecoderBuffer>& decrypted_buffer) {
152 if (status != DemuxerStream::kOk) 153 if (status != DemuxerStream::kOk)
153 EXPECT_CALL(*this, BufferReady(status, IsNull())); 154 EXPECT_CALL(*this, BufferReady(status, IsNull()));
154 else if (decrypted_buffer->end_of_stream()) 155 else if (decrypted_buffer->end_of_stream())
155 EXPECT_CALL(*this, BufferReady(status, IsEndOfStream())); 156 EXPECT_CALL(*this, BufferReady(status, IsEndOfStream()));
156 else 157 else
157 EXPECT_CALL(*this, BufferReady(status, decrypted_buffer)); 158 EXPECT_CALL(*this, BufferReady(status, decrypted_buffer));
158 159
159 demuxer_stream_->Read(base::Bind(&DecryptingDemuxerStreamTest::BufferReady, 160 demuxer_stream_->Read(base::Bind(&DecryptingDemuxerStreamTest::BufferReady,
160 base::Unretained(this))); 161 base::Unretained(this)));
161 message_loop_.RunUntilIdle(); 162 base::RunLoop().RunUntilIdle();
162 } 163 }
163 164
164 void EnterClearReadingState() { 165 void EnterClearReadingState() {
165 EXPECT_TRUE(clear_buffer_->decrypt_config()); 166 EXPECT_TRUE(clear_buffer_->decrypt_config());
166 EXPECT_CALL(*input_audio_stream_, Read(_)) 167 EXPECT_CALL(*input_audio_stream_, Read(_))
167 .WillOnce(ReturnBuffer(clear_buffer_)); 168 .WillOnce(ReturnBuffer(clear_buffer_));
168 169
169 // For clearbuffer, decryptor->Decrypt() will not be called. 170 // For clearbuffer, decryptor->Decrypt() will not be called.
170 171
171 scoped_refptr<DecoderBuffer> decrypted_buffer; 172 scoped_refptr<DecoderBuffer> decrypted_buffer;
172 EXPECT_CALL(*this, BufferReady(DemuxerStream::kOk, _)) 173 EXPECT_CALL(*this, BufferReady(DemuxerStream::kOk, _))
173 .WillOnce(SaveArg<1>(&decrypted_buffer)); 174 .WillOnce(SaveArg<1>(&decrypted_buffer));
174 demuxer_stream_->Read(base::Bind(&DecryptingDemuxerStreamTest::BufferReady, 175 demuxer_stream_->Read(base::Bind(&DecryptingDemuxerStreamTest::BufferReady,
175 base::Unretained(this))); 176 base::Unretained(this)));
176 message_loop_.RunUntilIdle(); 177 base::RunLoop().RunUntilIdle();
177 178
178 EXPECT_FALSE(decrypted_buffer->decrypt_config()); 179 EXPECT_FALSE(decrypted_buffer->decrypt_config());
179 } 180 }
180 181
181 // Sets up expectations and actions to put DecryptingDemuxerStream in an 182 // Sets up expectations and actions to put DecryptingDemuxerStream in an
182 // active normal reading state. 183 // active normal reading state.
183 void EnterNormalReadingState() { 184 void EnterNormalReadingState() {
184 EXPECT_CALL(*input_audio_stream_, Read(_)) 185 EXPECT_CALL(*input_audio_stream_, Read(_))
185 .WillOnce(ReturnBuffer(encrypted_buffer_)); 186 .WillOnce(ReturnBuffer(encrypted_buffer_));
186 EXPECT_CALL(*decryptor_, Decrypt(_, _, _)) 187 EXPECT_CALL(*decryptor_, Decrypt(_, _, _))
187 .WillOnce(RunCallback<2>(Decryptor::kSuccess, decrypted_buffer_)); 188 .WillOnce(RunCallback<2>(Decryptor::kSuccess, decrypted_buffer_));
188 189
189 ReadAndExpectBufferReadyWith(DemuxerStream::kOk, decrypted_buffer_); 190 ReadAndExpectBufferReadyWith(DemuxerStream::kOk, decrypted_buffer_);
190 } 191 }
191 192
192 // Make the read callback pending by saving and not firing it. 193 // Make the read callback pending by saving and not firing it.
193 void EnterPendingReadState() { 194 void EnterPendingReadState() {
194 EXPECT_TRUE(pending_demuxer_read_cb_.is_null()); 195 EXPECT_TRUE(pending_demuxer_read_cb_.is_null());
195 EXPECT_CALL(*input_audio_stream_, Read(_)) 196 EXPECT_CALL(*input_audio_stream_, Read(_))
196 .WillOnce(SaveArg<0>(&pending_demuxer_read_cb_)); 197 .WillOnce(SaveArg<0>(&pending_demuxer_read_cb_));
197 demuxer_stream_->Read(base::Bind(&DecryptingDemuxerStreamTest::BufferReady, 198 demuxer_stream_->Read(base::Bind(&DecryptingDemuxerStreamTest::BufferReady,
198 base::Unretained(this))); 199 base::Unretained(this)));
199 message_loop_.RunUntilIdle(); 200 base::RunLoop().RunUntilIdle();
200 // Make sure the Read() triggers a Read() on the input demuxer stream. 201 // Make sure the Read() triggers a Read() on the input demuxer stream.
201 EXPECT_FALSE(pending_demuxer_read_cb_.is_null()); 202 EXPECT_FALSE(pending_demuxer_read_cb_.is_null());
202 } 203 }
203 204
204 // Make the decrypt callback pending by saving and not firing it. 205 // Make the decrypt callback pending by saving and not firing it.
205 void EnterPendingDecryptState() { 206 void EnterPendingDecryptState() {
206 EXPECT_TRUE(pending_decrypt_cb_.is_null()); 207 EXPECT_TRUE(pending_decrypt_cb_.is_null());
207 EXPECT_CALL(*input_audio_stream_, Read(_)) 208 EXPECT_CALL(*input_audio_stream_, Read(_))
208 .WillRepeatedly(ReturnBuffer(encrypted_buffer_)); 209 .WillRepeatedly(ReturnBuffer(encrypted_buffer_));
209 EXPECT_CALL(*decryptor_, Decrypt(_, encrypted_buffer_, _)) 210 EXPECT_CALL(*decryptor_, Decrypt(_, encrypted_buffer_, _))
210 .WillOnce(SaveArg<2>(&pending_decrypt_cb_)); 211 .WillOnce(SaveArg<2>(&pending_decrypt_cb_));
211 212
212 demuxer_stream_->Read(base::Bind(&DecryptingDemuxerStreamTest::BufferReady, 213 demuxer_stream_->Read(base::Bind(&DecryptingDemuxerStreamTest::BufferReady,
213 base::Unretained(this))); 214 base::Unretained(this)));
214 message_loop_.RunUntilIdle(); 215 base::RunLoop().RunUntilIdle();
215 // Make sure Read() triggers a Decrypt() on the decryptor. 216 // Make sure Read() triggers a Decrypt() on the decryptor.
216 EXPECT_FALSE(pending_decrypt_cb_.is_null()); 217 EXPECT_FALSE(pending_decrypt_cb_.is_null());
217 } 218 }
218 219
219 void EnterWaitingForKeyState() { 220 void EnterWaitingForKeyState() {
220 EXPECT_CALL(*input_audio_stream_, Read(_)) 221 EXPECT_CALL(*input_audio_stream_, Read(_))
221 .WillRepeatedly(ReturnBuffer(encrypted_buffer_)); 222 .WillRepeatedly(ReturnBuffer(encrypted_buffer_));
222 EXPECT_CALL(*decryptor_, Decrypt(_, encrypted_buffer_, _)) 223 EXPECT_CALL(*decryptor_, Decrypt(_, encrypted_buffer_, _))
223 .WillRepeatedly(RunCallback<2>(Decryptor::kNoKey, 224 .WillRepeatedly(RunCallback<2>(Decryptor::kNoKey,
224 scoped_refptr<DecoderBuffer>())); 225 scoped_refptr<DecoderBuffer>()));
225 EXPECT_CALL(*this, OnWaitingForDecryptionKey()); 226 EXPECT_CALL(*this, OnWaitingForDecryptionKey());
226 demuxer_stream_->Read(base::Bind(&DecryptingDemuxerStreamTest::BufferReady, 227 demuxer_stream_->Read(base::Bind(&DecryptingDemuxerStreamTest::BufferReady,
227 base::Unretained(this))); 228 base::Unretained(this)));
228 message_loop_.RunUntilIdle(); 229 base::RunLoop().RunUntilIdle();
229 } 230 }
230 231
231 void AbortPendingDecryptCB() { 232 void AbortPendingDecryptCB() {
232 if (!pending_decrypt_cb_.is_null()) { 233 if (!pending_decrypt_cb_.is_null()) {
233 base::ResetAndReturn(&pending_decrypt_cb_).Run(Decryptor::kSuccess, NULL); 234 base::ResetAndReturn(&pending_decrypt_cb_).Run(Decryptor::kSuccess, NULL);
234 } 235 }
235 } 236 }
236 237
237 void SatisfyPendingDemuxerReadCB(DemuxerStream::Status status) { 238 void SatisfyPendingDemuxerReadCB(DemuxerStream::Status status) {
238 scoped_refptr<DecoderBuffer> buffer = 239 scoped_refptr<DecoderBuffer> buffer =
239 (status == DemuxerStream::kOk) ? encrypted_buffer_ : NULL; 240 (status == DemuxerStream::kOk) ? encrypted_buffer_ : NULL;
240 base::ResetAndReturn(&pending_demuxer_read_cb_).Run(status, buffer); 241 base::ResetAndReturn(&pending_demuxer_read_cb_).Run(status, buffer);
241 } 242 }
242 243
243 void Reset() { 244 void Reset() {
244 EXPECT_CALL(*decryptor_, CancelDecrypt(Decryptor::kAudio)) 245 EXPECT_CALL(*decryptor_, CancelDecrypt(Decryptor::kAudio))
245 .WillRepeatedly(InvokeWithoutArgs( 246 .WillRepeatedly(InvokeWithoutArgs(
246 this, &DecryptingDemuxerStreamTest::AbortPendingDecryptCB)); 247 this, &DecryptingDemuxerStreamTest::AbortPendingDecryptCB));
247 248
248 demuxer_stream_->Reset(NewExpectedClosure()); 249 demuxer_stream_->Reset(NewExpectedClosure());
249 message_loop_.RunUntilIdle(); 250 base::RunLoop().RunUntilIdle();
250 } 251 }
251 252
252 MOCK_METHOD2(BufferReady, void(DemuxerStream::Status, 253 MOCK_METHOD2(BufferReady, void(DemuxerStream::Status,
253 const scoped_refptr<DecoderBuffer>&)); 254 const scoped_refptr<DecoderBuffer>&));
254 MOCK_METHOD0(OnWaitingForDecryptionKey, void(void)); 255 MOCK_METHOD0(OnWaitingForDecryptionKey, void(void));
255 256
256 base::MessageLoop message_loop_; 257 base::MessageLoop message_loop_;
257 std::unique_ptr<DecryptingDemuxerStream> demuxer_stream_; 258 std::unique_ptr<DecryptingDemuxerStream> demuxer_stream_;
258 std::unique_ptr<StrictMock<MockCdmContext>> cdm_context_; 259 std::unique_ptr<StrictMock<MockCdmContext>> cdm_context_;
259 std::unique_ptr<StrictMock<MockDecryptor>> decryptor_; 260 std::unique_ptr<StrictMock<MockDecryptor>> decryptor_;
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
349 // Test the case where the a key is added when the decryptor is in 350 // Test the case where the a key is added when the decryptor is in
350 // kWaitingForKey state. 351 // kWaitingForKey state.
351 TEST_F(DecryptingDemuxerStreamTest, KeyAdded_DuringWaitingForKey) { 352 TEST_F(DecryptingDemuxerStreamTest, KeyAdded_DuringWaitingForKey) {
352 Initialize(); 353 Initialize();
353 EnterWaitingForKeyState(); 354 EnterWaitingForKeyState();
354 355
355 EXPECT_CALL(*decryptor_, Decrypt(_, encrypted_buffer_, _)) 356 EXPECT_CALL(*decryptor_, Decrypt(_, encrypted_buffer_, _))
356 .WillRepeatedly(RunCallback<2>(Decryptor::kSuccess, decrypted_buffer_)); 357 .WillRepeatedly(RunCallback<2>(Decryptor::kSuccess, decrypted_buffer_));
357 EXPECT_CALL(*this, BufferReady(DemuxerStream::kOk, decrypted_buffer_)); 358 EXPECT_CALL(*this, BufferReady(DemuxerStream::kOk, decrypted_buffer_));
358 key_added_cb_.Run(); 359 key_added_cb_.Run();
359 message_loop_.RunUntilIdle(); 360 base::RunLoop().RunUntilIdle();
360 } 361 }
361 362
362 // Test the case where the a key is added when the decryptor is in 363 // Test the case where the a key is added when the decryptor is in
363 // kPendingDecrypt state. 364 // kPendingDecrypt state.
364 TEST_F(DecryptingDemuxerStreamTest, KeyAdded_DuringPendingDecrypt) { 365 TEST_F(DecryptingDemuxerStreamTest, KeyAdded_DuringPendingDecrypt) {
365 Initialize(); 366 Initialize();
366 EnterPendingDecryptState(); 367 EnterPendingDecryptState();
367 368
368 EXPECT_CALL(*decryptor_, Decrypt(_, encrypted_buffer_, _)) 369 EXPECT_CALL(*decryptor_, Decrypt(_, encrypted_buffer_, _))
369 .WillRepeatedly(RunCallback<2>(Decryptor::kSuccess, decrypted_buffer_)); 370 .WillRepeatedly(RunCallback<2>(Decryptor::kSuccess, decrypted_buffer_));
370 EXPECT_CALL(*this, BufferReady(DemuxerStream::kOk, decrypted_buffer_)); 371 EXPECT_CALL(*this, BufferReady(DemuxerStream::kOk, decrypted_buffer_));
371 // The decrypt callback is returned after the correct decryption key is added. 372 // The decrypt callback is returned after the correct decryption key is added.
372 key_added_cb_.Run(); 373 key_added_cb_.Run();
373 base::ResetAndReturn(&pending_decrypt_cb_).Run(Decryptor::kNoKey, NULL); 374 base::ResetAndReturn(&pending_decrypt_cb_).Run(Decryptor::kNoKey, NULL);
374 message_loop_.RunUntilIdle(); 375 base::RunLoop().RunUntilIdle();
375 } 376 }
376 377
377 // Test resetting in kIdle state but has not returned any buffer. 378 // Test resetting in kIdle state but has not returned any buffer.
378 TEST_F(DecryptingDemuxerStreamTest, Reset_DuringIdleAfterInitialization) { 379 TEST_F(DecryptingDemuxerStreamTest, Reset_DuringIdleAfterInitialization) {
379 Initialize(); 380 Initialize();
380 Reset(); 381 Reset();
381 } 382 }
382 383
383 // Test resetting in kIdle state after having returned one buffer. 384 // Test resetting in kIdle state after having returned one buffer.
384 TEST_F(DecryptingDemuxerStreamTest, Reset_DuringIdleAfterReadOneBuffer) { 385 TEST_F(DecryptingDemuxerStreamTest, Reset_DuringIdleAfterReadOneBuffer) {
385 Initialize(); 386 Initialize();
386 EnterNormalReadingState(); 387 EnterNormalReadingState();
387 Reset(); 388 Reset();
388 } 389 }
389 390
390 // Test resetting in kPendingDemuxerRead state. 391 // Test resetting in kPendingDemuxerRead state.
391 TEST_F(DecryptingDemuxerStreamTest, Reset_DuringPendingDemuxerRead) { 392 TEST_F(DecryptingDemuxerStreamTest, Reset_DuringPendingDemuxerRead) {
392 Initialize(); 393 Initialize();
393 EnterPendingReadState(); 394 EnterPendingReadState();
394 395
395 EXPECT_CALL(*this, BufferReady(DemuxerStream::kAborted, IsNull())); 396 EXPECT_CALL(*this, BufferReady(DemuxerStream::kAborted, IsNull()));
396 397
397 Reset(); 398 Reset();
398 SatisfyPendingDemuxerReadCB(DemuxerStream::kOk); 399 SatisfyPendingDemuxerReadCB(DemuxerStream::kOk);
399 message_loop_.RunUntilIdle(); 400 base::RunLoop().RunUntilIdle();
400 } 401 }
401 402
402 // Test resetting in kPendingDecrypt state. 403 // Test resetting in kPendingDecrypt state.
403 TEST_F(DecryptingDemuxerStreamTest, Reset_DuringPendingDecrypt) { 404 TEST_F(DecryptingDemuxerStreamTest, Reset_DuringPendingDecrypt) {
404 Initialize(); 405 Initialize();
405 EnterPendingDecryptState(); 406 EnterPendingDecryptState();
406 407
407 EXPECT_CALL(*this, BufferReady(DemuxerStream::kAborted, IsNull())); 408 EXPECT_CALL(*this, BufferReady(DemuxerStream::kAborted, IsNull()));
408 409
409 Reset(); 410 Reset();
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
441 // Test resetting when waiting for an aborted read. 442 // Test resetting when waiting for an aborted read.
442 TEST_F(DecryptingDemuxerStreamTest, Reset_DuringAbortedDemuxerRead) { 443 TEST_F(DecryptingDemuxerStreamTest, Reset_DuringAbortedDemuxerRead) {
443 Initialize(); 444 Initialize();
444 EnterPendingReadState(); 445 EnterPendingReadState();
445 446
446 // Make sure we get a NULL audio frame returned. 447 // Make sure we get a NULL audio frame returned.
447 EXPECT_CALL(*this, BufferReady(DemuxerStream::kAborted, IsNull())); 448 EXPECT_CALL(*this, BufferReady(DemuxerStream::kAborted, IsNull()));
448 449
449 Reset(); 450 Reset();
450 SatisfyPendingDemuxerReadCB(DemuxerStream::kAborted); 451 SatisfyPendingDemuxerReadCB(DemuxerStream::kAborted);
451 message_loop_.RunUntilIdle(); 452 base::RunLoop().RunUntilIdle();
452 } 453 }
453 454
454 // Test config change on the input demuxer stream. 455 // Test config change on the input demuxer stream.
455 TEST_F(DecryptingDemuxerStreamTest, DemuxerRead_ConfigChanged) { 456 TEST_F(DecryptingDemuxerStreamTest, DemuxerRead_ConfigChanged) {
456 Initialize(); 457 Initialize();
457 458
458 AudioDecoderConfig new_config(kCodecVorbis, kSampleFormatPlanarF32, 459 AudioDecoderConfig new_config(kCodecVorbis, kSampleFormatPlanarF32,
459 CHANNEL_LAYOUT_STEREO, 88200, EmptyExtraData(), 460 CHANNEL_LAYOUT_STEREO, 88200, EmptyExtraData(),
460 AesCtrEncryptionScheme()); 461 AesCtrEncryptionScheme());
461 input_audio_stream_->set_audio_decoder_config(new_config); 462 input_audio_stream_->set_audio_decoder_config(new_config);
462 463
463 EXPECT_CALL(*input_audio_stream_, Read(_)) 464 EXPECT_CALL(*input_audio_stream_, Read(_))
464 .WillOnce(RunCallback<0>(DemuxerStream::kConfigChanged, 465 .WillOnce(RunCallback<0>(DemuxerStream::kConfigChanged,
465 scoped_refptr<DecoderBuffer>())); 466 scoped_refptr<DecoderBuffer>()));
466 467
467 ReadAndExpectBufferReadyWith(DemuxerStream::kConfigChanged, NULL); 468 ReadAndExpectBufferReadyWith(DemuxerStream::kConfigChanged, NULL);
468 } 469 }
469 470
470 // Test resetting when waiting for a config changed read. 471 // Test resetting when waiting for a config changed read.
471 TEST_F(DecryptingDemuxerStreamTest, Reset_DuringConfigChangedDemuxerRead) { 472 TEST_F(DecryptingDemuxerStreamTest, Reset_DuringConfigChangedDemuxerRead) {
472 Initialize(); 473 Initialize();
473 EnterPendingReadState(); 474 EnterPendingReadState();
474 475
475 // Make sure we get a |kConfigChanged| instead of a |kAborted|. 476 // Make sure we get a |kConfigChanged| instead of a |kAborted|.
476 EXPECT_CALL(*this, BufferReady(DemuxerStream::kConfigChanged, IsNull())); 477 EXPECT_CALL(*this, BufferReady(DemuxerStream::kConfigChanged, IsNull()));
477 478
478 Reset(); 479 Reset();
479 SatisfyPendingDemuxerReadCB(DemuxerStream::kConfigChanged); 480 SatisfyPendingDemuxerReadCB(DemuxerStream::kConfigChanged);
480 message_loop_.RunUntilIdle(); 481 base::RunLoop().RunUntilIdle();
481 } 482 }
482 483
483 // The following tests test destruction in various scenarios. The destruction 484 // The following tests test destruction in various scenarios. The destruction
484 // happens in DecryptingDemuxerStreamTest's dtor. 485 // happens in DecryptingDemuxerStreamTest's dtor.
485 486
486 // Test destruction in kIdle state but has not returned any buffer. 487 // Test destruction in kIdle state but has not returned any buffer.
487 TEST_F(DecryptingDemuxerStreamTest, Destroy_DuringIdleAfterInitialization) { 488 TEST_F(DecryptingDemuxerStreamTest, Destroy_DuringIdleAfterInitialization) {
488 Initialize(); 489 Initialize();
489 } 490 }
490 491
(...skipping 28 matching lines...) Expand all
519 } 520 }
520 521
521 // Test destruction after reset. 522 // Test destruction after reset.
522 TEST_F(DecryptingDemuxerStreamTest, Destroy_AfterReset) { 523 TEST_F(DecryptingDemuxerStreamTest, Destroy_AfterReset) {
523 Initialize(); 524 Initialize();
524 EnterNormalReadingState(); 525 EnterNormalReadingState();
525 Reset(); 526 Reset();
526 } 527 }
527 528
528 } // namespace media 529 } // namespace media
OLDNEW
« no previous file with comments | « media/filters/decrypting_audio_decoder_unittest.cc ('k') | media/filters/decrypting_video_decoder_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698