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 <vector> | 8 #include <vector> |
8 | 9 |
9 #include "base/bind.h" | 10 #include "base/bind.h" |
10 #include "base/macros.h" | 11 #include "base/macros.h" |
11 #include "base/message_loop/message_loop.h" | 12 #include "base/message_loop/message_loop.h" |
12 #include "base/run_loop.h" | 13 #include "base/run_loop.h" |
13 #include "base/test/simple_test_tick_clock.h" | 14 #include "base/test/simple_test_tick_clock.h" |
14 #include "media/base/gmock_callback_support.h" | 15 #include "media/base/gmock_callback_support.h" |
15 #include "media/base/mock_filters.h" | 16 #include "media/base/mock_filters.h" |
16 #include "media/base/test_helpers.h" | 17 #include "media/base/test_helpers.h" |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
58 private: | 59 private: |
59 DISALLOW_COPY_AND_ASSIGN(CallbackHelper); | 60 DISALLOW_COPY_AND_ASSIGN(CallbackHelper); |
60 }; | 61 }; |
61 | 62 |
62 RendererImplTest() | 63 RendererImplTest() |
63 : demuxer_(new StrictMock<MockDemuxer>()), | 64 : demuxer_(new StrictMock<MockDemuxer>()), |
64 video_renderer_(new StrictMock<MockVideoRenderer>()), | 65 video_renderer_(new StrictMock<MockVideoRenderer>()), |
65 audio_renderer_(new StrictMock<MockAudioRenderer>()), | 66 audio_renderer_(new StrictMock<MockAudioRenderer>()), |
66 renderer_impl_( | 67 renderer_impl_( |
67 new RendererImpl(message_loop_.task_runner(), | 68 new RendererImpl(message_loop_.task_runner(), |
68 scoped_ptr<AudioRenderer>(audio_renderer_), | 69 std::unique_ptr<AudioRenderer>(audio_renderer_), |
69 scoped_ptr<VideoRenderer>(video_renderer_))), | 70 std::unique_ptr<VideoRenderer>(video_renderer_))), |
70 cdm_context_(new StrictMock<MockCdmContext>()), | 71 cdm_context_(new StrictMock<MockCdmContext>()), |
71 initialization_status_(PIPELINE_OK) { | 72 initialization_status_(PIPELINE_OK) { |
72 // SetDemuxerExpectations() adds overriding expectations for expected | 73 // SetDemuxerExpectations() adds overriding expectations for expected |
73 // non-NULL streams. | 74 // non-NULL streams. |
74 DemuxerStream* null_pointer = NULL; | 75 DemuxerStream* null_pointer = NULL; |
75 EXPECT_CALL(*demuxer_, GetStream(_)) | 76 EXPECT_CALL(*demuxer_, GetStream(_)) |
76 .WillRepeatedly(Return(null_pointer)); | 77 .WillRepeatedly(Return(null_pointer)); |
77 } | 78 } |
78 | 79 |
79 virtual ~RendererImplTest() { Destroy(); } | 80 virtual ~RendererImplTest() { Destroy(); } |
80 | 81 |
81 protected: | 82 protected: |
82 typedef std::vector<MockDemuxerStream*> MockDemuxerStreamVector; | 83 typedef std::vector<MockDemuxerStream*> MockDemuxerStreamVector; |
83 | 84 |
84 void Destroy() { | 85 void Destroy() { |
85 renderer_impl_.reset(); | 86 renderer_impl_.reset(); |
86 base::RunLoop().RunUntilIdle(); | 87 base::RunLoop().RunUntilIdle(); |
87 } | 88 } |
88 | 89 |
89 scoped_ptr<StrictMock<MockDemuxerStream> > CreateStream( | 90 std::unique_ptr<StrictMock<MockDemuxerStream>> CreateStream( |
90 DemuxerStream::Type type) { | 91 DemuxerStream::Type type) { |
91 scoped_ptr<StrictMock<MockDemuxerStream> > stream( | 92 std::unique_ptr<StrictMock<MockDemuxerStream>> stream( |
92 new StrictMock<MockDemuxerStream>(type)); | 93 new StrictMock<MockDemuxerStream>(type)); |
93 return stream; | 94 return stream; |
94 } | 95 } |
95 | 96 |
96 // Sets up expectations to allow the audio renderer to initialize. | 97 // Sets up expectations to allow the audio renderer to initialize. |
97 void SetAudioRendererInitializeExpectations(PipelineStatus status) { | 98 void SetAudioRendererInitializeExpectations(PipelineStatus status) { |
98 EXPECT_CALL(*audio_renderer_, | 99 EXPECT_CALL(*audio_renderer_, |
99 Initialize(audio_stream_.get(), _, _, _, _, _, _, _)) | 100 Initialize(audio_stream_.get(), _, _, _, _, _, _, _)) |
100 .WillOnce(DoAll(SaveArg<4>(&audio_buffering_state_cb_), | 101 .WillOnce(DoAll(SaveArg<4>(&audio_buffering_state_cb_), |
101 SaveArg<5>(&audio_ended_cb_), | 102 SaveArg<5>(&audio_ended_cb_), |
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
264 base::Bind(&CallbackHelper::OnCdmAttached, | 265 base::Bind(&CallbackHelper::OnCdmAttached, |
265 base::Unretained(&callbacks_))); | 266 base::Unretained(&callbacks_))); |
266 base::RunLoop().RunUntilIdle(); | 267 base::RunLoop().RunUntilIdle(); |
267 } | 268 } |
268 | 269 |
269 // Fixture members. | 270 // Fixture members. |
270 base::MessageLoop message_loop_; | 271 base::MessageLoop message_loop_; |
271 StrictMock<CallbackHelper> callbacks_; | 272 StrictMock<CallbackHelper> callbacks_; |
272 base::SimpleTestTickClock test_tick_clock_; | 273 base::SimpleTestTickClock test_tick_clock_; |
273 | 274 |
274 scoped_ptr<StrictMock<MockDemuxer> > demuxer_; | 275 std::unique_ptr<StrictMock<MockDemuxer>> demuxer_; |
275 StrictMock<MockVideoRenderer>* video_renderer_; | 276 StrictMock<MockVideoRenderer>* video_renderer_; |
276 StrictMock<MockAudioRenderer>* audio_renderer_; | 277 StrictMock<MockAudioRenderer>* audio_renderer_; |
277 scoped_ptr<RendererImpl> renderer_impl_; | 278 std::unique_ptr<RendererImpl> renderer_impl_; |
278 scoped_ptr<StrictMock<MockCdmContext>> cdm_context_; | 279 std::unique_ptr<StrictMock<MockCdmContext>> cdm_context_; |
279 | 280 |
280 StrictMock<MockTimeSource> time_source_; | 281 StrictMock<MockTimeSource> time_source_; |
281 scoped_ptr<StrictMock<MockDemuxerStream> > audio_stream_; | 282 std::unique_ptr<StrictMock<MockDemuxerStream>> audio_stream_; |
282 scoped_ptr<StrictMock<MockDemuxerStream> > video_stream_; | 283 std::unique_ptr<StrictMock<MockDemuxerStream>> video_stream_; |
283 MockDemuxerStreamVector streams_; | 284 MockDemuxerStreamVector streams_; |
284 BufferingStateCB audio_buffering_state_cb_; | 285 BufferingStateCB audio_buffering_state_cb_; |
285 BufferingStateCB video_buffering_state_cb_; | 286 BufferingStateCB video_buffering_state_cb_; |
286 base::Closure audio_ended_cb_; | 287 base::Closure audio_ended_cb_; |
287 base::Closure video_ended_cb_; | 288 base::Closure video_ended_cb_; |
288 PipelineStatusCB audio_error_cb_; | 289 PipelineStatusCB audio_error_cb_; |
289 VideoDecoderConfig video_decoder_config_; | 290 VideoDecoderConfig video_decoder_config_; |
290 PipelineStatus initialization_status_; | 291 PipelineStatus initialization_status_; |
291 | 292 |
292 private: | 293 private: |
(...skipping 425 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
718 .WillOnce( | 719 .WillOnce( |
719 SetBufferingState(&audio_buffering_state_cb_, BUFFERING_HAVE_ENOUGH)); | 720 SetBufferingState(&audio_buffering_state_cb_, BUFFERING_HAVE_ENOUGH)); |
720 EXPECT_CALL(*video_renderer_, StartPlayingFrom(kStartTime)); | 721 EXPECT_CALL(*video_renderer_, StartPlayingFrom(kStartTime)); |
721 renderer_impl_->StartPlayingFrom(kStartTime); | 722 renderer_impl_->StartPlayingFrom(kStartTime); |
722 | 723 |
723 // Nothing else should primed on the message loop. | 724 // Nothing else should primed on the message loop. |
724 base::RunLoop().RunUntilIdle(); | 725 base::RunLoop().RunUntilIdle(); |
725 } | 726 } |
726 | 727 |
727 } // namespace media | 728 } // namespace media |
OLD | NEW |