| 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" |
| 8 #include "cc/output/filter_operations.h" |
| 7 #include "cc/test/fake_impl_proxy.h" | 9 #include "cc/test/fake_impl_proxy.h" |
| 8 #include "cc/test/fake_layer_tree_host_impl.h" | 10 #include "cc/test/fake_layer_tree_host_impl.h" |
| 9 #include "cc/test/fake_output_surface.h" | 11 #include "cc/test/fake_output_surface.h" |
| 10 #include "cc/trees/layer_tree_impl.h" | 12 #include "cc/trees/layer_tree_impl.h" |
| 11 #include "cc/trees/single_thread_proxy.h" | 13 #include "cc/trees/single_thread_proxy.h" |
| 12 #include "testing/gmock/include/gmock/gmock.h" | 14 #include "testing/gmock/include/gmock/gmock.h" |
| 13 #include "testing/gtest/include/gtest/gtest.h" | 15 #include "testing/gtest/include/gtest/gtest.h" |
| 14 #include "third_party/WebKit/public/platform/WebFilterOperation.h" | |
| 15 #include "third_party/WebKit/public/platform/WebFilterOperations.h" | |
| 16 #include "third_party/skia/include/effects/SkBlurImageFilter.h" | 16 #include "third_party/skia/include/effects/SkBlurImageFilter.h" |
| 17 | 17 |
| 18 using WebKit::WebFilterOperation; | |
| 19 using WebKit::WebFilterOperations; | |
| 20 | |
| 21 namespace cc { | 18 namespace cc { |
| 22 namespace { | 19 namespace { |
| 23 | 20 |
| 24 #define EXECUTE_AND_VERIFY_SUBTREE_CHANGED(code_to_test) \ | 21 #define EXECUTE_AND_VERIFY_SUBTREE_CHANGED(code_to_test) \ |
| 25 root->ResetAllChangeTrackingForSubtree(); \ | 22 root->ResetAllChangeTrackingForSubtree(); \ |
| 26 code_to_test; \ | 23 code_to_test; \ |
| 27 EXPECT_TRUE(root->LayerPropertyChanged()); \ | 24 EXPECT_TRUE(root->LayerPropertyChanged()); \ |
| 28 EXPECT_TRUE(child->LayerPropertyChanged()); \ | 25 EXPECT_TRUE(child->LayerPropertyChanged()); \ |
| 29 EXPECT_TRUE(grand_child->LayerPropertyChanged()); \ | 26 EXPECT_TRUE(grand_child->LayerPropertyChanged()); \ |
| 30 EXPECT_FALSE(root->LayerSurfacePropertyChanged()) | 27 EXPECT_FALSE(root->LayerSurfacePropertyChanged()) |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 93 float arbitrary_number = 0.352f; | 90 float arbitrary_number = 0.352f; |
| 94 gfx::Size arbitrary_size = gfx::Size(111, 222); | 91 gfx::Size arbitrary_size = gfx::Size(111, 222); |
| 95 gfx::Point arbitrary_point = gfx::Point(333, 444); | 92 gfx::Point arbitrary_point = gfx::Point(333, 444); |
| 96 gfx::Vector2d arbitrary_vector2d = gfx::Vector2d(111, 222); | 93 gfx::Vector2d arbitrary_vector2d = gfx::Vector2d(111, 222); |
| 97 gfx::Rect arbitrary_rect = gfx::Rect(arbitrary_point, arbitrary_size); | 94 gfx::Rect arbitrary_rect = gfx::Rect(arbitrary_point, arbitrary_size); |
| 98 gfx::RectF arbitrary_rect_f = | 95 gfx::RectF arbitrary_rect_f = |
| 99 gfx::RectF(arbitrary_point_f, gfx::SizeF(1.234f, 5.678f)); | 96 gfx::RectF(arbitrary_point_f, gfx::SizeF(1.234f, 5.678f)); |
| 100 SkColor arbitrary_color = SkColorSetRGB(10, 20, 30); | 97 SkColor arbitrary_color = SkColorSetRGB(10, 20, 30); |
| 101 gfx::Transform arbitrary_transform; | 98 gfx::Transform arbitrary_transform; |
| 102 arbitrary_transform.Scale3d(0.1, 0.2, 0.3); | 99 arbitrary_transform.Scale3d(0.1, 0.2, 0.3); |
| 103 WebFilterOperations arbitrary_filters; | 100 FilterOperations arbitrary_filters; |
| 104 arbitrary_filters.append(WebFilterOperation::createOpacityFilter(0.5f)); | 101 arbitrary_filters.Append(FilterOperation::CreateOpacityFilter(0.5f)); |
| 105 skia::RefPtr<SkImageFilter> arbitrary_filter = | 102 skia::RefPtr<SkImageFilter> arbitrary_filter = |
| 106 skia::AdoptRef(new SkBlurImageFilter(SK_Scalar1, SK_Scalar1)); | 103 skia::AdoptRef(new SkBlurImageFilter(SK_Scalar1, SK_Scalar1)); |
| 107 | 104 |
| 108 // These properties are internal, and should not be considered "change" when | 105 // These properties are internal, and should not be considered "change" when |
| 109 // they are used. | 106 // they are used. |
| 110 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE( | 107 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE( |
| 111 root->set_update_rect(arbitrary_rect_f)); | 108 root->set_update_rect(arbitrary_rect_f)); |
| 112 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE( | 109 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE( |
| 113 root->SetMaxScrollOffset(arbitrary_vector2d)); | 110 root->SetMaxScrollOffset(arbitrary_vector2d)); |
| 114 | 111 |
| 115 // Changing these properties affects the entire subtree of layers. | 112 // Changing these properties affects the entire subtree of layers. |
| 116 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetAnchorPoint(arbitrary_point_f)); | 113 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetAnchorPoint(arbitrary_point_f)); |
| 117 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetAnchorPointZ(arbitrary_number)); | 114 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetAnchorPointZ(arbitrary_number)); |
| 118 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetFilters(arbitrary_filters)); | 115 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetFilters(arbitrary_filters)); |
| 119 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetFilters(WebFilterOperations())); | 116 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetFilters(FilterOperations())); |
| 120 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetFilter(arbitrary_filter)); | 117 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetFilter(arbitrary_filter)); |
| 121 EXECUTE_AND_VERIFY_SUBTREE_CHANGED( | 118 EXECUTE_AND_VERIFY_SUBTREE_CHANGED( |
| 122 root->SetMaskLayer(LayerImpl::Create(host_impl.active_tree(), 4))); | 119 root->SetMaskLayer(LayerImpl::Create(host_impl.active_tree(), 4))); |
| 123 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetMasksToBounds(true)); | 120 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetMasksToBounds(true)); |
| 124 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetContentsOpaque(true)); | 121 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetContentsOpaque(true)); |
| 125 EXECUTE_AND_VERIFY_SUBTREE_CHANGED( | 122 EXECUTE_AND_VERIFY_SUBTREE_CHANGED( |
| 126 root->SetReplicaLayer(LayerImpl::Create(host_impl.active_tree(), 5))); | 123 root->SetReplicaLayer(LayerImpl::Create(host_impl.active_tree(), 5))); |
| 127 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetPosition(arbitrary_point_f)); | 124 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetPosition(arbitrary_point_f)); |
| 128 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetPreserves3d(true)); | 125 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetPreserves3d(true)); |
| 129 EXECUTE_AND_VERIFY_SUBTREE_CHANGED( | 126 EXECUTE_AND_VERIFY_SUBTREE_CHANGED( |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 205 gfx::Size arbitrary_size = gfx::Size(111, 222); | 202 gfx::Size arbitrary_size = gfx::Size(111, 222); |
| 206 gfx::Point arbitrary_point = gfx::Point(333, 444); | 203 gfx::Point arbitrary_point = gfx::Point(333, 444); |
| 207 gfx::Vector2d arbitrary_vector2d = gfx::Vector2d(111, 222); | 204 gfx::Vector2d arbitrary_vector2d = gfx::Vector2d(111, 222); |
| 208 gfx::Vector2d large_vector2d = gfx::Vector2d(1000, 1000); | 205 gfx::Vector2d large_vector2d = gfx::Vector2d(1000, 1000); |
| 209 gfx::Rect arbitrary_rect = gfx::Rect(arbitrary_point, arbitrary_size); | 206 gfx::Rect arbitrary_rect = gfx::Rect(arbitrary_point, arbitrary_size); |
| 210 gfx::RectF arbitrary_rect_f = | 207 gfx::RectF arbitrary_rect_f = |
| 211 gfx::RectF(arbitrary_point_f, gfx::SizeF(1.234f, 5.678f)); | 208 gfx::RectF(arbitrary_point_f, gfx::SizeF(1.234f, 5.678f)); |
| 212 SkColor arbitrary_color = SkColorSetRGB(10, 20, 30); | 209 SkColor arbitrary_color = SkColorSetRGB(10, 20, 30); |
| 213 gfx::Transform arbitrary_transform; | 210 gfx::Transform arbitrary_transform; |
| 214 arbitrary_transform.Scale3d(0.1, 0.2, 0.3); | 211 arbitrary_transform.Scale3d(0.1, 0.2, 0.3); |
| 215 WebFilterOperations arbitrary_filters; | 212 FilterOperations arbitrary_filters; |
| 216 arbitrary_filters.append(WebFilterOperation::createOpacityFilter(0.5f)); | 213 arbitrary_filters.Append(FilterOperation::CreateOpacityFilter(0.5f)); |
| 217 skia::RefPtr<SkImageFilter> arbitrary_filter = | 214 skia::RefPtr<SkImageFilter> arbitrary_filter = |
| 218 skia::AdoptRef(new SkBlurImageFilter(SK_Scalar1, SK_Scalar1)); | 215 skia::AdoptRef(new SkBlurImageFilter(SK_Scalar1, SK_Scalar1)); |
| 219 | 216 |
| 220 // Related filter functions. | 217 // Related filter functions. |
| 221 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->SetFilters(arbitrary_filters)); | 218 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->SetFilters(arbitrary_filters)); |
| 222 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->SetFilters(arbitrary_filters)); | 219 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->SetFilters(arbitrary_filters)); |
| 223 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->SetFilters(WebFilterOperations())); | 220 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->SetFilters(FilterOperations())); |
| 224 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->SetFilter(arbitrary_filter)); | 221 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->SetFilter(arbitrary_filter)); |
| 225 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->SetFilter(arbitrary_filter)); | 222 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->SetFilter(arbitrary_filter)); |
| 226 | 223 |
| 227 // Related scrolling functions. | 224 // Related scrolling functions. |
| 228 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->SetMaxScrollOffset(large_vector2d)); | 225 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->SetMaxScrollOffset(large_vector2d)); |
| 229 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES( | 226 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES( |
| 230 root->SetMaxScrollOffset(large_vector2d)); | 227 root->SetMaxScrollOffset(large_vector2d)); |
| 231 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->ScrollBy(arbitrary_vector2d)); | 228 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->ScrollBy(arbitrary_vector2d)); |
| 232 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->ScrollBy(gfx::Vector2d())); | 229 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->ScrollBy(gfx::Vector2d())); |
| 233 root->SetScrollDelta(gfx::Vector2d(0, 0)); | 230 root->SetScrollDelta(gfx::Vector2d(0, 0)); |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 318 << "Flags: " << contents_opaque << ", " << layer_opaque << ", " | 315 << "Flags: " << contents_opaque << ", " << layer_opaque << ", " |
| 319 << host_opaque << "\n"; | 316 << host_opaque << "\n"; |
| 320 } | 317 } |
| 321 } | 318 } |
| 322 } | 319 } |
| 323 } | 320 } |
| 324 } | 321 } |
| 325 | 322 |
| 326 } // namespace | 323 } // namespace |
| 327 } // namespace cc | 324 } // namespace cc |
| OLD | NEW |