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

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

Issue 2887053002: Remove scroll_clip_layer dependency from viewport layer tracking (Closed)
Patch Set: Cleanup return stmt Created 3 years, 7 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
« no previous file with comments | « cc/trees/layer_tree_impl.h ('k') | cc/trees/layer_tree_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_impl.h" 5 #include "cc/trees/layer_tree_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 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
74 : layer_tree_host_impl_(layer_tree_host_impl), 74 : layer_tree_host_impl_(layer_tree_host_impl),
75 source_frame_number_(-1), 75 source_frame_number_(-1),
76 is_first_frame_after_commit_tracker_(-1), 76 is_first_frame_after_commit_tracker_(-1),
77 root_layer_for_testing_(nullptr), 77 root_layer_for_testing_(nullptr),
78 hud_layer_(nullptr), 78 hud_layer_(nullptr),
79 background_color_(0), 79 background_color_(0),
80 has_transparent_background_(false), 80 has_transparent_background_(false),
81 last_scrolled_scroll_node_index_(ScrollTree::kInvalidNodeId), 81 last_scrolled_scroll_node_index_(ScrollTree::kInvalidNodeId),
82 overscroll_elasticity_layer_id_(Layer::INVALID_ID), 82 overscroll_elasticity_layer_id_(Layer::INVALID_ID),
83 page_scale_layer_id_(Layer::INVALID_ID), 83 page_scale_layer_id_(Layer::INVALID_ID),
84 inner_viewport_container_layer_id_(Layer::INVALID_ID),
85 outer_viewport_container_layer_id_(Layer::INVALID_ID),
84 inner_viewport_scroll_layer_id_(Layer::INVALID_ID), 86 inner_viewport_scroll_layer_id_(Layer::INVALID_ID),
85 outer_viewport_scroll_layer_id_(Layer::INVALID_ID), 87 outer_viewport_scroll_layer_id_(Layer::INVALID_ID),
86 page_scale_factor_(page_scale_factor), 88 page_scale_factor_(page_scale_factor),
87 min_page_scale_factor_(0), 89 min_page_scale_factor_(0),
88 max_page_scale_factor_(0), 90 max_page_scale_factor_(0),
89 device_scale_factor_(1.f), 91 device_scale_factor_(1.f),
90 painted_device_scale_factor_(1.f), 92 painted_device_scale_factor_(1.f),
91 content_source_id_(0), 93 content_source_id_(0),
92 elastic_overscroll_(elastic_overscroll), 94 elastic_overscroll_(elastic_overscroll),
93 layers_(new OwnedLayerImplList), 95 layers_(new OwnedLayerImplList),
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
150 if (!LayerListIsEmpty()) { 152 if (!LayerListIsEmpty()) {
151 LayerTreeHostCommon::CallFunctionForEveryLayer( 153 LayerTreeHostCommon::CallFunctionForEveryLayer(
152 this, [](LayerImpl* layer) { layer->RecreateTileResources(); }); 154 this, [](LayerImpl* layer) { layer->RecreateTileResources(); });
153 } 155 }
154 } 156 }
155 157
156 bool LayerTreeImpl::IsViewportLayerId(int id) const { 158 bool LayerTreeImpl::IsViewportLayerId(int id) const {
157 #if DCHECK_IS_ON() 159 #if DCHECK_IS_ON()
158 // Ensure the LayerImpl viewport layer types correspond to the LayerTreeImpl's 160 // Ensure the LayerImpl viewport layer types correspond to the LayerTreeImpl's
159 // viewport layers. 161 // viewport layers.
162 if (id == inner_viewport_container_layer_id_)
163 DCHECK(LayerById(id)->viewport_layer_type() == INNER_VIEWPORT_CONTAINER);
164 if (id == outer_viewport_container_layer_id_)
165 DCHECK(LayerById(id)->viewport_layer_type() == OUTER_VIEWPORT_CONTAINER);
160 if (id == inner_viewport_scroll_layer_id_) 166 if (id == inner_viewport_scroll_layer_id_)
161 DCHECK(LayerById(id)->viewport_layer_type() == INNER_VIEWPORT_SCROLL); 167 DCHECK(LayerById(id)->viewport_layer_type() == INNER_VIEWPORT_SCROLL);
162 if (id == outer_viewport_scroll_layer_id_) 168 if (id == outer_viewport_scroll_layer_id_)
163 DCHECK(LayerById(id)->viewport_layer_type() == OUTER_VIEWPORT_SCROLL); 169 DCHECK(LayerById(id)->viewport_layer_type() == OUTER_VIEWPORT_SCROLL);
164 if (InnerViewportContainerLayer() &&
165 id == InnerViewportContainerLayer()->id())
166 DCHECK(InnerViewportContainerLayer()->viewport_layer_type() ==
167 INNER_VIEWPORT_CONTAINER);
168 if (OuterViewportContainerLayer() &&
169 id == OuterViewportContainerLayer()->id())
170 DCHECK(OuterViewportContainerLayer()->viewport_layer_type() ==
171 OUTER_VIEWPORT_CONTAINER);
172 #endif 170 #endif
173 if (auto* layer = LayerById(id)) 171 if (auto* layer = LayerById(id))
174 return layer->viewport_layer_type() != NOT_VIEWPORT_LAYER; 172 return layer->viewport_layer_type() != NOT_VIEWPORT_LAYER;
175 return false; 173 return false;
176 } 174 }
177 175
178 void LayerTreeImpl::DidUpdateScrollOffset(int layer_id) { 176 void LayerTreeImpl::DidUpdateScrollOffset(int layer_id) {
179 DidUpdateScrollState(layer_id); 177 DidUpdateScrollState(layer_id);
180 DCHECK(lifecycle().AllowsPropertyTreeAccess()); 178 DCHECK(lifecycle().AllowsPropertyTreeAccess());
181 TransformTree& transform_tree = property_trees()->transform_tree; 179 TransformTree& transform_tree = property_trees()->transform_tree;
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after
448 target_tree->set_browser_controls_shrink_blink_size( 446 target_tree->set_browser_controls_shrink_blink_size(
449 browser_controls_shrink_blink_size_); 447 browser_controls_shrink_blink_size_);
450 target_tree->set_top_controls_height(top_controls_height_); 448 target_tree->set_top_controls_height(top_controls_height_);
451 target_tree->set_bottom_controls_height(bottom_controls_height_); 449 target_tree->set_bottom_controls_height(bottom_controls_height_);
452 target_tree->PushBrowserControls(nullptr); 450 target_tree->PushBrowserControls(nullptr);
453 451
454 // The page scale factor update can affect scrolling which requires that 452 // The page scale factor update can affect scrolling which requires that
455 // these ids are set, so this must be before PushPageScaleFactorAndLimits. 453 // these ids are set, so this must be before PushPageScaleFactorAndLimits.
456 target_tree->SetViewportLayersFromIds( 454 target_tree->SetViewportLayersFromIds(
457 overscroll_elasticity_layer_id_, page_scale_layer_id_, 455 overscroll_elasticity_layer_id_, page_scale_layer_id_,
456 inner_viewport_container_layer_id_, outer_viewport_container_layer_id_,
458 inner_viewport_scroll_layer_id_, outer_viewport_scroll_layer_id_); 457 inner_viewport_scroll_layer_id_, outer_viewport_scroll_layer_id_);
459 458
460 // Active tree already shares the page_scale_factor object with pending 459 // Active tree already shares the page_scale_factor object with pending
461 // tree so only the limits need to be provided. 460 // tree so only the limits need to be provided.
462 target_tree->PushPageScaleFactorAndLimits(nullptr, min_page_scale_factor(), 461 target_tree->PushPageScaleFactorAndLimits(nullptr, min_page_scale_factor(),
463 max_page_scale_factor()); 462 max_page_scale_factor());
464 target_tree->SetDeviceScaleFactor(device_scale_factor()); 463 target_tree->SetDeviceScaleFactor(device_scale_factor());
465 target_tree->set_painted_device_scale_factor(painted_device_scale_factor()); 464 target_tree->set_painted_device_scale_factor(painted_device_scale_factor());
466 target_tree->SetRasterColorSpace(raster_color_space_); 465 target_tree->SetRasterColorSpace(raster_color_space_);
467 target_tree->elastic_overscroll()->PushPendingToActive(); 466 target_tree->elastic_overscroll()->PushPendingToActive();
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after
643 void LayerTreeImpl::SetFilterMutated(ElementId element_id, 642 void LayerTreeImpl::SetFilterMutated(ElementId element_id,
644 const FilterOperations& filters) { 643 const FilterOperations& filters) {
645 DCHECK_EQ( 644 DCHECK_EQ(
646 1u, property_trees()->element_id_to_effect_node_index.count(element_id)); 645 1u, property_trees()->element_id_to_effect_node_index.count(element_id));
647 element_id_to_filter_animations_[element_id] = filters; 646 element_id_to_filter_animations_[element_id] = filters;
648 if (property_trees()->effect_tree.OnFilterAnimated(element_id, filters)) 647 if (property_trees()->effect_tree.OnFilterAnimated(element_id, filters))
649 set_needs_update_draw_properties(); 648 set_needs_update_draw_properties();
650 } 649 }
651 650
652 LayerImpl* LayerTreeImpl::InnerViewportContainerLayer() const { 651 LayerImpl* LayerTreeImpl::InnerViewportContainerLayer() const {
653 return InnerViewportScrollLayer() 652 return LayerById(inner_viewport_container_layer_id_);
654 ? InnerViewportScrollLayer()->scroll_clip_layer()
655 : NULL;
656 } 653 }
657 654
658 LayerImpl* LayerTreeImpl::OuterViewportContainerLayer() const { 655 LayerImpl* LayerTreeImpl::OuterViewportContainerLayer() const {
659 return OuterViewportScrollLayer() 656 return LayerById(outer_viewport_container_layer_id_);
660 ? OuterViewportScrollLayer()->scroll_clip_layer()
661 : NULL;
662 } 657 }
663 658
664 ScrollNode* LayerTreeImpl::CurrentlyScrollingNode() { 659 ScrollNode* LayerTreeImpl::CurrentlyScrollingNode() {
665 DCHECK(IsActiveTree()); 660 DCHECK(IsActiveTree());
666 return property_trees_.scroll_tree.CurrentlyScrollingNode(); 661 return property_trees_.scroll_tree.CurrentlyScrollingNode();
667 } 662 }
668 663
669 const ScrollNode* LayerTreeImpl::CurrentlyScrollingNode() const { 664 const ScrollNode* LayerTreeImpl::CurrentlyScrollingNode() const {
670 return property_trees_.scroll_tree.CurrentlyScrollingNode(); 665 return property_trees_.scroll_tree.CurrentlyScrollingNode();
671 } 666 }
(...skipping 329 matching lines...) Expand 10 before | Expand all | Expand 10 after
1001 996
1002 if (layer_list_.empty()) 997 if (layer_list_.empty())
1003 return; 998 return;
1004 999
1005 property_trees()->scroll_tree.ApplySentScrollDeltasFromAbortedCommit(); 1000 property_trees()->scroll_tree.ApplySentScrollDeltasFromAbortedCommit();
1006 } 1001 }
1007 1002
1008 void LayerTreeImpl::SetViewportLayersFromIds( 1003 void LayerTreeImpl::SetViewportLayersFromIds(
1009 int overscroll_elasticity_layer_id, 1004 int overscroll_elasticity_layer_id,
1010 int page_scale_layer_id, 1005 int page_scale_layer_id,
1006 int inner_viewport_container_layer_id,
1007 int outer_viewport_container_layer_id,
1011 int inner_viewport_scroll_layer_id, 1008 int inner_viewport_scroll_layer_id,
1012 int outer_viewport_scroll_layer_id) { 1009 int outer_viewport_scroll_layer_id) {
1013 overscroll_elasticity_layer_id_ = overscroll_elasticity_layer_id; 1010 overscroll_elasticity_layer_id_ = overscroll_elasticity_layer_id;
1014 page_scale_layer_id_ = page_scale_layer_id; 1011 page_scale_layer_id_ = page_scale_layer_id;
1012 inner_viewport_container_layer_id_ = inner_viewport_container_layer_id;
1013 outer_viewport_container_layer_id_ = outer_viewport_container_layer_id;
1015 inner_viewport_scroll_layer_id_ = inner_viewport_scroll_layer_id; 1014 inner_viewport_scroll_layer_id_ = inner_viewport_scroll_layer_id;
1016 outer_viewport_scroll_layer_id_ = outer_viewport_scroll_layer_id; 1015 outer_viewport_scroll_layer_id_ = outer_viewport_scroll_layer_id;
1017 1016
1018 // The scroll_clip_layer Layer properties should be up-to-date. 1017 if (auto* inner_container = LayerById(inner_viewport_container_layer_id_))
1019 DCHECK(lifecycle().AllowsLayerPropertyAccess()); 1018 inner_container->SetViewportLayerType(INNER_VIEWPORT_CONTAINER);
1020 if (auto* inner_scroll = LayerById(inner_viewport_scroll_layer_id_)) { 1019 if (auto* inner_scroll = LayerById(inner_viewport_scroll_layer_id_))
1021 inner_scroll->SetViewportLayerType(INNER_VIEWPORT_SCROLL); 1020 inner_scroll->SetViewportLayerType(INNER_VIEWPORT_SCROLL);
1022 if (auto* inner_container = inner_scroll->scroll_clip_layer()) 1021 if (auto* outer_container = LayerById(outer_viewport_container_layer_id_))
1023 inner_container->SetViewportLayerType(INNER_VIEWPORT_CONTAINER); 1022 outer_container->SetViewportLayerType(OUTER_VIEWPORT_CONTAINER);
1024 } 1023 if (auto* outer_scroll = LayerById(outer_viewport_scroll_layer_id_))
1025 if (auto* outer_scroll = LayerById(outer_viewport_scroll_layer_id_)) {
1026 outer_scroll->SetViewportLayerType(OUTER_VIEWPORT_SCROLL); 1024 outer_scroll->SetViewportLayerType(OUTER_VIEWPORT_SCROLL);
1027 if (auto* outer_container = outer_scroll->scroll_clip_layer())
1028 outer_container->SetViewportLayerType(OUTER_VIEWPORT_CONTAINER);
1029 }
1030 } 1025 }
1031 1026
1032 void LayerTreeImpl::ClearViewportLayers() { 1027 void LayerTreeImpl::ClearViewportLayers() {
1033 SetViewportLayersFromIds(Layer::INVALID_ID, Layer::INVALID_ID, 1028 SetViewportLayersFromIds(Layer::INVALID_ID, Layer::INVALID_ID,
1029 Layer::INVALID_ID, Layer::INVALID_ID,
1034 Layer::INVALID_ID, Layer::INVALID_ID); 1030 Layer::INVALID_ID, Layer::INVALID_ID);
1035 } 1031 }
1036 1032
1037 // For unit tests, we use the layer's id as its element id. 1033 // For unit tests, we use the layer's id as its element id.
1038 static void SetElementIdForTesting(LayerImpl* layer) { 1034 static void SetElementIdForTesting(LayerImpl* layer) {
1039 layer->SetElementId(LayerIdToElementIdForTesting(layer->id())); 1035 layer->SetElementId(LayerIdToElementIdForTesting(layer->id()));
1040 } 1036 }
1041 1037
1042 void LayerTreeImpl::SetElementIdsForTesting() { 1038 void LayerTreeImpl::SetElementIdsForTesting() {
1043 LayerListIterator<LayerImpl> it(root_layer_for_testing_); 1039 LayerListIterator<LayerImpl> it(root_layer_for_testing_);
(...skipping 1094 matching lines...) Expand 10 before | Expand all | Expand 10 after
2138 2134
2139 void LayerTreeImpl::ResetAllChangeTracking() { 2135 void LayerTreeImpl::ResetAllChangeTracking() {
2140 layers_that_should_push_properties_.clear(); 2136 layers_that_should_push_properties_.clear();
2141 // Iterate over all layers, including masks. 2137 // Iterate over all layers, including masks.
2142 for (auto& layer : *layers_) 2138 for (auto& layer : *layers_)
2143 layer->ResetChangeTracking(); 2139 layer->ResetChangeTracking();
2144 property_trees_.ResetAllChangeTracking(); 2140 property_trees_.ResetAllChangeTracking();
2145 } 2141 }
2146 2142
2147 } // namespace cc 2143 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_impl.h ('k') | cc/trees/layer_tree_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698