| 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 189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 200 if (start_status == PIPELINE_OK) { | 200 if (start_status == PIPELINE_OK) { |
| 201 EXPECT_CALL(callbacks_, OnMetadata(_)).WillOnce(SaveArg<0>(&metadata_)); | 201 EXPECT_CALL(callbacks_, OnMetadata(_)).WillOnce(SaveArg<0>(&metadata_)); |
| 202 | 202 |
| 203 if (audio_stream_) { | 203 if (audio_stream_) { |
| 204 EXPECT_CALL(*audio_renderer_, SetPlaybackRate(0.0f)); | 204 EXPECT_CALL(*audio_renderer_, SetPlaybackRate(0.0f)); |
| 205 EXPECT_CALL(*audio_renderer_, SetVolume(1.0f)); | 205 EXPECT_CALL(*audio_renderer_, SetVolume(1.0f)); |
| 206 EXPECT_CALL(*audio_renderer_, SetMediaTime(base::TimeDelta())); | 206 EXPECT_CALL(*audio_renderer_, SetMediaTime(base::TimeDelta())); |
| 207 EXPECT_CALL(*audio_renderer_, StartPlaying()) | 207 EXPECT_CALL(*audio_renderer_, StartPlaying()) |
| 208 .WillOnce(SetBufferingState(&audio_buffering_state_cb_, | 208 .WillOnce(SetBufferingState(&audio_buffering_state_cb_, |
| 209 BUFFERING_HAVE_ENOUGH)); | 209 BUFFERING_HAVE_ENOUGH)); |
| 210 EXPECT_CALL(*audio_renderer_, StartRendering()); | 210 EXPECT_CALL(*audio_renderer_, StartTicking()); |
| 211 } | 211 } |
| 212 | 212 |
| 213 if (video_stream_) { | 213 if (video_stream_) { |
| 214 EXPECT_CALL(*video_renderer_, StartPlaying()) | 214 EXPECT_CALL(*video_renderer_, StartPlaying()) |
| 215 .WillOnce(SetBufferingState(&video_buffering_state_cb_, | 215 .WillOnce(SetBufferingState(&video_buffering_state_cb_, |
| 216 BUFFERING_HAVE_ENOUGH)); | 216 BUFFERING_HAVE_ENOUGH)); |
| 217 } | 217 } |
| 218 | 218 |
| 219 EXPECT_CALL(callbacks_, OnBufferingStateChange(BUFFERING_HAVE_ENOUGH)); | 219 EXPECT_CALL(callbacks_, OnBufferingStateChange(BUFFERING_HAVE_ENOUGH)); |
| 220 } | 220 } |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 259 return text_stream_.get(); | 259 return text_stream_.get(); |
| 260 } | 260 } |
| 261 | 261 |
| 262 void ExpectSeek(const base::TimeDelta& seek_time, bool underflowed) { | 262 void ExpectSeek(const base::TimeDelta& seek_time, bool underflowed) { |
| 263 // Every filter should receive a call to Seek(). | 263 // Every filter should receive a call to Seek(). |
| 264 EXPECT_CALL(*demuxer_, Seek(seek_time, _)) | 264 EXPECT_CALL(*demuxer_, Seek(seek_time, _)) |
| 265 .WillOnce(RunCallback<1>(PIPELINE_OK)); | 265 .WillOnce(RunCallback<1>(PIPELINE_OK)); |
| 266 | 266 |
| 267 if (audio_stream_) { | 267 if (audio_stream_) { |
| 268 if (!underflowed) | 268 if (!underflowed) |
| 269 EXPECT_CALL(*audio_renderer_, StopRendering()); | 269 EXPECT_CALL(*audio_renderer_, StopTicking()); |
| 270 EXPECT_CALL(*audio_renderer_, Flush(_)) | 270 EXPECT_CALL(*audio_renderer_, Flush(_)) |
| 271 .WillOnce(DoAll(SetBufferingState(&audio_buffering_state_cb_, | 271 .WillOnce(DoAll(SetBufferingState(&audio_buffering_state_cb_, |
| 272 BUFFERING_HAVE_NOTHING), | 272 BUFFERING_HAVE_NOTHING), |
| 273 RunClosure<0>())); | 273 RunClosure<0>())); |
| 274 EXPECT_CALL(*audio_renderer_, SetMediaTime(seek_time)); | 274 EXPECT_CALL(*audio_renderer_, SetMediaTime(seek_time)); |
| 275 EXPECT_CALL(*audio_renderer_, StartPlaying()) | 275 EXPECT_CALL(*audio_renderer_, StartPlaying()) |
| 276 .WillOnce(SetBufferingState(&audio_buffering_state_cb_, | 276 .WillOnce(SetBufferingState(&audio_buffering_state_cb_, |
| 277 BUFFERING_HAVE_ENOUGH)); | 277 BUFFERING_HAVE_ENOUGH)); |
| 278 EXPECT_CALL(*audio_renderer_, SetPlaybackRate(_)); | 278 EXPECT_CALL(*audio_renderer_, SetPlaybackRate(_)); |
| 279 EXPECT_CALL(*audio_renderer_, SetVolume(_)); | 279 EXPECT_CALL(*audio_renderer_, SetVolume(_)); |
| 280 EXPECT_CALL(*audio_renderer_, StartRendering()); | 280 EXPECT_CALL(*audio_renderer_, StartTicking()); |
| 281 } | 281 } |
| 282 | 282 |
| 283 if (video_stream_) { | 283 if (video_stream_) { |
| 284 EXPECT_CALL(*video_renderer_, Flush(_)) | 284 EXPECT_CALL(*video_renderer_, Flush(_)) |
| 285 .WillOnce(DoAll(SetBufferingState(&video_buffering_state_cb_, | 285 .WillOnce(DoAll(SetBufferingState(&video_buffering_state_cb_, |
| 286 BUFFERING_HAVE_NOTHING), | 286 BUFFERING_HAVE_NOTHING), |
| 287 RunClosure<0>())); | 287 RunClosure<0>())); |
| 288 EXPECT_CALL(*video_renderer_, StartPlaying()) | 288 EXPECT_CALL(*video_renderer_, StartPlaying()) |
| 289 .WillOnce(SetBufferingState(&video_buffering_state_cb_, | 289 .WillOnce(SetBufferingState(&video_buffering_state_cb_, |
| 290 BUFFERING_HAVE_ENOUGH)); | 290 BUFFERING_HAVE_ENOUGH)); |
| (...skipping 310 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 601 | 601 |
| 602 AddTextStream(); | 602 AddTextStream(); |
| 603 | 603 |
| 604 // The ended callback shouldn't run until all renderers have ended. | 604 // The ended callback shouldn't run until all renderers have ended. |
| 605 audio_ended_cb_.Run(); | 605 audio_ended_cb_.Run(); |
| 606 message_loop_.RunUntilIdle(); | 606 message_loop_.RunUntilIdle(); |
| 607 | 607 |
| 608 video_ended_cb_.Run(); | 608 video_ended_cb_.Run(); |
| 609 message_loop_.RunUntilIdle(); | 609 message_loop_.RunUntilIdle(); |
| 610 | 610 |
| 611 EXPECT_CALL(*audio_renderer_, StopRendering()); | 611 EXPECT_CALL(*audio_renderer_, StopTicking()); |
| 612 EXPECT_CALL(callbacks_, OnEnded()); | 612 EXPECT_CALL(callbacks_, OnEnded()); |
| 613 text_stream()->SendEosNotification(); | 613 text_stream()->SendEosNotification(); |
| 614 message_loop_.RunUntilIdle(); | 614 message_loop_.RunUntilIdle(); |
| 615 } | 615 } |
| 616 | 616 |
| 617 TEST_F(PipelineTest, AudioStreamShorterThanVideo) { | 617 TEST_F(PipelineTest, AudioStreamShorterThanVideo) { |
| 618 base::TimeDelta duration = base::TimeDelta::FromSeconds(10); | 618 base::TimeDelta duration = base::TimeDelta::FromSeconds(10); |
| 619 | 619 |
| 620 CreateAudioStream(); | 620 CreateAudioStream(); |
| 621 CreateVideoStream(); | 621 CreateVideoStream(); |
| (...skipping 28 matching lines...) Expand all Loading... |
| 650 // Signal end of audio stream. | 650 // Signal end of audio stream. |
| 651 audio_ended_cb_.Run(); | 651 audio_ended_cb_.Run(); |
| 652 message_loop_.RunUntilIdle(); | 652 message_loop_.RunUntilIdle(); |
| 653 | 653 |
| 654 // Verify that the clock advances. | 654 // Verify that the clock advances. |
| 655 start_time = pipeline_->GetMediaTime().ToInternalValue(); | 655 start_time = pipeline_->GetMediaTime().ToInternalValue(); |
| 656 test_tick_clock_.Advance(base::TimeDelta::FromMilliseconds(100)); | 656 test_tick_clock_.Advance(base::TimeDelta::FromMilliseconds(100)); |
| 657 EXPECT_GT(pipeline_->GetMediaTime().ToInternalValue(), start_time); | 657 EXPECT_GT(pipeline_->GetMediaTime().ToInternalValue(), start_time); |
| 658 | 658 |
| 659 // Signal end of video stream and make sure OnEnded() callback occurs. | 659 // Signal end of video stream and make sure OnEnded() callback occurs. |
| 660 EXPECT_CALL(*audio_renderer_, StopRendering()); | 660 EXPECT_CALL(*audio_renderer_, StopTicking()); |
| 661 EXPECT_CALL(callbacks_, OnEnded()); | 661 EXPECT_CALL(callbacks_, OnEnded()); |
| 662 video_ended_cb_.Run(); | 662 video_ended_cb_.Run(); |
| 663 } | 663 } |
| 664 | 664 |
| 665 TEST_F(PipelineTest, ErrorDuringSeek) { | 665 TEST_F(PipelineTest, ErrorDuringSeek) { |
| 666 CreateAudioStream(); | 666 CreateAudioStream(); |
| 667 MockDemuxerStreamVector streams; | 667 MockDemuxerStreamVector streams; |
| 668 streams.push_back(audio_stream()); | 668 streams.push_back(audio_stream()); |
| 669 | 669 |
| 670 SetDemuxerExpectations(&streams); | 670 SetDemuxerExpectations(&streams); |
| 671 SetAudioRendererExpectations(audio_stream()); | 671 SetAudioRendererExpectations(audio_stream()); |
| 672 StartPipeline(PIPELINE_OK); | 672 StartPipeline(PIPELINE_OK); |
| 673 | 673 |
| 674 float playback_rate = 1.0f; | 674 float playback_rate = 1.0f; |
| 675 EXPECT_CALL(*audio_renderer_, SetPlaybackRate(playback_rate)); | 675 EXPECT_CALL(*audio_renderer_, SetPlaybackRate(playback_rate)); |
| 676 pipeline_->SetPlaybackRate(playback_rate); | 676 pipeline_->SetPlaybackRate(playback_rate); |
| 677 message_loop_.RunUntilIdle(); | 677 message_loop_.RunUntilIdle(); |
| 678 | 678 |
| 679 base::TimeDelta seek_time = base::TimeDelta::FromSeconds(5); | 679 base::TimeDelta seek_time = base::TimeDelta::FromSeconds(5); |
| 680 | 680 |
| 681 // Preroll() isn't called as the demuxer errors out first. | 681 // Preroll() isn't called as the demuxer errors out first. |
| 682 EXPECT_CALL(*audio_renderer_, StopRendering()); | 682 EXPECT_CALL(*audio_renderer_, StopTicking()); |
| 683 EXPECT_CALL(*audio_renderer_, Flush(_)) | 683 EXPECT_CALL(*audio_renderer_, Flush(_)) |
| 684 .WillOnce(DoAll(SetBufferingState(&audio_buffering_state_cb_, | 684 .WillOnce(DoAll(SetBufferingState(&audio_buffering_state_cb_, |
| 685 BUFFERING_HAVE_NOTHING), | 685 BUFFERING_HAVE_NOTHING), |
| 686 RunClosure<0>())); | 686 RunClosure<0>())); |
| 687 EXPECT_CALL(*audio_renderer_, Stop(_)) | 687 EXPECT_CALL(*audio_renderer_, Stop(_)) |
| 688 .WillOnce(RunClosure<0>()); | 688 .WillOnce(RunClosure<0>()); |
| 689 | 689 |
| 690 EXPECT_CALL(*demuxer_, Seek(seek_time, _)) | 690 EXPECT_CALL(*demuxer_, Seek(seek_time, _)) |
| 691 .WillOnce(RunCallback<1>(PIPELINE_ERROR_READ)); | 691 .WillOnce(RunCallback<1>(PIPELINE_ERROR_READ)); |
| 692 EXPECT_CALL(*demuxer_, Stop(_)) | 692 EXPECT_CALL(*demuxer_, Stop(_)) |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 728 | 728 |
| 729 // Trigger additional requests on the pipeline during tear down from error. | 729 // Trigger additional requests on the pipeline during tear down from error. |
| 730 base::Callback<void(PipelineStatus)> cb = base::Bind( | 730 base::Callback<void(PipelineStatus)> cb = base::Bind( |
| 731 &TestNoCallsAfterError, pipeline_.get(), &message_loop_); | 731 &TestNoCallsAfterError, pipeline_.get(), &message_loop_); |
| 732 ON_CALL(callbacks_, OnError(_)) | 732 ON_CALL(callbacks_, OnError(_)) |
| 733 .WillByDefault(Invoke(&cb, &base::Callback<void(PipelineStatus)>::Run)); | 733 .WillByDefault(Invoke(&cb, &base::Callback<void(PipelineStatus)>::Run)); |
| 734 | 734 |
| 735 base::TimeDelta seek_time = base::TimeDelta::FromSeconds(5); | 735 base::TimeDelta seek_time = base::TimeDelta::FromSeconds(5); |
| 736 | 736 |
| 737 // Seek() isn't called as the demuxer errors out first. | 737 // Seek() isn't called as the demuxer errors out first. |
| 738 EXPECT_CALL(*audio_renderer_, StopRendering()); | 738 EXPECT_CALL(*audio_renderer_, StopTicking()); |
| 739 EXPECT_CALL(*audio_renderer_, Flush(_)) | 739 EXPECT_CALL(*audio_renderer_, Flush(_)) |
| 740 .WillOnce(DoAll(SetBufferingState(&audio_buffering_state_cb_, | 740 .WillOnce(DoAll(SetBufferingState(&audio_buffering_state_cb_, |
| 741 BUFFERING_HAVE_NOTHING), | 741 BUFFERING_HAVE_NOTHING), |
| 742 RunClosure<0>())); | 742 RunClosure<0>())); |
| 743 EXPECT_CALL(*audio_renderer_, Stop(_)) | 743 EXPECT_CALL(*audio_renderer_, Stop(_)) |
| 744 .WillOnce(RunClosure<0>()); | 744 .WillOnce(RunClosure<0>()); |
| 745 | 745 |
| 746 EXPECT_CALL(*demuxer_, Seek(seek_time, _)) | 746 EXPECT_CALL(*demuxer_, Seek(seek_time, _)) |
| 747 .WillOnce(RunCallback<1>(PIPELINE_ERROR_READ)); | 747 .WillOnce(RunCallback<1>(PIPELINE_ERROR_READ)); |
| 748 EXPECT_CALL(*demuxer_, Stop(_)) | 748 EXPECT_CALL(*demuxer_, Stop(_)) |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 783 base::TimeDelta seek_time = base::TimeDelta::FromSeconds(5); | 783 base::TimeDelta seek_time = base::TimeDelta::FromSeconds(5); |
| 784 | 784 |
| 785 // Arrange to trigger a time update while the demuxer is in the middle of | 785 // Arrange to trigger a time update while the demuxer is in the middle of |
| 786 // seeking. This update should be ignored by the pipeline and the clock should | 786 // seeking. This update should be ignored by the pipeline and the clock should |
| 787 // not get updated. | 787 // not get updated. |
| 788 base::Closure closure = base::Bind(&RunTimeCB, audio_time_cb_, 300, 700); | 788 base::Closure closure = base::Bind(&RunTimeCB, audio_time_cb_, 300, 700); |
| 789 EXPECT_CALL(*demuxer_, Seek(seek_time, _)) | 789 EXPECT_CALL(*demuxer_, Seek(seek_time, _)) |
| 790 .WillOnce(DoAll(InvokeWithoutArgs(&closure, &base::Closure::Run), | 790 .WillOnce(DoAll(InvokeWithoutArgs(&closure, &base::Closure::Run), |
| 791 RunCallback<1>(PIPELINE_OK))); | 791 RunCallback<1>(PIPELINE_OK))); |
| 792 | 792 |
| 793 EXPECT_CALL(*audio_renderer_, StopRendering()); | 793 EXPECT_CALL(*audio_renderer_, StopTicking()); |
| 794 EXPECT_CALL(*audio_renderer_, Flush(_)) | 794 EXPECT_CALL(*audio_renderer_, Flush(_)) |
| 795 .WillOnce(DoAll(SetBufferingState(&audio_buffering_state_cb_, | 795 .WillOnce(DoAll(SetBufferingState(&audio_buffering_state_cb_, |
| 796 BUFFERING_HAVE_NOTHING), | 796 BUFFERING_HAVE_NOTHING), |
| 797 RunClosure<0>())); | 797 RunClosure<0>())); |
| 798 EXPECT_CALL(*audio_renderer_, SetMediaTime(seek_time)); | 798 EXPECT_CALL(*audio_renderer_, SetMediaTime(seek_time)); |
| 799 EXPECT_CALL(*audio_renderer_, StartPlaying()) | 799 EXPECT_CALL(*audio_renderer_, StartPlaying()) |
| 800 .WillOnce(SetBufferingState(&audio_buffering_state_cb_, | 800 .WillOnce(SetBufferingState(&audio_buffering_state_cb_, |
| 801 BUFFERING_HAVE_ENOUGH)); | 801 BUFFERING_HAVE_ENOUGH)); |
| 802 EXPECT_CALL(*audio_renderer_, SetPlaybackRate(_)); | 802 EXPECT_CALL(*audio_renderer_, SetPlaybackRate(_)); |
| 803 EXPECT_CALL(*audio_renderer_, SetVolume(_)); | 803 EXPECT_CALL(*audio_renderer_, SetVolume(_)); |
| 804 EXPECT_CALL(*audio_renderer_, StartRendering()); | 804 EXPECT_CALL(*audio_renderer_, StartTicking()); |
| 805 | 805 |
| 806 EXPECT_CALL(callbacks_, OnSeek(PIPELINE_OK)); | 806 EXPECT_CALL(callbacks_, OnSeek(PIPELINE_OK)); |
| 807 EXPECT_CALL(callbacks_, OnBufferingStateChange(BUFFERING_HAVE_ENOUGH)); | 807 EXPECT_CALL(callbacks_, OnBufferingStateChange(BUFFERING_HAVE_ENOUGH)); |
| 808 DoSeek(seek_time); | 808 DoSeek(seek_time); |
| 809 | 809 |
| 810 EXPECT_EQ(pipeline_->GetMediaTime(), seek_time); | 810 EXPECT_EQ(pipeline_->GetMediaTime(), seek_time); |
| 811 | 811 |
| 812 // Now that the seek is complete, verify that time updates advance the current | 812 // Now that the seek is complete, verify that time updates advance the current |
| 813 // time. | 813 // time. |
| 814 base::TimeDelta new_time = seek_time + base::TimeDelta::FromMilliseconds(100); | 814 base::TimeDelta new_time = seek_time + base::TimeDelta::FromMilliseconds(100); |
| (...skipping 27 matching lines...) Expand all Loading... |
| 842 MockDemuxerStreamVector streams; | 842 MockDemuxerStreamVector streams; |
| 843 streams.push_back(audio_stream()); | 843 streams.push_back(audio_stream()); |
| 844 streams.push_back(video_stream()); | 844 streams.push_back(video_stream()); |
| 845 | 845 |
| 846 SetDemuxerExpectations(&streams); | 846 SetDemuxerExpectations(&streams); |
| 847 SetAudioRendererExpectations(audio_stream()); | 847 SetAudioRendererExpectations(audio_stream()); |
| 848 SetVideoRendererExpectations(video_stream()); | 848 SetVideoRendererExpectations(video_stream()); |
| 849 StartPipeline(PIPELINE_OK); | 849 StartPipeline(PIPELINE_OK); |
| 850 | 850 |
| 851 // Simulate underflow. | 851 // Simulate underflow. |
| 852 EXPECT_CALL(*audio_renderer_, StopRendering()); | 852 EXPECT_CALL(*audio_renderer_, StopTicking()); |
| 853 audio_buffering_state_cb_.Run(BUFFERING_HAVE_NOTHING); | 853 audio_buffering_state_cb_.Run(BUFFERING_HAVE_NOTHING); |
| 854 | 854 |
| 855 // Seek while underflowed. We shouldn't call StopRendering() again. | 855 // Seek while underflowed. We shouldn't call StopTicking() again. |
| 856 base::TimeDelta expected = base::TimeDelta::FromSeconds(5); | 856 base::TimeDelta expected = base::TimeDelta::FromSeconds(5); |
| 857 ExpectSeek(expected, true); | 857 ExpectSeek(expected, true); |
| 858 DoSeek(expected); | 858 DoSeek(expected); |
| 859 } | 859 } |
| 860 | 860 |
| 861 class PipelineTeardownTest : public PipelineTest { | 861 class PipelineTeardownTest : public PipelineTest { |
| 862 public: | 862 public: |
| 863 enum TeardownState { | 863 enum TeardownState { |
| 864 kInitDemuxer, | 864 kInitDemuxer, |
| 865 kInitAudioRenderer, | 865 kInitAudioRenderer, |
| (...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 999 EXPECT_CALL(*audio_renderer_, SetMediaTime(base::TimeDelta())); | 999 EXPECT_CALL(*audio_renderer_, SetMediaTime(base::TimeDelta())); |
| 1000 EXPECT_CALL(*audio_renderer_, StartPlaying()) | 1000 EXPECT_CALL(*audio_renderer_, StartPlaying()) |
| 1001 .WillOnce(SetBufferingState(&audio_buffering_state_cb_, | 1001 .WillOnce(SetBufferingState(&audio_buffering_state_cb_, |
| 1002 BUFFERING_HAVE_ENOUGH)); | 1002 BUFFERING_HAVE_ENOUGH)); |
| 1003 EXPECT_CALL(*video_renderer_, StartPlaying()) | 1003 EXPECT_CALL(*video_renderer_, StartPlaying()) |
| 1004 .WillOnce(SetBufferingState(&video_buffering_state_cb_, | 1004 .WillOnce(SetBufferingState(&video_buffering_state_cb_, |
| 1005 BUFFERING_HAVE_ENOUGH)); | 1005 BUFFERING_HAVE_ENOUGH)); |
| 1006 | 1006 |
| 1007 EXPECT_CALL(*audio_renderer_, SetPlaybackRate(0.0f)); | 1007 EXPECT_CALL(*audio_renderer_, SetPlaybackRate(0.0f)); |
| 1008 EXPECT_CALL(*audio_renderer_, SetVolume(1.0f)); | 1008 EXPECT_CALL(*audio_renderer_, SetVolume(1.0f)); |
| 1009 EXPECT_CALL(*audio_renderer_, StartRendering()); | 1009 EXPECT_CALL(*audio_renderer_, StartTicking()); |
| 1010 | 1010 |
| 1011 if (status == PIPELINE_OK) | 1011 if (status == PIPELINE_OK) |
| 1012 EXPECT_CALL(callbacks_, OnBufferingStateChange(BUFFERING_HAVE_ENOUGH)); | 1012 EXPECT_CALL(callbacks_, OnBufferingStateChange(BUFFERING_HAVE_ENOUGH)); |
| 1013 | 1013 |
| 1014 return status; | 1014 return status; |
| 1015 } | 1015 } |
| 1016 | 1016 |
| 1017 void DoSeek(TeardownState state, StopOrError stop_or_error) { | 1017 void DoSeek(TeardownState state, StopOrError stop_or_error) { |
| 1018 InSequence s; | 1018 InSequence s; |
| 1019 PipelineStatus status = SetSeekExpectations(state, stop_or_error); | 1019 PipelineStatus status = SetSeekExpectations(state, stop_or_error); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 1031 &CallbackHelper::OnSeek, base::Unretained(&callbacks_))); | 1031 &CallbackHelper::OnSeek, base::Unretained(&callbacks_))); |
| 1032 message_loop_.RunUntilIdle(); | 1032 message_loop_.RunUntilIdle(); |
| 1033 } | 1033 } |
| 1034 | 1034 |
| 1035 PipelineStatus SetSeekExpectations(TeardownState state, | 1035 PipelineStatus SetSeekExpectations(TeardownState state, |
| 1036 StopOrError stop_or_error) { | 1036 StopOrError stop_or_error) { |
| 1037 PipelineStatus status = PIPELINE_OK; | 1037 PipelineStatus status = PIPELINE_OK; |
| 1038 base::Closure stop_cb = base::Bind( | 1038 base::Closure stop_cb = base::Bind( |
| 1039 &CallbackHelper::OnStop, base::Unretained(&callbacks_)); | 1039 &CallbackHelper::OnStop, base::Unretained(&callbacks_)); |
| 1040 | 1040 |
| 1041 EXPECT_CALL(*audio_renderer_, StopRendering()); | 1041 EXPECT_CALL(*audio_renderer_, StopTicking()); |
| 1042 | 1042 |
| 1043 if (state == kFlushing) { | 1043 if (state == kFlushing) { |
| 1044 if (stop_or_error == kStop) { | 1044 if (stop_or_error == kStop) { |
| 1045 EXPECT_CALL(*audio_renderer_, Flush(_)) | 1045 EXPECT_CALL(*audio_renderer_, Flush(_)) |
| 1046 .WillOnce(DoAll(Stop(pipeline_.get(), stop_cb), | 1046 .WillOnce(DoAll(Stop(pipeline_.get(), stop_cb), |
| 1047 SetBufferingState(&audio_buffering_state_cb_, | 1047 SetBufferingState(&audio_buffering_state_cb_, |
| 1048 BUFFERING_HAVE_NOTHING), | 1048 BUFFERING_HAVE_NOTHING), |
| 1049 RunClosure<0>())); | 1049 RunClosure<0>())); |
| 1050 } else { | 1050 } else { |
| 1051 status = PIPELINE_ERROR_READ; | 1051 status = PIPELINE_ERROR_READ; |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1134 INSTANTIATE_TEARDOWN_TEST(Error, InitDemuxer); | 1134 INSTANTIATE_TEARDOWN_TEST(Error, InitDemuxer); |
| 1135 INSTANTIATE_TEARDOWN_TEST(Error, InitAudioRenderer); | 1135 INSTANTIATE_TEARDOWN_TEST(Error, InitAudioRenderer); |
| 1136 INSTANTIATE_TEARDOWN_TEST(Error, InitVideoRenderer); | 1136 INSTANTIATE_TEARDOWN_TEST(Error, InitVideoRenderer); |
| 1137 INSTANTIATE_TEARDOWN_TEST(Error, Flushing); | 1137 INSTANTIATE_TEARDOWN_TEST(Error, Flushing); |
| 1138 INSTANTIATE_TEARDOWN_TEST(Error, Seeking); | 1138 INSTANTIATE_TEARDOWN_TEST(Error, Seeking); |
| 1139 INSTANTIATE_TEARDOWN_TEST(Error, Playing); | 1139 INSTANTIATE_TEARDOWN_TEST(Error, Playing); |
| 1140 | 1140 |
| 1141 INSTANTIATE_TEARDOWN_TEST(ErrorAndStop, Playing); | 1141 INSTANTIATE_TEARDOWN_TEST(ErrorAndStop, Playing); |
| 1142 | 1142 |
| 1143 } // namespace media | 1143 } // namespace media |
| OLD | NEW |