| OLD | NEW |
| 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/layers/layer_impl.h" | 5 #include "cc/layers/layer_impl.h" |
| 6 | 6 |
| 7 #include "cc/output/filter_operation.h" | 7 #include "cc/output/filter_operation.h" |
| 8 #include "cc/output/filter_operations.h" | 8 #include "cc/output/filter_operations.h" |
| 9 #include "cc/test/fake_impl_proxy.h" | 9 #include "cc/test/fake_impl_proxy.h" |
| 10 #include "cc/test/fake_layer_tree_host_impl.h" | 10 #include "cc/test/fake_layer_tree_host_impl.h" |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 114 | 114 |
| 115 root->SetScrollClipLayer(root_clip->id()); | 115 root->SetScrollClipLayer(root_clip->id()); |
| 116 | 116 |
| 117 // Adding children is an internal operation and should not mark layers as | 117 // Adding children is an internal operation and should not mark layers as |
| 118 // changed. | 118 // changed. |
| 119 EXPECT_FALSE(root->LayerPropertyChanged()); | 119 EXPECT_FALSE(root->LayerPropertyChanged()); |
| 120 EXPECT_FALSE(child->LayerPropertyChanged()); | 120 EXPECT_FALSE(child->LayerPropertyChanged()); |
| 121 EXPECT_FALSE(grand_child->LayerPropertyChanged()); | 121 EXPECT_FALSE(grand_child->LayerPropertyChanged()); |
| 122 | 122 |
| 123 gfx::PointF arbitrary_point_f = gfx::PointF(0.125f, 0.25f); | 123 gfx::PointF arbitrary_point_f = gfx::PointF(0.125f, 0.25f); |
| 124 gfx::Point3F arbitrary_point_3f = gfx::Point3F(0.125f, 0.25f, 0.f); |
| 124 float arbitrary_number = 0.352f; | 125 float arbitrary_number = 0.352f; |
| 125 gfx::Size arbitrary_size = gfx::Size(111, 222); | 126 gfx::Size arbitrary_size = gfx::Size(111, 222); |
| 126 gfx::Point arbitrary_point = gfx::Point(333, 444); | 127 gfx::Point arbitrary_point = gfx::Point(333, 444); |
| 127 gfx::Vector2d arbitrary_vector2d = gfx::Vector2d(111, 222); | 128 gfx::Vector2d arbitrary_vector2d = gfx::Vector2d(111, 222); |
| 128 gfx::Rect arbitrary_rect = gfx::Rect(arbitrary_point, arbitrary_size); | 129 gfx::Rect arbitrary_rect = gfx::Rect(arbitrary_point, arbitrary_size); |
| 129 gfx::RectF arbitrary_rect_f = | 130 gfx::RectF arbitrary_rect_f = |
| 130 gfx::RectF(arbitrary_point_f, gfx::SizeF(1.234f, 5.678f)); | 131 gfx::RectF(arbitrary_point_f, gfx::SizeF(1.234f, 5.678f)); |
| 131 SkColor arbitrary_color = SkColorSetRGB(10, 20, 30); | 132 SkColor arbitrary_color = SkColorSetRGB(10, 20, 30); |
| 132 gfx::Transform arbitrary_transform; | 133 gfx::Transform arbitrary_transform; |
| 133 arbitrary_transform.Scale3d(0.1f, 0.2f, 0.3f); | 134 arbitrary_transform.Scale3d(0.1f, 0.2f, 0.3f); |
| 134 FilterOperations arbitrary_filters; | 135 FilterOperations arbitrary_filters; |
| 135 arbitrary_filters.Append(FilterOperation::CreateOpacityFilter(0.5f)); | 136 arbitrary_filters.Append(FilterOperation::CreateOpacityFilter(0.5f)); |
| 136 SkXfermode::Mode arbitrary_blend_mode = SkXfermode::kMultiply_Mode; | 137 SkXfermode::Mode arbitrary_blend_mode = SkXfermode::kMultiply_Mode; |
| 137 | 138 |
| 138 // These properties are internal, and should not be considered "change" when | 139 // These properties are internal, and should not be considered "change" when |
| 139 // they are used. | 140 // they are used. |
| 140 EXECUTE_AND_VERIFY_NEEDS_PUSH_PROPERTIES_AND_SUBTREE_DID_NOT_CHANGE( | 141 EXECUTE_AND_VERIFY_NEEDS_PUSH_PROPERTIES_AND_SUBTREE_DID_NOT_CHANGE( |
| 141 root->SetUpdateRect(arbitrary_rect_f)); | 142 root->SetUpdateRect(arbitrary_rect_f)); |
| 142 EXECUTE_AND_VERIFY_ONLY_LAYER_CHANGED(root->SetBounds(arbitrary_size)); | 143 EXECUTE_AND_VERIFY_ONLY_LAYER_CHANGED(root->SetBounds(arbitrary_size)); |
| 143 | 144 |
| 144 // Changing these properties affects the entire subtree of layers. | 145 // Changing these properties affects the entire subtree of layers. |
| 145 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetAnchorPoint(arbitrary_point_f)); | 146 EXECUTE_AND_VERIFY_SUBTREE_CHANGED( |
| 146 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetAnchorPointZ(arbitrary_number)); | 147 root->SetTransformOrigin(arbitrary_point_3f)); |
| 147 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetFilters(arbitrary_filters)); | 148 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetFilters(arbitrary_filters)); |
| 148 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetFilters(FilterOperations())); | 149 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetFilters(FilterOperations())); |
| 149 EXECUTE_AND_VERIFY_SUBTREE_CHANGED( | 150 EXECUTE_AND_VERIFY_SUBTREE_CHANGED( |
| 150 root->SetMaskLayer(LayerImpl::Create(host_impl.active_tree(), 9))); | 151 root->SetMaskLayer(LayerImpl::Create(host_impl.active_tree(), 9))); |
| 151 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetMasksToBounds(true)); | 152 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetMasksToBounds(true)); |
| 152 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetContentsOpaque(true)); | 153 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetContentsOpaque(true)); |
| 153 EXECUTE_AND_VERIFY_SUBTREE_CHANGED( | 154 EXECUTE_AND_VERIFY_SUBTREE_CHANGED( |
| 154 root->SetReplicaLayer(LayerImpl::Create(host_impl.active_tree(), 10))); | 155 root->SetReplicaLayer(LayerImpl::Create(host_impl.active_tree(), 10))); |
| 155 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetPosition(arbitrary_point_f)); | 156 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetPosition(arbitrary_point_f)); |
| 156 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetShouldFlattenTransform(false)); | 157 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetShouldFlattenTransform(false)); |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 195 EXECUTE_AND_VERIFY_NEEDS_PUSH_PROPERTIES_AND_SUBTREE_DID_NOT_CHANGE( | 196 EXECUTE_AND_VERIFY_NEEDS_PUSH_PROPERTIES_AND_SUBTREE_DID_NOT_CHANGE( |
| 196 root->SetScrollChildren(scroll_children)); | 197 root->SetScrollChildren(scroll_children)); |
| 197 EXECUTE_AND_VERIFY_NEEDS_PUSH_PROPERTIES_AND_SUBTREE_DID_NOT_CHANGE( | 198 EXECUTE_AND_VERIFY_NEEDS_PUSH_PROPERTIES_AND_SUBTREE_DID_NOT_CHANGE( |
| 198 root->SetClipParent(clip_parent.get())); | 199 root->SetClipParent(clip_parent.get())); |
| 199 EXECUTE_AND_VERIFY_NEEDS_PUSH_PROPERTIES_AND_SUBTREE_DID_NOT_CHANGE( | 200 EXECUTE_AND_VERIFY_NEEDS_PUSH_PROPERTIES_AND_SUBTREE_DID_NOT_CHANGE( |
| 200 root->SetClipChildren(clip_children)); | 201 root->SetClipChildren(clip_children)); |
| 201 | 202 |
| 202 // After setting all these properties already, setting to the exact same | 203 // After setting all these properties already, setting to the exact same |
| 203 // values again should not cause any change. | 204 // values again should not cause any change. |
| 204 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE( | 205 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE( |
| 205 root->SetAnchorPoint(arbitrary_point_f)); | 206 root->SetTransformOrigin(arbitrary_point_3f)); |
| 206 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE( | |
| 207 root->SetAnchorPointZ(arbitrary_number)); | |
| 208 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(root->SetMasksToBounds(true)); | 207 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(root->SetMasksToBounds(true)); |
| 209 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE( | 208 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE( |
| 210 root->SetPosition(arbitrary_point_f)); | 209 root->SetPosition(arbitrary_point_f)); |
| 211 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE( | 210 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE( |
| 212 root->SetShouldFlattenTransform(false)); | 211 root->SetShouldFlattenTransform(false)); |
| 213 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(root->SetIs3dSorted(true)); | 212 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(root->SetIs3dSorted(true)); |
| 214 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE( | 213 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE( |
| 215 root->SetTransform(arbitrary_transform)); | 214 root->SetTransform(arbitrary_transform)); |
| 216 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE( | 215 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE( |
| 217 root->SetDoubleSided(false)); // constructor initializes it to "true". | 216 root->SetDoubleSided(false)); // constructor initializes it to "true". |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 289 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES( | 288 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES( |
| 290 layer->SetScrollDelta(arbitrary_vector2d)); | 289 layer->SetScrollDelta(arbitrary_vector2d)); |
| 291 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES( | 290 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES( |
| 292 layer->SetScrollDelta(arbitrary_vector2d)); | 291 layer->SetScrollDelta(arbitrary_vector2d)); |
| 293 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES( | 292 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES( |
| 294 layer->SetScrollOffset(arbitrary_vector2d)); | 293 layer->SetScrollOffset(arbitrary_vector2d)); |
| 295 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES( | 294 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES( |
| 296 layer->SetScrollOffset(arbitrary_vector2d)); | 295 layer->SetScrollOffset(arbitrary_vector2d)); |
| 297 | 296 |
| 298 // Unrelated functions, always set to new values, always set needs update. | 297 // Unrelated functions, always set to new values, always set needs update. |
| 299 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetAnchorPointZ(arbitrary_number)); | |
| 300 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES( | 298 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES( |
| 301 layer->SetMaskLayer(LayerImpl::Create(host_impl.active_tree(), 4))); | 299 layer->SetMaskLayer(LayerImpl::Create(host_impl.active_tree(), 4))); |
| 302 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetMasksToBounds(true)); | 300 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetMasksToBounds(true)); |
| 303 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetContentsOpaque(true)); | 301 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetContentsOpaque(true)); |
| 304 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES( | 302 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES( |
| 305 layer->SetReplicaLayer(LayerImpl::Create(host_impl.active_tree(), 5))); | 303 layer->SetReplicaLayer(LayerImpl::Create(host_impl.active_tree(), 5))); |
| 306 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetPosition(arbitrary_point_f)); | 304 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetPosition(arbitrary_point_f)); |
| 307 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetShouldFlattenTransform(false)); | 305 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetShouldFlattenTransform(false)); |
| 308 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetIs3dSorted(true)); | 306 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetIs3dSorted(true)); |
| 309 | 307 |
| 310 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES( | 308 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES( |
| 311 layer->SetDoubleSided(false)); // constructor initializes it to "true". | 309 layer->SetDoubleSided(false)); // constructor initializes it to "true". |
| 312 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetContentBounds(arbitrary_size)); | 310 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetContentBounds(arbitrary_size)); |
| 313 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES( | 311 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES( |
| 314 layer->SetContentsScale(arbitrary_number, arbitrary_number)); | 312 layer->SetContentsScale(arbitrary_number, arbitrary_number)); |
| 315 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetDrawsContent(true)); | 313 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetDrawsContent(true)); |
| 316 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES( | 314 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES( |
| 317 layer->SetBackgroundColor(arbitrary_color)); | 315 layer->SetBackgroundColor(arbitrary_color)); |
| 318 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES( | 316 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES( |
| 319 layer->SetBackgroundFilters(arbitrary_filters)); | 317 layer->SetBackgroundFilters(arbitrary_filters)); |
| 320 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetOpacity(arbitrary_number)); | 318 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetOpacity(arbitrary_number)); |
| 321 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES( | 319 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES( |
| 322 layer->SetBlendMode(arbitrary_blend_mode)); | 320 layer->SetBlendMode(arbitrary_blend_mode)); |
| 323 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetTransform(arbitrary_transform)); | 321 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetTransform(arbitrary_transform)); |
| 324 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetBounds(arbitrary_size)); | 322 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetBounds(arbitrary_size)); |
| 325 | 323 |
| 326 // Unrelated functions, set to the same values, no needs update. | 324 // Unrelated functions, set to the same values, no needs update. |
| 327 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES( | 325 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES( |
| 328 layer->SetAnchorPointZ(arbitrary_number)); | |
| 329 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES( | |
| 330 layer->SetIsRootForIsolatedGroup(true)); | 326 layer->SetIsRootForIsolatedGroup(true)); |
| 331 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetFilters(arbitrary_filters)); | 327 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetFilters(arbitrary_filters)); |
| 332 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetMasksToBounds(true)); | 328 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetMasksToBounds(true)); |
| 333 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetContentsOpaque(true)); | 329 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetContentsOpaque(true)); |
| 334 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetPosition(arbitrary_point_f)); | 330 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetPosition(arbitrary_point_f)); |
| 335 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetIs3dSorted(true)); | 331 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetIs3dSorted(true)); |
| 336 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES( | 332 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES( |
| 337 layer->SetDoubleSided(false)); // constructor initializes it to "true". | 333 layer->SetDoubleSided(false)); // constructor initializes it to "true". |
| 338 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES( | 334 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES( |
| 339 layer->SetContentBounds(arbitrary_size)); | 335 layer->SetContentBounds(arbitrary_size)); |
| (...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 658 layer()->set_user_scrollable_vertical(false); | 654 layer()->set_user_scrollable_vertical(false); |
| 659 layer()->SetScrollOffset(scroll_offset); | 655 layer()->SetScrollOffset(scroll_offset); |
| 660 gfx::Vector2dF unscrolled = layer()->ScrollBy(scroll_delta); | 656 gfx::Vector2dF unscrolled = layer()->ScrollBy(scroll_delta); |
| 661 | 657 |
| 662 EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 8.5f), unscrolled); | 658 EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 8.5f), unscrolled); |
| 663 EXPECT_VECTOR_EQ(gfx::Vector2dF(30.5f, 5), layer()->TotalScrollOffset()); | 659 EXPECT_VECTOR_EQ(gfx::Vector2dF(30.5f, 5), layer()->TotalScrollOffset()); |
| 664 } | 660 } |
| 665 | 661 |
| 666 } // namespace | 662 } // namespace |
| 667 } // namespace cc | 663 } // namespace cc |
| OLD | NEW |