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

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

Issue 986443003: Move viewport scrolling logic into separate class (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 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
« cc/layers/viewport.h ('K') | « cc/trees/layer_tree_impl.h ('k') | no next file » | 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_impl.h" 5 #include "cc/trees/layer_tree_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 #include <set> 9 #include <set>
10 10
11 #include "base/trace_event/trace_event.h" 11 #include "base/trace_event/trace_event.h"
12 #include "base/trace_event/trace_event_argument.h" 12 #include "base/trace_event/trace_event_argument.h"
13 #include "cc/animation/keyframed_animation_curve.h" 13 #include "cc/animation/keyframed_animation_curve.h"
14 #include "cc/animation/scrollbar_animation_controller.h" 14 #include "cc/animation/scrollbar_animation_controller.h"
15 #include "cc/animation/scrollbar_animation_controller_linear_fade.h" 15 #include "cc/animation/scrollbar_animation_controller_linear_fade.h"
16 #include "cc/animation/scrollbar_animation_controller_thinning.h" 16 #include "cc/animation/scrollbar_animation_controller_thinning.h"
17 #include "cc/base/math_util.h" 17 #include "cc/base/math_util.h"
18 #include "cc/base/synced_property.h" 18 #include "cc/base/synced_property.h"
19 #include "cc/base/util.h" 19 #include "cc/base/util.h"
20 #include "cc/debug/devtools_instrumentation.h" 20 #include "cc/debug/devtools_instrumentation.h"
21 #include "cc/debug/traced_value.h" 21 #include "cc/debug/traced_value.h"
22 #include "cc/input/page_scale_animation.h" 22 #include "cc/input/page_scale_animation.h"
23 #include "cc/layers/heads_up_display_layer_impl.h" 23 #include "cc/layers/heads_up_display_layer_impl.h"
24 #include "cc/layers/layer.h" 24 #include "cc/layers/layer.h"
25 #include "cc/layers/layer_iterator.h" 25 #include "cc/layers/layer_iterator.h"
26 #include "cc/layers/render_surface_impl.h" 26 #include "cc/layers/render_surface_impl.h"
27 #include "cc/layers/scrollbar_layer_impl_base.h" 27 #include "cc/layers/scrollbar_layer_impl_base.h"
28 #include "cc/layers/viewport.h"
28 #include "cc/resources/ui_resource_request.h" 29 #include "cc/resources/ui_resource_request.h"
29 #include "cc/trees/layer_tree_host_common.h" 30 #include "cc/trees/layer_tree_host_common.h"
30 #include "cc/trees/layer_tree_host_impl.h" 31 #include "cc/trees/layer_tree_host_impl.h"
31 #include "cc/trees/occlusion_tracker.h" 32 #include "cc/trees/occlusion_tracker.h"
32 #include "ui/gfx/geometry/point_conversions.h" 33 #include "ui/gfx/geometry/point_conversions.h"
33 #include "ui/gfx/geometry/size_conversions.h" 34 #include "ui/gfx/geometry/size_conversions.h"
34 #include "ui/gfx/geometry/vector2d_conversions.h" 35 #include "ui/gfx/geometry/vector2d_conversions.h"
35 36
36 namespace cc { 37 namespace cc {
37 38
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
98 contents_textures_purged_(false), 99 contents_textures_purged_(false),
99 viewport_size_invalid_(false), 100 viewport_size_invalid_(false),
100 needs_update_draw_properties_(true), 101 needs_update_draw_properties_(true),
101 needs_full_tree_sync_(true), 102 needs_full_tree_sync_(true),
102 next_activation_forces_redraw_(false), 103 next_activation_forces_redraw_(false),
103 has_ever_been_drawn_(false), 104 has_ever_been_drawn_(false),
104 render_surface_layer_list_id_(0), 105 render_surface_layer_list_id_(0),
105 top_controls_shrink_blink_size_(false), 106 top_controls_shrink_blink_size_(false),
106 top_controls_height_(0), 107 top_controls_height_(0),
107 top_controls_shown_ratio_(top_controls_shown_ratio) { 108 top_controls_shown_ratio_(top_controls_shown_ratio) {
109 viewport_ = Viewport::Create(layer_tree_host_impl);
108 } 110 }
109 111
110 LayerTreeImpl::~LayerTreeImpl() { 112 LayerTreeImpl::~LayerTreeImpl() {
111 BreakSwapPromises(SwapPromise::SWAP_FAILS); 113 BreakSwapPromises(SwapPromise::SWAP_FAILS);
112 114
113 // Need to explicitly clear the tree prior to destroying this so that 115 // Need to explicitly clear the tree prior to destroying this so that
114 // the LayerTreeImpl pointer is still valid in the LayerImpl dtor. 116 // the LayerTreeImpl pointer is still valid in the LayerImpl dtor.
115 DCHECK(!root_layer_); 117 DCHECK(!root_layer_);
116 DCHECK(layers_with_copy_output_request_.empty()); 118 DCHECK(layers_with_copy_output_request_.empty());
117 } 119 }
(...skipping 23 matching lines...) Expand all
141 if (outer_viewport_scroll_layer_) 143 if (outer_viewport_scroll_layer_)
142 outer_viewport_scroll_layer_->SetScrollOffsetDelegate(NULL); 144 outer_viewport_scroll_layer_->SetScrollOffsetDelegate(NULL);
143 inner_viewport_scroll_delegate_proxy_ = nullptr; 145 inner_viewport_scroll_delegate_proxy_ = nullptr;
144 outer_viewport_scroll_delegate_proxy_ = nullptr; 146 outer_viewport_scroll_delegate_proxy_ = nullptr;
145 147
146 root_layer_ = layer.Pass(); 148 root_layer_ = layer.Pass();
147 currently_scrolling_layer_ = NULL; 149 currently_scrolling_layer_ = NULL;
148 inner_viewport_scroll_layer_ = NULL; 150 inner_viewport_scroll_layer_ = NULL;
149 outer_viewport_scroll_layer_ = NULL; 151 outer_viewport_scroll_layer_ = NULL;
150 page_scale_layer_ = NULL; 152 page_scale_layer_ = NULL;
153 viewport_->SetViewportLayers(inner_viewport_scroll_layer_,
154 outer_viewport_scroll_layer_);
151 155
152 layer_tree_host_impl_->OnCanDrawStateChangedForTree(); 156 layer_tree_host_impl_->OnCanDrawStateChangedForTree();
153 } 157 }
154 158
155 LayerImpl* LayerTreeImpl::InnerViewportScrollLayer() const { 159 LayerImpl* LayerTreeImpl::InnerViewportScrollLayer() const {
156 return inner_viewport_scroll_layer_; 160 return inner_viewport_scroll_layer_;
157 } 161 }
158 162
159 LayerImpl* LayerTreeImpl::OuterViewportScrollLayer() const { 163 LayerImpl* LayerTreeImpl::OuterViewportScrollLayer() const {
160 return outer_viewport_scroll_layer_; 164 return outer_viewport_scroll_layer_;
(...skipping 30 matching lines...) Expand all
191 if (inner_viewport_scroll_layer_) 195 if (inner_viewport_scroll_layer_)
192 inner_viewport_scroll_layer_->SetScrollOffsetDelegate(NULL); 196 inner_viewport_scroll_layer_->SetScrollOffsetDelegate(NULL);
193 if (outer_viewport_scroll_layer_) 197 if (outer_viewport_scroll_layer_)
194 outer_viewport_scroll_layer_->SetScrollOffsetDelegate(NULL); 198 outer_viewport_scroll_layer_->SetScrollOffsetDelegate(NULL);
195 inner_viewport_scroll_delegate_proxy_ = nullptr; 199 inner_viewport_scroll_delegate_proxy_ = nullptr;
196 outer_viewport_scroll_delegate_proxy_ = nullptr; 200 outer_viewport_scroll_delegate_proxy_ = nullptr;
197 inner_viewport_scroll_layer_ = NULL; 201 inner_viewport_scroll_layer_ = NULL;
198 outer_viewport_scroll_layer_ = NULL; 202 outer_viewport_scroll_layer_ = NULL;
199 page_scale_layer_ = NULL; 203 page_scale_layer_ = NULL;
200 currently_scrolling_layer_ = NULL; 204 currently_scrolling_layer_ = NULL;
205 viewport_->SetViewportLayers(inner_viewport_scroll_layer_,
206 outer_viewport_scroll_layer_);
201 207
202 render_surface_layer_list_.clear(); 208 render_surface_layer_list_.clear();
203 set_needs_update_draw_properties(); 209 set_needs_update_draw_properties();
204 return root_layer_.Pass(); 210 return root_layer_.Pass();
205 } 211 }
206 212
207 void LayerTreeImpl::PushPropertiesTo(LayerTreeImpl* target_tree) { 213 void LayerTreeImpl::PushPropertiesTo(LayerTreeImpl* target_tree) {
208 // The request queue should have been processed and does not require a push. 214 // The request queue should have been processed and does not require a push.
209 DCHECK_EQ(ui_resource_request_queue_.size(), 0u); 215 DCHECK_EQ(ui_resource_request_queue_.size(), 0u);
210 216
(...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after
506 DCHECK(page_scale_layer_); 512 DCHECK(page_scale_layer_);
507 513
508 inner_viewport_scroll_layer_ = 514 inner_viewport_scroll_layer_ =
509 LayerById(inner_viewport_scroll_layer_id); 515 LayerById(inner_viewport_scroll_layer_id);
510 DCHECK(inner_viewport_scroll_layer_); 516 DCHECK(inner_viewport_scroll_layer_);
511 517
512 outer_viewport_scroll_layer_ = 518 outer_viewport_scroll_layer_ =
513 LayerById(outer_viewport_scroll_layer_id); 519 LayerById(outer_viewport_scroll_layer_id);
514 DCHECK(outer_viewport_scroll_layer_ || 520 DCHECK(outer_viewport_scroll_layer_ ||
515 outer_viewport_scroll_layer_id == Layer::INVALID_ID); 521 outer_viewport_scroll_layer_id == Layer::INVALID_ID);
522 viewport_->SetViewportLayers(inner_viewport_scroll_layer_,
523 outer_viewport_scroll_layer_);
516 524
517 HideInnerViewportScrollbarsIfNearMinimumScale(); 525 HideInnerViewportScrollbarsIfNearMinimumScale();
518 526
519 if (!root_layer_scroll_offset_delegate_) 527 if (!root_layer_scroll_offset_delegate_)
520 return; 528 return;
521 529
522 inner_viewport_scroll_delegate_proxy_ = make_scoped_ptr( 530 inner_viewport_scroll_delegate_proxy_ = make_scoped_ptr(
523 new LayerScrollOffsetDelegateProxy(inner_viewport_scroll_layer_, 531 new LayerScrollOffsetDelegateProxy(inner_viewport_scroll_layer_,
524 root_layer_scroll_offset_delegate_, 532 root_layer_scroll_offset_delegate_,
525 this)); 533 this));
526 534
527 if (outer_viewport_scroll_layer_) 535 if (outer_viewport_scroll_layer_)
528 outer_viewport_scroll_delegate_proxy_ = make_scoped_ptr( 536 outer_viewport_scroll_delegate_proxy_ = make_scoped_ptr(
529 new LayerScrollOffsetDelegateProxy(outer_viewport_scroll_layer_, 537 new LayerScrollOffsetDelegateProxy(outer_viewport_scroll_layer_,
530 root_layer_scroll_offset_delegate_, 538 root_layer_scroll_offset_delegate_,
531 this)); 539 this));
532 } 540 }
533 541
534 void LayerTreeImpl::ClearViewportLayers() { 542 void LayerTreeImpl::ClearViewportLayers() {
535 page_scale_layer_ = NULL; 543 page_scale_layer_ = NULL;
536 inner_viewport_scroll_layer_ = NULL; 544 inner_viewport_scroll_layer_ = NULL;
537 outer_viewport_scroll_layer_ = NULL; 545 outer_viewport_scroll_layer_ = NULL;
546 viewport_->SetViewportLayers(inner_viewport_scroll_layer_,
547 outer_viewport_scroll_layer_);
538 } 548 }
539 549
540 bool LayerTreeImpl::UpdateDrawProperties(bool update_lcd_text) { 550 bool LayerTreeImpl::UpdateDrawProperties(bool update_lcd_text) {
541 if (!needs_update_draw_properties_) 551 if (!needs_update_draw_properties_)
542 return true; 552 return true;
543 553
544 // Calling UpdateDrawProperties must clear this flag, so there can be no 554 // Calling UpdateDrawProperties must clear this flag, so there can be no
545 // early outs before this. 555 // early outs before this.
546 needs_update_draw_properties_ = false; 556 needs_update_draw_properties_ = false;
547 557
(...skipping 1088 matching lines...) Expand 10 before | Expand all | Expand 10 after
1636 scoped_ptr<PendingPageScaleAnimation> pending_animation) { 1646 scoped_ptr<PendingPageScaleAnimation> pending_animation) {
1637 pending_page_scale_animation_ = pending_animation.Pass(); 1647 pending_page_scale_animation_ = pending_animation.Pass();
1638 } 1648 }
1639 1649
1640 scoped_ptr<PendingPageScaleAnimation> 1650 scoped_ptr<PendingPageScaleAnimation>
1641 LayerTreeImpl::TakePendingPageScaleAnimation() { 1651 LayerTreeImpl::TakePendingPageScaleAnimation() {
1642 return pending_page_scale_animation_.Pass(); 1652 return pending_page_scale_animation_.Pass();
1643 } 1653 }
1644 1654
1645 } // namespace cc 1655 } // namespace cc
OLDNEW
« cc/layers/viewport.h ('K') | « cc/trees/layer_tree_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698