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

Side by Side Diff: media/remoting/remote_renderer_impl_unittest.cc

Issue 2457563002: Media Remoting: Add remoting control logic for encrypted contents. (Closed)
Patch Set: Addressed comments from PS#12. Fixed ASAN. Created 4 years, 1 month 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/remoting/remote_renderer_impl.cc ('k') | media/remoting/remoting_cdm.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 "media/remoting/remote_renderer_impl.h" 5 #include "media/remoting/remote_renderer_impl.h"
6 6
7 #include "base/run_loop.h" 7 #include "base/run_loop.h"
8 #include "media/base/pipeline_status.h" 8 #include "media/base/pipeline_status.h"
9 #include "media/remoting/fake_remoting_controller.h" 9 #include "media/remoting/fake_remoting_controller.h"
10 #include "media/remoting/fake_remoting_demuxer_stream_provider.h" 10 #include "media/remoting/fake_remoting_demuxer_stream_provider.h"
11 #include "media/remoting/remoting_controller.h" 11 #include "media/remoting/remoting_renderer_controller.h"
12 #include "testing/gmock/include/gmock/gmock.h" 12 #include "testing/gmock/include/gmock/gmock.h"
13 #include "testing/gtest/include/gtest/gtest.h" 13 #include "testing/gtest/include/gtest/gtest.h"
14 14
15 using testing::_; 15 using testing::_;
16 using testing::Invoke; 16 using testing::Invoke;
17 using testing::Return; 17 using testing::Return;
18 18
19 namespace media { 19 namespace media {
20 20
21 namespace { 21 namespace {
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
114 ASSERT_TRUE(rpc->ParseFromArray(message->data(), message->size())); 114 ASSERT_TRUE(rpc->ParseFromArray(message->data(), message->size()));
115 switch (rpc->proc()) { 115 switch (rpc->proc()) {
116 case remoting::pb::RpcMessage::RPC_ACQUIRE_RENDERER: { 116 case remoting::pb::RpcMessage::RPC_ACQUIRE_RENDERER: {
117 // Issues RPC_ACQUIRE_RENDERER_DONE RPC message. 117 // Issues RPC_ACQUIRE_RENDERER_DONE RPC message.
118 std::unique_ptr<remoting::pb::RpcMessage> acquire_done( 118 std::unique_ptr<remoting::pb::RpcMessage> acquire_done(
119 new remoting::pb::RpcMessage()); 119 new remoting::pb::RpcMessage());
120 acquire_done->set_handle(rpc->integer_value()); 120 acquire_done->set_handle(rpc->integer_value());
121 acquire_done->set_proc( 121 acquire_done->set_proc(
122 remoting::pb::RpcMessage::RPC_ACQUIRE_RENDERER_DONE); 122 remoting::pb::RpcMessage::RPC_ACQUIRE_RENDERER_DONE);
123 acquire_done->set_integer_value(receiver_renderer_handle_); 123 acquire_done->set_integer_value(receiver_renderer_handle_);
124 remoting_controller_->GetRpcBroker()->ProcessMessageFromRemote( 124 remoting_renderer_controller_->GetRpcBroker()->ProcessMessageFromRemote(
125 std::move(acquire_done)); 125 std::move(acquire_done));
126 } break; 126 } break;
127 case remoting::pb::RpcMessage::RPC_R_INITIALIZE: { 127 case remoting::pb::RpcMessage::RPC_R_INITIALIZE: {
128 EXPECT_EQ(rpc->handle(), receiver_renderer_handle_); 128 EXPECT_EQ(rpc->handle(), receiver_renderer_handle_);
129 sender_renderer_callback_handle_ = 129 sender_renderer_callback_handle_ =
130 rpc->renderer_initialize_rpc().callback_handle(); 130 rpc->renderer_initialize_rpc().callback_handle();
131 sender_client_handle_ = rpc->renderer_initialize_rpc().client_handle(); 131 sender_client_handle_ = rpc->renderer_initialize_rpc().client_handle();
132 sender_audio_demuxer_handle_ = 132 sender_audio_demuxer_handle_ =
133 rpc->renderer_initialize_rpc().audio_demuxer_handle(); 133 rpc->renderer_initialize_rpc().audio_demuxer_handle();
134 sender_video_demuxer_handle_ = 134 sender_video_demuxer_handle_ =
135 rpc->renderer_initialize_rpc().video_demuxer_handle(); 135 rpc->renderer_initialize_rpc().video_demuxer_handle();
136 136
137 // Issues audio RPC_DS_INITIALIZE RPC message. 137 // Issues audio RPC_DS_INITIALIZE RPC message.
138 if (sender_audio_demuxer_handle_ != remoting::kInvalidHandle) { 138 if (sender_audio_demuxer_handle_ != remoting::kInvalidHandle) {
139 std::unique_ptr<remoting::pb::RpcMessage> ds_init( 139 std::unique_ptr<remoting::pb::RpcMessage> ds_init(
140 new remoting::pb::RpcMessage()); 140 new remoting::pb::RpcMessage());
141 ds_init->set_handle(sender_audio_demuxer_handle_); 141 ds_init->set_handle(sender_audio_demuxer_handle_);
142 ds_init->set_proc(remoting::pb::RpcMessage::RPC_DS_INITIALIZE); 142 ds_init->set_proc(remoting::pb::RpcMessage::RPC_DS_INITIALIZE);
143 ds_init->set_integer_value(receiver_audio_demuxer_callback_handle_); 143 ds_init->set_integer_value(receiver_audio_demuxer_callback_handle_);
144 remoting_controller_->GetRpcBroker()->ProcessMessageFromRemote( 144 remoting_renderer_controller_->GetRpcBroker()
145 std::move(ds_init)); 145 ->ProcessMessageFromRemote(std::move(ds_init));
146 } 146 }
147 if (sender_video_demuxer_handle_ != remoting::kInvalidHandle) { 147 if (sender_video_demuxer_handle_ != remoting::kInvalidHandle) {
148 std::unique_ptr<remoting::pb::RpcMessage> ds_init( 148 std::unique_ptr<remoting::pb::RpcMessage> ds_init(
149 new remoting::pb::RpcMessage()); 149 new remoting::pb::RpcMessage());
150 ds_init->set_handle(sender_video_demuxer_handle_); 150 ds_init->set_handle(sender_video_demuxer_handle_);
151 ds_init->set_proc(remoting::pb::RpcMessage::RPC_DS_INITIALIZE); 151 ds_init->set_proc(remoting::pb::RpcMessage::RPC_DS_INITIALIZE);
152 ds_init->set_integer_value(receiver_video_demuxer_callback_handle_); 152 ds_init->set_integer_value(receiver_video_demuxer_callback_handle_);
153 remoting_controller_->GetRpcBroker()->ProcessMessageFromRemote( 153 remoting_renderer_controller_->GetRpcBroker()
154 std::move(ds_init)); 154 ->ProcessMessageFromRemote(std::move(ds_init));
155 } 155 }
156 } break; 156 } break;
157 case remoting::pb::RpcMessage::RPC_DS_INITIALIZE_CALLBACK: { 157 case remoting::pb::RpcMessage::RPC_DS_INITIALIZE_CALLBACK: {
158 if (rpc->handle() == receiver_audio_demuxer_callback_handle_) 158 if (rpc->handle() == receiver_audio_demuxer_callback_handle_)
159 received_audio_ds_init_cb_ = true; 159 received_audio_ds_init_cb_ = true;
160 if (rpc->handle() == receiver_video_demuxer_callback_handle_) 160 if (rpc->handle() == receiver_video_demuxer_callback_handle_)
161 received_video_ds_init_cb_ = true; 161 received_video_ds_init_cb_ = true;
162 162
163 // Issues RPC_R_INITIALIZE_CALLBACK RPC message when receiving 163 // Issues RPC_R_INITIALIZE_CALLBACK RPC message when receiving
164 // RPC_DS_INITIALIZE_CALLBACK on available streams. 164 // RPC_DS_INITIALIZE_CALLBACK on available streams.
165 if (received_audio_ds_init_cb_ == 165 if (received_audio_ds_init_cb_ ==
166 (sender_audio_demuxer_handle_ != remoting::kInvalidHandle) && 166 (sender_audio_demuxer_handle_ != remoting::kInvalidHandle) &&
167 received_video_ds_init_cb_ == 167 received_video_ds_init_cb_ ==
168 (sender_video_demuxer_handle_ != remoting::kInvalidHandle)) { 168 (sender_video_demuxer_handle_ != remoting::kInvalidHandle)) {
169 std::unique_ptr<remoting::pb::RpcMessage> init_cb( 169 std::unique_ptr<remoting::pb::RpcMessage> init_cb(
170 new remoting::pb::RpcMessage()); 170 new remoting::pb::RpcMessage());
171 init_cb->set_handle(sender_renderer_callback_handle_); 171 init_cb->set_handle(sender_renderer_callback_handle_);
172 init_cb->set_proc( 172 init_cb->set_proc(
173 remoting::pb::RpcMessage::RPC_R_INITIALIZE_CALLBACK); 173 remoting::pb::RpcMessage::RPC_R_INITIALIZE_CALLBACK);
174 init_cb->set_boolean_value(true); 174 init_cb->set_boolean_value(true);
175 remoting_controller_->GetRpcBroker()->ProcessMessageFromRemote( 175 remoting_renderer_controller_->GetRpcBroker()
176 std::move(init_cb)); 176 ->ProcessMessageFromRemote(std::move(init_cb));
177 renderer_initialized_ = true; 177 renderer_initialized_ = true;
178 } 178 }
179 179
180 } break; 180 } break;
181 case remoting::pb::RpcMessage::RPC_R_FLUSHUNTIL: { 181 case remoting::pb::RpcMessage::RPC_R_FLUSHUNTIL: {
182 // Issues RPC_R_FLUSHUNTIL_CALLBACK RPC message. 182 // Issues RPC_R_FLUSHUNTIL_CALLBACK RPC message.
183 std::unique_ptr<remoting::pb::RpcMessage> flush_cb( 183 std::unique_ptr<remoting::pb::RpcMessage> flush_cb(
184 new remoting::pb::RpcMessage()); 184 new remoting::pb::RpcMessage());
185 flush_cb->set_handle(rpc->renderer_flushuntil_rpc().callback_handle()); 185 flush_cb->set_handle(rpc->renderer_flushuntil_rpc().callback_handle());
186 flush_cb->set_proc(remoting::pb::RpcMessage::RPC_R_FLUSHUNTIL_CALLBACK); 186 flush_cb->set_proc(remoting::pb::RpcMessage::RPC_R_FLUSHUNTIL_CALLBACK);
187 remoting_controller_->GetRpcBroker()->ProcessMessageFromRemote( 187 remoting_renderer_controller_->GetRpcBroker()->ProcessMessageFromRemote(
188 std::move(flush_cb)); 188 std::move(flush_cb));
189 189
190 } break; 190 } break;
191 191
192 default: 192 default:
193 NOTREACHED(); 193 NOTREACHED();
194 } 194 }
195 RunPendingTasks(); 195 RunPendingTasks();
196 } 196 }
197 197
198 // Callback from RpcBroker when sending message to remote sink. 198 // Callback from RpcBroker when sending message to remote sink.
199 void OnSendMessageToSink(std::unique_ptr<std::vector<uint8_t>> message) { 199 void OnSendMessageToSink(std::unique_ptr<std::vector<uint8_t>> message) {
200 std::unique_ptr<remoting::pb::RpcMessage> rpc( 200 std::unique_ptr<remoting::pb::RpcMessage> rpc(
201 new remoting::pb::RpcMessage()); 201 new remoting::pb::RpcMessage());
202 ASSERT_TRUE(rpc->ParseFromArray(message->data(), message->size())); 202 ASSERT_TRUE(rpc->ParseFromArray(message->data(), message->size()));
203 received_rpc_.push_back(std::move(rpc)); 203 received_rpc_.push_back(std::move(rpc));
204 } 204 }
205 205
206 protected: 206 protected:
207 void InitializeRenderer() { 207 void InitializeRenderer() {
208 // Register media::RendererClient implementation. 208 // Register media::RendererClient implementation.
209 render_client_.reset(new RendererClientImpl()); 209 render_client_.reset(new RendererClientImpl());
210 demuxer_stream_provider_.reset(new FakeRemotingDemuxerStreamProvider()); 210 demuxer_stream_provider_.reset(new FakeRemotingDemuxerStreamProvider());
211 EXPECT_CALL(*render_client_, OnPipelineStatus(_)).Times(1); 211 EXPECT_CALL(*render_client_, OnPipelineStatus(_)).Times(1);
212 DCHECK(remote_renderer_impl_); 212 DCHECK(remote_renderer_impl_);
213 // Redirect RPC message for simulate receiver scenario 213 // Redirect RPC message for simulate receiver scenario
214 remoting_controller_->GetRpcBroker()->SetMessageCallbackForTesting( 214 remoting_renderer_controller_->GetRpcBroker()->SetMessageCallbackForTesting(
215 base::Bind(&RemoteRendererImplTest::RpcMessageResponseBot, 215 base::Bind(&RemoteRendererImplTest::RpcMessageResponseBot,
216 base::Unretained(this))); 216 base::Unretained(this)));
217 RunPendingTasks(); 217 RunPendingTasks();
218 remote_renderer_impl_->Initialize( 218 remote_renderer_impl_->Initialize(
219 demuxer_stream_provider_.get(), render_client_.get(), 219 demuxer_stream_provider_.get(), render_client_.get(),
220 base::Bind(&RendererClientImpl::OnPipelineStatus, 220 base::Bind(&RendererClientImpl::OnPipelineStatus,
221 base::Unretained(render_client_.get()))); 221 base::Unretained(render_client_.get())));
222 RunPendingTasks(); 222 RunPendingTasks();
223 // Redirect RPC message back to save for later check. 223 // Redirect RPC message back to save for later check.
224 remoting_controller_->GetRpcBroker()->SetMessageCallbackForTesting( 224 remoting_renderer_controller_->GetRpcBroker()->SetMessageCallbackForTesting(
225 base::Bind(&RemoteRendererImplTest::OnSendMessageToSink, 225 base::Bind(&RemoteRendererImplTest::OnSendMessageToSink,
226 base::Unretained(this))); 226 base::Unretained(this)));
227 RunPendingTasks(); 227 RunPendingTasks();
228 } 228 }
229 229
230 bool IsRendererInitialized() const { 230 bool IsRendererInitialized() const {
231 return remote_renderer_impl_->state_ == RemoteRendererImpl::STATE_PLAYING; 231 return remote_renderer_impl_->state_ == RemoteRendererImpl::STATE_PLAYING;
232 } 232 }
233 233
234 void OnReceivedRpc(std::unique_ptr<remoting::pb::RpcMessage> message) { 234 void OnReceivedRpc(std::unique_ptr<remoting::pb::RpcMessage> message) {
235 remote_renderer_impl_->OnReceivedRpc(std::move(message)); 235 remote_renderer_impl_->OnReceivedRpc(std::move(message));
236 } 236 }
237 237
238 void SetUp() override { 238 void SetUp() override {
239 // Creates RemotingController. 239 // Creates RemotingRendererController.
240 remoter_factory_.reset(new FakeRemoterFactory(true)); 240 remoting_renderer_controller_ =
241 remoting_controller_ = CreateRemotingController(remoter_factory_.get()); 241 base::MakeUnique<RemotingRendererController>(
242 CreateRemotingSourceImpl(false));
242 // Redirect RPC message to RemoteRendererImplTest::OnSendMessageToSink(). 243 // Redirect RPC message to RemoteRendererImplTest::OnSendMessageToSink().
243 remoting_controller_->GetRpcBroker()->SetMessageCallbackForTesting( 244 remoting_renderer_controller_->GetRpcBroker()->SetMessageCallbackForTesting(
244 base::Bind(&RemoteRendererImplTest::OnSendMessageToSink, 245 base::Bind(&RemoteRendererImplTest::OnSendMessageToSink,
245 base::Unretained(this))); 246 base::Unretained(this)));
246 247
247 // Creates RemoteRendererImpl. 248 // Creates RemoteRendererImpl.
248 remote_renderer_impl_.reset( 249 remote_renderer_impl_.reset(
249 new RemoteRendererImpl(base::ThreadTaskRunnerHandle::Get(), 250 new RemoteRendererImpl(base::ThreadTaskRunnerHandle::Get(),
250 remoting_controller_->GetWeakPtr())); 251 remoting_renderer_controller_->GetWeakPtr()));
251 RunPendingTasks(); 252 RunPendingTasks();
252 } 253 }
253 254
254 RemoteRendererImpl::State state() const { 255 RemoteRendererImpl::State state() const {
255 return remote_renderer_impl_->state_; 256 return remote_renderer_impl_->state_;
256 } 257 }
257 258
258 void RunPendingTasks() { base::RunLoop().RunUntilIdle(); } 259 void RunPendingTasks() { base::RunLoop().RunUntilIdle(); }
259 260
260 // Gets first available RpcMessage with specific |proc|. 261 // Gets first available RpcMessage with specific |proc|.
261 const remoting::pb::RpcMessage* PeekRpcMessage(int proc) const { 262 const remoting::pb::RpcMessage* PeekRpcMessage(int proc) const {
262 for (auto& s : received_rpc_) { 263 for (auto& s : received_rpc_) {
263 if (proc == s->proc()) 264 if (proc == s->proc())
264 return s.get(); 265 return s.get();
265 } 266 }
266 return nullptr; 267 return nullptr;
267 } 268 }
268 int ReceivedRpcMessageCount() const { return received_rpc_.size(); } 269 int ReceivedRpcMessageCount() const { return received_rpc_.size(); }
269 void ResetReceivedRpcMessage() { received_rpc_.clear(); } 270 void ResetReceivedRpcMessage() { received_rpc_.clear(); }
270 271
271 void ValidateCurrentTime(base::TimeDelta current, 272 void ValidateCurrentTime(base::TimeDelta current,
272 base::TimeDelta current_max) const { 273 base::TimeDelta current_max) const {
273 ASSERT_EQ(remote_renderer_impl_->current_media_time_, current); 274 ASSERT_EQ(remote_renderer_impl_->current_media_time_, current);
274 ASSERT_EQ(remote_renderer_impl_->current_max_time_, current_max); 275 ASSERT_EQ(remote_renderer_impl_->current_max_time_, current_max);
275 } 276 }
276 277
277 std::unique_ptr<FakeRemoterFactory> remoter_factory_; 278 std::unique_ptr<RemotingRendererController> remoting_renderer_controller_;
278 std::unique_ptr<RemotingController> remoting_controller_;
279 std::unique_ptr<RendererClientImpl> render_client_; 279 std::unique_ptr<RendererClientImpl> render_client_;
280 std::unique_ptr<FakeRemotingDemuxerStreamProvider> demuxer_stream_provider_; 280 std::unique_ptr<FakeRemotingDemuxerStreamProvider> demuxer_stream_provider_;
281 std::unique_ptr<RemoteRendererImpl> remote_renderer_impl_; 281 std::unique_ptr<RemoteRendererImpl> remote_renderer_impl_;
282 base::MessageLoop message_loop_; 282 base::MessageLoop message_loop_;
283 283
284 // RPC handles. 284 // RPC handles.
285 const int receiver_renderer_handle_; 285 const int receiver_renderer_handle_;
286 const int receiver_audio_demuxer_callback_handle_; 286 const int receiver_audio_demuxer_callback_handle_;
287 const int receiver_video_demuxer_callback_handle_; 287 const int receiver_video_demuxer_callback_handle_;
288 int sender_client_handle_; 288 int sender_client_handle_;
(...skipping 25 matching lines...) Expand all
314 314
315 TEST_F(RemoteRendererImplTest, Flush) { 315 TEST_F(RemoteRendererImplTest, Flush) {
316 // Initialize Renderer. 316 // Initialize Renderer.
317 InitializeRenderer(); 317 InitializeRenderer();
318 RunPendingTasks(); 318 RunPendingTasks();
319 ASSERT_TRUE(IsRendererInitialized()); 319 ASSERT_TRUE(IsRendererInitialized());
320 ASSERT_EQ(render_client_->status(), PIPELINE_OK); 320 ASSERT_EQ(render_client_->status(), PIPELINE_OK);
321 321
322 // Flush Renderer. 322 // Flush Renderer.
323 // Redirect RPC message for simulate receiver scenario 323 // Redirect RPC message for simulate receiver scenario
324 remoting_controller_->GetRpcBroker()->SetMessageCallbackForTesting(base::Bind( 324 remoting_renderer_controller_->GetRpcBroker()->SetMessageCallbackForTesting(
325 &RemoteRendererImplTest::RpcMessageResponseBot, base::Unretained(this))); 325 base::Bind(&RemoteRendererImplTest::RpcMessageResponseBot,
326 base::Unretained(this)));
326 RunPendingTasks(); 327 RunPendingTasks();
327 EXPECT_CALL(*render_client_, OnFlushCallback()).Times(1); 328 EXPECT_CALL(*render_client_, OnFlushCallback()).Times(1);
328 remote_renderer_impl_->Flush( 329 remote_renderer_impl_->Flush(
329 base::Bind(&RendererClientImpl::OnFlushCallback, 330 base::Bind(&RendererClientImpl::OnFlushCallback,
330 base::Unretained(render_client_.get()))); 331 base::Unretained(render_client_.get())));
331 RunPendingTasks(); 332 RunPendingTasks();
332 } 333 }
333 334
334 TEST_F(RemoteRendererImplTest, StartPlayingFrom) { 335 TEST_F(RemoteRendererImplTest, StartPlayingFrom) {
335 // Initialize Renderer 336 // Initialize Renderer
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
369 TEST_F(RemoteRendererImplTest, SetPlaybackRate) { 370 TEST_F(RemoteRendererImplTest, SetPlaybackRate) {
370 // Without initializing renderer, SetPlaybackRate() will be no-op. 371 // Without initializing renderer, SetPlaybackRate() will be no-op.
371 remote_renderer_impl_->SetPlaybackRate(-1.5); 372 remote_renderer_impl_->SetPlaybackRate(-1.5);
372 RunPendingTasks(); 373 RunPendingTasks();
373 ASSERT_EQ(0, ReceivedRpcMessageCount()); 374 ASSERT_EQ(0, ReceivedRpcMessageCount());
374 375
375 // Initialize Renderer 376 // Initialize Renderer
376 InitializeRenderer(); 377 InitializeRenderer();
377 RunPendingTasks(); 378 RunPendingTasks();
378 379
379 remoting_controller_->GetRpcBroker()->SetMessageCallbackForTesting(base::Bind( 380 remoting_renderer_controller_->GetRpcBroker()->SetMessageCallbackForTesting(
380 &RemoteRendererImplTest::OnSendMessageToSink, base::Unretained(this))); 381 base::Bind(&RemoteRendererImplTest::OnSendMessageToSink,
382 base::Unretained(this)));
381 remote_renderer_impl_->SetPlaybackRate(2.5); 383 remote_renderer_impl_->SetPlaybackRate(2.5);
382 RunPendingTasks(); 384 RunPendingTasks();
383 ASSERT_EQ(1, ReceivedRpcMessageCount()); 385 ASSERT_EQ(1, ReceivedRpcMessageCount());
384 // Checks if it sends out RPC message with correct value. 386 // Checks if it sends out RPC message with correct value.
385 const remoting::pb::RpcMessage* rpc = 387 const remoting::pb::RpcMessage* rpc =
386 PeekRpcMessage(remoting::pb::RpcMessage::RPC_R_SETPLAYBACKRATE); 388 PeekRpcMessage(remoting::pb::RpcMessage::RPC_R_SETPLAYBACKRATE);
387 ASSERT_TRUE(rpc); 389 ASSERT_TRUE(rpc);
388 ASSERT_TRUE(rpc->double_value() == 2.5); 390 ASSERT_TRUE(rpc->double_value() == 2.5);
389 } 391 }
390 392
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
538 // Issues RPC_RC_ONDURATIONCHANGE RPC message. 540 // Issues RPC_RC_ONDURATIONCHANGE RPC message.
539 EXPECT_CALL(*render_client_, OnDurationChange(_)).Times(0); 541 EXPECT_CALL(*render_client_, OnDurationChange(_)).Times(0);
540 std::unique_ptr<remoting::pb::RpcMessage> rpc(new remoting::pb::RpcMessage()); 542 std::unique_ptr<remoting::pb::RpcMessage> rpc(new remoting::pb::RpcMessage());
541 rpc->set_handle(5); 543 rpc->set_handle(5);
542 rpc->set_proc(remoting::pb::RpcMessage::RPC_RC_ONDURATIONCHANGE); 544 rpc->set_proc(remoting::pb::RpcMessage::RPC_RC_ONDURATIONCHANGE);
543 rpc->set_integer64_value(-345); 545 rpc->set_integer64_value(-345);
544 OnReceivedRpc(std::move(rpc)); 546 OnReceivedRpc(std::move(rpc));
545 RunPendingTasks(); 547 RunPendingTasks();
546 } 548 }
547 } // namespace media 549 } // namespace media
OLDNEW
« no previous file with comments | « media/remoting/remote_renderer_impl.cc ('k') | media/remoting/remoting_cdm.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698