Index: cc/trees/layer_tree_host.cc |
diff --git a/cc/trees/layer_tree_host.cc b/cc/trees/layer_tree_host.cc |
index e826e2d93900d0e34f10261a4e00b6ac885ad6fc..8db96130c74303927c5712016310f894d3d87349 100644 |
--- a/cc/trees/layer_tree_host.cc |
+++ b/cc/trees/layer_tree_host.cc |
@@ -172,7 +172,7 @@ LayerTreeHost::~LayerTreeHost() { |
mutator_host_->SetMutatorHostClient(nullptr); |
// We must clear any pointers into the layer tree prior to destroying it. |
- RegisterViewportLayers(nullptr, nullptr, nullptr, nullptr, nullptr, nullptr); |
+ RegisterViewportLayers(ViewportLayers()); |
if (root_layer_) { |
root_layer_->SetLayerTreeHost(nullptr); |
@@ -679,7 +679,7 @@ bool LayerTreeHost::DoUpdateLayers(Layer* root_layer) { |
Layer* root_scroll = |
PropertyTreeBuilder::FindFirstScrollableLayer(root_layer); |
- Layer* page_scale_layer = page_scale_layer_.get(); |
+ Layer* page_scale_layer = viewport_layers_.page_scale.get(); |
if (!page_scale_layer && root_scroll) |
page_scale_layer = root_scroll->parent(); |
@@ -762,10 +762,10 @@ void LayerTreeHost::ApplyViewportDeltas(ScrollAndScaleSet* info) { |
// Preemptively apply the scroll offset and scale delta here before sending |
// it to the client. If the client comes back and sets it to the same |
// value, then the layer can early out without needing a full commit. |
- if (inner_viewport_scroll_layer_) { |
- inner_viewport_scroll_layer_->SetScrollOffsetFromImplSide( |
+ if (viewport_layers_.inner_viewport_scroll) { |
+ viewport_layers_.inner_viewport_scroll->SetScrollOffsetFromImplSide( |
gfx::ScrollOffsetWithDelta( |
- inner_viewport_scroll_layer_->scroll_offset(), |
+ viewport_layers_.inner_viewport_scroll->scroll_offset(), |
inner_viewport_scroll_delta)); |
} |
@@ -902,21 +902,19 @@ void LayerTreeHost::SetRootLayer(scoped_refptr<Layer> root_layer) { |
SetNeedsFullTreeSync(); |
} |
-void LayerTreeHost::RegisterViewportLayers( |
- scoped_refptr<Layer> overscroll_elasticity_layer, |
- scoped_refptr<Layer> page_scale_layer, |
- scoped_refptr<Layer> inner_viewport_container_layer, |
- scoped_refptr<Layer> outer_viewport_container_layer, |
- scoped_refptr<Layer> inner_viewport_scroll_layer, |
- scoped_refptr<Layer> outer_viewport_scroll_layer) { |
- DCHECK(!inner_viewport_scroll_layer || |
- inner_viewport_scroll_layer != outer_viewport_scroll_layer); |
- overscroll_elasticity_layer_ = overscroll_elasticity_layer; |
- page_scale_layer_ = page_scale_layer; |
- inner_viewport_container_layer_ = inner_viewport_container_layer; |
- outer_viewport_container_layer_ = outer_viewport_container_layer; |
- inner_viewport_scroll_layer_ = inner_viewport_scroll_layer; |
- outer_viewport_scroll_layer_ = outer_viewport_scroll_layer; |
+LayerTreeHost::ViewportLayers::ViewportLayers() {} |
+ |
+LayerTreeHost::ViewportLayers::~ViewportLayers() {} |
+ |
+void LayerTreeHost::RegisterViewportLayers(const ViewportLayers& layers) { |
+ DCHECK(!layers.inner_viewport_scroll || |
+ layers.inner_viewport_scroll != layers.outer_viewport_scroll); |
+ viewport_layers_.overscroll_elasticity = layers.overscroll_elasticity; |
+ viewport_layers_.page_scale = layers.page_scale; |
+ viewport_layers_.inner_viewport_container = layers.inner_viewport_container; |
+ viewport_layers_.outer_viewport_container = layers.outer_viewport_container; |
+ viewport_layers_.inner_viewport_scroll = layers.inner_viewport_scroll; |
+ viewport_layers_.outer_viewport_scroll = layers.outer_viewport_scroll; |
} |
void LayerTreeHost::RegisterSelection(const LayerSelection& selection) { |
@@ -1172,20 +1170,23 @@ void LayerTreeHost::PushLayerTreePropertiesTo(LayerTreeImpl* tree_impl) { |
EventListenerClass::kTouchEndOrCancel, |
event_listener_properties(EventListenerClass::kTouchEndOrCancel)); |
- if (page_scale_layer_ && inner_viewport_scroll_layer_) { |
+ if (viewport_layers_.page_scale && viewport_layers_.inner_viewport_scroll) { |
LayerTreeImpl::ViewportLayerIds ids; |
- if (overscroll_elasticity_layer_) |
- ids.overscroll_elasticity = overscroll_elasticity_layer_->id(); |
- ids.page_scale = page_scale_layer_->id(); |
- if (inner_viewport_container_layer_) |
- ids.inner_viewport_container = inner_viewport_container_layer_->id(); |
- if (outer_viewport_container_layer_) |
- ids.outer_viewport_container = outer_viewport_container_layer_->id(); |
- ids.inner_viewport_scroll = inner_viewport_scroll_layer_->id(); |
- if (outer_viewport_scroll_layer_) |
- ids.outer_viewport_scroll = outer_viewport_scroll_layer_->id(); |
+ if (viewport_layers_.overscroll_elasticity) |
+ ids.overscroll_elasticity = viewport_layers_.overscroll_elasticity->id(); |
+ ids.page_scale = viewport_layers_.page_scale->id(); |
+ if (viewport_layers_.inner_viewport_container) |
+ ids.inner_viewport_container = |
+ viewport_layers_.inner_viewport_container->id(); |
+ if (viewport_layers_.outer_viewport_container) |
+ ids.outer_viewport_container = |
+ viewport_layers_.outer_viewport_container->id(); |
+ ids.inner_viewport_scroll = viewport_layers_.inner_viewport_scroll->id(); |
+ if (viewport_layers_.outer_viewport_scroll) |
+ ids.outer_viewport_scroll = viewport_layers_.outer_viewport_scroll->id(); |
tree_impl->SetViewportLayersFromIds(ids); |
- DCHECK(inner_viewport_scroll_layer_->IsContainerForFixedPositionLayers()); |
+ DCHECK(viewport_layers_.inner_viewport_scroll |
+ ->IsContainerForFixedPositionLayers()); |
} else { |
tree_impl->ClearViewportLayers(); |
} |