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

Side by Side Diff: cc/trees/layer_tree_host_impl.cc

Issue 2443613002: Rename classes related to top controls (Closed)
Patch Set: fix test 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 | « cc/trees/layer_tree_host_impl.h ('k') | cc/trees/layer_tree_host_impl_unittest.cc » ('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 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 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 "cc/trees/layer_tree_host_impl.h" 5 #include "cc/trees/layer_tree_host_impl.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 17 matching lines...) Expand all
28 #include "cc/animation/animation_host.h" 28 #include "cc/animation/animation_host.h"
29 #include "cc/base/histograms.h" 29 #include "cc/base/histograms.h"
30 #include "cc/base/math_util.h" 30 #include "cc/base/math_util.h"
31 #include "cc/debug/benchmark_instrumentation.h" 31 #include "cc/debug/benchmark_instrumentation.h"
32 #include "cc/debug/debug_rect_history.h" 32 #include "cc/debug/debug_rect_history.h"
33 #include "cc/debug/devtools_instrumentation.h" 33 #include "cc/debug/devtools_instrumentation.h"
34 #include "cc/debug/frame_rate_counter.h" 34 #include "cc/debug/frame_rate_counter.h"
35 #include "cc/debug/frame_viewer_instrumentation.h" 35 #include "cc/debug/frame_viewer_instrumentation.h"
36 #include "cc/debug/rendering_stats_instrumentation.h" 36 #include "cc/debug/rendering_stats_instrumentation.h"
37 #include "cc/debug/traced_value.h" 37 #include "cc/debug/traced_value.h"
38 #include "cc/input/browser_controls_offset_manager.h"
38 #include "cc/input/main_thread_scrolling_reason.h" 39 #include "cc/input/main_thread_scrolling_reason.h"
39 #include "cc/input/page_scale_animation.h" 40 #include "cc/input/page_scale_animation.h"
40 #include "cc/input/scroll_elasticity_helper.h" 41 #include "cc/input/scroll_elasticity_helper.h"
41 #include "cc/input/scroll_state.h" 42 #include "cc/input/scroll_state.h"
42 #include "cc/input/scrollbar_animation_controller.h" 43 #include "cc/input/scrollbar_animation_controller.h"
43 #include "cc/input/top_controls_manager.h"
44 #include "cc/layers/append_quads_data.h" 44 #include "cc/layers/append_quads_data.h"
45 #include "cc/layers/heads_up_display_layer_impl.h" 45 #include "cc/layers/heads_up_display_layer_impl.h"
46 #include "cc/layers/layer_impl.h" 46 #include "cc/layers/layer_impl.h"
47 #include "cc/layers/layer_iterator.h" 47 #include "cc/layers/layer_iterator.h"
48 #include "cc/layers/painted_scrollbar_layer_impl.h" 48 #include "cc/layers/painted_scrollbar_layer_impl.h"
49 #include "cc/layers/render_surface_impl.h" 49 #include "cc/layers/render_surface_impl.h"
50 #include "cc/layers/scrollbar_layer_impl_base.h" 50 #include "cc/layers/scrollbar_layer_impl_base.h"
51 #include "cc/layers/surface_layer_impl.h" 51 #include "cc/layers/surface_layer_impl.h"
52 #include "cc/layers/viewport.h" 52 #include "cc/layers/viewport.h"
53 #include "cc/output/compositor_frame.h" 53 #include "cc/output/compositor_frame.h"
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
245 DCHECK(animation_host_); 245 DCHECK(animation_host_);
246 animation_host_->SetMutatorHostClient(this); 246 animation_host_->SetMutatorHostClient(this);
247 247
248 DCHECK(task_runner_provider_->IsImplThread()); 248 DCHECK(task_runner_provider_->IsImplThread());
249 DidVisibilityChange(this, visible_); 249 DidVisibilityChange(this, visible_);
250 250
251 SetDebugState(settings.initial_debug_state); 251 SetDebugState(settings.initial_debug_state);
252 252
253 // LTHI always has an active tree. 253 // LTHI always has an active tree.
254 active_tree_ = base::MakeUnique<LayerTreeImpl>( 254 active_tree_ = base::MakeUnique<LayerTreeImpl>(
255 this, new SyncedProperty<ScaleGroup>, new SyncedTopControls, 255 this, new SyncedProperty<ScaleGroup>, new SyncedBrowserControls,
256 new SyncedElasticOverscroll); 256 new SyncedElasticOverscroll);
257 active_tree_->property_trees()->is_active = true; 257 active_tree_->property_trees()->is_active = true;
258 258
259 viewport_ = Viewport::Create(this); 259 viewport_ = Viewport::Create(this);
260 260
261 TRACE_EVENT_OBJECT_CREATED_WITH_ID(TRACE_DISABLED_BY_DEFAULT("cc.debug"), 261 TRACE_EVENT_OBJECT_CREATED_WITH_ID(TRACE_DISABLED_BY_DEFAULT("cc.debug"),
262 "cc::LayerTreeHostImpl", id_); 262 "cc::LayerTreeHostImpl", id_);
263 263
264 top_controls_manager_ = 264 browser_controls_offset_manager_ = BrowserControlsOffsetManager::Create(
265 TopControlsManager::Create(this, settings.top_controls_show_threshold, 265 this, settings.top_controls_show_threshold,
266 settings.top_controls_hide_threshold); 266 settings.top_controls_hide_threshold);
267 } 267 }
268 268
269 LayerTreeHostImpl::~LayerTreeHostImpl() { 269 LayerTreeHostImpl::~LayerTreeHostImpl() {
270 DCHECK(task_runner_provider_->IsImplThread()); 270 DCHECK(task_runner_provider_->IsImplThread());
271 TRACE_EVENT0("cc", "LayerTreeHostImpl::~LayerTreeHostImpl()"); 271 TRACE_EVENT0("cc", "LayerTreeHostImpl::~LayerTreeHostImpl()");
272 TRACE_EVENT_OBJECT_DELETED_WITH_ID(TRACE_DISABLED_BY_DEFAULT("cc.debug"), 272 TRACE_EVENT_OBJECT_DELETED_WITH_ID(TRACE_DISABLED_BY_DEFAULT("cc.debug"),
273 "cc::LayerTreeHostImpl", id_); 273 "cc::LayerTreeHostImpl", id_);
274 274
275 // It is released before shutdown. 275 // It is released before shutdown.
276 DCHECK(!compositor_frame_sink_); 276 DCHECK(!compositor_frame_sink_);
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
456 // This does not set did_animate, because if the InputHandlerClient 456 // This does not set did_animate, because if the InputHandlerClient
457 // changes anything it will be through the InputHandler interface which 457 // changes anything it will be through the InputHandler interface which
458 // does SetNeedsRedraw. 458 // does SetNeedsRedraw.
459 input_handler_client_->Animate(monotonic_time); 459 input_handler_client_->Animate(monotonic_time);
460 } 460 }
461 } 461 }
462 462
463 did_animate |= AnimatePageScale(monotonic_time); 463 did_animate |= AnimatePageScale(monotonic_time);
464 did_animate |= AnimateLayers(monotonic_time); 464 did_animate |= AnimateLayers(monotonic_time);
465 did_animate |= AnimateScrollbars(monotonic_time); 465 did_animate |= AnimateScrollbars(monotonic_time);
466 did_animate |= AnimateTopControls(monotonic_time); 466 did_animate |= AnimateBrowserControls(monotonic_time);
467 467
468 if (active_tree) { 468 if (active_tree) {
469 did_animate |= Mutate(monotonic_time); 469 did_animate |= Mutate(monotonic_time);
470 470
471 // Animating stuff can change the root scroll offset, so inform the 471 // Animating stuff can change the root scroll offset, so inform the
472 // synchronous input handler. 472 // synchronous input handler.
473 UpdateRootLayerStateForSynchronousInputHandler(); 473 UpdateRootLayerStateForSynchronousInputHandler();
474 if (did_animate) { 474 if (did_animate) {
475 // If the tree changed, then we want to draw at the end of the current 475 // If the tree changed, then we want to draw at the end of the current
476 // frame. 476 // frame.
(...skipping 549 matching lines...) Expand 10 before | Expand all | Expand 10 after
1026 // separate render pass for the layer, which will persist until a new commit 1026 // separate render pass for the layer, which will persist until a new commit
1027 // removes it. Force a commit after copy requests, to remove extra render 1027 // removes it. Force a commit after copy requests, to remove extra render
1028 // passes. 1028 // passes.
1029 if (have_copy_request) 1029 if (have_copy_request)
1030 client_->SetNeedsCommitOnImplThread(); 1030 client_->SetNeedsCommitOnImplThread();
1031 1031
1032 return draw_result; 1032 return draw_result;
1033 } 1033 }
1034 1034
1035 void LayerTreeHostImpl::MainThreadHasStoppedFlinging() { 1035 void LayerTreeHostImpl::MainThreadHasStoppedFlinging() {
1036 top_controls_manager_->MainThreadHasStoppedFlinging(); 1036 browser_controls_offset_manager_->MainThreadHasStoppedFlinging();
1037 if (input_handler_client_) 1037 if (input_handler_client_)
1038 input_handler_client_->MainThreadHasStoppedFlinging(); 1038 input_handler_client_->MainThreadHasStoppedFlinging();
1039 } 1039 }
1040 1040
1041 void LayerTreeHostImpl::DidAnimateScrollOffset() { 1041 void LayerTreeHostImpl::DidAnimateScrollOffset() {
1042 client_->SetNeedsCommitOnImplThread(); 1042 client_->SetNeedsCommitOnImplThread();
1043 client_->RenewTreePriority(); 1043 client_->RenewTreePriority();
1044 } 1044 }
1045 1045
1046 void LayerTreeHostImpl::SetViewportDamage(const gfx::Rect& damage_rect) { 1046 void LayerTreeHostImpl::SetViewportDamage(const gfx::Rect& damage_rect) {
(...skipping 486 matching lines...) Expand 10 before | Expand all | Expand 10 after
1533 CompositorFrameMetadata LayerTreeHostImpl::MakeCompositorFrameMetadata() const { 1533 CompositorFrameMetadata LayerTreeHostImpl::MakeCompositorFrameMetadata() const {
1534 CompositorFrameMetadata metadata; 1534 CompositorFrameMetadata metadata;
1535 metadata.device_scale_factor = active_tree_->painted_device_scale_factor() * 1535 metadata.device_scale_factor = active_tree_->painted_device_scale_factor() *
1536 active_tree_->device_scale_factor(); 1536 active_tree_->device_scale_factor();
1537 1537
1538 metadata.page_scale_factor = active_tree_->current_page_scale_factor(); 1538 metadata.page_scale_factor = active_tree_->current_page_scale_factor();
1539 metadata.scrollable_viewport_size = active_tree_->ScrollableViewportSize(); 1539 metadata.scrollable_viewport_size = active_tree_->ScrollableViewportSize();
1540 metadata.root_layer_size = active_tree_->ScrollableSize(); 1540 metadata.root_layer_size = active_tree_->ScrollableSize();
1541 metadata.min_page_scale_factor = active_tree_->min_page_scale_factor(); 1541 metadata.min_page_scale_factor = active_tree_->min_page_scale_factor();
1542 metadata.max_page_scale_factor = active_tree_->max_page_scale_factor(); 1542 metadata.max_page_scale_factor = active_tree_->max_page_scale_factor();
1543 metadata.top_controls_height = top_controls_manager_->TopControlsHeight(); 1543 metadata.top_controls_height =
1544 browser_controls_offset_manager_->TopControlsHeight();
1544 metadata.top_controls_shown_ratio = 1545 metadata.top_controls_shown_ratio =
1545 top_controls_manager_->TopControlsShownRatio(); 1546 browser_controls_offset_manager_->TopControlsShownRatio();
1546 metadata.bottom_controls_height = 1547 metadata.bottom_controls_height =
1547 top_controls_manager_->BottomControlsHeight(); 1548 browser_controls_offset_manager_->BottomControlsHeight();
1548 metadata.bottom_controls_shown_ratio = 1549 metadata.bottom_controls_shown_ratio =
1549 top_controls_manager_->BottomControlsShownRatio(); 1550 browser_controls_offset_manager_->BottomControlsShownRatio();
1550 metadata.root_background_color = active_tree_->background_color(); 1551 metadata.root_background_color = active_tree_->background_color();
1551 1552
1552 active_tree_->GetViewportSelection(&metadata.selection); 1553 active_tree_->GetViewportSelection(&metadata.selection);
1553 1554
1554 if (OuterViewportScrollLayer()) { 1555 if (OuterViewportScrollLayer()) {
1555 metadata.root_overflow_x_hidden = 1556 metadata.root_overflow_x_hidden =
1556 !OuterViewportScrollLayer()->user_scrollable_horizontal(); 1557 !OuterViewportScrollLayer()->user_scrollable_horizontal();
1557 metadata.root_overflow_y_hidden = 1558 metadata.root_overflow_y_hidden =
1558 !OuterViewportScrollLayer()->user_scrollable_vertical(); 1559 !OuterViewportScrollLayer()->user_scrollable_vertical();
1559 } 1560 }
(...skipping 292 matching lines...) Expand 10 before | Expand all | Expand 10 after
1852 void LayerTreeHostImpl::UpdateViewportContainerSizes() { 1853 void LayerTreeHostImpl::UpdateViewportContainerSizes() {
1853 LayerImpl* inner_container = active_tree_->InnerViewportContainerLayer(); 1854 LayerImpl* inner_container = active_tree_->InnerViewportContainerLayer();
1854 LayerImpl* outer_container = active_tree_->OuterViewportContainerLayer(); 1855 LayerImpl* outer_container = active_tree_->OuterViewportContainerLayer();
1855 1856
1856 if (!inner_container) 1857 if (!inner_container)
1857 return; 1858 return;
1858 1859
1859 ViewportAnchor anchor(InnerViewportScrollLayer(), OuterViewportScrollLayer()); 1860 ViewportAnchor anchor(InnerViewportScrollLayer(), OuterViewportScrollLayer());
1860 1861
1861 float top_controls_layout_height = 1862 float top_controls_layout_height =
1862 active_tree_->top_controls_shrink_blink_size() 1863 active_tree_->browser_controls_shrink_blink_size()
1863 ? active_tree_->top_controls_height() 1864 ? active_tree_->top_controls_height()
1864 : 0.f; 1865 : 0.f;
1865 float delta_from_top_controls = 1866 float delta_from_top_controls =
1866 top_controls_layout_height - top_controls_manager_->ContentTopOffset(); 1867 top_controls_layout_height -
1868 browser_controls_offset_manager_->ContentTopOffset();
1867 float bottom_controls_layout_height = 1869 float bottom_controls_layout_height =
1868 active_tree_->top_controls_shrink_blink_size() 1870 active_tree_->browser_controls_shrink_blink_size()
1869 ? active_tree_->bottom_controls_height() 1871 ? active_tree_->bottom_controls_height()
1870 : 0.f; 1872 : 0.f;
1871 delta_from_top_controls += bottom_controls_layout_height - 1873 delta_from_top_controls +=
1872 top_controls_manager_->ContentBottomOffset(); 1874 bottom_controls_layout_height -
1875 browser_controls_offset_manager_->ContentBottomOffset();
1873 1876
1874 // Adjust the viewport layers by shrinking/expanding the container to account 1877 // Adjust the viewport layers by shrinking/expanding the container to account
1875 // for changes in the size (e.g. top controls) since the last resize from 1878 // for changes in the size (e.g. browser controls) since the last resize from
1876 // Blink. 1879 // Blink.
1877 gfx::Vector2dF amount_to_expand(0.f, delta_from_top_controls); 1880 gfx::Vector2dF amount_to_expand(0.f, delta_from_top_controls);
1878 inner_container->SetBoundsDelta(amount_to_expand); 1881 inner_container->SetBoundsDelta(amount_to_expand);
1879 1882
1880 if (outer_container && !outer_container->BoundsForScrolling().IsEmpty()) { 1883 if (outer_container && !outer_container->BoundsForScrolling().IsEmpty()) {
1881 // Adjust the outer viewport container as well, since adjusting only the 1884 // Adjust the outer viewport container as well, since adjusting only the
1882 // inner may cause its bounds to exceed those of the outer, causing scroll 1885 // inner may cause its bounds to exceed those of the outer, causing scroll
1883 // clamping. 1886 // clamping.
1884 gfx::Vector2dF amount_to_expand_scaled = gfx::ScaleVector2d( 1887 gfx::Vector2dF amount_to_expand_scaled = gfx::ScaleVector2d(
1885 amount_to_expand, 1.f / active_tree_->min_page_scale_factor()); 1888 amount_to_expand, 1.f / active_tree_->min_page_scale_factor());
(...skipping 498 matching lines...) Expand 10 before | Expand all | Expand 10 after
2384 if (external_viewport_.IsEmpty()) 2387 if (external_viewport_.IsEmpty())
2385 return gfx::Rect(device_viewport_size_); 2388 return gfx::Rect(device_viewport_size_);
2386 2389
2387 return external_viewport_; 2390 return external_viewport_;
2388 } 2391 }
2389 2392
2390 const gfx::Transform& LayerTreeHostImpl::DrawTransform() const { 2393 const gfx::Transform& LayerTreeHostImpl::DrawTransform() const {
2391 return external_transform_; 2394 return external_transform_;
2392 } 2395 }
2393 2396
2394 void LayerTreeHostImpl::DidChangeTopControlsPosition() { 2397 void LayerTreeHostImpl::DidChangeBrowserControlsPosition() {
2395 UpdateViewportContainerSizes(); 2398 UpdateViewportContainerSizes();
2396 SetNeedsRedraw(); 2399 SetNeedsRedraw();
2397 SetNeedsOneBeginImplFrame(); 2400 SetNeedsOneBeginImplFrame();
2398 active_tree_->set_needs_update_draw_properties(); 2401 active_tree_->set_needs_update_draw_properties();
2399 SetFullViewportDamage(); 2402 SetFullViewportDamage();
2400 } 2403 }
2401 2404
2402 float LayerTreeHostImpl::TopControlsHeight() const { 2405 float LayerTreeHostImpl::TopControlsHeight() const {
2403 return active_tree_->top_controls_height(); 2406 return active_tree_->top_controls_height();
2404 } 2407 }
2405 2408
2406 float LayerTreeHostImpl::BottomControlsHeight() const { 2409 float LayerTreeHostImpl::BottomControlsHeight() const {
2407 return active_tree_->bottom_controls_height(); 2410 return active_tree_->bottom_controls_height();
2408 } 2411 }
2409 2412
2410 void LayerTreeHostImpl::SetCurrentTopControlsShownRatio(float ratio) { 2413 void LayerTreeHostImpl::SetCurrentBrowserControlsShownRatio(float ratio) {
2411 if (active_tree_->SetCurrentTopControlsShownRatio(ratio)) 2414 if (active_tree_->SetCurrentBrowserControlsShownRatio(ratio))
2412 DidChangeTopControlsPosition(); 2415 DidChangeBrowserControlsPosition();
2413 } 2416 }
2414 2417
2415 float LayerTreeHostImpl::CurrentTopControlsShownRatio() const { 2418 float LayerTreeHostImpl::CurrentBrowserControlsShownRatio() const {
2416 return active_tree_->CurrentTopControlsShownRatio(); 2419 return active_tree_->CurrentBrowserControlsShownRatio();
2417 } 2420 }
2418 2421
2419 void LayerTreeHostImpl::BindToClient(InputHandlerClient* client) { 2422 void LayerTreeHostImpl::BindToClient(InputHandlerClient* client) {
2420 DCHECK(input_handler_client_ == NULL); 2423 DCHECK(input_handler_client_ == NULL);
2421 input_handler_client_ = client; 2424 input_handler_client_ = client;
2422 } 2425 }
2423 2426
2424 InputHandler::ScrollStatus LayerTreeHostImpl::TryScroll( 2427 InputHandler::ScrollStatus LayerTreeHostImpl::TryScroll(
2425 const gfx::PointF& screen_space_point, 2428 const gfx::PointF& screen_space_point,
2426 InputHandler::ScrollInputType type, 2429 InputHandler::ScrollInputType type,
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
2601 MainThreadScrollingReason::kNotScrollingOnMain; 2604 MainThreadScrollingReason::kNotScrollingOnMain;
2602 if (!scrolling_layer_impl) { 2605 if (!scrolling_layer_impl) {
2603 scroll_status.thread = SCROLL_IGNORED; 2606 scroll_status.thread = SCROLL_IGNORED;
2604 scroll_status.main_thread_scrolling_reasons = 2607 scroll_status.main_thread_scrolling_reasons =
2605 MainThreadScrollingReason::kNoScrollingLayer; 2608 MainThreadScrollingReason::kNoScrollingLayer;
2606 return scroll_status; 2609 return scroll_status;
2607 } 2610 }
2608 scroll_status.thread = SCROLL_ON_IMPL_THREAD; 2611 scroll_status.thread = SCROLL_ON_IMPL_THREAD;
2609 ScrollAnimationAbort(scrolling_layer_impl); 2612 ScrollAnimationAbort(scrolling_layer_impl);
2610 2613
2611 top_controls_manager_->ScrollBegin(); 2614 browser_controls_offset_manager_->ScrollBegin();
2612 2615
2613 active_tree_->SetCurrentlyScrollingLayer(scrolling_layer_impl); 2616 active_tree_->SetCurrentlyScrollingLayer(scrolling_layer_impl);
2614 // TODO(majidvp): get rid of wheel_scrolling_ and set is_direct_manipulation 2617 // TODO(majidvp): get rid of wheel_scrolling_ and set is_direct_manipulation
2615 // in input_handler_proxy instead. 2618 // in input_handler_proxy instead.
2616 wheel_scrolling_ = IsWheelBasedScroll(type); 2619 wheel_scrolling_ = IsWheelBasedScroll(type);
2617 scroll_state->set_is_direct_manipulation(!wheel_scrolling_); 2620 scroll_state->set_is_direct_manipulation(!wheel_scrolling_);
2618 // Invoke |DistributeScrollDelta| even with zero delta and velocity to ensure 2621 // Invoke |DistributeScrollDelta| even with zero delta and velocity to ensure
2619 // scroll customization callbacks are invoked. 2622 // scroll customization callbacks are invoked.
2620 DistributeScrollDelta(scroll_state); 2623 DistributeScrollDelta(scroll_state);
2621 2624
(...skipping 449 matching lines...) Expand 10 before | Expand all | Expand 10 after
3071 3074
3072 InputHandlerScrollResult LayerTreeHostImpl::ScrollBy( 3075 InputHandlerScrollResult LayerTreeHostImpl::ScrollBy(
3073 ScrollState* scroll_state) { 3076 ScrollState* scroll_state) {
3074 DCHECK(scroll_state); 3077 DCHECK(scroll_state);
3075 3078
3076 TRACE_EVENT0("cc", "LayerTreeHostImpl::ScrollBy"); 3079 TRACE_EVENT0("cc", "LayerTreeHostImpl::ScrollBy");
3077 if (!CurrentlyScrollingLayer()) 3080 if (!CurrentlyScrollingLayer())
3078 return InputHandlerScrollResult(); 3081 return InputHandlerScrollResult();
3079 3082
3080 float initial_top_controls_offset = 3083 float initial_top_controls_offset =
3081 top_controls_manager_->ControlsTopOffset(); 3084 browser_controls_offset_manager_->ControlsTopOffset();
3082 3085
3083 scroll_state->set_delta_consumed_for_scroll_sequence( 3086 scroll_state->set_delta_consumed_for_scroll_sequence(
3084 did_lock_scrolling_layer_); 3087 did_lock_scrolling_layer_);
3085 scroll_state->set_is_direct_manipulation(!wheel_scrolling_); 3088 scroll_state->set_is_direct_manipulation(!wheel_scrolling_);
3086 scroll_state->set_current_native_scrolling_node( 3089 scroll_state->set_current_native_scrolling_node(
3087 active_tree()->property_trees()->scroll_tree.CurrentlyScrollingNode()); 3090 active_tree()->property_trees()->scroll_tree.CurrentlyScrollingNode());
3088 3091
3089 DistributeScrollDelta(scroll_state); 3092 DistributeScrollDelta(scroll_state);
3090 3093
3091 active_tree_->SetCurrentlyScrollingLayer(active_tree_->LayerById( 3094 active_tree_->SetCurrentlyScrollingLayer(active_tree_->LayerById(
(...skipping 27 matching lines...) Expand all
3119 if (InnerViewportScrollLayer()) { 3122 if (InnerViewportScrollLayer()) {
3120 if (!InnerViewportScrollLayer()->user_scrollable_horizontal()) 3123 if (!InnerViewportScrollLayer()->user_scrollable_horizontal())
3121 unused_root_delta.set_x(0); 3124 unused_root_delta.set_x(0);
3122 if (!InnerViewportScrollLayer()->user_scrollable_vertical()) 3125 if (!InnerViewportScrollLayer()->user_scrollable_vertical())
3123 unused_root_delta.set_y(0); 3126 unused_root_delta.set_y(0);
3124 } 3127 }
3125 3128
3126 accumulated_root_overscroll_ += unused_root_delta; 3129 accumulated_root_overscroll_ += unused_root_delta;
3127 3130
3128 bool did_scroll_top_controls = 3131 bool did_scroll_top_controls =
3129 initial_top_controls_offset != top_controls_manager_->ControlsTopOffset(); 3132 initial_top_controls_offset !=
3133 browser_controls_offset_manager_->ControlsTopOffset();
3130 3134
3131 InputHandlerScrollResult scroll_result; 3135 InputHandlerScrollResult scroll_result;
3132 scroll_result.did_scroll = did_scroll_content || did_scroll_top_controls; 3136 scroll_result.did_scroll = did_scroll_content || did_scroll_top_controls;
3133 scroll_result.did_overscroll_root = !unused_root_delta.IsZero(); 3137 scroll_result.did_overscroll_root = !unused_root_delta.IsZero();
3134 scroll_result.accumulated_root_overscroll = accumulated_root_overscroll_; 3138 scroll_result.accumulated_root_overscroll = accumulated_root_overscroll_;
3135 scroll_result.unused_scroll_delta = unused_root_delta; 3139 scroll_result.unused_scroll_delta = unused_root_delta;
3136 3140
3137 if (scroll_result.did_scroll) { 3141 if (scroll_result.did_scroll) {
3138 // Scrolling can change the root scroll offset, so inform the synchronous 3142 // Scrolling can change the root scroll offset, so inform the synchronous
3139 // input handler. 3143 // input handler.
(...skipping 29 matching lines...) Expand all
3169 did_lock_scrolling_layer_ = false; 3173 did_lock_scrolling_layer_ = false;
3170 scroll_affects_scroll_handler_ = false; 3174 scroll_affects_scroll_handler_ = false;
3171 accumulated_root_overscroll_ = gfx::Vector2dF(); 3175 accumulated_root_overscroll_ = gfx::Vector2dF();
3172 } 3176 }
3173 3177
3174 void LayerTreeHostImpl::ScrollEnd(ScrollState* scroll_state) { 3178 void LayerTreeHostImpl::ScrollEnd(ScrollState* scroll_state) {
3175 DCHECK(scroll_state); 3179 DCHECK(scroll_state);
3176 DCHECK(scroll_state->delta_x() == 0 && scroll_state->delta_y() == 0); 3180 DCHECK(scroll_state->delta_x() == 0 && scroll_state->delta_y() == 0);
3177 3181
3178 DistributeScrollDelta(scroll_state); 3182 DistributeScrollDelta(scroll_state);
3179 top_controls_manager_->ScrollEnd(); 3183 browser_controls_offset_manager_->ScrollEnd();
3180 3184
3181 if (scroll_state->is_in_inertial_phase()) { 3185 if (scroll_state->is_in_inertial_phase()) {
3182 // Only clear the currently scrolling layer if we know the scroll is done. 3186 // Only clear the currently scrolling layer if we know the scroll is done.
3183 // A non-inertial scroll end could be followed by an inertial scroll. 3187 // A non-inertial scroll end could be followed by an inertial scroll.
3184 ClearCurrentlyScrollingLayer(); 3188 ClearCurrentlyScrollingLayer();
3185 } 3189 }
3186 } 3190 }
3187 3191
3188 InputHandler::ScrollStatus LayerTreeHostImpl::FlingScrollBegin() { 3192 InputHandler::ScrollStatus LayerTreeHostImpl::FlingScrollBegin() {
3189 InputHandler::ScrollStatus scroll_status; 3193 InputHandler::ScrollStatus scroll_status;
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
3302 scroll_layer_id_when_mouse_over_scrollbar_); 3306 scroll_layer_id_when_mouse_over_scrollbar_);
3303 if (new_animation_controller) 3307 if (new_animation_controller)
3304 new_animation_controller->DidMouseMoveNear(0); 3308 new_animation_controller->DidMouseMoveNear(0);
3305 } 3309 }
3306 3310
3307 void LayerTreeHostImpl::PinchGestureBegin() { 3311 void LayerTreeHostImpl::PinchGestureBegin() {
3308 pinch_gesture_active_ = true; 3312 pinch_gesture_active_ = true;
3309 client_->RenewTreePriority(); 3313 client_->RenewTreePriority();
3310 pinch_gesture_end_should_clear_scrolling_layer_ = !CurrentlyScrollingLayer(); 3314 pinch_gesture_end_should_clear_scrolling_layer_ = !CurrentlyScrollingLayer();
3311 active_tree_->SetCurrentlyScrollingLayer(viewport()->MainScrollLayer()); 3315 active_tree_->SetCurrentlyScrollingLayer(viewport()->MainScrollLayer());
3312 top_controls_manager_->PinchBegin(); 3316 browser_controls_offset_manager_->PinchBegin();
3313 } 3317 }
3314 3318
3315 void LayerTreeHostImpl::PinchGestureUpdate(float magnify_delta, 3319 void LayerTreeHostImpl::PinchGestureUpdate(float magnify_delta,
3316 const gfx::Point& anchor) { 3320 const gfx::Point& anchor) {
3317 TRACE_EVENT0("cc", "LayerTreeHostImpl::PinchGestureUpdate"); 3321 TRACE_EVENT0("cc", "LayerTreeHostImpl::PinchGestureUpdate");
3318 if (!InnerViewportScrollLayer()) 3322 if (!InnerViewportScrollLayer())
3319 return; 3323 return;
3320 viewport()->PinchUpdate(magnify_delta, anchor); 3324 viewport()->PinchUpdate(magnify_delta, anchor);
3321 client_->SetNeedsCommitOnImplThread(); 3325 client_->SetNeedsCommitOnImplThread();
3322 SetNeedsRedraw(); 3326 SetNeedsRedraw();
3323 client_->RenewTreePriority(); 3327 client_->RenewTreePriority();
3324 // Pinching can change the root scroll offset, so inform the synchronous input 3328 // Pinching can change the root scroll offset, so inform the synchronous input
3325 // handler. 3329 // handler.
3326 UpdateRootLayerStateForSynchronousInputHandler(); 3330 UpdateRootLayerStateForSynchronousInputHandler();
3327 } 3331 }
3328 3332
3329 void LayerTreeHostImpl::PinchGestureEnd() { 3333 void LayerTreeHostImpl::PinchGestureEnd() {
3330 pinch_gesture_active_ = false; 3334 pinch_gesture_active_ = false;
3331 if (pinch_gesture_end_should_clear_scrolling_layer_) { 3335 if (pinch_gesture_end_should_clear_scrolling_layer_) {
3332 pinch_gesture_end_should_clear_scrolling_layer_ = false; 3336 pinch_gesture_end_should_clear_scrolling_layer_ = false;
3333 ClearCurrentlyScrollingLayer(); 3337 ClearCurrentlyScrollingLayer();
3334 } 3338 }
3335 viewport()->PinchEnd(); 3339 viewport()->PinchEnd();
3336 top_controls_manager_->PinchEnd(); 3340 browser_controls_offset_manager_->PinchEnd();
3337 client_->SetNeedsCommitOnImplThread(); 3341 client_->SetNeedsCommitOnImplThread();
3338 // When a pinch ends, we may be displaying content cached at incorrect scales, 3342 // When a pinch ends, we may be displaying content cached at incorrect scales,
3339 // so updating draw properties and drawing will ensure we are using the right 3343 // so updating draw properties and drawing will ensure we are using the right
3340 // scales that we want when we're not inside a pinch. 3344 // scales that we want when we're not inside a pinch.
3341 active_tree_->set_needs_update_draw_properties(); 3345 active_tree_->set_needs_update_draw_properties();
3342 SetNeedsRedraw(); 3346 SetNeedsRedraw();
3343 } 3347 }
3344 3348
3345 std::unique_ptr<BeginFrameCallbackList> 3349 std::unique_ptr<BeginFrameCallbackList>
3346 LayerTreeHostImpl::ProcessLayerTreeMutations() { 3350 LayerTreeHostImpl::ProcessLayerTreeMutations() {
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
3407 page_scale_animation_ = nullptr; 3411 page_scale_animation_ = nullptr;
3408 client_->SetNeedsCommitOnImplThread(); 3412 client_->SetNeedsCommitOnImplThread();
3409 client_->RenewTreePriority(); 3413 client_->RenewTreePriority();
3410 client_->DidCompletePageScaleAnimationOnImplThread(); 3414 client_->DidCompletePageScaleAnimationOnImplThread();
3411 } else { 3415 } else {
3412 SetNeedsOneBeginImplFrame(); 3416 SetNeedsOneBeginImplFrame();
3413 } 3417 }
3414 return true; 3418 return true;
3415 } 3419 }
3416 3420
3417 bool LayerTreeHostImpl::AnimateTopControls(base::TimeTicks time) { 3421 bool LayerTreeHostImpl::AnimateBrowserControls(base::TimeTicks time) {
3418 if (!top_controls_manager_->has_animation()) 3422 if (!browser_controls_offset_manager_->has_animation())
3419 return false; 3423 return false;
3420 3424
3421 gfx::Vector2dF scroll = top_controls_manager_->Animate(time); 3425 gfx::Vector2dF scroll = browser_controls_offset_manager_->Animate(time);
3422 3426
3423 if (top_controls_manager_->has_animation()) 3427 if (browser_controls_offset_manager_->has_animation())
3424 SetNeedsOneBeginImplFrame(); 3428 SetNeedsOneBeginImplFrame();
3425 3429
3426 if (active_tree_->TotalScrollOffset().y() == 0.f) 3430 if (active_tree_->TotalScrollOffset().y() == 0.f)
3427 return false; 3431 return false;
3428 3432
3429 if (scroll.IsZero()) 3433 if (scroll.IsZero())
3430 return false; 3434 return false;
3431 3435
3432 DCHECK(viewport()); 3436 DCHECK(viewport());
3433 viewport()->ScrollBy(scroll, gfx::Point(), false, false); 3437 viewport()->ScrollBy(scroll, gfx::Point(), false, false);
(...skipping 667 matching lines...) Expand 10 before | Expand all | Expand 10 after
4101 if (is_visible) { 4105 if (is_visible) {
4102 worker_context_visibility_ = 4106 worker_context_visibility_ =
4103 worker_context->CacheController()->ClientBecameVisible(); 4107 worker_context->CacheController()->ClientBecameVisible();
4104 } else { 4108 } else {
4105 worker_context->CacheController()->ClientBecameNotVisible( 4109 worker_context->CacheController()->ClientBecameNotVisible(
4106 std::move(worker_context_visibility_)); 4110 std::move(worker_context_visibility_));
4107 } 4111 }
4108 } 4112 }
4109 4113
4110 } // namespace cc 4114 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_host_impl.h ('k') | cc/trees/layer_tree_host_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698