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/containers/hash_tables.h" | 9 #include "base/containers/hash_tables.h" |
10 #include "base/memory/shared_memory.h" | 10 #include "base/memory/shared_memory.h" |
(...skipping 12 matching lines...) Expand all Loading... |
23 #include "third_party/skia/include/core/SkCanvas.h" | 23 #include "third_party/skia/include/core/SkCanvas.h" |
24 #include "third_party/skia/include/core/SkImageInfo.h" | 24 #include "third_party/skia/include/core/SkImageInfo.h" |
25 #include "third_party/skia/include/core/SkRect.h" | 25 #include "third_party/skia/include/core/SkRect.h" |
26 #include "ui/gfx/skia_util.h" | 26 #include "ui/gfx/skia_util.h" |
27 | 27 |
28 namespace content { | 28 namespace content { |
29 | 29 |
30 SynchronousCompositorHost::SynchronousCompositorHost( | 30 SynchronousCompositorHost::SynchronousCompositorHost( |
31 RenderWidgetHostViewAndroid* rwhva, | 31 RenderWidgetHostViewAndroid* rwhva, |
32 SynchronousCompositorClient* client, | 32 SynchronousCompositorClient* client, |
| 33 bool async_input, |
33 bool use_in_proc_software_draw) | 34 bool use_in_proc_software_draw) |
34 : rwhva_(rwhva), | 35 : rwhva_(rwhva), |
35 client_(client), | 36 client_(client), |
36 ui_task_runner_( | 37 ui_task_runner_( |
37 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI)), | 38 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI)), |
38 routing_id_(rwhva_->GetRenderWidgetHost()->GetRoutingID()), | 39 routing_id_(rwhva_->GetRenderWidgetHost()->GetRoutingID()), |
39 sender_(rwhva_->GetRenderWidgetHost()), | 40 sender_(rwhva_->GetRenderWidgetHost()), |
| 41 async_input_(async_input), |
40 use_in_process_zero_copy_software_draw_(use_in_proc_software_draw), | 42 use_in_process_zero_copy_software_draw_(use_in_proc_software_draw), |
41 is_active_(false), | 43 is_active_(false), |
42 bytes_limit_(0u), | 44 bytes_limit_(0u), |
43 root_scroll_offset_updated_by_browser_(false), | 45 root_scroll_offset_updated_by_browser_(false), |
44 renderer_param_version_(0u), | 46 renderer_param_version_(0u), |
45 need_animate_scroll_(false), | 47 need_animate_scroll_(false), |
46 need_invalidate_count_(0u), | 48 need_invalidate_count_(0u), |
47 need_begin_frame_(false), | 49 need_begin_frame_(false), |
48 did_activate_pending_tree_count_(0u), | 50 did_activate_pending_tree_count_(0u), |
49 weak_ptr_factory_(this) { | 51 weak_ptr_factory_(this) { |
(...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
331 | 333 |
332 SyncCompositorCommonBrowserParams common_browser_params; | 334 SyncCompositorCommonBrowserParams common_browser_params; |
333 PopulateCommonParams(&common_browser_params); | 335 PopulateCommonParams(&common_browser_params); |
334 SyncCompositorCommonRendererParams common_renderer_params; | 336 SyncCompositorCommonRendererParams common_renderer_params; |
335 sender_->Send(new SyncCompositorMsg_ComputeScroll( | 337 sender_->Send(new SyncCompositorMsg_ComputeScroll( |
336 routing_id_, common_browser_params, animation_time)); | 338 routing_id_, common_browser_params, animation_time)); |
337 } | 339 } |
338 | 340 |
339 InputEventAckState SynchronousCompositorHost::HandleInputEvent( | 341 InputEventAckState SynchronousCompositorHost::HandleInputEvent( |
340 const blink::WebInputEvent& input_event) { | 342 const blink::WebInputEvent& input_event) { |
| 343 if (async_input_) |
| 344 return INPUT_EVENT_ACK_STATE_NOT_CONSUMED; |
341 SyncCompositorCommonBrowserParams common_browser_params; | 345 SyncCompositorCommonBrowserParams common_browser_params; |
342 PopulateCommonParams(&common_browser_params); | 346 PopulateCommonParams(&common_browser_params); |
343 SyncCompositorCommonRendererParams common_renderer_params; | 347 SyncCompositorCommonRendererParams common_renderer_params; |
344 InputEventAckState ack = INPUT_EVENT_ACK_STATE_NOT_CONSUMED; | 348 InputEventAckState ack = INPUT_EVENT_ACK_STATE_NOT_CONSUMED; |
345 if (!sender_->Send(new SyncCompositorMsg_HandleInputEvent( | 349 if (!sender_->Send(new SyncCompositorMsg_HandleInputEvent( |
346 routing_id_, common_browser_params, &input_event, | 350 routing_id_, common_browser_params, &input_event, |
347 &common_renderer_params, &ack))) { | 351 &common_renderer_params, &ack))) { |
348 return INPUT_EVENT_ACK_STATE_NOT_CONSUMED; | 352 return INPUT_EVENT_ACK_STATE_NOT_CONSUMED; |
349 } | 353 } |
350 ProcessCommonParams(common_renderer_params); | 354 ProcessCommonParams(common_renderer_params); |
351 return ack; | 355 return ack; |
352 } | 356 } |
353 | 357 |
| 358 void SynchronousCompositorHost::DidOverscroll( |
| 359 const DidOverscrollParams& over_scroll_params) { |
| 360 client_->DidOverscroll(over_scroll_params.accumulated_overscroll, |
| 361 over_scroll_params.latest_overscroll_delta, |
| 362 over_scroll_params.current_fling_velocity); |
| 363 } |
| 364 |
354 void SynchronousCompositorHost::BeginFrame(const cc::BeginFrameArgs& args) { | 365 void SynchronousCompositorHost::BeginFrame(const cc::BeginFrameArgs& args) { |
355 if (!is_active_ || !need_begin_frame_) | 366 if (!is_active_) |
356 return; | 367 return; |
357 | 368 |
358 SyncCompositorCommonBrowserParams common_browser_params; | 369 SyncCompositorCommonBrowserParams common_browser_params; |
359 PopulateCommonParams(&common_browser_params); | 370 PopulateCommonParams(&common_browser_params); |
360 SyncCompositorCommonRendererParams common_renderer_params; | 371 SyncCompositorCommonRendererParams common_renderer_params; |
361 if (!sender_->Send( | 372 if (!sender_->Send( |
362 new SyncCompositorMsg_BeginFrame(routing_id_, common_browser_params, | 373 new SyncCompositorMsg_BeginFrame(routing_id_, common_browser_params, |
363 args, &common_renderer_params))) { | 374 args, &common_renderer_params))) { |
364 return; | 375 return; |
365 } | 376 } |
366 ProcessCommonParams(common_renderer_params); | 377 ProcessCommonParams(common_renderer_params); |
367 } | 378 } |
368 | 379 |
369 void SynchronousCompositorHost::OnOverScroll( | 380 void SynchronousCompositorHost::OnOverScroll( |
370 const SyncCompositorCommonRendererParams& params, | 381 const SyncCompositorCommonRendererParams& params, |
371 const DidOverscrollParams& over_scroll_params) { | 382 const DidOverscrollParams& over_scroll_params) { |
372 ProcessCommonParams(params); | 383 ProcessCommonParams(params); |
373 client_->DidOverscroll(over_scroll_params.accumulated_overscroll, | 384 DidOverscroll(over_scroll_params); |
374 over_scroll_params.latest_overscroll_delta, | |
375 over_scroll_params.current_fling_velocity); | |
376 } | 385 } |
377 | 386 |
378 void SynchronousCompositorHost::PopulateCommonParams( | 387 void SynchronousCompositorHost::PopulateCommonParams( |
379 SyncCompositorCommonBrowserParams* params) { | 388 SyncCompositorCommonBrowserParams* params) { |
380 DCHECK(params); | 389 DCHECK(params); |
381 DCHECK(params->ack.resources.empty()); | 390 DCHECK(params->ack.resources.empty()); |
382 params->bytes_limit = bytes_limit_; | 391 params->bytes_limit = bytes_limit_; |
383 params->ack.resources.swap(returned_resources_); | 392 params->ack.resources.swap(returned_resources_); |
384 if (root_scroll_offset_updated_by_browser_) { | 393 if (root_scroll_offset_updated_by_browser_) { |
385 params->root_scroll_offset = root_scroll_offset_; | 394 params->root_scroll_offset = root_scroll_offset_; |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
427 params.scrollable_size, params.page_scale_factor, | 436 params.scrollable_size, params.page_scale_factor, |
428 params.min_page_scale_factor, params.max_page_scale_factor); | 437 params.min_page_scale_factor, params.max_page_scale_factor); |
429 } | 438 } |
430 } | 439 } |
431 | 440 |
432 void SynchronousCompositorHost::UpdateNeedsBeginFrames() { | 441 void SynchronousCompositorHost::UpdateNeedsBeginFrames() { |
433 rwhva_->OnSetNeedsBeginFrames(is_active_ && need_begin_frame_); | 442 rwhva_->OnSetNeedsBeginFrames(is_active_ && need_begin_frame_); |
434 } | 443 } |
435 | 444 |
436 } // namespace content | 445 } // namespace content |
OLD | NEW |