| 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 "media/base/pipeline_impl.h" | 5 #include "media/base/pipeline_impl.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <utility> | 8 #include <utility> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 168 scoped_ptr<StrictMock<MockDemuxerStream>> CreateStream( | 168 scoped_ptr<StrictMock<MockDemuxerStream>> CreateStream( |
| 169 DemuxerStream::Type type) { | 169 DemuxerStream::Type type) { |
| 170 scoped_ptr<StrictMock<MockDemuxerStream>> stream( | 170 scoped_ptr<StrictMock<MockDemuxerStream>> stream( |
| 171 new StrictMock<MockDemuxerStream>(type)); | 171 new StrictMock<MockDemuxerStream>(type)); |
| 172 return stream; | 172 return stream; |
| 173 } | 173 } |
| 174 | 174 |
| 175 // Sets up expectations to allow the video renderer to initialize. | 175 // Sets up expectations to allow the video renderer to initialize. |
| 176 void SetRendererExpectations() { | 176 void SetRendererExpectations() { |
| 177 EXPECT_CALL(*renderer_, Initialize(_, _, _, _, _, _, _)) | 177 EXPECT_CALL(*renderer_, Initialize(_, _, _, _, _, _, _)) |
| 178 .WillOnce(DoAll(SaveArg<3>(&buffering_state_cb_), | 178 .WillOnce(DoAll(SaveArg<2>(&statistics_cb_), |
| 179 SaveArg<3>(&buffering_state_cb_), |
| 179 SaveArg<4>(&ended_cb_), PostCallback<1>(PIPELINE_OK))); | 180 SaveArg<4>(&ended_cb_), PostCallback<1>(PIPELINE_OK))); |
| 180 EXPECT_CALL(*renderer_, HasAudio()).WillRepeatedly(Return(audio_stream())); | 181 EXPECT_CALL(*renderer_, HasAudio()).WillRepeatedly(Return(audio_stream())); |
| 181 EXPECT_CALL(*renderer_, HasVideo()).WillRepeatedly(Return(video_stream())); | 182 EXPECT_CALL(*renderer_, HasVideo()).WillRepeatedly(Return(video_stream())); |
| 182 } | 183 } |
| 183 | 184 |
| 184 void AddTextStream() { | 185 void AddTextStream() { |
| 185 EXPECT_CALL(*this, OnAddTextTrack(_, _)) | 186 EXPECT_CALL(*this, OnAddTextTrack(_, _)) |
| 186 .WillOnce(Invoke(this, &PipelineImplTest::DoOnAddTextTrack)); | 187 .WillOnce(Invoke(this, &PipelineImplTest::DoOnAddTextTrack)); |
| 187 static_cast<DemuxerHost*>(pipeline_.get()) | 188 static_cast<DemuxerHost*>(pipeline_.get()) |
| 188 ->AddTextStream(text_stream(), | 189 ->AddTextStream(text_stream(), |
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 351 scoped_ptr<StrictMock<MockDemuxer>> demuxer_; | 352 scoped_ptr<StrictMock<MockDemuxer>> demuxer_; |
| 352 scoped_ptr<StrictMock<MockRenderer>> scoped_renderer_; | 353 scoped_ptr<StrictMock<MockRenderer>> scoped_renderer_; |
| 353 StrictMock<MockRenderer>* renderer_; | 354 StrictMock<MockRenderer>* renderer_; |
| 354 StrictMock<CallbackHelper> text_renderer_callbacks_; | 355 StrictMock<CallbackHelper> text_renderer_callbacks_; |
| 355 TextRenderer* text_renderer_; | 356 TextRenderer* text_renderer_; |
| 356 scoped_ptr<StrictMock<MockDemuxerStream>> audio_stream_; | 357 scoped_ptr<StrictMock<MockDemuxerStream>> audio_stream_; |
| 357 scoped_ptr<StrictMock<MockDemuxerStream>> video_stream_; | 358 scoped_ptr<StrictMock<MockDemuxerStream>> video_stream_; |
| 358 scoped_ptr<FakeTextTrackStream> text_stream_; | 359 scoped_ptr<FakeTextTrackStream> text_stream_; |
| 359 BufferingStateCB buffering_state_cb_; | 360 BufferingStateCB buffering_state_cb_; |
| 360 base::Closure ended_cb_; | 361 base::Closure ended_cb_; |
| 362 StatisticsCB statistics_cb_; |
| 361 VideoDecoderConfig video_decoder_config_; | 363 VideoDecoderConfig video_decoder_config_; |
| 362 PipelineMetadata metadata_; | 364 PipelineMetadata metadata_; |
| 363 base::TimeDelta start_time_; | 365 base::TimeDelta start_time_; |
| 364 | 366 |
| 365 private: | 367 private: |
| 366 DISALLOW_COPY_AND_ASSIGN(PipelineImplTest); | 368 DISALLOW_COPY_AND_ASSIGN(PipelineImplTest); |
| 367 }; | 369 }; |
| 368 | 370 |
| 369 // Test that playback controls methods no-op when the pipeline hasn't been | 371 // Test that playback controls methods no-op when the pipeline hasn't been |
| 370 // started. | 372 // started. |
| (...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 592 CreateTextStream(); | 594 CreateTextStream(); |
| 593 MockDemuxerStreamVector streams; | 595 MockDemuxerStreamVector streams; |
| 594 streams.push_back(audio_stream()); | 596 streams.push_back(audio_stream()); |
| 595 streams.push_back(video_stream()); | 597 streams.push_back(video_stream()); |
| 596 | 598 |
| 597 SetDemuxerExpectations(&streams, base::TimeDelta::FromSeconds(3000)); | 599 SetDemuxerExpectations(&streams, base::TimeDelta::FromSeconds(3000)); |
| 598 SetRendererExpectations(); | 600 SetRendererExpectations(); |
| 599 | 601 |
| 600 StartPipelineAndExpect(PIPELINE_OK); | 602 StartPipelineAndExpect(PIPELINE_OK); |
| 601 | 603 |
| 604 // Inject some fake memory usage to verify its cleared after suspend. |
| 605 PipelineStatistics stats; |
| 606 stats.audio_memory_usage = 12345; |
| 607 stats.video_memory_usage = 67890; |
| 608 statistics_cb_.Run(stats); |
| 609 EXPECT_EQ(stats.audio_memory_usage, |
| 610 pipeline_->GetStatistics().audio_memory_usage); |
| 611 EXPECT_EQ(stats.video_memory_usage, |
| 612 pipeline_->GetStatistics().video_memory_usage); |
| 613 |
| 602 ExpectSuspend(); | 614 ExpectSuspend(); |
| 603 DoSuspend(); | 615 DoSuspend(); |
| 604 | 616 |
| 617 EXPECT_EQ(pipeline_->GetStatistics().audio_memory_usage, 0); |
| 618 EXPECT_EQ(pipeline_->GetStatistics().video_memory_usage, 0); |
| 619 |
| 605 base::TimeDelta expected = base::TimeDelta::FromSeconds(2000); | 620 base::TimeDelta expected = base::TimeDelta::FromSeconds(2000); |
| 606 ExpectResume(expected); | 621 ExpectResume(expected); |
| 607 DoResume(expected); | 622 DoResume(expected); |
| 608 } | 623 } |
| 609 | 624 |
| 610 TEST_F(PipelineImplTest, SetVolume) { | 625 TEST_F(PipelineImplTest, SetVolume) { |
| 611 CreateAudioStream(); | 626 CreateAudioStream(); |
| 612 MockDemuxerStreamVector streams; | 627 MockDemuxerStreamVector streams; |
| 613 streams.push_back(audio_stream()); | 628 streams.push_back(audio_stream()); |
| 614 | 629 |
| (...skipping 521 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1136 INSTANTIATE_TEARDOWN_TEST(Error, Seeking); | 1151 INSTANTIATE_TEARDOWN_TEST(Error, Seeking); |
| 1137 INSTANTIATE_TEARDOWN_TEST(Error, Playing); | 1152 INSTANTIATE_TEARDOWN_TEST(Error, Playing); |
| 1138 INSTANTIATE_TEARDOWN_TEST(Error, Suspending); | 1153 INSTANTIATE_TEARDOWN_TEST(Error, Suspending); |
| 1139 INSTANTIATE_TEARDOWN_TEST(Error, Suspended); | 1154 INSTANTIATE_TEARDOWN_TEST(Error, Suspended); |
| 1140 INSTANTIATE_TEARDOWN_TEST(Error, Resuming); | 1155 INSTANTIATE_TEARDOWN_TEST(Error, Resuming); |
| 1141 | 1156 |
| 1142 INSTANTIATE_TEARDOWN_TEST(ErrorAndStop, Playing); | 1157 INSTANTIATE_TEARDOWN_TEST(ErrorAndStop, Playing); |
| 1143 INSTANTIATE_TEARDOWN_TEST(ErrorAndStop, Suspended); | 1158 INSTANTIATE_TEARDOWN_TEST(ErrorAndStop, Suspended); |
| 1144 | 1159 |
| 1145 } // namespace media | 1160 } // namespace media |
| OLD | NEW |