| OLD | NEW | 
|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 <memory> | 7 #include <memory> | 
| 8 #include <vector> | 8 #include <vector> | 
| 9 | 9 | 
| 10 #include "base/bind.h" | 10 #include "base/bind.h" | 
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 80  protected: | 80  protected: | 
| 81   void Destroy() { | 81   void Destroy() { | 
| 82     renderer_impl_.reset(); | 82     renderer_impl_.reset(); | 
| 83     base::RunLoop().RunUntilIdle(); | 83     base::RunLoop().RunUntilIdle(); | 
| 84   } | 84   } | 
| 85 | 85 | 
| 86   std::unique_ptr<StrictMock<MockDemuxerStream>> CreateStream( | 86   std::unique_ptr<StrictMock<MockDemuxerStream>> CreateStream( | 
| 87       DemuxerStream::Type type) { | 87       DemuxerStream::Type type) { | 
| 88     std::unique_ptr<StrictMock<MockDemuxerStream>> stream( | 88     std::unique_ptr<StrictMock<MockDemuxerStream>> stream( | 
| 89         new StrictMock<MockDemuxerStream>(type)); | 89         new StrictMock<MockDemuxerStream>(type)); | 
|  | 90     EXPECT_CALL(*stream, SetStreamRestartedCB(_)).Times(testing::AnyNumber()); | 
| 90     return stream; | 91     return stream; | 
| 91   } | 92   } | 
| 92 | 93 | 
| 93   // Sets up expectations to allow the audio renderer to initialize. | 94   // Sets up expectations to allow the audio renderer to initialize. | 
| 94   void SetAudioRendererInitializeExpectations(PipelineStatus status) { | 95   void SetAudioRendererInitializeExpectations(PipelineStatus status) { | 
| 95     EXPECT_CALL(*audio_renderer_, Initialize(audio_stream_.get(), _, _, _)) | 96     EXPECT_CALL(*audio_renderer_, Initialize(audio_stream_.get(), _, _, _)) | 
| 96         .WillOnce( | 97         .WillOnce( | 
| 97             DoAll(SaveArg<2>(&audio_renderer_client_), RunCallback<3>(status))); | 98             DoAll(SaveArg<2>(&audio_renderer_client_), RunCallback<3>(status))); | 
| 98   } | 99   } | 
| 99 | 100 | 
| (...skipping 396 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 496   audio_renderer_client_->OnEnded(); | 497   audio_renderer_client_->OnEnded(); | 
| 497   base::RunLoop().RunUntilIdle(); | 498   base::RunLoop().RunUntilIdle(); | 
| 498 } | 499 } | 
| 499 | 500 | 
| 500 TEST_F(RendererImplTest, VideoStreamEnded) { | 501 TEST_F(RendererImplTest, VideoStreamEnded) { | 
| 501   InitializeWithVideo(); | 502   InitializeWithVideo(); | 
| 502   Play(); | 503   Play(); | 
| 503 | 504 | 
| 504   EXPECT_CALL(time_source_, StopTicking()); | 505   EXPECT_CALL(time_source_, StopTicking()); | 
| 505   EXPECT_CALL(callbacks_, OnEnded()); | 506   EXPECT_CALL(callbacks_, OnEnded()); | 
|  | 507   EXPECT_CALL(*video_renderer_, OnTimeStateChanged(false)); | 
| 506 | 508 | 
| 507   video_renderer_client_->OnEnded(); | 509   video_renderer_client_->OnEnded(); | 
| 508   base::RunLoop().RunUntilIdle(); | 510   base::RunLoop().RunUntilIdle(); | 
| 509 } | 511 } | 
| 510 | 512 | 
| 511 TEST_F(RendererImplTest, AudioVideoStreamsEnded) { | 513 TEST_F(RendererImplTest, AudioVideoStreamsEnded) { | 
| 512   InitializeWithAudioAndVideo(); | 514   InitializeWithAudioAndVideo(); | 
| 513   Play(); | 515   Play(); | 
| 514 | 516 | 
| 515   // OnEnded() is called only when all streams have finished. | 517   // OnEnded() is called only when all streams have finished. | 
| 516   audio_renderer_client_->OnEnded(); | 518   audio_renderer_client_->OnEnded(); | 
| 517   base::RunLoop().RunUntilIdle(); | 519   base::RunLoop().RunUntilIdle(); | 
| 518 | 520 | 
| 519   EXPECT_CALL(time_source_, StopTicking()); | 521   EXPECT_CALL(time_source_, StopTicking()); | 
| 520   EXPECT_CALL(callbacks_, OnEnded()); | 522   EXPECT_CALL(callbacks_, OnEnded()); | 
|  | 523   EXPECT_CALL(*video_renderer_, OnTimeStateChanged(false)); | 
| 521 | 524 | 
| 522   video_renderer_client_->OnEnded(); | 525   video_renderer_client_->OnEnded(); | 
| 523   base::RunLoop().RunUntilIdle(); | 526   base::RunLoop().RunUntilIdle(); | 
| 524 } | 527 } | 
| 525 | 528 | 
| 526 TEST_F(RendererImplTest, ErrorAfterInitialize) { | 529 TEST_F(RendererImplTest, ErrorAfterInitialize) { | 
| 527   InitializeWithAudio(); | 530   InitializeWithAudio(); | 
| 528   EXPECT_CALL(callbacks_, OnError(PIPELINE_ERROR_DECODE)); | 531   EXPECT_CALL(callbacks_, OnError(PIPELINE_ERROR_DECODE)); | 
| 529   audio_renderer_client_->OnError(PIPELINE_ERROR_DECODE); | 532   audio_renderer_client_->OnError(PIPELINE_ERROR_DECODE); | 
| 530   base::RunLoop().RunUntilIdle(); | 533   base::RunLoop().RunUntilIdle(); | 
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 693       .WillOnce( | 696       .WillOnce( | 
| 694           SetBufferingState(&audio_renderer_client_, BUFFERING_HAVE_ENOUGH)); | 697           SetBufferingState(&audio_renderer_client_, BUFFERING_HAVE_ENOUGH)); | 
| 695   EXPECT_CALL(*video_renderer_, StartPlayingFrom(kStartTime)); | 698   EXPECT_CALL(*video_renderer_, StartPlayingFrom(kStartTime)); | 
| 696   renderer_impl_->StartPlayingFrom(kStartTime); | 699   renderer_impl_->StartPlayingFrom(kStartTime); | 
| 697 | 700 | 
| 698   // Nothing else should primed on the message loop. | 701   // Nothing else should primed on the message loop. | 
| 699   base::RunLoop().RunUntilIdle(); | 702   base::RunLoop().RunUntilIdle(); | 
| 700 } | 703 } | 
| 701 | 704 | 
| 702 }  // namespace media | 705 }  // namespace media | 
| OLD | NEW | 
|---|