Index: cc/layers/layer_impl.cc |
diff --git a/cc/layers/layer_impl.cc b/cc/layers/layer_impl.cc |
index 1399bb9c6834c3ed8ee34097b5a8137f867cd682..3ee0f7534c17f7e2df443936015d490963f51954 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,20 @@ 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; |
+ case (OUTER_VIEWPORT_SCROLL): |
+ // OUTER_VIEWPORT_SCROLL should not have viewport bounds deltas. |
+ NOTREACHED(); |
+ } |
layer_tree_impl()->DidUpdateScrollState(id()); |
@@ -554,13 +564,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() { |