Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(179)

Side by Side Diff: media/base/pipeline_unittest.cc

Issue 1658303002: Create abstract interface for media::Pipeline. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Separate PipelineImpl. Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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.h" 5 #include "media/base/pipeline.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 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
90 MOCK_METHOD1(OnError, void(PipelineStatus)); 90 MOCK_METHOD1(OnError, void(PipelineStatus));
91 MOCK_METHOD1(OnMetadata, void(PipelineMetadata)); 91 MOCK_METHOD1(OnMetadata, void(PipelineMetadata));
92 MOCK_METHOD1(OnBufferingStateChange, void(BufferingState)); 92 MOCK_METHOD1(OnBufferingStateChange, void(BufferingState));
93 MOCK_METHOD0(OnDurationChange, void()); 93 MOCK_METHOD0(OnDurationChange, void());
94 94
95 private: 95 private:
96 DISALLOW_COPY_AND_ASSIGN(CallbackHelper); 96 DISALLOW_COPY_AND_ASSIGN(CallbackHelper);
97 }; 97 };
98 98
99 PipelineTest() 99 PipelineTest()
100 : pipeline_(new Pipeline(message_loop_.task_runner(), 100 : pipeline_(
101 new MediaLog())), 101 new PipelineImpl(message_loop_.task_runner(), new MediaLog())),
102 demuxer_(new StrictMock<MockDemuxer>()), 102 demuxer_(new StrictMock<MockDemuxer>()),
103 scoped_renderer_(new StrictMock<MockRenderer>()), 103 scoped_renderer_(new StrictMock<MockRenderer>()),
104 renderer_(scoped_renderer_.get()) { 104 renderer_(scoped_renderer_.get()) {
105 // SetDemuxerExpectations() adds overriding expectations for expected 105 // SetDemuxerExpectations() adds overriding expectations for expected
106 // non-NULL streams. 106 // non-NULL streams.
107 DemuxerStream* null_pointer = NULL; 107 DemuxerStream* null_pointer = NULL;
108 EXPECT_CALL(*demuxer_, GetStream(_)) 108 EXPECT_CALL(*demuxer_, GetStream(_))
109 .WillRepeatedly(Return(null_pointer)); 109 .WillRepeatedly(Return(null_pointer));
110 110
111 EXPECT_CALL(*demuxer_, GetTimelineOffset()) 111 EXPECT_CALL(*demuxer_, GetTimelineOffset())
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
186 void AddTextStream() { 186 void AddTextStream() {
187 EXPECT_CALL(*this, OnAddTextTrack(_,_)) 187 EXPECT_CALL(*this, OnAddTextTrack(_,_))
188 .WillOnce(Invoke(this, &PipelineTest::DoOnAddTextTrack)); 188 .WillOnce(Invoke(this, &PipelineTest::DoOnAddTextTrack));
189 static_cast<DemuxerHost*>(pipeline_.get())->AddTextStream(text_stream(), 189 static_cast<DemuxerHost*>(pipeline_.get())->AddTextStream(text_stream(),
190 TextTrackConfig(kTextSubtitles, "", "", "")); 190 TextTrackConfig(kTextSubtitles, "", "", ""));
191 message_loop_.RunUntilIdle(); 191 message_loop_.RunUntilIdle();
192 } 192 }
193 193
194 void StartPipeline() { 194 void StartPipeline() {
195 EXPECT_CALL(*this, OnWaitingForDecryptionKey()).Times(0); 195 EXPECT_CALL(*this, OnWaitingForDecryptionKey()).Times(0);
196 scoped_ptr<Renderer> renderer = std::move(scoped_renderer_);
196 pipeline_->Start( 197 pipeline_->Start(
197 demuxer_.get(), std::move(scoped_renderer_), 198 demuxer_.get(), &renderer,
198 base::Bind(&CallbackHelper::OnEnded, base::Unretained(&callbacks_)), 199 base::Bind(&CallbackHelper::OnEnded, base::Unretained(&callbacks_)),
199 base::Bind(&CallbackHelper::OnError, base::Unretained(&callbacks_)), 200 base::Bind(&CallbackHelper::OnError, base::Unretained(&callbacks_)),
200 base::Bind(&CallbackHelper::OnStart, base::Unretained(&callbacks_)), 201 base::Bind(&CallbackHelper::OnStart, base::Unretained(&callbacks_)),
201 base::Bind(&CallbackHelper::OnMetadata, base::Unretained(&callbacks_)), 202 base::Bind(&CallbackHelper::OnMetadata, base::Unretained(&callbacks_)),
202 base::Bind(&CallbackHelper::OnBufferingStateChange, 203 base::Bind(&CallbackHelper::OnBufferingStateChange,
203 base::Unretained(&callbacks_)), 204 base::Unretained(&callbacks_)),
204 base::Bind(&CallbackHelper::OnDurationChange, 205 base::Bind(&CallbackHelper::OnDurationChange,
205 base::Unretained(&callbacks_)), 206 base::Unretained(&callbacks_)),
206 base::Bind(&PipelineTest::OnAddTextTrack, base::Unretained(this)), 207 base::Bind(&PipelineTest::OnAddTextTrack, base::Unretained(this)),
207 base::Bind(&PipelineTest::OnWaitingForDecryptionKey, 208 base::Bind(&PipelineTest::OnWaitingForDecryptionKey,
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
308 EXPECT_CALL(*renderer_, SetPlaybackRate(_)); 309 EXPECT_CALL(*renderer_, SetPlaybackRate(_));
309 EXPECT_CALL(*renderer_, SetVolume(_)); 310 EXPECT_CALL(*renderer_, SetVolume(_));
310 EXPECT_CALL(*renderer_, StartPlayingFrom(seek_time)) 311 EXPECT_CALL(*renderer_, StartPlayingFrom(seek_time))
311 .WillOnce( 312 .WillOnce(
312 SetBufferingState(&buffering_state_cb_, BUFFERING_HAVE_ENOUGH)); 313 SetBufferingState(&buffering_state_cb_, BUFFERING_HAVE_ENOUGH));
313 EXPECT_CALL(callbacks_, OnBufferingStateChange(BUFFERING_HAVE_ENOUGH)); 314 EXPECT_CALL(callbacks_, OnBufferingStateChange(BUFFERING_HAVE_ENOUGH));
314 EXPECT_CALL(callbacks_, OnResume(PIPELINE_OK)); 315 EXPECT_CALL(callbacks_, OnResume(PIPELINE_OK));
315 } 316 }
316 317
317 void DoResume(const base::TimeDelta& seek_time) { 318 void DoResume(const base::TimeDelta& seek_time) {
319 scoped_ptr<Renderer> renderer = std::move(scoped_renderer_);
318 pipeline_->Resume( 320 pipeline_->Resume(
319 std::move(scoped_renderer_), seek_time, 321 &renderer, seek_time,
320 base::Bind(&CallbackHelper::OnResume, base::Unretained(&callbacks_))); 322 base::Bind(&CallbackHelper::OnResume, base::Unretained(&callbacks_)));
321 message_loop_.RunUntilIdle(); 323 message_loop_.RunUntilIdle();
322 } 324 }
323 325
324 void DestroyPipeline() { 326 void DestroyPipeline() {
325 // In real code Pipeline could be destroyed on a different thread. All weak 327 // In real code Pipeline could be destroyed on a different thread. All weak
326 // pointers must have been invalidated before the stop callback returns. 328 // pointers must have been invalidated before the stop callback returns.
327 DCHECK(!pipeline_->HasWeakPtrsForTesting()); 329 DCHECK(!pipeline_->HasWeakPtrsForTesting());
328 pipeline_.reset(); 330 pipeline_.reset();
329 } 331 }
(...skipping 17 matching lines...) Expand all
347 void DoOnAddTextTrack(const TextTrackConfig& config, 349 void DoOnAddTextTrack(const TextTrackConfig& config,
348 const AddTextTrackDoneCB& done_cb) { 350 const AddTextTrackDoneCB& done_cb) {
349 scoped_ptr<TextTrack> text_track(new MockTextTrack); 351 scoped_ptr<TextTrack> text_track(new MockTextTrack);
350 done_cb.Run(std::move(text_track)); 352 done_cb.Run(std::move(text_track));
351 } 353 }
352 354
353 // Fixture members. 355 // Fixture members.
354 StrictMock<CallbackHelper> callbacks_; 356 StrictMock<CallbackHelper> callbacks_;
355 base::SimpleTestTickClock test_tick_clock_; 357 base::SimpleTestTickClock test_tick_clock_;
356 base::MessageLoop message_loop_; 358 base::MessageLoop message_loop_;
357 scoped_ptr<Pipeline> pipeline_; 359 scoped_ptr<PipelineImpl> pipeline_;
358 360
359 scoped_ptr<StrictMock<MockDemuxer> > demuxer_; 361 scoped_ptr<StrictMock<MockDemuxer> > demuxer_;
360 scoped_ptr<StrictMock<MockRenderer> > scoped_renderer_; 362 scoped_ptr<StrictMock<MockRenderer> > scoped_renderer_;
361 StrictMock<MockRenderer>* renderer_; 363 StrictMock<MockRenderer>* renderer_;
362 StrictMock<CallbackHelper> text_renderer_callbacks_; 364 StrictMock<CallbackHelper> text_renderer_callbacks_;
363 TextRenderer* text_renderer_; 365 TextRenderer* text_renderer_;
364 scoped_ptr<StrictMock<MockDemuxerStream> > audio_stream_; 366 scoped_ptr<StrictMock<MockDemuxerStream> > audio_stream_;
365 scoped_ptr<StrictMock<MockDemuxerStream> > video_stream_; 367 scoped_ptr<StrictMock<MockDemuxerStream> > video_stream_;
366 scoped_ptr<FakeTextTrackStream> text_stream_; 368 scoped_ptr<FakeTextTrackStream> text_stream_;
367 BufferingStateCB buffering_state_cb_; 369 BufferingStateCB buffering_state_cb_;
(...skipping 359 matching lines...) Expand 10 before | Expand all | Expand 10 after
727 EXPECT_CALL(*demuxer_, Stop()); 729 EXPECT_CALL(*demuxer_, Stop());
728 730
729 pipeline_->Seek(seek_time, base::Bind(&CallbackHelper::OnSeek, 731 pipeline_->Seek(seek_time, base::Bind(&CallbackHelper::OnSeek,
730 base::Unretained(&callbacks_))); 732 base::Unretained(&callbacks_)));
731 EXPECT_CALL(callbacks_, OnSeek(PIPELINE_ERROR_READ)); 733 EXPECT_CALL(callbacks_, OnSeek(PIPELINE_ERROR_READ));
732 message_loop_.RunUntilIdle(); 734 message_loop_.RunUntilIdle();
733 } 735 }
734 736
735 // Invoked function OnError. This asserts that the pipeline does not enqueue 737 // Invoked function OnError. This asserts that the pipeline does not enqueue
736 // non-teardown related tasks while tearing down. 738 // non-teardown related tasks while tearing down.
737 static void TestNoCallsAfterError( 739 static void TestNoCallsAfterError(PipelineImpl* pipeline,
738 Pipeline* pipeline, base::MessageLoop* message_loop, 740 base::MessageLoop* message_loop,
739 PipelineStatus /* status */) { 741 PipelineStatus /* status */) {
740 CHECK(pipeline); 742 CHECK(pipeline);
741 CHECK(message_loop); 743 CHECK(message_loop);
742 744
743 // When we get to this stage, the message loop should be empty. 745 // When we get to this stage, the message loop should be empty.
744 EXPECT_TRUE(message_loop->IsIdleForTesting()); 746 EXPECT_TRUE(message_loop->IsIdleForTesting());
745 747
746 // Make calls on pipeline after error has occurred. 748 // Make calls on pipeline after error has occurred.
747 pipeline->SetPlaybackRate(0.5); 749 pipeline->SetPlaybackRate(0.5);
748 pipeline->SetVolume(0.5f); 750 pipeline->SetVolume(0.5f);
749 751
(...skipping 407 matching lines...) Expand 10 before | Expand all | Expand 10 after
1157 INSTANTIATE_TEARDOWN_TEST(Error, Seeking); 1159 INSTANTIATE_TEARDOWN_TEST(Error, Seeking);
1158 INSTANTIATE_TEARDOWN_TEST(Error, Playing); 1160 INSTANTIATE_TEARDOWN_TEST(Error, Playing);
1159 INSTANTIATE_TEARDOWN_TEST(Error, Suspending); 1161 INSTANTIATE_TEARDOWN_TEST(Error, Suspending);
1160 INSTANTIATE_TEARDOWN_TEST(Error, Suspended); 1162 INSTANTIATE_TEARDOWN_TEST(Error, Suspended);
1161 INSTANTIATE_TEARDOWN_TEST(Error, Resuming); 1163 INSTANTIATE_TEARDOWN_TEST(Error, Resuming);
1162 1164
1163 INSTANTIATE_TEARDOWN_TEST(ErrorAndStop, Playing); 1165 INSTANTIATE_TEARDOWN_TEST(ErrorAndStop, Playing);
1164 INSTANTIATE_TEARDOWN_TEST(ErrorAndStop, Suspended); 1166 INSTANTIATE_TEARDOWN_TEST(ErrorAndStop, Suspended);
1165 1167
1166 } // namespace media 1168 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698