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

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

Issue 2889093003: Refactor SetViewportLayerIds to use a struct instead of 6 values (Closed)
Patch Set: Fix small mistake made in a test 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 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
72 scoped_refptr<SyncedBrowserControls> top_controls_shown_ratio, 72 scoped_refptr<SyncedBrowserControls> top_controls_shown_ratio,
73 scoped_refptr<SyncedElasticOverscroll> elastic_overscroll) 73 scoped_refptr<SyncedElasticOverscroll> elastic_overscroll)
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),
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),
86 inner_viewport_scroll_layer_id_(Layer::INVALID_ID),
87 outer_viewport_scroll_layer_id_(Layer::INVALID_ID),
88 page_scale_factor_(page_scale_factor), 82 page_scale_factor_(page_scale_factor),
89 min_page_scale_factor_(0), 83 min_page_scale_factor_(0),
90 max_page_scale_factor_(0), 84 max_page_scale_factor_(0),
91 device_scale_factor_(1.f), 85 device_scale_factor_(1.f),
92 painted_device_scale_factor_(1.f), 86 painted_device_scale_factor_(1.f),
93 content_source_id_(0), 87 content_source_id_(0),
94 elastic_overscroll_(elastic_overscroll), 88 elastic_overscroll_(elastic_overscroll),
95 layers_(new OwnedLayerImplList), 89 layers_(new OwnedLayerImplList),
96 viewport_size_invalid_(false), 90 viewport_size_invalid_(false),
97 needs_update_draw_properties_(true), 91 needs_update_draw_properties_(true),
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
152 if (!LayerListIsEmpty()) { 146 if (!LayerListIsEmpty()) {
153 LayerTreeHostCommon::CallFunctionForEveryLayer( 147 LayerTreeHostCommon::CallFunctionForEveryLayer(
154 this, [](LayerImpl* layer) { layer->RecreateTileResources(); }); 148 this, [](LayerImpl* layer) { layer->RecreateTileResources(); });
155 } 149 }
156 } 150 }
157 151
158 bool LayerTreeImpl::IsViewportLayerId(int id) const { 152 bool LayerTreeImpl::IsViewportLayerId(int id) const {
159 #if DCHECK_IS_ON() 153 #if DCHECK_IS_ON()
160 // Ensure the LayerImpl viewport layer types correspond to the LayerTreeImpl's 154 // Ensure the LayerImpl viewport layer types correspond to the LayerTreeImpl's
161 // viewport layers. 155 // viewport layers.
162 if (id == inner_viewport_container_layer_id_) 156 if (id == viewport_layer_ids_.inner_viewport_container)
163 DCHECK(LayerById(id)->viewport_layer_type() == INNER_VIEWPORT_CONTAINER); 157 DCHECK(LayerById(id)->viewport_layer_type() == INNER_VIEWPORT_CONTAINER);
164 if (id == outer_viewport_container_layer_id_) 158 if (id == viewport_layer_ids_.outer_viewport_container)
165 DCHECK(LayerById(id)->viewport_layer_type() == OUTER_VIEWPORT_CONTAINER); 159 DCHECK(LayerById(id)->viewport_layer_type() == OUTER_VIEWPORT_CONTAINER);
166 if (id == inner_viewport_scroll_layer_id_) 160 if (id == viewport_layer_ids_.inner_viewport_scroll)
167 DCHECK(LayerById(id)->viewport_layer_type() == INNER_VIEWPORT_SCROLL); 161 DCHECK(LayerById(id)->viewport_layer_type() == INNER_VIEWPORT_SCROLL);
168 if (id == outer_viewport_scroll_layer_id_) 162 if (id == viewport_layer_ids_.outer_viewport_scroll)
169 DCHECK(LayerById(id)->viewport_layer_type() == OUTER_VIEWPORT_SCROLL); 163 DCHECK(LayerById(id)->viewport_layer_type() == OUTER_VIEWPORT_SCROLL);
170 #endif 164 #endif
171 if (auto* layer = LayerById(id)) 165 if (auto* layer = LayerById(id))
172 return layer->viewport_layer_type() != NOT_VIEWPORT_LAYER; 166 return layer->viewport_layer_type() != NOT_VIEWPORT_LAYER;
173 return false; 167 return false;
174 } 168 }
175 169
176 void LayerTreeImpl::DidUpdateScrollOffset(int layer_id) { 170 void LayerTreeImpl::DidUpdateScrollOffset(int layer_id) {
177 DidUpdateScrollState(layer_id); 171 DidUpdateScrollState(layer_id);
178 DCHECK(lifecycle().AllowsPropertyTreeAccess()); 172 DCHECK(lifecycle().AllowsPropertyTreeAccess());
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
221 return; 215 return;
222 216
223 int scroll_layer_id, clip_layer_id; 217 int scroll_layer_id, clip_layer_id;
224 if (IsViewportLayerId(layer_id)) { 218 if (IsViewportLayerId(layer_id)) {
225 if (!InnerViewportContainerLayer()) 219 if (!InnerViewportContainerLayer())
226 return; 220 return;
227 221
228 // For scrollbar purposes, a change to any of the four viewport layers 222 // For scrollbar purposes, a change to any of the four viewport layers
229 // should affect the scrollbars tied to the outermost layers, which express 223 // should affect the scrollbars tied to the outermost layers, which express
230 // the sum of the entire viewport. 224 // the sum of the entire viewport.
231 scroll_layer_id = outer_viewport_scroll_layer_id_; 225 scroll_layer_id = viewport_layer_ids_.outer_viewport_scroll;
232 clip_layer_id = InnerViewportContainerLayer()->id(); 226 clip_layer_id = viewport_layer_ids_.inner_viewport_container;
233 } else { 227 } else {
234 // If the clip layer id was passed in, then look up the scroll layer, or 228 // If the clip layer id was passed in, then look up the scroll layer, or
235 // vice versa. 229 // vice versa.
236 auto i = clip_scroll_map_.find(layer_id); 230 auto i = clip_scroll_map_.find(layer_id);
237 if (i != clip_scroll_map_.end()) { 231 if (i != clip_scroll_map_.end()) {
238 scroll_layer_id = i->second; 232 scroll_layer_id = i->second;
239 clip_layer_id = layer_id; 233 clip_layer_id = layer_id;
240 } else { 234 } else {
241 scroll_layer_id = layer_id; 235 scroll_layer_id = layer_id;
242 clip_layer_id = LayerById(scroll_layer_id)->scroll_clip_layer_id(); 236 clip_layer_id = LayerById(scroll_layer_id)->scroll_clip_layer_id();
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
336 return; 330 return;
337 331
338 for (auto* picture_layer : picture_layers_) 332 for (auto* picture_layer : picture_layers_)
339 picture_layer->InvalidateRegionForImages(images_to_invalidate); 333 picture_layer->InvalidateRegionForImages(images_to_invalidate);
340 } 334 }
341 335
342 bool LayerTreeImpl::IsRootLayer(const LayerImpl* layer) const { 336 bool LayerTreeImpl::IsRootLayer(const LayerImpl* layer) const {
343 return layer_list_.empty() ? false : layer_list_[0] == layer; 337 return layer_list_.empty() ? false : layer_list_[0] == layer;
344 } 338 }
345 339
346 LayerImpl* LayerTreeImpl::InnerViewportScrollLayer() const {
347 return LayerById(inner_viewport_scroll_layer_id_);
348 }
349
350 LayerImpl* LayerTreeImpl::OuterViewportScrollLayer() const {
351 return LayerById(outer_viewport_scroll_layer_id_);
352 }
353
354 gfx::ScrollOffset LayerTreeImpl::TotalScrollOffset() const { 340 gfx::ScrollOffset LayerTreeImpl::TotalScrollOffset() const {
355 gfx::ScrollOffset offset; 341 gfx::ScrollOffset offset;
356 342
357 if (InnerViewportScrollLayer()) 343 if (InnerViewportScrollLayer())
358 offset += InnerViewportScrollLayer()->CurrentScrollOffset(); 344 offset += InnerViewportScrollLayer()->CurrentScrollOffset();
359 345
360 if (OuterViewportScrollLayer()) 346 if (OuterViewportScrollLayer())
361 offset += OuterViewportScrollLayer()->CurrentScrollOffset(); 347 offset += OuterViewportScrollLayer()->CurrentScrollOffset();
362 348
363 return offset; 349 return offset;
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
444 swap_promise_list_.clear(); 430 swap_promise_list_.clear();
445 431
446 target_tree->set_browser_controls_shrink_blink_size( 432 target_tree->set_browser_controls_shrink_blink_size(
447 browser_controls_shrink_blink_size_); 433 browser_controls_shrink_blink_size_);
448 target_tree->set_top_controls_height(top_controls_height_); 434 target_tree->set_top_controls_height(top_controls_height_);
449 target_tree->set_bottom_controls_height(bottom_controls_height_); 435 target_tree->set_bottom_controls_height(bottom_controls_height_);
450 target_tree->PushBrowserControls(nullptr); 436 target_tree->PushBrowserControls(nullptr);
451 437
452 // The page scale factor update can affect scrolling which requires that 438 // The page scale factor update can affect scrolling which requires that
453 // these ids are set, so this must be before PushPageScaleFactorAndLimits. 439 // these ids are set, so this must be before PushPageScaleFactorAndLimits.
454 target_tree->SetViewportLayersFromIds( 440 target_tree->SetViewportLayersFromIds(viewport_layer_ids_);
455 overscroll_elasticity_layer_id_, page_scale_layer_id_,
456 inner_viewport_container_layer_id_, outer_viewport_container_layer_id_,
457 inner_viewport_scroll_layer_id_, outer_viewport_scroll_layer_id_);
458 441
459 // Active tree already shares the page_scale_factor object with pending 442 // Active tree already shares the page_scale_factor object with pending
460 // tree so only the limits need to be provided. 443 // tree so only the limits need to be provided.
461 target_tree->PushPageScaleFactorAndLimits(nullptr, min_page_scale_factor(), 444 target_tree->PushPageScaleFactorAndLimits(nullptr, min_page_scale_factor(),
462 max_page_scale_factor()); 445 max_page_scale_factor());
463 target_tree->SetDeviceScaleFactor(device_scale_factor()); 446 target_tree->SetDeviceScaleFactor(device_scale_factor());
464 target_tree->set_painted_device_scale_factor(painted_device_scale_factor()); 447 target_tree->set_painted_device_scale_factor(painted_device_scale_factor());
465 target_tree->SetRasterColorSpace(raster_color_space_); 448 target_tree->SetRasterColorSpace(raster_color_space_);
466 target_tree->elastic_overscroll()->PushPendingToActive(); 449 target_tree->elastic_overscroll()->PushPendingToActive();
467 450
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after
641 624
642 void LayerTreeImpl::SetFilterMutated(ElementId element_id, 625 void LayerTreeImpl::SetFilterMutated(ElementId element_id,
643 const FilterOperations& filters) { 626 const FilterOperations& filters) {
644 DCHECK_EQ( 627 DCHECK_EQ(
645 1u, property_trees()->element_id_to_effect_node_index.count(element_id)); 628 1u, property_trees()->element_id_to_effect_node_index.count(element_id));
646 element_id_to_filter_animations_[element_id] = filters; 629 element_id_to_filter_animations_[element_id] = filters;
647 if (property_trees()->effect_tree.OnFilterAnimated(element_id, filters)) 630 if (property_trees()->effect_tree.OnFilterAnimated(element_id, filters))
648 set_needs_update_draw_properties(); 631 set_needs_update_draw_properties();
649 } 632 }
650 633
651 LayerImpl* LayerTreeImpl::InnerViewportContainerLayer() const {
652 return LayerById(inner_viewport_container_layer_id_);
653 }
654
655 LayerImpl* LayerTreeImpl::OuterViewportContainerLayer() const {
656 return LayerById(outer_viewport_container_layer_id_);
657 }
658
659 ScrollNode* LayerTreeImpl::CurrentlyScrollingNode() { 634 ScrollNode* LayerTreeImpl::CurrentlyScrollingNode() {
660 DCHECK(IsActiveTree()); 635 DCHECK(IsActiveTree());
661 return property_trees_.scroll_tree.CurrentlyScrollingNode(); 636 return property_trees_.scroll_tree.CurrentlyScrollingNode();
662 } 637 }
663 638
664 const ScrollNode* LayerTreeImpl::CurrentlyScrollingNode() const { 639 const ScrollNode* LayerTreeImpl::CurrentlyScrollingNode() const {
665 return property_trees_.scroll_tree.CurrentlyScrollingNode(); 640 return property_trees_.scroll_tree.CurrentlyScrollingNode();
666 } 641 }
667 642
668 int LayerTreeImpl::LastScrolledScrollNodeIndex() const { 643 int LayerTreeImpl::LastScrolledScrollNodeIndex() const {
(...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after
925 900
926 return true; 901 return true;
927 } 902 }
928 903
929 void LayerTreeImpl::DidUpdatePageScale() { 904 void LayerTreeImpl::DidUpdatePageScale() {
930 if (IsActiveTree()) 905 if (IsActiveTree())
931 page_scale_factor()->SetCurrent( 906 page_scale_factor()->SetCurrent(
932 ClampPageScaleFactorToLimits(current_page_scale_factor())); 907 ClampPageScaleFactorToLimits(current_page_scale_factor()));
933 908
934 set_needs_update_draw_properties(); 909 set_needs_update_draw_properties();
935 DidUpdateScrollState(inner_viewport_scroll_layer_id_); 910 DidUpdateScrollState(viewport_layer_ids_.inner_viewport_scroll);
936 911
937 if (IsActiveTree() && layer_tree_host_impl_->ViewportMainScrollLayer()) { 912 if (IsActiveTree() && layer_tree_host_impl_->ViewportMainScrollLayer()) {
938 if (ScrollbarAnimationController* controller = 913 if (ScrollbarAnimationController* controller =
939 layer_tree_host_impl_->ScrollbarAnimationControllerForElementId( 914 layer_tree_host_impl_->ScrollbarAnimationControllerForElementId(
940 OuterViewportScrollLayer()->element_id())) 915 OuterViewportScrollLayer()->element_id()))
941 controller->DidScrollUpdate(); 916 controller->DidScrollUpdate();
942 } 917 }
943 } 918 }
944 919
945 void LayerTreeImpl::SetDeviceScaleFactor(float device_scale_factor) { 920 void LayerTreeImpl::SetDeviceScaleFactor(float device_scale_factor) {
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
993 page_scale_factor()->AbortCommit(); 968 page_scale_factor()->AbortCommit();
994 top_controls_shown_ratio()->AbortCommit(); 969 top_controls_shown_ratio()->AbortCommit();
995 elastic_overscroll()->AbortCommit(); 970 elastic_overscroll()->AbortCommit();
996 971
997 if (layer_list_.empty()) 972 if (layer_list_.empty())
998 return; 973 return;
999 974
1000 property_trees()->scroll_tree.ApplySentScrollDeltasFromAbortedCommit(); 975 property_trees()->scroll_tree.ApplySentScrollDeltasFromAbortedCommit();
1001 } 976 }
1002 977
1003 void LayerTreeImpl::SetViewportLayersFromIds( 978 void LayerTreeImpl::SetViewportLayersFromIds(const ViewportLayerIds& ids) {
1004 int overscroll_elasticity_layer_id, 979 viewport_layer_ids_ = ids;
1005 int page_scale_layer_id,
1006 int inner_viewport_container_layer_id,
1007 int outer_viewport_container_layer_id,
1008 int inner_viewport_scroll_layer_id,
1009 int outer_viewport_scroll_layer_id) {
1010 overscroll_elasticity_layer_id_ = overscroll_elasticity_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;
1014 inner_viewport_scroll_layer_id_ = inner_viewport_scroll_layer_id;
1015 outer_viewport_scroll_layer_id_ = outer_viewport_scroll_layer_id;
1016 980
1017 if (auto* inner_container = LayerById(inner_viewport_container_layer_id_)) 981 // Set the viewport layer types.
982 if (auto* inner_container = InnerViewportContainerLayer())
1018 inner_container->SetViewportLayerType(INNER_VIEWPORT_CONTAINER); 983 inner_container->SetViewportLayerType(INNER_VIEWPORT_CONTAINER);
1019 if (auto* inner_scroll = LayerById(inner_viewport_scroll_layer_id_)) 984 if (auto* inner_scroll = InnerViewportScrollLayer())
1020 inner_scroll->SetViewportLayerType(INNER_VIEWPORT_SCROLL); 985 inner_scroll->SetViewportLayerType(INNER_VIEWPORT_SCROLL);
1021 if (auto* outer_container = LayerById(outer_viewport_container_layer_id_)) 986 if (auto* outer_container = OuterViewportContainerLayer())
1022 outer_container->SetViewportLayerType(OUTER_VIEWPORT_CONTAINER); 987 outer_container->SetViewportLayerType(OUTER_VIEWPORT_CONTAINER);
1023 if (auto* outer_scroll = LayerById(outer_viewport_scroll_layer_id_)) 988 if (auto* outer_scroll = OuterViewportScrollLayer())
1024 outer_scroll->SetViewportLayerType(OUTER_VIEWPORT_SCROLL); 989 outer_scroll->SetViewportLayerType(OUTER_VIEWPORT_SCROLL);
1025 } 990 }
1026 991
1027 void LayerTreeImpl::ClearViewportLayers() { 992 void LayerTreeImpl::ClearViewportLayers() {
1028 SetViewportLayersFromIds(Layer::INVALID_ID, Layer::INVALID_ID, 993 SetViewportLayersFromIds(ViewportLayerIds());
1029 Layer::INVALID_ID, Layer::INVALID_ID,
1030 Layer::INVALID_ID, Layer::INVALID_ID);
1031 } 994 }
1032 995
1033 // For unit tests, we use the layer's id as its element id. 996 // For unit tests, we use the layer's id as its element id.
1034 static void SetElementIdForTesting(LayerImpl* layer) { 997 static void SetElementIdForTesting(LayerImpl* layer) {
1035 layer->SetElementId(LayerIdToElementIdForTesting(layer->id())); 998 layer->SetElementId(LayerIdToElementIdForTesting(layer->id()));
1036 } 999 }
1037 1000
1038 void LayerTreeImpl::SetElementIdsForTesting() { 1001 void LayerTreeImpl::SetElementIdsForTesting() {
1039 LayerListIterator<LayerImpl> it(root_layer_for_testing_); 1002 LayerListIterator<LayerImpl> it(root_layer_for_testing_);
1040 for (; it != LayerListIterator<LayerImpl>(nullptr); ++it) { 1003 for (; it != LayerListIterator<LayerImpl>(nullptr); ++it) {
(...skipping 1097 matching lines...) Expand 10 before | Expand all | Expand 10 after
2138 2101
2139 void LayerTreeImpl::ResetAllChangeTracking() { 2102 void LayerTreeImpl::ResetAllChangeTracking() {
2140 layers_that_should_push_properties_.clear(); 2103 layers_that_should_push_properties_.clear();
2141 // Iterate over all layers, including masks. 2104 // Iterate over all layers, including masks.
2142 for (auto& layer : *layers_) 2105 for (auto& layer : *layers_)
2143 layer->ResetChangeTracking(); 2106 layer->ResetChangeTracking();
2144 property_trees_.ResetAllChangeTracking(); 2107 property_trees_.ResetAllChangeTracking();
2145 } 2108 }
2146 2109
2147 } // namespace cc 2110 } // 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