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 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
166 } | 166 } |
167 | 167 |
168 void Play() { | 168 void Play() { |
169 DCHECK(audio_stream_ || video_stream_); | 169 DCHECK(audio_stream_ || video_stream_); |
170 EXPECT_CALL(callbacks_, OnBufferingStateChange(BUFFERING_HAVE_ENOUGH)); | 170 EXPECT_CALL(callbacks_, OnBufferingStateChange(BUFFERING_HAVE_ENOUGH)); |
171 | 171 |
172 base::TimeDelta start_time( | 172 base::TimeDelta start_time( |
173 base::TimeDelta::FromMilliseconds(kStartPlayingTimeInMs)); | 173 base::TimeDelta::FromMilliseconds(kStartPlayingTimeInMs)); |
174 EXPECT_CALL(time_source_, SetMediaTime(start_time)); | 174 EXPECT_CALL(time_source_, SetMediaTime(start_time)); |
175 EXPECT_CALL(time_source_, StartTicking()); | 175 EXPECT_CALL(time_source_, StartTicking()); |
| 176 EXPECT_CALL(time_source_, CurrentMediaTime(_)).Times(::testing::AtLeast(1)); |
| 177 EXPECT_CALL(callbacks_, OnTimeUpdate(_, _, _)).Times(::testing::AtLeast(1)); |
176 | 178 |
177 if (audio_stream_) { | 179 if (audio_stream_) { |
178 EXPECT_CALL(*audio_renderer_, StartPlaying()) | 180 EXPECT_CALL(*audio_renderer_, StartPlaying()) |
179 .WillOnce(SetBufferingState(&audio_renderer_client_, | 181 .WillOnce(SetBufferingState(&audio_renderer_client_, |
180 BUFFERING_HAVE_ENOUGH)); | 182 BUFFERING_HAVE_ENOUGH)); |
181 } | 183 } |
182 | 184 |
183 if (video_stream_) { | 185 if (video_stream_) { |
184 EXPECT_CALL(*video_renderer_, StartPlayingFrom(start_time)) | 186 EXPECT_CALL(*video_renderer_, StartPlayingFrom(start_time)) |
185 .WillOnce(SetBufferingState(&video_renderer_client_, | 187 .WillOnce(SetBufferingState(&video_renderer_client_, |
(...skipping 435 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
621 // Set a zero threshold such that the underflow will be executed on the next | 623 // Set a zero threshold such that the underflow will be executed on the next |
622 // run of the message loop. | 624 // run of the message loop. |
623 renderer_impl_->set_video_underflow_threshold_for_testing(base::TimeDelta()); | 625 renderer_impl_->set_video_underflow_threshold_for_testing(base::TimeDelta()); |
624 | 626 |
625 // Underflow should be delayed when both audio and video are present and video | 627 // Underflow should be delayed when both audio and video are present and video |
626 // underflows. | 628 // underflows. |
627 EXPECT_CALL(callbacks_, OnBufferingStateChange(BUFFERING_HAVE_NOTHING)); | 629 EXPECT_CALL(callbacks_, OnBufferingStateChange(BUFFERING_HAVE_NOTHING)); |
628 video_renderer_client_->OnBufferingStateChange(BUFFERING_HAVE_NOTHING); | 630 video_renderer_client_->OnBufferingStateChange(BUFFERING_HAVE_NOTHING); |
629 Mock::VerifyAndClearExpectations(&time_source_); | 631 Mock::VerifyAndClearExpectations(&time_source_); |
630 | 632 |
| 633 EXPECT_CALL(time_source_, CurrentMediaTime(_)); |
631 EXPECT_CALL(time_source_, StopTicking()); | 634 EXPECT_CALL(time_source_, StopTicking()); |
632 base::RunLoop().RunUntilIdle(); | 635 base::RunLoop().RunUntilIdle(); |
633 } | 636 } |
634 | 637 |
635 TEST_F(RendererImplTest, VideoUnderflowWithAudioVideoRecovers) { | 638 TEST_F(RendererImplTest, VideoUnderflowWithAudioVideoRecovers) { |
636 InitializeWithAudioAndVideo(); | 639 InitializeWithAudioAndVideo(); |
637 Play(); | 640 Play(); |
638 | 641 |
639 // Set a zero threshold such that the underflow will be executed on the next | 642 // Set a zero threshold such that the underflow will be executed on the next |
640 // run of the message loop. | 643 // run of the message loop. |
(...skipping 20 matching lines...) Expand all Loading... |
661 renderer_impl_->set_video_underflow_threshold_for_testing(base::TimeDelta()); | 664 renderer_impl_->set_video_underflow_threshold_for_testing(base::TimeDelta()); |
662 | 665 |
663 // Underflow should be delayed when both audio and video are present and video | 666 // Underflow should be delayed when both audio and video are present and video |
664 // underflows. | 667 // underflows. |
665 EXPECT_CALL(callbacks_, OnBufferingStateChange(BUFFERING_HAVE_NOTHING)) | 668 EXPECT_CALL(callbacks_, OnBufferingStateChange(BUFFERING_HAVE_NOTHING)) |
666 .Times(0); | 669 .Times(0); |
667 video_renderer_client_->OnBufferingStateChange(BUFFERING_HAVE_NOTHING); | 670 video_renderer_client_->OnBufferingStateChange(BUFFERING_HAVE_NOTHING); |
668 Mock::VerifyAndClearExpectations(&time_source_); | 671 Mock::VerifyAndClearExpectations(&time_source_); |
669 | 672 |
670 EXPECT_CALL(callbacks_, OnBufferingStateChange(BUFFERING_HAVE_NOTHING)); | 673 EXPECT_CALL(callbacks_, OnBufferingStateChange(BUFFERING_HAVE_NOTHING)); |
| 674 EXPECT_CALL(time_source_, CurrentMediaTime(_)); |
671 EXPECT_CALL(time_source_, StopTicking()); | 675 EXPECT_CALL(time_source_, StopTicking()); |
672 audio_renderer_client_->OnBufferingStateChange(BUFFERING_HAVE_NOTHING); | 676 audio_renderer_client_->OnBufferingStateChange(BUFFERING_HAVE_NOTHING); |
673 | 677 |
674 // Nothing else should primed on the message loop. | 678 // Nothing else should primed on the message loop. |
675 base::RunLoop().RunUntilIdle(); | 679 base::RunLoop().RunUntilIdle(); |
676 } | 680 } |
677 | 681 |
678 TEST_F(RendererImplTest, VideoUnderflowWithAudioFlush) { | 682 TEST_F(RendererImplTest, VideoUnderflowWithAudioFlush) { |
679 InitializeWithAudioAndVideo(); | 683 InitializeWithAudioAndVideo(); |
680 Play(); | 684 Play(); |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
735 EXPECT_CALL(*audio_renderer_, Flush(_)).WillOnce(RunClosure<0>()); | 739 EXPECT_CALL(*audio_renderer_, Flush(_)).WillOnce(RunClosure<0>()); |
736 EXPECT_CALL(*audio_renderer_, StartPlaying()).Times(1); | 740 EXPECT_CALL(*audio_renderer_, StartPlaying()).Times(1); |
737 audio_stream_status_change_cb.Run(false, time0); | 741 audio_stream_status_change_cb.Run(false, time0); |
738 | 742 |
739 EXPECT_CALL(*video_renderer_, Flush(_)).WillOnce(RunClosure<0>()); | 743 EXPECT_CALL(*video_renderer_, Flush(_)).WillOnce(RunClosure<0>()); |
740 EXPECT_CALL(*video_renderer_, StartPlayingFrom(_)).Times(1); | 744 EXPECT_CALL(*video_renderer_, StartPlayingFrom(_)).Times(1); |
741 video_stream_status_change_cb.Run(false, time0); | 745 video_stream_status_change_cb.Run(false, time0); |
742 } | 746 } |
743 | 747 |
744 } // namespace media | 748 } // namespace media |
OLD | NEW |