Chromium Code Reviews| 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() { |