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

Side by Side Diff: media/mojo/clients/mojo_renderer_unittest.cc

Issue 2491043003: MediaResource refactoring to support multiple streams (Closed)
Patch Set: Added a TODO about DemuxerStream enabled/set_enabled methods Created 3 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
« no previous file with comments | « media/mojo/clients/mojo_renderer.cc ('k') | media/mojo/services/media_resource_shim.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "base/bind.h" 7 #include "base/bind.h"
8 #include "base/macros.h" 8 #include "base/macros.h"
9 #include "base/memory/ptr_util.h" 9 #include "base/memory/ptr_util.h"
10 #include "base/run_loop.h" 10 #include "base/run_loop.h"
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
70 MojoRendererService::InitiateSurfaceRequestCB(), 70 MojoRendererService::InitiateSurfaceRequestCB(),
71 mojo::MakeRequest(&remote_renderer)); 71 mojo::MakeRequest(&remote_renderer));
72 72
73 mojo_renderer_.reset( 73 mojo_renderer_.reset(
74 new MojoRenderer(message_loop_.task_runner(), 74 new MojoRenderer(message_loop_.task_runner(),
75 std::unique_ptr<VideoOverlayFactory>(nullptr), nullptr, 75 std::unique_ptr<VideoOverlayFactory>(nullptr), nullptr,
76 std::move(remote_renderer))); 76 std::move(remote_renderer)));
77 77
78 // CreateAudioStream() and CreateVideoStream() overrides expectations for 78 // CreateAudioStream() and CreateVideoStream() overrides expectations for
79 // expected non-NULL streams. 79 // expected non-NULL streams.
80 EXPECT_CALL(demuxer_, GetStream(_)).WillRepeatedly(Return(nullptr)); 80 EXPECT_CALL(demuxer_, GetAllStreams()).WillRepeatedly(Return(streams_));
81 81
82 EXPECT_CALL(*mock_renderer_, GetMediaTime()) 82 EXPECT_CALL(*mock_renderer_, GetMediaTime())
83 .WillRepeatedly(Return(base::TimeDelta())); 83 .WillRepeatedly(Return(base::TimeDelta()));
84 } 84 }
85 85
86 virtual ~MojoRendererTest() {} 86 virtual ~MojoRendererTest() {}
87 87
88 void Destroy() { 88 void Destroy() {
89 mojo_renderer_.reset(); 89 mojo_renderer_.reset();
90 base::RunLoop().RunUntilIdle(); 90 base::RunLoop().RunUntilIdle();
91 } 91 }
92 92
93 // Completion callbacks. 93 // Completion callbacks.
94 MOCK_METHOD1(OnInitialized, void(PipelineStatus)); 94 MOCK_METHOD1(OnInitialized, void(PipelineStatus));
95 MOCK_METHOD0(OnFlushed, void()); 95 MOCK_METHOD0(OnFlushed, void());
96 MOCK_METHOD1(OnCdmAttached, void(bool)); 96 MOCK_METHOD1(OnCdmAttached, void(bool));
97 MOCK_METHOD1(OnSurfaceRequestToken, void(const base::UnguessableToken&)); 97 MOCK_METHOD1(OnSurfaceRequestToken, void(const base::UnguessableToken&));
98 98
99 std::unique_ptr<StrictMock<MockDemuxerStream>> CreateStream( 99 std::unique_ptr<StrictMock<MockDemuxerStream>> CreateStream(
100 DemuxerStream::Type type) { 100 DemuxerStream::Type type) {
101 std::unique_ptr<StrictMock<MockDemuxerStream>> stream( 101 std::unique_ptr<StrictMock<MockDemuxerStream>> stream(
102 new StrictMock<MockDemuxerStream>(type)); 102 new StrictMock<MockDemuxerStream>(type));
103 return stream; 103 return stream;
104 } 104 }
105 105
106 void CreateAudioStream() { 106 void CreateAudioStream() {
107 audio_stream_ = CreateStream(DemuxerStream::AUDIO); 107 audio_stream_ = CreateStream(DemuxerStream::AUDIO);
108 EXPECT_CALL(demuxer_, GetStream(DemuxerStream::AUDIO)) 108 streams_.push_back(audio_stream_.get());
109 .WillRepeatedly(Return(audio_stream_.get())); 109 EXPECT_CALL(demuxer_, GetAllStreams()).WillRepeatedly(Return(streams_));
110 } 110 }
111 111
112 void CreateVideoStream(bool is_encrypted = false) { 112 void CreateVideoStream(bool is_encrypted = false) {
113 video_stream_ = CreateStream(DemuxerStream::VIDEO); 113 video_stream_ = CreateStream(DemuxerStream::VIDEO);
114 video_stream_->set_video_decoder_config( 114 video_stream_->set_video_decoder_config(
115 is_encrypted ? TestVideoConfig::NormalEncrypted() 115 is_encrypted ? TestVideoConfig::NormalEncrypted()
116 : TestVideoConfig::Normal()); 116 : TestVideoConfig::Normal());
117 EXPECT_CALL(demuxer_, GetStream(DemuxerStream::VIDEO)) 117 std::vector<DemuxerStream*> streams;
118 .WillRepeatedly(Return(video_stream_.get())); 118 streams_.push_back(audio_stream_.get());
119 EXPECT_CALL(demuxer_, GetAllStreams()).WillRepeatedly(Return(streams_));
119 } 120 }
120 121
121 void InitializeAndExpect(PipelineStatus status) { 122 void InitializeAndExpect(PipelineStatus status) {
122 DVLOG(1) << __func__ << ": " << status; 123 DVLOG(1) << __func__ << ": " << status;
123 EXPECT_CALL(*this, OnInitialized(status)); 124 EXPECT_CALL(*this, OnInitialized(status));
124 mojo_renderer_->Initialize( 125 mojo_renderer_->Initialize(
125 &demuxer_, &renderer_client_, 126 &demuxer_, &renderer_client_,
126 base::Bind(&MojoRendererTest::OnInitialized, base::Unretained(this))); 127 base::Bind(&MojoRendererTest::OnInitialized, base::Unretained(this)));
127 base::RunLoop().RunUntilIdle(); 128 base::RunLoop().RunUntilIdle();
128 } 129 }
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
203 204
204 // Client side mocks and helpers. 205 // Client side mocks and helpers.
205 StrictMock<MockRendererClient> renderer_client_; 206 StrictMock<MockRendererClient> renderer_client_;
206 StrictMock<MockCdmContext> cdm_context_; 207 StrictMock<MockCdmContext> cdm_context_;
207 mojom::ContentDecryptionModulePtr remote_cdm_; 208 mojom::ContentDecryptionModulePtr remote_cdm_;
208 209
209 // Client side mock demuxer and demuxer streams. 210 // Client side mock demuxer and demuxer streams.
210 StrictMock<MockDemuxer> demuxer_; 211 StrictMock<MockDemuxer> demuxer_;
211 std::unique_ptr<StrictMock<MockDemuxerStream>> audio_stream_; 212 std::unique_ptr<StrictMock<MockDemuxerStream>> audio_stream_;
212 std::unique_ptr<StrictMock<MockDemuxerStream>> video_stream_; 213 std::unique_ptr<StrictMock<MockDemuxerStream>> video_stream_;
214 std::vector<DemuxerStream*> streams_;
213 215
214 // Service side mocks and helpers. 216 // Service side mocks and helpers.
215 StrictMock<MockRenderer>* mock_renderer_; 217 StrictMock<MockRenderer>* mock_renderer_;
216 MojoCdmServiceContext mojo_cdm_service_context_; 218 MojoCdmServiceContext mojo_cdm_service_context_;
217 RendererClient* remote_renderer_client_; 219 RendererClient* remote_renderer_client_;
218 DefaultCdmFactory cdm_factory_; 220 DefaultCdmFactory cdm_factory_;
219 221
220 mojo::StrongBindingPtr<mojom::Renderer> renderer_binding_; 222 mojo::StrongBindingPtr<mojom::Renderer> renderer_binding_;
221 223
222 private: 224 private:
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after
459 Play(); 461 Play();
460 remote_renderer_client_->OnError(PIPELINE_ERROR_DECODE); 462 remote_renderer_client_->OnError(PIPELINE_ERROR_DECODE);
461 base::RunLoop().RunUntilIdle(); 463 base::RunLoop().RunUntilIdle();
462 464
463 EXPECT_CALL(*mock_renderer_, SetPlaybackRate(0.0)).Times(1); 465 EXPECT_CALL(*mock_renderer_, SetPlaybackRate(0.0)).Times(1);
464 mojo_renderer_->SetPlaybackRate(0.0); 466 mojo_renderer_->SetPlaybackRate(0.0);
465 Flush(); 467 Flush();
466 } 468 }
467 469
468 } // namespace media 470 } // namespace media
OLDNEW
« no previous file with comments | « media/mojo/clients/mojo_renderer.cc ('k') | media/mojo/services/media_resource_shim.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698