OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "content/browser/android/synchronous_compositor_host.h" | 5 #include "content/browser/android/synchronous_compositor_host.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/containers/hash_tables.h" | 10 #include "base/containers/hash_tables.h" |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
68 bool async_input, | 68 bool async_input, |
69 bool use_in_proc_software_draw) | 69 bool use_in_proc_software_draw) |
70 : rwhva_(rwhva), | 70 : rwhva_(rwhva), |
71 client_(client), | 71 client_(client), |
72 ui_task_runner_( | 72 ui_task_runner_( |
73 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI)), | 73 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI)), |
74 routing_id_(rwhva_->GetRenderWidgetHost()->GetRoutingID()), | 74 routing_id_(rwhva_->GetRenderWidgetHost()->GetRoutingID()), |
75 sender_(rwhva_->GetRenderWidgetHost()), | 75 sender_(rwhva_->GetRenderWidgetHost()), |
76 async_input_(async_input), | 76 async_input_(async_input), |
77 use_in_process_zero_copy_software_draw_(use_in_proc_software_draw), | 77 use_in_process_zero_copy_software_draw_(use_in_proc_software_draw), |
78 is_active_(false), | |
79 bytes_limit_(0u), | 78 bytes_limit_(0u), |
80 renderer_param_version_(0u), | 79 renderer_param_version_(0u), |
81 need_animate_scroll_(false), | 80 need_animate_scroll_(false), |
82 need_invalidate_count_(0u), | 81 need_invalidate_count_(0u), |
83 need_begin_frame_(false), | 82 did_activate_pending_tree_count_(0u) { |
84 did_activate_pending_tree_count_(0u), | |
85 weak_ptr_factory_(this) { | |
86 client_->DidInitializeCompositor(this); | 83 client_->DidInitializeCompositor(this); |
87 } | 84 } |
88 | 85 |
89 SynchronousCompositorHost::~SynchronousCompositorHost() { | 86 SynchronousCompositorHost::~SynchronousCompositorHost() { |
90 client_->DidDestroyCompositor(this); | 87 client_->DidDestroyCompositor(this); |
91 if (weak_ptr_factory_.HasWeakPtrs()) | |
92 UpdateStateTask(); | |
93 } | 88 } |
94 | 89 |
95 bool SynchronousCompositorHost::OnMessageReceived(const IPC::Message& message) { | 90 bool SynchronousCompositorHost::OnMessageReceived(const IPC::Message& message) { |
96 bool handled = true; | 91 bool handled = true; |
97 IPC_BEGIN_MESSAGE_MAP(SynchronousCompositorHost, message) | 92 IPC_BEGIN_MESSAGE_MAP(SynchronousCompositorHost, message) |
98 IPC_MESSAGE_HANDLER(SyncCompositorHostMsg_OutputSurfaceCreated, | 93 IPC_MESSAGE_HANDLER(SyncCompositorHostMsg_OutputSurfaceCreated, |
99 OutputSurfaceCreated) | 94 OutputSurfaceCreated) |
100 IPC_MESSAGE_HANDLER(SyncCompositorHostMsg_UpdateState, ProcessCommonParams) | 95 IPC_MESSAGE_HANDLER(SyncCompositorHostMsg_UpdateState, ProcessCommonParams) |
101 IPC_MESSAGE_HANDLER(SyncCompositorHostMsg_OverScroll, OnOverScroll) | 96 IPC_MESSAGE_HANDLER(SyncCompositorHostMsg_OverScroll, OnOverScroll) |
102 IPC_MESSAGE_UNHANDLED(handled = false) | 97 IPC_MESSAGE_UNHANDLED(handled = false) |
(...skipping 10 matching lines...) Expand all Loading... |
113 const gfx::Transform& transform, | 108 const gfx::Transform& transform, |
114 const gfx::Rect& viewport, | 109 const gfx::Rect& viewport, |
115 const gfx::Rect& clip, | 110 const gfx::Rect& clip, |
116 const gfx::Rect& viewport_rect_for_tile_priority, | 111 const gfx::Rect& viewport_rect_for_tile_priority, |
117 const gfx::Transform& transform_for_tile_priority) { | 112 const gfx::Transform& transform_for_tile_priority) { |
118 SyncCompositorDemandDrawHwParams params(surface_size, transform, viewport, | 113 SyncCompositorDemandDrawHwParams params(surface_size, transform, viewport, |
119 clip, viewport_rect_for_tile_priority, | 114 clip, viewport_rect_for_tile_priority, |
120 transform_for_tile_priority); | 115 transform_for_tile_priority); |
121 SynchronousCompositor::Frame frame; | 116 SynchronousCompositor::Frame frame; |
122 frame.frame.reset(new cc::CompositorFrame); | 117 frame.frame.reset(new cc::CompositorFrame); |
123 SyncCompositorCommonBrowserParams common_browser_params; | |
124 PopulateCommonParams(&common_browser_params); | |
125 SyncCompositorCommonRendererParams common_renderer_params; | 118 SyncCompositorCommonRendererParams common_renderer_params; |
126 if (!sender_->Send(new SyncCompositorMsg_DemandDrawHw( | 119 if (!sender_->Send(new SyncCompositorMsg_DemandDrawHw( |
127 routing_id_, common_browser_params, params, &common_renderer_params, | 120 routing_id_, params, &common_renderer_params, |
128 &frame.output_surface_id, frame.frame.get()))) { | 121 &frame.output_surface_id, frame.frame.get()))) { |
129 return SynchronousCompositor::Frame(); | 122 return SynchronousCompositor::Frame(); |
130 } | 123 } |
131 ProcessCommonParams(common_renderer_params); | 124 ProcessCommonParams(common_renderer_params); |
132 if (!frame.frame->delegated_frame_data) { | 125 if (!frame.frame->delegated_frame_data) { |
133 // This can happen if compositor did not swap in this draw. | 126 // This can happen if compositor did not swap in this draw. |
134 frame.frame.reset(); | 127 frame.frame.reset(); |
135 } | 128 } |
136 if (frame.frame) { | 129 if (frame.frame) { |
137 UpdateFrameMetaData(frame.frame->metadata); | 130 UpdateFrameMetaData(frame.frame->metadata); |
(...skipping 18 matching lines...) Expand all Loading... |
156 SynchronousCompositorSetSkCanvas(nullptr); | 149 SynchronousCompositorSetSkCanvas(nullptr); |
157 } | 150 } |
158 | 151 |
159 private: | 152 private: |
160 DISALLOW_COPY_AND_ASSIGN(ScopedSetSkCanvas); | 153 DISALLOW_COPY_AND_ASSIGN(ScopedSetSkCanvas); |
161 }; | 154 }; |
162 | 155 |
163 } | 156 } |
164 | 157 |
165 bool SynchronousCompositorHost::DemandDrawSwInProc(SkCanvas* canvas) { | 158 bool SynchronousCompositorHost::DemandDrawSwInProc(SkCanvas* canvas) { |
166 SyncCompositorCommonBrowserParams common_browser_params; | |
167 PopulateCommonParams(&common_browser_params); | |
168 SyncCompositorCommonRendererParams common_renderer_params; | 159 SyncCompositorCommonRendererParams common_renderer_params; |
169 bool success = false; | 160 bool success = false; |
170 std::unique_ptr<cc::CompositorFrame> frame(new cc::CompositorFrame); | 161 std::unique_ptr<cc::CompositorFrame> frame(new cc::CompositorFrame); |
171 ScopedSetSkCanvas set_sk_canvas(canvas); | 162 ScopedSetSkCanvas set_sk_canvas(canvas); |
172 SyncCompositorDemandDrawSwParams params; // Unused. | 163 SyncCompositorDemandDrawSwParams params; // Unused. |
173 if (!sender_->Send(new SyncCompositorMsg_DemandDrawSw( | 164 if (!sender_->Send(new SyncCompositorMsg_DemandDrawSw( |
174 routing_id_, common_browser_params, params, &success, | 165 routing_id_, params, &success, &common_renderer_params, |
175 &common_renderer_params, frame.get()))) { | 166 frame.get()))) { |
176 return false; | 167 return false; |
177 } | 168 } |
178 if (!success) | 169 if (!success) |
179 return false; | 170 return false; |
180 ProcessCommonParams(common_renderer_params); | 171 ProcessCommonParams(common_renderer_params); |
181 UpdateFrameMetaData(frame->metadata); | 172 UpdateFrameMetaData(frame->metadata); |
182 return true; | 173 return true; |
183 } | 174 } |
184 | 175 |
185 class SynchronousCompositorHost::ScopedSendZeroMemory { | 176 class SynchronousCompositorHost::ScopedSendZeroMemory { |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
225 size_t stride = info.minRowBytes(); | 216 size_t stride = info.minRowBytes(); |
226 size_t buffer_size = info.getSafeSize(stride); | 217 size_t buffer_size = info.getSafeSize(stride); |
227 if (!buffer_size) | 218 if (!buffer_size) |
228 return false; // Overflow. | 219 return false; // Overflow. |
229 | 220 |
230 SetSoftwareDrawSharedMemoryIfNeeded(stride, buffer_size); | 221 SetSoftwareDrawSharedMemoryIfNeeded(stride, buffer_size); |
231 if (!software_draw_shm_) | 222 if (!software_draw_shm_) |
232 return false; | 223 return false; |
233 | 224 |
234 std::unique_ptr<cc::CompositorFrame> frame(new cc::CompositorFrame); | 225 std::unique_ptr<cc::CompositorFrame> frame(new cc::CompositorFrame); |
235 SyncCompositorCommonBrowserParams common_browser_params; | |
236 PopulateCommonParams(&common_browser_params); | |
237 SyncCompositorCommonRendererParams common_renderer_params; | 226 SyncCompositorCommonRendererParams common_renderer_params; |
238 bool success = false; | 227 bool success = false; |
239 if (!sender_->Send(new SyncCompositorMsg_DemandDrawSw( | 228 if (!sender_->Send(new SyncCompositorMsg_DemandDrawSw( |
240 routing_id_, common_browser_params, params, &success, | 229 routing_id_, params, &success, &common_renderer_params, |
241 &common_renderer_params, frame.get()))) { | 230 frame.get()))) { |
242 return false; | 231 return false; |
243 } | 232 } |
244 ScopedSendZeroMemory send_zero_memory(this); | 233 ScopedSendZeroMemory send_zero_memory(this); |
245 if (!success) | 234 if (!success) |
246 return false; | 235 return false; |
247 | 236 |
248 ProcessCommonParams(common_renderer_params); | 237 ProcessCommonParams(common_renderer_params); |
249 UpdateFrameMetaData(frame->metadata); | 238 UpdateFrameMetaData(frame->metadata); |
250 | 239 |
251 SkBitmap bitmap; | 240 SkBitmap bitmap; |
(...skipping 28 matching lines...) Expand all Loading... |
280 | 269 |
281 SyncCompositorSetSharedMemoryParams set_shm_params; | 270 SyncCompositorSetSharedMemoryParams set_shm_params; |
282 set_shm_params.buffer_size = buffer_size; | 271 set_shm_params.buffer_size = buffer_size; |
283 base::ProcessHandle renderer_process_handle = | 272 base::ProcessHandle renderer_process_handle = |
284 rwhva_->GetRenderWidgetHost()->GetProcess()->GetHandle(); | 273 rwhva_->GetRenderWidgetHost()->GetProcess()->GetHandle(); |
285 if (!software_draw_shm->shm.ShareToProcess(renderer_process_handle, | 274 if (!software_draw_shm->shm.ShareToProcess(renderer_process_handle, |
286 &set_shm_params.shm_handle)) { | 275 &set_shm_params.shm_handle)) { |
287 return; | 276 return; |
288 } | 277 } |
289 | 278 |
290 SyncCompositorCommonBrowserParams common_browser_params; | |
291 PopulateCommonParams(&common_browser_params); | |
292 bool success = false; | 279 bool success = false; |
293 SyncCompositorCommonRendererParams common_renderer_params; | 280 SyncCompositorCommonRendererParams common_renderer_params; |
294 if (!sender_->Send(new SyncCompositorMsg_SetSharedMemory( | 281 if (!sender_->Send(new SyncCompositorMsg_SetSharedMemory( |
295 routing_id_, common_browser_params, set_shm_params, &success, | 282 routing_id_, set_shm_params, &success, &common_renderer_params)) || |
296 &common_renderer_params)) || | |
297 !success) { | 283 !success) { |
298 return; | 284 return; |
299 } | 285 } |
300 software_draw_shm_ = std::move(software_draw_shm); | 286 software_draw_shm_ = std::move(software_draw_shm); |
301 ProcessCommonParams(common_renderer_params); | 287 ProcessCommonParams(common_renderer_params); |
302 } | 288 } |
303 | 289 |
304 void SynchronousCompositorHost::SendZeroMemory() { | 290 void SynchronousCompositorHost::SendZeroMemory() { |
305 // No need to check return value. | 291 // No need to check return value. |
306 sender_->Send(new SyncCompositorMsg_ZeroSharedMemory(routing_id_)); | 292 sender_->Send(new SyncCompositorMsg_ZeroSharedMemory(routing_id_)); |
(...skipping 19 matching lines...) Expand all Loading... |
326 | 312 |
327 void SynchronousCompositorHost::DidChangeRootLayerScrollOffset( | 313 void SynchronousCompositorHost::DidChangeRootLayerScrollOffset( |
328 const gfx::ScrollOffset& root_offset) { | 314 const gfx::ScrollOffset& root_offset) { |
329 if (root_scroll_offset_ == root_offset) | 315 if (root_scroll_offset_ == root_offset) |
330 return; | 316 return; |
331 root_scroll_offset_ = root_offset; | 317 root_scroll_offset_ = root_offset; |
332 sender_->Send( | 318 sender_->Send( |
333 new SyncCompositorMsg_SetScroll(routing_id_, root_scroll_offset_)); | 319 new SyncCompositorMsg_SetScroll(routing_id_, root_scroll_offset_)); |
334 } | 320 } |
335 | 321 |
336 void SynchronousCompositorHost::SendAsyncCompositorStateIfNeeded() { | |
337 if (weak_ptr_factory_.HasWeakPtrs()) | |
338 return; | |
339 | |
340 ui_task_runner_->PostTask( | |
341 FROM_HERE, base::Bind(&SynchronousCompositorHost::UpdateStateTask, | |
342 weak_ptr_factory_.GetWeakPtr())); | |
343 } | |
344 | |
345 void SynchronousCompositorHost::UpdateStateTask() { | |
346 SyncCompositorCommonBrowserParams common_browser_params; | |
347 PopulateCommonParams(&common_browser_params); | |
348 sender_->Send( | |
349 new SyncCompositorMsg_UpdateState(routing_id_, common_browser_params)); | |
350 DCHECK(!weak_ptr_factory_.HasWeakPtrs()); | |
351 } | |
352 | |
353 void SynchronousCompositorHost::SynchronouslyZoomBy(float zoom_delta, | 322 void SynchronousCompositorHost::SynchronouslyZoomBy(float zoom_delta, |
354 const gfx::Point& anchor) { | 323 const gfx::Point& anchor) { |
355 SyncCompositorCommonBrowserParams common_browser_params; | |
356 PopulateCommonParams(&common_browser_params); | |
357 SyncCompositorCommonRendererParams common_renderer_params; | 324 SyncCompositorCommonRendererParams common_renderer_params; |
358 if (!sender_->Send(new SyncCompositorMsg_ZoomBy( | 325 if (!sender_->Send(new SyncCompositorMsg_ZoomBy( |
359 routing_id_, common_browser_params, zoom_delta, anchor, | 326 routing_id_, zoom_delta, anchor, &common_renderer_params))) { |
360 &common_renderer_params))) { | |
361 return; | 327 return; |
362 } | 328 } |
363 ProcessCommonParams(common_renderer_params); | 329 ProcessCommonParams(common_renderer_params); |
364 } | 330 } |
365 | 331 |
366 void SynchronousCompositorHost::SetIsActive(bool is_active) { | |
367 if (is_active_ == is_active) | |
368 return; | |
369 is_active_ = is_active; | |
370 UpdateNeedsBeginFrames(); | |
371 SendAsyncCompositorStateIfNeeded(); | |
372 } | |
373 | |
374 void SynchronousCompositorHost::OnComputeScroll( | 332 void SynchronousCompositorHost::OnComputeScroll( |
375 base::TimeTicks animation_time) { | 333 base::TimeTicks animation_time) { |
376 if (!need_animate_scroll_) | 334 if (!need_animate_scroll_) |
377 return; | 335 return; |
378 need_animate_scroll_ = false; | 336 need_animate_scroll_ = false; |
379 | 337 |
380 SyncCompositorCommonBrowserParams common_browser_params; | |
381 PopulateCommonParams(&common_browser_params); | |
382 SyncCompositorCommonRendererParams common_renderer_params; | 338 SyncCompositorCommonRendererParams common_renderer_params; |
383 sender_->Send(new SyncCompositorMsg_ComputeScroll( | 339 sender_->Send( |
384 routing_id_, common_browser_params, animation_time)); | 340 new SyncCompositorMsg_ComputeScroll(routing_id_, animation_time)); |
385 } | 341 } |
386 | 342 |
387 InputEventAckState SynchronousCompositorHost::HandleInputEvent( | 343 InputEventAckState SynchronousCompositorHost::HandleInputEvent( |
388 const blink::WebInputEvent& input_event) { | 344 const blink::WebInputEvent& input_event) { |
389 if (async_input_) | 345 if (async_input_) |
390 return INPUT_EVENT_ACK_STATE_NOT_CONSUMED; | 346 return INPUT_EVENT_ACK_STATE_NOT_CONSUMED; |
391 SyncCompositorCommonBrowserParams common_browser_params; | |
392 PopulateCommonParams(&common_browser_params); | |
393 SyncCompositorCommonRendererParams common_renderer_params; | 347 SyncCompositorCommonRendererParams common_renderer_params; |
394 InputEventAckState ack = INPUT_EVENT_ACK_STATE_NOT_CONSUMED; | 348 InputEventAckState ack = INPUT_EVENT_ACK_STATE_NOT_CONSUMED; |
395 if (!sender_->Send(new SyncCompositorMsg_HandleInputEvent( | 349 if (!sender_->Send(new SyncCompositorMsg_HandleInputEvent( |
396 routing_id_, common_browser_params, &input_event, | 350 routing_id_, &input_event, &common_renderer_params, &ack))) { |
397 &common_renderer_params, &ack))) { | |
398 return INPUT_EVENT_ACK_STATE_NOT_CONSUMED; | 351 return INPUT_EVENT_ACK_STATE_NOT_CONSUMED; |
399 } | 352 } |
400 ProcessCommonParams(common_renderer_params); | 353 ProcessCommonParams(common_renderer_params); |
401 return ack; | 354 return ack; |
402 } | 355 } |
403 | 356 |
404 void SynchronousCompositorHost::DidOverscroll( | 357 void SynchronousCompositorHost::DidOverscroll( |
405 const DidOverscrollParams& over_scroll_params) { | 358 const DidOverscrollParams& over_scroll_params) { |
406 client_->DidOverscroll(over_scroll_params.accumulated_overscroll, | 359 client_->DidOverscroll(over_scroll_params.accumulated_overscroll, |
407 over_scroll_params.latest_overscroll_delta, | 360 over_scroll_params.latest_overscroll_delta, |
408 over_scroll_params.current_fling_velocity); | 361 over_scroll_params.current_fling_velocity); |
409 } | 362 } |
410 | 363 |
411 void SynchronousCompositorHost::BeginFrame(const cc::BeginFrameArgs& args) { | 364 void SynchronousCompositorHost::DidSendBeginFrame() { |
412 if (!is_active_) | |
413 return; | |
414 | |
415 SyncCompositorCommonBrowserParams common_browser_params; | |
416 PopulateCommonParams(&common_browser_params); | |
417 SyncCompositorCommonRendererParams common_renderer_params; | 365 SyncCompositorCommonRendererParams common_renderer_params; |
418 if (!sender_->Send( | 366 if (!sender_->Send(new SyncCompositorMsg_SynchronizeRendererState( |
419 new SyncCompositorMsg_BeginFrame(routing_id_, common_browser_params, | 367 routing_id_, &common_renderer_params))) { |
420 args, &common_renderer_params))) { | |
421 return; | 368 return; |
422 } | 369 } |
423 ProcessCommonParams(common_renderer_params); | 370 ProcessCommonParams(common_renderer_params); |
424 } | 371 } |
425 | 372 |
426 void SynchronousCompositorHost::OutputSurfaceCreated() { | 373 void SynchronousCompositorHost::OutputSurfaceCreated() { |
427 // New output surface is not aware of state from Browser side. So need to | 374 // New output surface is not aware of state from Browser side. So need to |
428 // re-send all browser side state here. | 375 // re-send all browser side state here. |
429 sender_->Send( | 376 sender_->Send( |
430 new SyncCompositorMsg_SetMemoryPolicy(routing_id_, bytes_limit_)); | 377 new SyncCompositorMsg_SetMemoryPolicy(routing_id_, bytes_limit_)); |
431 } | 378 } |
432 | 379 |
433 void SynchronousCompositorHost::OnOverScroll( | 380 void SynchronousCompositorHost::OnOverScroll( |
434 const SyncCompositorCommonRendererParams& params, | 381 const SyncCompositorCommonRendererParams& params, |
435 const DidOverscrollParams& over_scroll_params) { | 382 const DidOverscrollParams& over_scroll_params) { |
436 ProcessCommonParams(params); | 383 ProcessCommonParams(params); |
437 DidOverscroll(over_scroll_params); | 384 DidOverscroll(over_scroll_params); |
438 } | 385 } |
439 | 386 |
440 void SynchronousCompositorHost::PopulateCommonParams( | |
441 SyncCompositorCommonBrowserParams* params) { | |
442 DCHECK(params); | |
443 params->begin_frame_source_paused = !is_active_; | |
444 | |
445 weak_ptr_factory_.InvalidateWeakPtrs(); | |
446 } | |
447 | |
448 void SynchronousCompositorHost::ProcessCommonParams( | 387 void SynchronousCompositorHost::ProcessCommonParams( |
449 const SyncCompositorCommonRendererParams& params) { | 388 const SyncCompositorCommonRendererParams& params) { |
450 // Ignore if |renderer_param_version_| is newer than |params.version|. This | 389 // Ignore if |renderer_param_version_| is newer than |params.version|. This |
451 // comparison takes into account when the unsigned int wraps. | 390 // comparison takes into account when the unsigned int wraps. |
452 if ((renderer_param_version_ - params.version) < 0x80000000) { | 391 if ((renderer_param_version_ - params.version) < 0x80000000) { |
453 return; | 392 return; |
454 } | 393 } |
455 renderer_param_version_ = params.version; | 394 renderer_param_version_ = params.version; |
456 need_animate_scroll_ = params.need_animate_scroll; | 395 need_animate_scroll_ = params.need_animate_scroll; |
457 if (need_begin_frame_ != params.need_begin_frame) { | |
458 need_begin_frame_ = params.need_begin_frame; | |
459 UpdateNeedsBeginFrames(); | |
460 } | |
461 root_scroll_offset_ = params.total_scroll_offset; | 396 root_scroll_offset_ = params.total_scroll_offset; |
462 | 397 |
463 if (need_invalidate_count_ != params.need_invalidate_count) { | 398 if (need_invalidate_count_ != params.need_invalidate_count) { |
464 need_invalidate_count_ = params.need_invalidate_count; | 399 need_invalidate_count_ = params.need_invalidate_count; |
465 client_->PostInvalidate(); | 400 client_->PostInvalidate(); |
466 } | 401 } |
467 | 402 |
468 if (did_activate_pending_tree_count_ != | 403 if (did_activate_pending_tree_count_ != |
469 params.did_activate_pending_tree_count) { | 404 params.did_activate_pending_tree_count) { |
470 did_activate_pending_tree_count_ = params.did_activate_pending_tree_count; | 405 did_activate_pending_tree_count_ = params.did_activate_pending_tree_count; |
471 client_->DidUpdateContent(); | 406 client_->DidUpdateContent(); |
472 } | 407 } |
473 | 408 |
474 // Ensure only valid values from compositor are sent to client. | 409 // Ensure only valid values from compositor are sent to client. |
475 // Compositor has page_scale_factor set to 0 before initialization, so check | 410 // Compositor has page_scale_factor set to 0 before initialization, so check |
476 // for that case here. | 411 // for that case here. |
477 if (params.page_scale_factor) { | 412 if (params.page_scale_factor) { |
478 client_->UpdateRootLayerState( | 413 client_->UpdateRootLayerState( |
479 gfx::ScrollOffsetToVector2dF(params.total_scroll_offset), | 414 gfx::ScrollOffsetToVector2dF(params.total_scroll_offset), |
480 gfx::ScrollOffsetToVector2dF(params.max_scroll_offset), | 415 gfx::ScrollOffsetToVector2dF(params.max_scroll_offset), |
481 params.scrollable_size, params.page_scale_factor, | 416 params.scrollable_size, params.page_scale_factor, |
482 params.min_page_scale_factor, params.max_page_scale_factor); | 417 params.min_page_scale_factor, params.max_page_scale_factor); |
483 } | 418 } |
484 } | 419 } |
485 | 420 |
486 void SynchronousCompositorHost::UpdateNeedsBeginFrames() { | |
487 rwhva_->OnSetNeedsBeginFrames(is_active_ && need_begin_frame_); | |
488 } | |
489 | |
490 } // namespace content | 421 } // namespace content |
OLD | NEW |