| 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 |