OLD | NEW |
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/message_loop.h" | 8 #include "base/message_loop/message_loop.h" |
9 #include "base/stl_util.h" | 9 #include "base/stl_util.h" |
10 #include "base/test/simple_test_tick_clock.h" | 10 #include "base/test/simple_test_tick_clock.h" |
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
205 base::Unretained(this))); | 205 base::Unretained(this))); |
206 } | 206 } |
207 | 207 |
208 // Sets up expectations on the callback and initializes the pipeline. Called | 208 // Sets up expectations on the callback and initializes the pipeline. Called |
209 // after tests have set expectations any filters they wish to use. | 209 // after tests have set expectations any filters they wish to use. |
210 void StartPipelineAndExpect(PipelineStatus start_status) { | 210 void StartPipelineAndExpect(PipelineStatus start_status) { |
211 EXPECT_CALL(callbacks_, OnStart(start_status)); | 211 EXPECT_CALL(callbacks_, OnStart(start_status)); |
212 | 212 |
213 if (start_status == PIPELINE_OK) { | 213 if (start_status == PIPELINE_OK) { |
214 EXPECT_CALL(callbacks_, OnMetadata(_)).WillOnce(SaveArg<0>(&metadata_)); | 214 EXPECT_CALL(callbacks_, OnMetadata(_)).WillOnce(SaveArg<0>(&metadata_)); |
215 EXPECT_CALL(*renderer_, SetPlaybackRate(0.0f)); | 215 EXPECT_CALL(*renderer_, SetPlaybackRate(0.0)); |
216 EXPECT_CALL(*renderer_, SetVolume(1.0f)); | 216 EXPECT_CALL(*renderer_, SetVolume(1.0f)); |
217 EXPECT_CALL(*renderer_, StartPlayingFrom(start_time_)) | 217 EXPECT_CALL(*renderer_, StartPlayingFrom(start_time_)) |
218 .WillOnce(SetBufferingState(&buffering_state_cb_, | 218 .WillOnce(SetBufferingState(&buffering_state_cb_, |
219 BUFFERING_HAVE_ENOUGH)); | 219 BUFFERING_HAVE_ENOUGH)); |
220 EXPECT_CALL(callbacks_, OnBufferingStateChange(BUFFERING_HAVE_ENOUGH)); | 220 EXPECT_CALL(callbacks_, OnBufferingStateChange(BUFFERING_HAVE_ENOUGH)); |
221 } | 221 } |
222 | 222 |
223 StartPipeline(); | 223 StartPipeline(); |
224 message_loop_.RunUntilIdle(); | 224 message_loop_.RunUntilIdle(); |
225 } | 225 } |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
333 | 333 |
334 // Test that playback controls methods no-op when the pipeline hasn't been | 334 // Test that playback controls methods no-op when the pipeline hasn't been |
335 // started. | 335 // started. |
336 TEST_F(PipelineTest, NotStarted) { | 336 TEST_F(PipelineTest, NotStarted) { |
337 const base::TimeDelta kZero; | 337 const base::TimeDelta kZero; |
338 | 338 |
339 EXPECT_FALSE(pipeline_->IsRunning()); | 339 EXPECT_FALSE(pipeline_->IsRunning()); |
340 | 340 |
341 // Setting should still work. | 341 // Setting should still work. |
342 EXPECT_EQ(0.0f, pipeline_->GetPlaybackRate()); | 342 EXPECT_EQ(0.0f, pipeline_->GetPlaybackRate()); |
343 pipeline_->SetPlaybackRate(-1.0f); | 343 pipeline_->SetPlaybackRate(-1.0); |
344 EXPECT_EQ(0.0f, pipeline_->GetPlaybackRate()); | 344 EXPECT_EQ(0.0f, pipeline_->GetPlaybackRate()); |
345 pipeline_->SetPlaybackRate(1.0f); | 345 pipeline_->SetPlaybackRate(1.0); |
346 EXPECT_EQ(1.0f, pipeline_->GetPlaybackRate()); | 346 EXPECT_EQ(1.0f, pipeline_->GetPlaybackRate()); |
347 | 347 |
348 // Setting should still work. | 348 // Setting should still work. |
349 EXPECT_EQ(1.0f, pipeline_->GetVolume()); | 349 EXPECT_EQ(1.0f, pipeline_->GetVolume()); |
350 pipeline_->SetVolume(-1.0f); | 350 pipeline_->SetVolume(-1.0f); |
351 EXPECT_EQ(1.0f, pipeline_->GetVolume()); | 351 EXPECT_EQ(1.0f, pipeline_->GetVolume()); |
352 pipeline_->SetVolume(0.0f); | 352 pipeline_->SetVolume(0.0f); |
353 EXPECT_EQ(0.0f, pipeline_->GetVolume()); | 353 EXPECT_EQ(0.0f, pipeline_->GetVolume()); |
354 | 354 |
355 EXPECT_TRUE(kZero == pipeline_->GetMediaTime()); | 355 EXPECT_TRUE(kZero == pipeline_->GetMediaTime()); |
(...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
636 | 636 |
637 TEST_F(PipelineTest, ErrorDuringSeek) { | 637 TEST_F(PipelineTest, ErrorDuringSeek) { |
638 CreateAudioStream(); | 638 CreateAudioStream(); |
639 MockDemuxerStreamVector streams; | 639 MockDemuxerStreamVector streams; |
640 streams.push_back(audio_stream()); | 640 streams.push_back(audio_stream()); |
641 | 641 |
642 SetDemuxerExpectations(&streams); | 642 SetDemuxerExpectations(&streams); |
643 SetRendererExpectations(); | 643 SetRendererExpectations(); |
644 StartPipelineAndExpect(PIPELINE_OK); | 644 StartPipelineAndExpect(PIPELINE_OK); |
645 | 645 |
646 float playback_rate = 1.0f; | 646 double playback_rate = 1.0; |
647 EXPECT_CALL(*renderer_, SetPlaybackRate(playback_rate)); | 647 EXPECT_CALL(*renderer_, SetPlaybackRate(playback_rate)); |
648 pipeline_->SetPlaybackRate(playback_rate); | 648 pipeline_->SetPlaybackRate(playback_rate); |
649 message_loop_.RunUntilIdle(); | 649 message_loop_.RunUntilIdle(); |
650 | 650 |
651 base::TimeDelta seek_time = base::TimeDelta::FromSeconds(5); | 651 base::TimeDelta seek_time = base::TimeDelta::FromSeconds(5); |
652 | 652 |
653 EXPECT_CALL(callbacks_, OnBufferingStateChange(BUFFERING_HAVE_NOTHING)); | 653 EXPECT_CALL(callbacks_, OnBufferingStateChange(BUFFERING_HAVE_NOTHING)); |
654 EXPECT_CALL(*renderer_, Flush(_)) | 654 EXPECT_CALL(*renderer_, Flush(_)) |
655 .WillOnce(DoAll(SetBufferingState(&buffering_state_cb_, | 655 .WillOnce(DoAll(SetBufferingState(&buffering_state_cb_, |
656 BUFFERING_HAVE_NOTHING), | 656 BUFFERING_HAVE_NOTHING), |
(...skipping 14 matching lines...) Expand all Loading... |
671 static void TestNoCallsAfterError( | 671 static void TestNoCallsAfterError( |
672 Pipeline* pipeline, base::MessageLoop* message_loop, | 672 Pipeline* pipeline, base::MessageLoop* message_loop, |
673 PipelineStatus /* status */) { | 673 PipelineStatus /* status */) { |
674 CHECK(pipeline); | 674 CHECK(pipeline); |
675 CHECK(message_loop); | 675 CHECK(message_loop); |
676 | 676 |
677 // When we get to this stage, the message loop should be empty. | 677 // When we get to this stage, the message loop should be empty. |
678 EXPECT_TRUE(message_loop->IsIdleForTesting()); | 678 EXPECT_TRUE(message_loop->IsIdleForTesting()); |
679 | 679 |
680 // Make calls on pipeline after error has occurred. | 680 // Make calls on pipeline after error has occurred. |
681 pipeline->SetPlaybackRate(0.5f); | 681 pipeline->SetPlaybackRate(0.5); |
682 pipeline->SetVolume(0.5f); | 682 pipeline->SetVolume(0.5f); |
683 | 683 |
684 // No additional tasks should be queued as a result of these calls. | 684 // No additional tasks should be queued as a result of these calls. |
685 EXPECT_TRUE(message_loop->IsIdleForTesting()); | 685 EXPECT_TRUE(message_loop->IsIdleForTesting()); |
686 } | 686 } |
687 | 687 |
688 TEST_F(PipelineTest, NoMessageDuringTearDownFromError) { | 688 TEST_F(PipelineTest, NoMessageDuringTearDownFromError) { |
689 CreateAudioStream(); | 689 CreateAudioStream(); |
690 MockDemuxerStreamVector streams; | 690 MockDemuxerStreamVector streams; |
691 streams.push_back(audio_stream()); | 691 streams.push_back(audio_stream()); |
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
873 return status; | 873 return status; |
874 } | 874 } |
875 | 875 |
876 EXPECT_CALL(*renderer_, Initialize(_, _, _, _, _, _, _, _)) | 876 EXPECT_CALL(*renderer_, Initialize(_, _, _, _, _, _, _, _)) |
877 .WillOnce(DoAll(SaveArg<3>(&buffering_state_cb_), | 877 .WillOnce(DoAll(SaveArg<3>(&buffering_state_cb_), |
878 PostCallback<1>(PIPELINE_OK))); | 878 PostCallback<1>(PIPELINE_OK))); |
879 | 879 |
880 EXPECT_CALL(callbacks_, OnMetadata(_)); | 880 EXPECT_CALL(callbacks_, OnMetadata(_)); |
881 | 881 |
882 // If we get here it's a successful initialization. | 882 // If we get here it's a successful initialization. |
883 EXPECT_CALL(*renderer_, SetPlaybackRate(0.0f)); | 883 EXPECT_CALL(*renderer_, SetPlaybackRate(0.0)); |
884 EXPECT_CALL(*renderer_, SetVolume(1.0f)); | 884 EXPECT_CALL(*renderer_, SetVolume(1.0f)); |
885 EXPECT_CALL(*renderer_, StartPlayingFrom(base::TimeDelta())) | 885 EXPECT_CALL(*renderer_, StartPlayingFrom(base::TimeDelta())) |
886 .WillOnce(SetBufferingState(&buffering_state_cb_, | 886 .WillOnce(SetBufferingState(&buffering_state_cb_, |
887 BUFFERING_HAVE_ENOUGH)); | 887 BUFFERING_HAVE_ENOUGH)); |
888 | 888 |
889 if (status == PIPELINE_OK) | 889 if (status == PIPELINE_OK) |
890 EXPECT_CALL(callbacks_, OnBufferingStateChange(BUFFERING_HAVE_ENOUGH)); | 890 EXPECT_CALL(callbacks_, OnBufferingStateChange(BUFFERING_HAVE_ENOUGH)); |
891 | 891 |
892 return status; | 892 return status; |
893 } | 893 } |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1005 | 1005 |
1006 INSTANTIATE_TEARDOWN_TEST(Error, InitDemuxer); | 1006 INSTANTIATE_TEARDOWN_TEST(Error, InitDemuxer); |
1007 INSTANTIATE_TEARDOWN_TEST(Error, InitRenderer); | 1007 INSTANTIATE_TEARDOWN_TEST(Error, InitRenderer); |
1008 INSTANTIATE_TEARDOWN_TEST(Error, Flushing); | 1008 INSTANTIATE_TEARDOWN_TEST(Error, Flushing); |
1009 INSTANTIATE_TEARDOWN_TEST(Error, Seeking); | 1009 INSTANTIATE_TEARDOWN_TEST(Error, Seeking); |
1010 INSTANTIATE_TEARDOWN_TEST(Error, Playing); | 1010 INSTANTIATE_TEARDOWN_TEST(Error, Playing); |
1011 | 1011 |
1012 INSTANTIATE_TEARDOWN_TEST(ErrorAndStop, Playing); | 1012 INSTANTIATE_TEARDOWN_TEST(ErrorAndStop, Playing); |
1013 | 1013 |
1014 } // namespace media | 1014 } // namespace media |
OLD | NEW |