Index: cc/layers/layer_impl.cc |
diff --git a/cc/layers/layer_impl.cc b/cc/layers/layer_impl.cc |
index 9c5ae1bacf99aeb29bc9e8143a99537223ffa79a..44f7fd32b7afdd87f67af1f73fad70898c3b4deb 100644 |
--- a/cc/layers/layer_impl.cc |
+++ b/cc/layers/layer_impl.cc |
@@ -68,6 +68,7 @@ LayerImpl::LayerImpl(LayerTreeImpl* tree_impl, int id) |
draws_content_(false), |
contributes_to_drawn_render_surface_(false), |
was_ever_ready_since_last_transform_animation_(true), |
+ viewport_layer_type_(NOT_VIEWPORT_LAYER), |
background_color_(0), |
safe_opaque_background_color_(0), |
transform_tree_index_(TransformTree::kInvalidNodeId), |
@@ -279,6 +280,9 @@ void LayerImpl::SetScrollClipLayer(int scroll_clip_layer_id) { |
layer_tree_impl()->UnregisterScrollLayer(this); |
scroll_clip_layer_id_ = scroll_clip_layer_id; |
layer_tree_impl()->RegisterScrollLayer(this); |
+ |
+ // Ensure our viewport layer type is updated. |
+ layer_tree_impl()->UpdateViewportLayerTypes(); |
} |
LayerImpl* LayerImpl::scroll_clip_layer() const { |
@@ -526,14 +530,21 @@ void LayerImpl::SetViewportBoundsDelta(const gfx::Vector2dF& bounds_delta) { |
return; |
PropertyTrees* property_trees = GetPropertyTrees(); |
- if (this == layer_tree_impl()->InnerViewportContainerLayer()) |
- property_trees->SetInnerViewportContainerBoundsDelta(bounds_delta); |
- else if (this == layer_tree_impl()->OuterViewportContainerLayer()) |
- property_trees->SetOuterViewportContainerBoundsDelta(bounds_delta); |
- else if (this == layer_tree_impl()->InnerViewportScrollLayer()) |
- property_trees->SetInnerViewportScrollBoundsDelta(bounds_delta); |
- else |
- NOTREACHED(); |
+ switch (viewport_layer_type_) { |
+ case (INNER_VIEWPORT_CONTAINER): |
+ property_trees->SetInnerViewportContainerBoundsDelta(bounds_delta); |
+ break; |
+ case (OUTER_VIEWPORT_CONTAINER): |
+ property_trees->SetOuterViewportContainerBoundsDelta(bounds_delta); |
+ break; |
+ case (INNER_VIEWPORT_SCROLL): |
+ property_trees->SetInnerViewportScrollBoundsDelta(bounds_delta); |
+ break; |
+ default: |
enne (OOO)
2017/05/09 17:08:29
style nit: can you not use default/NOTREACHED in t
pdr.
2017/05/09 22:20:07
Done.
|
+ // OUTER_VIEWPORT_SCROLL is intentionally not listed |
+ // because it should not have viewport bounds deltas. |
+ NOTREACHED(); |
+ } |
layer_tree_impl()->DidUpdateScrollState(id()); |
@@ -554,13 +565,16 @@ void LayerImpl::SetViewportBoundsDelta(const gfx::Vector2dF& bounds_delta) { |
} |
gfx::Vector2dF LayerImpl::ViewportBoundsDelta() const { |
- if (this == layer_tree_impl()->InnerViewportContainerLayer()) |
- return GetPropertyTrees()->inner_viewport_container_bounds_delta(); |
- else if (this == layer_tree_impl()->OuterViewportContainerLayer()) |
- return GetPropertyTrees()->outer_viewport_container_bounds_delta(); |
- else if (this == layer_tree_impl()->InnerViewportScrollLayer()) |
- return GetPropertyTrees()->inner_viewport_scroll_bounds_delta(); |
- return gfx::Vector2dF(); |
+ switch (viewport_layer_type_) { |
+ case (INNER_VIEWPORT_CONTAINER): |
+ return GetPropertyTrees()->inner_viewport_container_bounds_delta(); |
+ case (OUTER_VIEWPORT_CONTAINER): |
+ return GetPropertyTrees()->outer_viewport_container_bounds_delta(); |
+ case (INNER_VIEWPORT_SCROLL): |
+ return GetPropertyTrees()->inner_viewport_scroll_bounds_delta(); |
+ default: |
+ return gfx::Vector2dF(); |
+ } |
} |
ScrollbarLayerImplBase* LayerImpl::ToScrollbarLayer() { |