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

Side by Side Diff: media/base/pipeline_unittest.cc

Issue 10826196: Clean up Pipeline terminal state logic by merging kError into kStopped state. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src
Patch Set: Created 8 years, 4 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 | Annotate | Revision Log
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 <vector> 5 #include <vector>
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/message_loop.h" 8 #include "base/message_loop.h"
9 #include "base/stl_util.h" 9 #include "base/stl_util.h"
10 #include "base/threading/simple_thread.h" 10 #include "base/threading/simple_thread.h"
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 // streams. 82 // streams.
83 DemuxerStream* null_pointer = NULL; 83 DemuxerStream* null_pointer = NULL;
84 EXPECT_CALL(*mocks_->demuxer(), GetStream(_)) 84 EXPECT_CALL(*mocks_->demuxer(), GetStream(_))
85 .WillRepeatedly(Return(null_pointer)); 85 .WillRepeatedly(Return(null_pointer));
86 86
87 EXPECT_CALL(*mocks_->demuxer(), GetStartTime()) 87 EXPECT_CALL(*mocks_->demuxer(), GetStartTime())
88 .WillRepeatedly(Return(base::TimeDelta())); 88 .WillRepeatedly(Return(base::TimeDelta()));
89 } 89 }
90 90
91 virtual ~PipelineTest() { 91 virtual ~PipelineTest() {
92 if (!pipeline_->IsRunning()) {
93 return;
94 }
95
96 // Shutdown sequence. 92 // Shutdown sequence.
97 if (pipeline_->IsInitialized()) { 93 if (pipeline_->IsRunning()) {
98 EXPECT_CALL(*mocks_->demuxer(), Stop(_)) 94 EXPECT_CALL(*mocks_->demuxer(), Stop(_))
99 .WillOnce(RunClosure()); 95 .WillOnce(RunClosure());
100 96
101 if (audio_stream_) { 97 if (audio_stream_) {
102 EXPECT_CALL(*mocks_->audio_renderer(), Pause(_)) 98 EXPECT_CALL(*mocks_->audio_renderer(), Pause(_))
103 .WillOnce(RunClosure()); 99 .WillOnce(RunClosure());
104 EXPECT_CALL(*mocks_->audio_renderer(), Flush(_)) 100 EXPECT_CALL(*mocks_->audio_renderer(), Flush(_))
105 .WillOnce(RunClosure()); 101 .WillOnce(RunClosure());
106 EXPECT_CALL(*mocks_->audio_renderer(), Stop(_)) 102 EXPECT_CALL(*mocks_->audio_renderer(), Stop(_))
107 .WillOnce(RunClosure()); 103 .WillOnce(RunClosure());
108 } 104 }
109 105
110 if (video_stream_) { 106 if (video_stream_) {
111 EXPECT_CALL(*mocks_->video_renderer(), Pause(_)) 107 EXPECT_CALL(*mocks_->video_renderer(), Pause(_))
112 .WillOnce(RunClosure()); 108 .WillOnce(RunClosure());
113 EXPECT_CALL(*mocks_->video_renderer(), Flush(_)) 109 EXPECT_CALL(*mocks_->video_renderer(), Flush(_))
114 .WillOnce(RunClosure()); 110 .WillOnce(RunClosure());
115 EXPECT_CALL(*mocks_->video_renderer(), Stop(_)) 111 EXPECT_CALL(*mocks_->video_renderer(), Stop(_))
116 .WillOnce(RunClosure()); 112 .WillOnce(RunClosure());
117 } 113 }
118 } 114 }
119 115
120 // Expect a stop callback if we were started. 116 // Stop() callbacks are always executed regardless of run state.
121 EXPECT_CALL(callbacks_, OnStop()); 117 EXPECT_CALL(callbacks_, OnStop());
122 pipeline_->Stop(base::Bind(&CallbackHelper::OnStop, 118 pipeline_->Stop(base::Bind(&CallbackHelper::OnStop,
123 base::Unretained(&callbacks_))); 119 base::Unretained(&callbacks_)));
124 message_loop_.RunAllPending(); 120 message_loop_.RunAllPending();
125 121
126 pipeline_ = NULL; 122 pipeline_ = NULL;
127 mocks_.reset(); 123 mocks_.reset();
128 } 124 }
129 125
130 protected: 126 protected:
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
295 private: 291 private:
296 DISALLOW_COPY_AND_ASSIGN(PipelineTest); 292 DISALLOW_COPY_AND_ASSIGN(PipelineTest);
297 }; 293 };
298 294
299 // Test that playback controls methods no-op when the pipeline hasn't been 295 // Test that playback controls methods no-op when the pipeline hasn't been
300 // started. 296 // started.
301 TEST_F(PipelineTest, NotStarted) { 297 TEST_F(PipelineTest, NotStarted) {
302 const base::TimeDelta kZero; 298 const base::TimeDelta kZero;
303 299
304 EXPECT_FALSE(pipeline_->IsRunning()); 300 EXPECT_FALSE(pipeline_->IsRunning());
305 EXPECT_FALSE(pipeline_->IsInitialized());
306 EXPECT_FALSE(pipeline_->HasAudio()); 301 EXPECT_FALSE(pipeline_->HasAudio());
307 EXPECT_FALSE(pipeline_->HasVideo()); 302 EXPECT_FALSE(pipeline_->HasVideo());
308 303
309 // Setting should still work. 304 // Setting should still work.
310 EXPECT_EQ(0.0f, pipeline_->GetPlaybackRate()); 305 EXPECT_EQ(0.0f, pipeline_->GetPlaybackRate());
311 pipeline_->SetPlaybackRate(-1.0f); 306 pipeline_->SetPlaybackRate(-1.0f);
312 EXPECT_EQ(0.0f, pipeline_->GetPlaybackRate()); 307 EXPECT_EQ(0.0f, pipeline_->GetPlaybackRate());
313 pipeline_->SetPlaybackRate(1.0f); 308 pipeline_->SetPlaybackRate(1.0f);
314 EXPECT_EQ(1.0f, pipeline_->GetPlaybackRate()); 309 EXPECT_EQ(1.0f, pipeline_->GetPlaybackRate());
315 310
(...skipping 13 matching lines...) Expand all
329 // Should always get set to zero. 324 // Should always get set to zero.
330 gfx::Size size(1, 1); 325 gfx::Size size(1, 1);
331 pipeline_->GetNaturalVideoSize(&size); 326 pipeline_->GetNaturalVideoSize(&size);
332 EXPECT_EQ(0, size.width()); 327 EXPECT_EQ(0, size.width());
333 EXPECT_EQ(0, size.height()); 328 EXPECT_EQ(0, size.height());
334 } 329 }
335 330
336 TEST_F(PipelineTest, NeverInitializes) { 331 TEST_F(PipelineTest, NeverInitializes) {
337 // Don't execute the callback passed into Initialize(). 332 // Don't execute the callback passed into Initialize().
338 EXPECT_CALL(*mocks_->demuxer(), Initialize(_, _)); 333 EXPECT_CALL(*mocks_->demuxer(), Initialize(_, _));
339 EXPECT_CALL(*mocks_->demuxer(), Stop(_))
scherkus (not reviewing) 2012/08/08 02:20:56 now covered by ~PipelineTest() IsRunning() path (a
340 .WillOnce(RunClosure());
341 334
342 // This test hangs during initialization by never calling 335 // This test hangs during initialization by never calling
343 // InitializationComplete(). StrictMock<> will ensure that the callback is 336 // InitializationComplete(). StrictMock<> will ensure that the callback is
344 // never executed. 337 // never executed.
345 pipeline_->Start( 338 pipeline_->Start(
346 mocks_->Create().Pass(), 339 mocks_->Create().Pass(),
347 base::Bind(&CallbackHelper::OnEnded, base::Unretained(&callbacks_)), 340 base::Bind(&CallbackHelper::OnEnded, base::Unretained(&callbacks_)),
348 base::Bind(&CallbackHelper::OnError, base::Unretained(&callbacks_)), 341 base::Bind(&CallbackHelper::OnError, base::Unretained(&callbacks_)),
349 base::Bind(&CallbackHelper::OnStart, base::Unretained(&callbacks_))); 342 base::Bind(&CallbackHelper::OnStart, base::Unretained(&callbacks_)));
350 message_loop_.RunAllPending(); 343 message_loop_.RunAllPending();
351 344
352 EXPECT_FALSE(pipeline_->IsInitialized());
353
354 // Because our callback will get executed when the test tears down, we'll 345 // Because our callback will get executed when the test tears down, we'll
355 // verify that nothing has been called, then set our expectation for the call 346 // verify that nothing has been called, then set our expectation for the call
356 // made during tear down. 347 // made during tear down.
357 Mock::VerifyAndClear(&callbacks_); 348 Mock::VerifyAndClear(&callbacks_);
358 EXPECT_CALL(callbacks_, OnStart(PIPELINE_OK)); 349 EXPECT_CALL(callbacks_, OnStart(PIPELINE_OK));
359 } 350 }
360 351
361 TEST_F(PipelineTest, RequiredFilterMissing) { 352 TEST_F(PipelineTest, RequiredFilterMissing) {
362 // Create a filter collection with missing filter. 353 // Create a filter collection with missing filter.
363 scoped_ptr<FilterCollection> collection(mocks_->Create()); 354 scoped_ptr<FilterCollection> collection(mocks_->Create());
364 collection->SetDemuxer(NULL); 355 collection->SetDemuxer(NULL);
365 356
366 EXPECT_CALL(callbacks_, OnStart(PIPELINE_ERROR_REQUIRED_FILTER_MISSING)); 357 EXPECT_CALL(callbacks_, OnStart(PIPELINE_ERROR_REQUIRED_FILTER_MISSING));
367 pipeline_->Start( 358 pipeline_->Start(
368 collection.Pass(), 359 collection.Pass(),
369 base::Bind(&CallbackHelper::OnEnded, base::Unretained(&callbacks_)), 360 base::Bind(&CallbackHelper::OnEnded, base::Unretained(&callbacks_)),
370 base::Bind(&CallbackHelper::OnError, base::Unretained(&callbacks_)), 361 base::Bind(&CallbackHelper::OnError, base::Unretained(&callbacks_)),
371 base::Bind(&CallbackHelper::OnStart, base::Unretained(&callbacks_))); 362 base::Bind(&CallbackHelper::OnStart, base::Unretained(&callbacks_)));
372 message_loop_.RunAllPending(); 363 message_loop_.RunAllPending();
373 EXPECT_FALSE(pipeline_->IsInitialized());
374 } 364 }
375 365
376 TEST_F(PipelineTest, URLNotFound) { 366 TEST_F(PipelineTest, URLNotFound) {
377 EXPECT_CALL(*mocks_->demuxer(), Initialize(_, _)) 367 EXPECT_CALL(*mocks_->demuxer(), Initialize(_, _))
378 .WillOnce(RunPipelineStatusCB1WithStatus(PIPELINE_ERROR_URL_NOT_FOUND)); 368 .WillOnce(RunPipelineStatusCB1WithStatus(PIPELINE_ERROR_URL_NOT_FOUND));
379 EXPECT_CALL(*mocks_->demuxer(), Stop(_)) 369 EXPECT_CALL(*mocks_->demuxer(), Stop(_))
380 .WillOnce(RunClosure()); 370 .WillOnce(RunClosure());
381 371
382 InitializePipeline(PIPELINE_ERROR_URL_NOT_FOUND); 372 InitializePipeline(PIPELINE_ERROR_URL_NOT_FOUND);
383 EXPECT_FALSE(pipeline_->IsInitialized());
384 } 373 }
385 374
386 TEST_F(PipelineTest, NoStreams) { 375 TEST_F(PipelineTest, NoStreams) {
387 EXPECT_CALL(*mocks_->demuxer(), Initialize(_, _)) 376 EXPECT_CALL(*mocks_->demuxer(), Initialize(_, _))
388 .WillOnce(RunPipelineStatusCB1()); 377 .WillOnce(RunPipelineStatusCB1());
389 EXPECT_CALL(*mocks_->demuxer(), Stop(_)) 378 EXPECT_CALL(*mocks_->demuxer(), Stop(_))
390 .WillOnce(RunClosure()); 379 .WillOnce(RunClosure());
391 380
392 InitializePipeline(PIPELINE_ERROR_COULD_NOT_RENDER); 381 InitializePipeline(PIPELINE_ERROR_COULD_NOT_RENDER);
393 EXPECT_FALSE(pipeline_->IsInitialized());
394 } 382 }
395 383
396 TEST_F(PipelineTest, AudioStream) { 384 TEST_F(PipelineTest, AudioStream) {
397 CreateAudioStream(); 385 CreateAudioStream();
398 MockDemuxerStreamVector streams; 386 MockDemuxerStreamVector streams;
399 streams.push_back(audio_stream()); 387 streams.push_back(audio_stream());
400 388
401 InitializeDemuxer(&streams); 389 InitializeDemuxer(&streams);
402 InitializeAudioDecoder(audio_stream()); 390 InitializeAudioDecoder(audio_stream());
403 InitializeAudioRenderer(); 391 InitializeAudioRenderer();
404 392
405 InitializePipeline(PIPELINE_OK); 393 InitializePipeline(PIPELINE_OK);
406 EXPECT_TRUE(pipeline_->IsInitialized());
407 EXPECT_TRUE(pipeline_->HasAudio()); 394 EXPECT_TRUE(pipeline_->HasAudio());
408 EXPECT_FALSE(pipeline_->HasVideo()); 395 EXPECT_FALSE(pipeline_->HasVideo());
409 } 396 }
410 397
411 TEST_F(PipelineTest, VideoStream) { 398 TEST_F(PipelineTest, VideoStream) {
412 CreateVideoStream(); 399 CreateVideoStream();
413 MockDemuxerStreamVector streams; 400 MockDemuxerStreamVector streams;
414 streams.push_back(video_stream()); 401 streams.push_back(video_stream());
415 402
416 InitializeDemuxer(&streams); 403 InitializeDemuxer(&streams);
417 InitializeVideoDecoder(video_stream()); 404 InitializeVideoDecoder(video_stream());
418 InitializeVideoRenderer(); 405 InitializeVideoRenderer();
419 406
420 InitializePipeline(PIPELINE_OK); 407 InitializePipeline(PIPELINE_OK);
421 EXPECT_TRUE(pipeline_->IsInitialized());
422 EXPECT_FALSE(pipeline_->HasAudio()); 408 EXPECT_FALSE(pipeline_->HasAudio());
423 EXPECT_TRUE(pipeline_->HasVideo()); 409 EXPECT_TRUE(pipeline_->HasVideo());
424 } 410 }
425 411
426 TEST_F(PipelineTest, AudioVideoStream) { 412 TEST_F(PipelineTest, AudioVideoStream) {
427 CreateAudioStream(); 413 CreateAudioStream();
428 CreateVideoStream(); 414 CreateVideoStream();
429 MockDemuxerStreamVector streams; 415 MockDemuxerStreamVector streams;
430 streams.push_back(audio_stream()); 416 streams.push_back(audio_stream());
431 streams.push_back(video_stream()); 417 streams.push_back(video_stream());
432 418
433 InitializeDemuxer(&streams); 419 InitializeDemuxer(&streams);
434 InitializeAudioDecoder(audio_stream()); 420 InitializeAudioDecoder(audio_stream());
435 InitializeAudioRenderer(); 421 InitializeAudioRenderer();
436 InitializeVideoDecoder(video_stream()); 422 InitializeVideoDecoder(video_stream());
437 InitializeVideoRenderer(); 423 InitializeVideoRenderer();
438 424
439 InitializePipeline(PIPELINE_OK); 425 InitializePipeline(PIPELINE_OK);
440 EXPECT_TRUE(pipeline_->IsInitialized());
441 EXPECT_TRUE(pipeline_->HasAudio()); 426 EXPECT_TRUE(pipeline_->HasAudio());
442 EXPECT_TRUE(pipeline_->HasVideo()); 427 EXPECT_TRUE(pipeline_->HasVideo());
443 } 428 }
444 429
445 TEST_F(PipelineTest, Seek) { 430 TEST_F(PipelineTest, Seek) {
446 CreateAudioStream(); 431 CreateAudioStream();
447 CreateVideoStream(); 432 CreateVideoStream();
448 MockDemuxerStreamVector streams; 433 MockDemuxerStreamVector streams;
449 streams.push_back(audio_stream()); 434 streams.push_back(audio_stream());
450 streams.push_back(video_stream()); 435 streams.push_back(video_stream());
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
486 CreateVideoStream(); 471 CreateVideoStream();
487 MockDemuxerStreamVector streams; 472 MockDemuxerStreamVector streams;
488 streams.push_back(video_stream()); 473 streams.push_back(video_stream());
489 474
490 const base::TimeDelta kDuration = base::TimeDelta::FromSeconds(100); 475 const base::TimeDelta kDuration = base::TimeDelta::FromSeconds(100);
491 InitializeDemuxer(&streams, kDuration); 476 InitializeDemuxer(&streams, kDuration);
492 InitializeVideoDecoder(video_stream()); 477 InitializeVideoDecoder(video_stream());
493 InitializeVideoRenderer(); 478 InitializeVideoRenderer();
494 479
495 InitializePipeline(PIPELINE_OK); 480 InitializePipeline(PIPELINE_OK);
496 EXPECT_TRUE(pipeline_->IsInitialized());
497 EXPECT_EQ(kDuration.ToInternalValue(), 481 EXPECT_EQ(kDuration.ToInternalValue(),
498 pipeline_->GetMediaDuration().ToInternalValue()); 482 pipeline_->GetMediaDuration().ToInternalValue());
499 EXPECT_EQ(kTotalBytes, pipeline_->GetTotalBytes()); 483 EXPECT_EQ(kTotalBytes, pipeline_->GetTotalBytes());
500 EXPECT_FALSE(pipeline_->DidLoadingProgress()); 484 EXPECT_FALSE(pipeline_->DidLoadingProgress());
501 } 485 }
502 486
503 TEST_F(PipelineTest, GetBufferedTimeRanges) { 487 TEST_F(PipelineTest, GetBufferedTimeRanges) {
504 CreateVideoStream(); 488 CreateVideoStream();
505 MockDemuxerStreamVector streams; 489 MockDemuxerStreamVector streams;
506 streams.push_back(video_stream()); 490 streams.push_back(video_stream());
507 491
508 const base::TimeDelta kDuration = base::TimeDelta::FromSeconds(100); 492 const base::TimeDelta kDuration = base::TimeDelta::FromSeconds(100);
509 InitializeDemuxer(&streams, kDuration); 493 InitializeDemuxer(&streams, kDuration);
510 InitializeVideoDecoder(video_stream()); 494 InitializeVideoDecoder(video_stream());
511 InitializeVideoRenderer(); 495 InitializeVideoRenderer();
512 496
513 InitializePipeline(PIPELINE_OK); 497 InitializePipeline(PIPELINE_OK);
514 EXPECT_TRUE(pipeline_->IsInitialized());
515 498
516 EXPECT_EQ(0u, pipeline_->GetBufferedTimeRanges().size()); 499 EXPECT_EQ(0u, pipeline_->GetBufferedTimeRanges().size());
517 500
518 EXPECT_FALSE(pipeline_->DidLoadingProgress()); 501 EXPECT_FALSE(pipeline_->DidLoadingProgress());
519 pipeline_->AddBufferedByteRange(0, kTotalBytes / 8); 502 pipeline_->AddBufferedByteRange(0, kTotalBytes / 8);
520 EXPECT_TRUE(pipeline_->DidLoadingProgress()); 503 EXPECT_TRUE(pipeline_->DidLoadingProgress());
521 EXPECT_FALSE(pipeline_->DidLoadingProgress()); 504 EXPECT_FALSE(pipeline_->DidLoadingProgress());
522 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); 505 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size());
523 EXPECT_EQ(base::TimeDelta(), pipeline_->GetBufferedTimeRanges().start(0)); 506 EXPECT_EQ(base::TimeDelta(), pipeline_->GetBufferedTimeRanges().start(0));
524 EXPECT_EQ(kDuration / 8, pipeline_->GetBufferedTimeRanges().end(0)); 507 EXPECT_EQ(kDuration / 8, pipeline_->GetBufferedTimeRanges().end(0));
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
560 streams.push_back(audio_stream()); 543 streams.push_back(audio_stream());
561 streams.push_back(video_stream()); 544 streams.push_back(video_stream());
562 545
563 InitializeDemuxer(&streams); 546 InitializeDemuxer(&streams);
564 InitializeAudioDecoder(audio_stream()); 547 InitializeAudioDecoder(audio_stream());
565 InitializeAudioRenderer(); 548 InitializeAudioRenderer();
566 InitializeVideoDecoder(video_stream()); 549 InitializeVideoDecoder(video_stream());
567 InitializeVideoRenderer(); 550 InitializeVideoRenderer();
568 551
569 InitializePipeline(PIPELINE_OK); 552 InitializePipeline(PIPELINE_OK);
570 EXPECT_TRUE(pipeline_->IsInitialized());
571 EXPECT_TRUE(pipeline_->HasAudio()); 553 EXPECT_TRUE(pipeline_->HasAudio());
572 EXPECT_TRUE(pipeline_->HasVideo()); 554 EXPECT_TRUE(pipeline_->HasVideo());
573 555
574 EXPECT_CALL(*mocks_->demuxer(), OnAudioRendererDisabled()); 556 EXPECT_CALL(*mocks_->demuxer(), OnAudioRendererDisabled());
575 pipeline_->OnAudioDisabled(); 557 pipeline_->OnAudioDisabled();
576 558
577 // Verify that ended event is fired when video ends. 559 // Verify that ended event is fired when video ends.
578 EXPECT_CALL(*mocks_->video_renderer(), HasEnded()) 560 EXPECT_CALL(*mocks_->video_renderer(), HasEnded())
579 .WillOnce(Return(true)); 561 .WillOnce(Return(true));
580 EXPECT_CALL(callbacks_, OnEnded(PIPELINE_OK)); 562 EXPECT_CALL(callbacks_, OnEnded(PIPELINE_OK));
(...skipping 10 matching lines...) Expand all
591 InitializeDemuxer(&streams); 573 InitializeDemuxer(&streams);
592 InitializeAudioDecoder(audio_stream()); 574 InitializeAudioDecoder(audio_stream());
593 InitializeAudioRenderer(true); 575 InitializeAudioRenderer(true);
594 InitializeVideoDecoder(video_stream()); 576 InitializeVideoDecoder(video_stream());
595 InitializeVideoRenderer(); 577 InitializeVideoRenderer();
596 578
597 EXPECT_CALL(*mocks_->demuxer(), 579 EXPECT_CALL(*mocks_->demuxer(),
598 OnAudioRendererDisabled()); 580 OnAudioRendererDisabled());
599 581
600 InitializePipeline(PIPELINE_OK); 582 InitializePipeline(PIPELINE_OK);
601 EXPECT_TRUE(pipeline_->IsInitialized());
602 EXPECT_FALSE(pipeline_->HasAudio()); 583 EXPECT_FALSE(pipeline_->HasAudio());
603 EXPECT_TRUE(pipeline_->HasVideo()); 584 EXPECT_TRUE(pipeline_->HasVideo());
604 585
605 // Verify that ended event is fired when video ends. 586 // Verify that ended event is fired when video ends.
606 EXPECT_CALL(*mocks_->video_renderer(), HasEnded()) 587 EXPECT_CALL(*mocks_->video_renderer(), HasEnded())
607 .WillOnce(Return(true)); 588 .WillOnce(Return(true));
608 EXPECT_CALL(callbacks_, OnEnded(PIPELINE_OK)); 589 EXPECT_CALL(callbacks_, OnEnded(PIPELINE_OK));
609 pipeline_->OnRendererEnded(); 590 pipeline_->OnRendererEnded();
610 } 591 }
611 592
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
807 CreateVideoStream(); 788 CreateVideoStream();
808 MockDemuxerStreamVector streams; 789 MockDemuxerStreamVector streams;
809 streams.push_back(video_stream()); 790 streams.push_back(video_stream());
810 791
811 const base::TimeDelta kDuration = base::TimeDelta::FromSeconds(100); 792 const base::TimeDelta kDuration = base::TimeDelta::FromSeconds(100);
812 InitializeDemuxer(&streams, kDuration); 793 InitializeDemuxer(&streams, kDuration);
813 InitializeVideoDecoder(video_stream()); 794 InitializeVideoDecoder(video_stream());
814 InitializeVideoRenderer(); 795 InitializeVideoRenderer();
815 796
816 InitializePipeline(PIPELINE_OK); 797 InitializePipeline(PIPELINE_OK);
817 EXPECT_TRUE(pipeline_->IsInitialized());
818 EXPECT_FALSE(pipeline_->HasAudio()); 798 EXPECT_FALSE(pipeline_->HasAudio());
819 EXPECT_TRUE(pipeline_->HasVideo()); 799 EXPECT_TRUE(pipeline_->HasVideo());
820 800
821 EXPECT_EQ(base::TimeDelta(), pipeline_->GetMediaTime()); 801 EXPECT_EQ(base::TimeDelta(), pipeline_->GetMediaTime());
822 } 802 }
823 803
824 TEST_F(PipelineTest, StartTimeIsNonZero) { 804 TEST_F(PipelineTest, StartTimeIsNonZero) {
825 const base::TimeDelta kStartTime = base::TimeDelta::FromSeconds(4); 805 const base::TimeDelta kStartTime = base::TimeDelta::FromSeconds(4);
826 const base::TimeDelta kDuration = base::TimeDelta::FromSeconds(100); 806 const base::TimeDelta kDuration = base::TimeDelta::FromSeconds(100);
827 807
828 EXPECT_CALL(*mocks_->demuxer(), GetStartTime()) 808 EXPECT_CALL(*mocks_->demuxer(), GetStartTime())
829 .WillRepeatedly(Return(kStartTime)); 809 .WillRepeatedly(Return(kStartTime));
830 810
831 CreateVideoStream(); 811 CreateVideoStream();
832 MockDemuxerStreamVector streams; 812 MockDemuxerStreamVector streams;
833 streams.push_back(video_stream()); 813 streams.push_back(video_stream());
834 814
835 InitializeDemuxer(&streams, kDuration); 815 InitializeDemuxer(&streams, kDuration);
836 InitializeVideoDecoder(video_stream()); 816 InitializeVideoDecoder(video_stream());
837 InitializeVideoRenderer(); 817 InitializeVideoRenderer();
838 818
839 InitializePipeline(PIPELINE_OK); 819 InitializePipeline(PIPELINE_OK);
840 EXPECT_TRUE(pipeline_->IsInitialized());
841 EXPECT_FALSE(pipeline_->HasAudio()); 820 EXPECT_FALSE(pipeline_->HasAudio());
842 EXPECT_TRUE(pipeline_->HasVideo()); 821 EXPECT_TRUE(pipeline_->HasVideo());
843 822
844 EXPECT_EQ(kStartTime, pipeline_->GetMediaTime()); 823 EXPECT_EQ(kStartTime, pipeline_->GetMediaTime());
845 } 824 }
846 825
847 static void RunTimeCB(const AudioRenderer::TimeCB& time_cb, 826 static void RunTimeCB(const AudioRenderer::TimeCB& time_cb,
848 int time_in_ms, 827 int time_in_ms,
849 int max_time_in_ms) { 828 int max_time_in_ms) {
850 time_cb.Run(base::TimeDelta::FromMilliseconds(time_in_ms), 829 time_cb.Run(base::TimeDelta::FromMilliseconds(time_in_ms),
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
951 TestPipelineStatusNotification(base::TimeDelta::FromMilliseconds(0)); 930 TestPipelineStatusNotification(base::TimeDelta::FromMilliseconds(0));
952 } 931 }
953 932
954 // Test that different-thread, some-delay callback (the expected common case) 933 // Test that different-thread, some-delay callback (the expected common case)
955 // works correctly. 934 // works correctly.
956 TEST(PipelineStatusNotificationTest, DelayedCallback) { 935 TEST(PipelineStatusNotificationTest, DelayedCallback) {
957 TestPipelineStatusNotification(base::TimeDelta::FromMilliseconds(20)); 936 TestPipelineStatusNotification(base::TimeDelta::FromMilliseconds(20));
958 } 937 }
959 938
960 } // namespace media 939 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698