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/animation/mutable_properties.h" | 7 #include "cc/animation/mutable_properties.h" |
8 #include "cc/layers/painted_scrollbar_layer_impl.h" | 8 #include "cc/layers/painted_scrollbar_layer_impl.h" |
9 #include "cc/layers/solid_color_scrollbar_layer_impl.h" | 9 #include "cc/layers/solid_color_scrollbar_layer_impl.h" |
10 #include "cc/output/filter_operation.h" | 10 #include "cc/output/filter_operation.h" |
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
120 LayerImpl* clip_child = LayerImpl::Create(host_impl.active_tree(), 6).get(); | 120 LayerImpl* clip_child = LayerImpl::Create(host_impl.active_tree(), 6).get(); |
121 std::set<LayerImpl*>* clip_children = new std::set<LayerImpl*>(); | 121 std::set<LayerImpl*>* clip_children = new std::set<LayerImpl*>(); |
122 clip_children->insert(clip_child); | 122 clip_children->insert(clip_child); |
123 clip_children->insert(root); | 123 clip_children->insert(root); |
124 | 124 |
125 root->AddChild(LayerImpl::Create(host_impl.active_tree(), 7)); | 125 root->AddChild(LayerImpl::Create(host_impl.active_tree(), 7)); |
126 LayerImpl* child = root->children()[0].get(); | 126 LayerImpl* child = root->children()[0].get(); |
127 child->AddChild(LayerImpl::Create(host_impl.active_tree(), 8)); | 127 child->AddChild(LayerImpl::Create(host_impl.active_tree(), 8)); |
128 LayerImpl* grand_child = child->children()[0].get(); | 128 LayerImpl* grand_child = child->children()[0].get(); |
129 host_impl.active_tree()->SetRootLayer(std::move(root_clip_ptr)); | 129 host_impl.active_tree()->SetRootLayer(std::move(root_clip_ptr)); |
| 130 root->SetScrollClipLayer(root_clip->id()); |
130 host_impl.active_tree()->BuildPropertyTreesForTesting(); | 131 host_impl.active_tree()->BuildPropertyTreesForTesting(); |
131 | 132 |
132 root->SetScrollClipLayer(root_clip->id()); | |
133 | |
134 // Adding children is an internal operation and should not mark layers as | 133 // Adding children is an internal operation and should not mark layers as |
135 // changed. | 134 // changed. |
136 EXPECT_FALSE(root->LayerPropertyChanged()); | 135 EXPECT_FALSE(root->LayerPropertyChanged()); |
137 EXPECT_FALSE(child->LayerPropertyChanged()); | 136 EXPECT_FALSE(child->LayerPropertyChanged()); |
138 EXPECT_FALSE(grand_child->LayerPropertyChanged()); | 137 EXPECT_FALSE(grand_child->LayerPropertyChanged()); |
139 | 138 |
140 gfx::PointF arbitrary_point_f = gfx::PointF(0.125f, 0.25f); | 139 gfx::PointF arbitrary_point_f = gfx::PointF(0.125f, 0.25f); |
141 gfx::Point3F arbitrary_point_3f = gfx::Point3F(0.125f, 0.25f, 0.f); | 140 gfx::Point3F arbitrary_point_3f = gfx::Point3F(0.125f, 0.25f, 0.f); |
142 float arbitrary_number = 0.352f; | 141 float arbitrary_number = 0.352f; |
143 gfx::Size arbitrary_size = gfx::Size(111, 222); | 142 gfx::Size arbitrary_size = gfx::Size(111, 222); |
144 gfx::Point arbitrary_point = gfx::Point(333, 444); | 143 gfx::Point arbitrary_point = gfx::Point(333, 444); |
145 gfx::Vector2d arbitrary_vector2d = gfx::Vector2d(111, 222); | 144 gfx::Vector2d arbitrary_vector2d = gfx::Vector2d(111, 222); |
146 gfx::Rect arbitrary_rect = gfx::Rect(arbitrary_point, arbitrary_size); | 145 gfx::Rect arbitrary_rect = gfx::Rect(arbitrary_point, arbitrary_size); |
147 gfx::RectF arbitrary_rect_f = | 146 gfx::RectF arbitrary_rect_f = |
148 gfx::RectF(arbitrary_point_f, gfx::SizeF(1.234f, 5.678f)); | 147 gfx::RectF(arbitrary_point_f, gfx::SizeF(1.234f, 5.678f)); |
149 SkColor arbitrary_color = SkColorSetRGB(10, 20, 30); | 148 SkColor arbitrary_color = SkColorSetRGB(10, 20, 30); |
150 gfx::Transform arbitrary_transform; | 149 gfx::Transform arbitrary_transform; |
151 arbitrary_transform.Scale3d(0.1f, 0.2f, 0.3f); | 150 arbitrary_transform.Scale3d(0.1f, 0.2f, 0.3f); |
152 FilterOperations arbitrary_filters; | 151 FilterOperations arbitrary_filters; |
153 arbitrary_filters.Append(FilterOperation::CreateOpacityFilter(0.5f)); | 152 arbitrary_filters.Append(FilterOperation::CreateOpacityFilter(0.5f)); |
154 SkXfermode::Mode arbitrary_blend_mode = SkXfermode::kMultiply_Mode; | 153 SkXfermode::Mode arbitrary_blend_mode = SkXfermode::kMultiply_Mode; |
155 | 154 |
156 // These properties are internal, and should not be considered "change" when | 155 // These properties are internal, and should not be considered "change" when |
157 // they are used. | 156 // they are used. |
158 EXECUTE_AND_VERIFY_NEEDS_PUSH_PROPERTIES_AND_SUBTREE_DID_NOT_CHANGE( | 157 EXECUTE_AND_VERIFY_NEEDS_PUSH_PROPERTIES_AND_SUBTREE_DID_NOT_CHANGE( |
159 root->SetUpdateRect(arbitrary_rect)); | 158 root->SetUpdateRect(arbitrary_rect)); |
160 EXECUTE_AND_VERIFY_ONLY_LAYER_CHANGED(root->SetBounds(arbitrary_size)); | 159 EXECUTE_AND_VERIFY_ONLY_LAYER_CHANGED(root->SetBounds(arbitrary_size)); |
| 160 host_impl.active_tree()->property_trees()->needs_rebuild = true; |
| 161 host_impl.active_tree()->BuildPropertyTreesForTesting(); |
161 | 162 |
162 // Changing these properties affects the entire subtree of layers. | 163 // Changing these properties affects the entire subtree of layers. |
163 EXECUTE_AND_VERIFY_SUBTREE_CHANGED( | 164 EXECUTE_AND_VERIFY_SUBTREE_CHANGED( |
164 root->SetTransformOrigin(arbitrary_point_3f)); | 165 root->SetTransformOrigin(arbitrary_point_3f)); |
165 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetFilters(arbitrary_filters)); | 166 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetFilters(arbitrary_filters)); |
166 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetFilters(FilterOperations())); | 167 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetFilters(FilterOperations())); |
167 EXECUTE_AND_VERIFY_SUBTREE_CHANGED( | 168 EXECUTE_AND_VERIFY_SUBTREE_CHANGED( |
168 root->SetMaskLayer(LayerImpl::Create(host_impl.active_tree(), 9))); | 169 root->SetMaskLayer(LayerImpl::Create(host_impl.active_tree(), 9))); |
169 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetMasksToBounds(true)); | 170 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetMasksToBounds(true)); |
170 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetContentsOpaque(true)); | 171 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetContentsOpaque(true)); |
(...skipping 17 matching lines...) Expand all Loading... |
188 EXECUTE_AND_VERIFY_ONLY_LAYER_CHANGED(root->SetDrawsContent(true)); | 189 EXECUTE_AND_VERIFY_ONLY_LAYER_CHANGED(root->SetDrawsContent(true)); |
189 EXECUTE_AND_VERIFY_ONLY_LAYER_CHANGED( | 190 EXECUTE_AND_VERIFY_ONLY_LAYER_CHANGED( |
190 root->SetBackgroundColor(arbitrary_color)); | 191 root->SetBackgroundColor(arbitrary_color)); |
191 EXECUTE_AND_VERIFY_ONLY_LAYER_CHANGED( | 192 EXECUTE_AND_VERIFY_ONLY_LAYER_CHANGED( |
192 root->SetBackgroundFilters(arbitrary_filters)); | 193 root->SetBackgroundFilters(arbitrary_filters)); |
193 | 194 |
194 // Special case: check that SetBounds changes behavior depending on | 195 // Special case: check that SetBounds changes behavior depending on |
195 // masksToBounds. | 196 // masksToBounds. |
196 root->SetMasksToBounds(false); | 197 root->SetMasksToBounds(false); |
197 EXECUTE_AND_VERIFY_ONLY_LAYER_CHANGED(root->SetBounds(gfx::Size(135, 246))); | 198 EXECUTE_AND_VERIFY_ONLY_LAYER_CHANGED(root->SetBounds(gfx::Size(135, 246))); |
| 199 host_impl.active_tree()->property_trees()->needs_rebuild = true; |
| 200 host_impl.active_tree()->BuildPropertyTreesForTesting(); |
| 201 |
198 root->SetMasksToBounds(true); | 202 root->SetMasksToBounds(true); |
199 // Should be a different size than previous call, to ensure it marks tree | 203 // Should be a different size than previous call, to ensure it marks tree |
200 // changed. | 204 // changed. |
201 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetBounds(arbitrary_size)); | 205 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetBounds(arbitrary_size)); |
| 206 host_impl.active_tree()->property_trees()->needs_rebuild = true; |
| 207 host_impl.active_tree()->BuildPropertyTreesForTesting(); |
202 | 208 |
203 // Changing these properties does not cause the layer to be marked as changed | 209 // Changing these properties does not cause the layer to be marked as changed |
204 // but does cause the layer to need to push properties. | 210 // but does cause the layer to need to push properties. |
205 EXECUTE_AND_VERIFY_NEEDS_PUSH_PROPERTIES_AND_SUBTREE_DID_NOT_CHANGE( | 211 EXECUTE_AND_VERIFY_NEEDS_PUSH_PROPERTIES_AND_SUBTREE_DID_NOT_CHANGE( |
206 root->SetIsRootForIsolatedGroup(true)); | 212 root->SetIsRootForIsolatedGroup(true)); |
207 EXECUTE_AND_VERIFY_NEEDS_PUSH_PROPERTIES_AND_SUBTREE_DID_NOT_CHANGE( | 213 EXECUTE_AND_VERIFY_NEEDS_PUSH_PROPERTIES_AND_SUBTREE_DID_NOT_CHANGE( |
208 root->SetElementId(2)); | 214 root->SetElementId(2)); |
209 EXECUTE_AND_VERIFY_NEEDS_PUSH_PROPERTIES_AND_SUBTREE_DID_NOT_CHANGE( | 215 EXECUTE_AND_VERIFY_NEEDS_PUSH_PROPERTIES_AND_SUBTREE_DID_NOT_CHANGE( |
210 root->SetMutableProperties(MutableProperty::kOpacity)); | 216 root->SetMutableProperties(MutableProperty::kOpacity)); |
211 EXECUTE_AND_VERIFY_NEEDS_PUSH_PROPERTIES_AND_SUBTREE_DID_NOT_CHANGE( | 217 EXECUTE_AND_VERIFY_NEEDS_PUSH_PROPERTIES_AND_SUBTREE_DID_NOT_CHANGE( |
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
460 LayerImplScrollTest() | 466 LayerImplScrollTest() |
461 : host_impl_(settings(), | 467 : host_impl_(settings(), |
462 &task_runner_provider_, | 468 &task_runner_provider_, |
463 &shared_bitmap_manager_, | 469 &shared_bitmap_manager_, |
464 &task_graph_runner_), | 470 &task_graph_runner_), |
465 root_id_(7) { | 471 root_id_(7) { |
466 host_impl_.active_tree()->SetRootLayer( | 472 host_impl_.active_tree()->SetRootLayer( |
467 LayerImpl::Create(host_impl_.active_tree(), root_id_)); | 473 LayerImpl::Create(host_impl_.active_tree(), root_id_)); |
468 host_impl_.active_tree()->root_layer()->AddChild( | 474 host_impl_.active_tree()->root_layer()->AddChild( |
469 LayerImpl::Create(host_impl_.active_tree(), root_id_ + 1)); | 475 LayerImpl::Create(host_impl_.active_tree(), root_id_ + 1)); |
470 host_impl_.active_tree()->BuildPropertyTreesForTesting(); | |
471 layer()->SetScrollClipLayer(root_id_); | 476 layer()->SetScrollClipLayer(root_id_); |
472 // Set the max scroll offset by noting that the root layer has bounds (1,1), | 477 // Set the max scroll offset by noting that the root layer has bounds (1,1), |
473 // thus whatever bounds are set for the layer will be the max scroll | 478 // thus whatever bounds are set for the layer will be the max scroll |
474 // offset plus 1 in each direction. | 479 // offset plus 1 in each direction. |
475 host_impl_.active_tree()->root_layer()->SetBounds(gfx::Size(1, 1)); | 480 host_impl_.active_tree()->root_layer()->SetBounds(gfx::Size(1, 1)); |
476 gfx::Vector2d max_scroll_offset(51, 81); | 481 gfx::Vector2d max_scroll_offset(51, 81); |
477 layer()->SetBounds(gfx::Size(max_scroll_offset.x(), max_scroll_offset.y())); | 482 layer()->SetBounds(gfx::Size(max_scroll_offset.x(), max_scroll_offset.y())); |
| 483 host_impl_.active_tree()->BuildPropertyTreesForTesting(); |
478 } | 484 } |
479 | 485 |
480 LayerImpl* layer() { | 486 LayerImpl* layer() { |
481 return host_impl_.active_tree()->root_layer()->children()[0].get(); | 487 return host_impl_.active_tree()->root_layer()->children()[0].get(); |
482 } | 488 } |
483 | 489 |
484 LayerTreeHostImpl& host_impl() { return host_impl_; } | 490 LayerTreeHostImpl& host_impl() { return host_impl_; } |
485 | 491 |
486 LayerTreeImpl* tree() { return host_impl_.active_tree(); } | 492 LayerTreeImpl* tree() { return host_impl_.active_tree(); } |
487 | 493 |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
601 | 607 |
602 pending_layer->PushPropertiesTo(layer()); | 608 pending_layer->PushPropertiesTo(layer()); |
603 | 609 |
604 EXPECT_VECTOR_EQ(gfx::Vector2dF(22, 23), layer()->CurrentScrollOffset()); | 610 EXPECT_VECTOR_EQ(gfx::Vector2dF(22, 23), layer()->CurrentScrollOffset()); |
605 EXPECT_VECTOR_EQ(layer()->CurrentScrollOffset(), | 611 EXPECT_VECTOR_EQ(layer()->CurrentScrollOffset(), |
606 pending_layer->CurrentScrollOffset()); | 612 pending_layer->CurrentScrollOffset()); |
607 } | 613 } |
608 | 614 |
609 } // namespace | 615 } // namespace |
610 } // namespace cc | 616 } // namespace cc |
OLD | NEW |