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 <memory> |
8 #include <utility> | 9 #include <utility> |
9 #include <vector> | 10 #include <vector> |
10 | 11 |
11 #include "base/bind.h" | 12 #include "base/bind.h" |
12 #include "base/macros.h" | 13 #include "base/macros.h" |
13 #include "base/message_loop/message_loop.h" | 14 #include "base/message_loop/message_loop.h" |
14 #include "base/stl_util.h" | 15 #include "base/stl_util.h" |
15 #include "base/test/simple_test_tick_clock.h" | 16 #include "base/test/simple_test_tick_clock.h" |
16 #include "base/threading/simple_thread.h" | 17 #include "base/threading/simple_thread.h" |
17 #include "base/time/clock.h" | 18 #include "base/time/clock.h" |
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
158 EXPECT_CALL(*demuxer_, GetStream(stream->type())) | 159 EXPECT_CALL(*demuxer_, GetStream(stream->type())) |
159 .WillRepeatedly(Return(stream)); | 160 .WillRepeatedly(Return(stream)); |
160 } | 161 } |
161 } | 162 } |
162 | 163 |
163 void SetDemuxerExpectations(MockDemuxerStreamVector* streams) { | 164 void SetDemuxerExpectations(MockDemuxerStreamVector* streams) { |
164 // Initialize with a default non-zero duration. | 165 // Initialize with a default non-zero duration. |
165 SetDemuxerExpectations(streams, base::TimeDelta::FromSeconds(10)); | 166 SetDemuxerExpectations(streams, base::TimeDelta::FromSeconds(10)); |
166 } | 167 } |
167 | 168 |
168 scoped_ptr<StrictMock<MockDemuxerStream>> CreateStream( | 169 std::unique_ptr<StrictMock<MockDemuxerStream>> CreateStream( |
169 DemuxerStream::Type type) { | 170 DemuxerStream::Type type) { |
170 scoped_ptr<StrictMock<MockDemuxerStream>> stream( | 171 std::unique_ptr<StrictMock<MockDemuxerStream>> stream( |
171 new StrictMock<MockDemuxerStream>(type)); | 172 new StrictMock<MockDemuxerStream>(type)); |
172 return stream; | 173 return stream; |
173 } | 174 } |
174 | 175 |
175 // Sets up expectations to allow the video renderer to initialize. | 176 // Sets up expectations to allow the video renderer to initialize. |
176 void SetRendererExpectations() { | 177 void SetRendererExpectations() { |
177 EXPECT_CALL(*renderer_, Initialize(_, _, _, _, _, _, _)) | 178 EXPECT_CALL(*renderer_, Initialize(_, _, _, _, _, _, _)) |
178 .WillOnce(DoAll(SaveArg<2>(&statistics_cb_), | 179 .WillOnce(DoAll(SaveArg<2>(&statistics_cb_), |
179 SaveArg<3>(&buffering_state_cb_), | 180 SaveArg<3>(&buffering_state_cb_), |
180 SaveArg<4>(&ended_cb_), PostCallback<1>(PIPELINE_OK))); | 181 SaveArg<4>(&ended_cb_), PostCallback<1>(PIPELINE_OK))); |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
230 void CreateAudioStream() { | 231 void CreateAudioStream() { |
231 audio_stream_ = CreateStream(DemuxerStream::AUDIO); | 232 audio_stream_ = CreateStream(DemuxerStream::AUDIO); |
232 } | 233 } |
233 | 234 |
234 void CreateVideoStream() { | 235 void CreateVideoStream() { |
235 video_stream_ = CreateStream(DemuxerStream::VIDEO); | 236 video_stream_ = CreateStream(DemuxerStream::VIDEO); |
236 video_stream_->set_video_decoder_config(video_decoder_config_); | 237 video_stream_->set_video_decoder_config(video_decoder_config_); |
237 } | 238 } |
238 | 239 |
239 void CreateTextStream() { | 240 void CreateTextStream() { |
240 scoped_ptr<FakeTextTrackStream> text_stream(new FakeTextTrackStream()); | 241 std::unique_ptr<FakeTextTrackStream> text_stream(new FakeTextTrackStream()); |
241 EXPECT_CALL(*text_stream, OnRead()).Times(AnyNumber()); | 242 EXPECT_CALL(*text_stream, OnRead()).Times(AnyNumber()); |
242 text_stream_ = std::move(text_stream); | 243 text_stream_ = std::move(text_stream); |
243 } | 244 } |
244 | 245 |
245 MockDemuxerStream* audio_stream() { return audio_stream_.get(); } | 246 MockDemuxerStream* audio_stream() { return audio_stream_.get(); } |
246 | 247 |
247 MockDemuxerStream* video_stream() { return video_stream_.get(); } | 248 MockDemuxerStream* video_stream() { return video_stream_.get(); } |
248 | 249 |
249 FakeTextTrackStream* text_stream() { return text_stream_.get(); } | 250 FakeTextTrackStream* text_stream() { return text_stream_.get(); } |
250 | 251 |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
332 EXPECT_CALL(callbacks_, OnStop()) | 333 EXPECT_CALL(callbacks_, OnStop()) |
333 .WillOnce(Invoke(this, &PipelineImplTest::DestroyPipeline)); | 334 .WillOnce(Invoke(this, &PipelineImplTest::DestroyPipeline)); |
334 } | 335 } |
335 | 336 |
336 MOCK_METHOD2(OnAddTextTrack, | 337 MOCK_METHOD2(OnAddTextTrack, |
337 void(const TextTrackConfig&, const AddTextTrackDoneCB&)); | 338 void(const TextTrackConfig&, const AddTextTrackDoneCB&)); |
338 MOCK_METHOD0(OnWaitingForDecryptionKey, void(void)); | 339 MOCK_METHOD0(OnWaitingForDecryptionKey, void(void)); |
339 | 340 |
340 void DoOnAddTextTrack(const TextTrackConfig& config, | 341 void DoOnAddTextTrack(const TextTrackConfig& config, |
341 const AddTextTrackDoneCB& done_cb) { | 342 const AddTextTrackDoneCB& done_cb) { |
342 scoped_ptr<TextTrack> text_track(new MockTextTrack); | 343 std::unique_ptr<TextTrack> text_track(new MockTextTrack); |
343 done_cb.Run(std::move(text_track)); | 344 done_cb.Run(std::move(text_track)); |
344 } | 345 } |
345 | 346 |
346 void RunBufferedTimeRangesTest(const base::TimeDelta duration) { | 347 void RunBufferedTimeRangesTest(const base::TimeDelta duration) { |
347 EXPECT_EQ(0u, pipeline_->GetBufferedTimeRanges().size()); | 348 EXPECT_EQ(0u, pipeline_->GetBufferedTimeRanges().size()); |
348 EXPECT_FALSE(pipeline_->DidLoadingProgress()); | 349 EXPECT_FALSE(pipeline_->DidLoadingProgress()); |
349 Ranges<base::TimeDelta> ranges; | 350 Ranges<base::TimeDelta> ranges; |
350 ranges.Add(base::TimeDelta(), duration); | 351 ranges.Add(base::TimeDelta(), duration); |
351 pipeline_->OnBufferedTimeRangesChanged(ranges); | 352 pipeline_->OnBufferedTimeRangesChanged(ranges); |
352 EXPECT_TRUE(pipeline_->DidLoadingProgress()); | 353 EXPECT_TRUE(pipeline_->DidLoadingProgress()); |
353 EXPECT_FALSE(pipeline_->DidLoadingProgress()); | 354 EXPECT_FALSE(pipeline_->DidLoadingProgress()); |
354 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); | 355 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); |
355 EXPECT_EQ(base::TimeDelta(), pipeline_->GetBufferedTimeRanges().start(0)); | 356 EXPECT_EQ(base::TimeDelta(), pipeline_->GetBufferedTimeRanges().start(0)); |
356 EXPECT_EQ(duration, pipeline_->GetBufferedTimeRanges().end(0)); | 357 EXPECT_EQ(duration, pipeline_->GetBufferedTimeRanges().end(0)); |
357 } | 358 } |
358 | 359 |
359 // Fixture members. | 360 // Fixture members. |
360 StrictMock<CallbackHelper> callbacks_; | 361 StrictMock<CallbackHelper> callbacks_; |
361 base::SimpleTestTickClock test_tick_clock_; | 362 base::SimpleTestTickClock test_tick_clock_; |
362 base::MessageLoop message_loop_; | 363 base::MessageLoop message_loop_; |
363 scoped_ptr<PipelineImpl> pipeline_; | 364 std::unique_ptr<PipelineImpl> pipeline_; |
364 | 365 |
365 scoped_ptr<StrictMock<MockDemuxer>> demuxer_; | 366 std::unique_ptr<StrictMock<MockDemuxer>> demuxer_; |
366 scoped_ptr<StrictMock<MockRenderer>> scoped_renderer_; | 367 std::unique_ptr<StrictMock<MockRenderer>> scoped_renderer_; |
367 StrictMock<MockRenderer>* renderer_; | 368 StrictMock<MockRenderer>* renderer_; |
368 StrictMock<CallbackHelper> text_renderer_callbacks_; | 369 StrictMock<CallbackHelper> text_renderer_callbacks_; |
369 TextRenderer* text_renderer_; | 370 TextRenderer* text_renderer_; |
370 scoped_ptr<StrictMock<MockDemuxerStream>> audio_stream_; | 371 std::unique_ptr<StrictMock<MockDemuxerStream>> audio_stream_; |
371 scoped_ptr<StrictMock<MockDemuxerStream>> video_stream_; | 372 std::unique_ptr<StrictMock<MockDemuxerStream>> video_stream_; |
372 scoped_ptr<FakeTextTrackStream> text_stream_; | 373 std::unique_ptr<FakeTextTrackStream> text_stream_; |
373 BufferingStateCB buffering_state_cb_; | 374 BufferingStateCB buffering_state_cb_; |
374 base::Closure ended_cb_; | 375 base::Closure ended_cb_; |
375 StatisticsCB statistics_cb_; | 376 StatisticsCB statistics_cb_; |
376 VideoDecoderConfig video_decoder_config_; | 377 VideoDecoderConfig video_decoder_config_; |
377 PipelineMetadata metadata_; | 378 PipelineMetadata metadata_; |
378 base::TimeDelta start_time_; | 379 base::TimeDelta start_time_; |
379 | 380 |
380 private: | 381 private: |
381 DISALLOW_COPY_AND_ASSIGN(PipelineImplTest); | 382 DISALLOW_COPY_AND_ASSIGN(PipelineImplTest); |
382 }; | 383 }; |
(...skipping 779 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1162 INSTANTIATE_TEARDOWN_TEST(Error, Seeking); | 1163 INSTANTIATE_TEARDOWN_TEST(Error, Seeking); |
1163 INSTANTIATE_TEARDOWN_TEST(Error, Playing); | 1164 INSTANTIATE_TEARDOWN_TEST(Error, Playing); |
1164 INSTANTIATE_TEARDOWN_TEST(Error, Suspending); | 1165 INSTANTIATE_TEARDOWN_TEST(Error, Suspending); |
1165 INSTANTIATE_TEARDOWN_TEST(Error, Suspended); | 1166 INSTANTIATE_TEARDOWN_TEST(Error, Suspended); |
1166 INSTANTIATE_TEARDOWN_TEST(Error, Resuming); | 1167 INSTANTIATE_TEARDOWN_TEST(Error, Resuming); |
1167 | 1168 |
1168 INSTANTIATE_TEARDOWN_TEST(ErrorAndStop, Playing); | 1169 INSTANTIATE_TEARDOWN_TEST(ErrorAndStop, Playing); |
1169 INSTANTIATE_TEARDOWN_TEST(ErrorAndStop, Suspended); | 1170 INSTANTIATE_TEARDOWN_TEST(ErrorAndStop, Suspended); |
1170 | 1171 |
1171 } // namespace media | 1172 } // namespace media |
OLD | NEW |