| 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 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 64 TEST(LayerImplTest, VerifyLayerChangesAreTrackedProperly) { | 64 TEST(LayerImplTest, VerifyLayerChangesAreTrackedProperly) { |
| 65 // | 65 // |
| 66 // This test checks that layerPropertyChanged() has the correct behavior. | 66 // This test checks that layerPropertyChanged() has the correct behavior. |
| 67 // | 67 // |
| 68 | 68 |
| 69 // The constructor on this will fake that we are on the correct thread. | 69 // The constructor on this will fake that we are on the correct thread. |
| 70 // Create a simple LayerImpl tree: | 70 // Create a simple LayerImpl tree: |
| 71 FakeImplProxy proxy; | 71 FakeImplProxy proxy; |
| 72 FakeLayerTreeHostImpl host_impl(&proxy); | 72 FakeLayerTreeHostImpl host_impl(&proxy); |
| 73 EXPECT_TRUE(host_impl.InitializeRenderer(CreateFakeOutputSurface())); | 73 EXPECT_TRUE(host_impl.InitializeRenderer(CreateFakeOutputSurface())); |
| 74 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl.active_tree(), 1); | 74 scoped_ptr<LayerImpl> root_clip = |
| 75 root->AddChild(LayerImpl::Create(host_impl.active_tree(), 2)); | 75 LayerImpl::Create(host_impl.active_tree(), 1); |
| 76 root_clip->AddChild(LayerImpl::Create(host_impl.active_tree(), 2)); |
| 77 LayerImpl* root = root_clip->children()[0]; |
| 78 root->AddChild(LayerImpl::Create(host_impl.active_tree(), 3)); |
| 76 LayerImpl* child = root->children()[0]; | 79 LayerImpl* child = root->children()[0]; |
| 77 child->AddChild(LayerImpl::Create(host_impl.active_tree(), 3)); | 80 child->AddChild(LayerImpl::Create(host_impl.active_tree(), 4)); |
| 78 LayerImpl* grand_child = child->children()[0]; | 81 LayerImpl* grand_child = child->children()[0]; |
| 79 | 82 |
| 80 root->SetScrollable(true); | 83 root->SetScrollClipLayer(root_clip->id()); |
| 81 | 84 |
| 82 // Adding children is an internal operation and should not mark layers as | 85 // Adding children is an internal operation and should not mark layers as |
| 83 // changed. | 86 // changed. |
| 84 EXPECT_FALSE(root->LayerPropertyChanged()); | 87 EXPECT_FALSE(root->LayerPropertyChanged()); |
| 85 EXPECT_FALSE(child->LayerPropertyChanged()); | 88 EXPECT_FALSE(child->LayerPropertyChanged()); |
| 86 EXPECT_FALSE(grand_child->LayerPropertyChanged()); | 89 EXPECT_FALSE(grand_child->LayerPropertyChanged()); |
| 87 | 90 |
| 88 gfx::PointF arbitrary_point_f = gfx::PointF(0.125f, 0.25f); | 91 gfx::PointF arbitrary_point_f = gfx::PointF(0.125f, 0.25f); |
| 89 float arbitrary_number = 0.352f; | 92 float arbitrary_number = 0.352f; |
| 90 gfx::Size arbitrary_size = gfx::Size(111, 222); | 93 gfx::Size arbitrary_size = gfx::Size(111, 222); |
| 91 gfx::Point arbitrary_point = gfx::Point(333, 444); | 94 gfx::Point arbitrary_point = gfx::Point(333, 444); |
| 92 gfx::Vector2d arbitrary_vector2d = gfx::Vector2d(111, 222); | 95 gfx::Vector2d arbitrary_vector2d = gfx::Vector2d(111, 222); |
| 93 gfx::Rect arbitrary_rect = gfx::Rect(arbitrary_point, arbitrary_size); | 96 gfx::Rect arbitrary_rect = gfx::Rect(arbitrary_point, arbitrary_size); |
| 94 gfx::RectF arbitrary_rect_f = | 97 gfx::RectF arbitrary_rect_f = |
| 95 gfx::RectF(arbitrary_point_f, gfx::SizeF(1.234f, 5.678f)); | 98 gfx::RectF(arbitrary_point_f, gfx::SizeF(1.234f, 5.678f)); |
| 96 SkColor arbitrary_color = SkColorSetRGB(10, 20, 30); | 99 SkColor arbitrary_color = SkColorSetRGB(10, 20, 30); |
| 97 gfx::Transform arbitrary_transform; | 100 gfx::Transform arbitrary_transform; |
| 98 arbitrary_transform.Scale3d(0.1f, 0.2f, 0.3f); | 101 arbitrary_transform.Scale3d(0.1f, 0.2f, 0.3f); |
| 99 FilterOperations arbitrary_filters; | 102 FilterOperations arbitrary_filters; |
| 100 arbitrary_filters.Append(FilterOperation::CreateOpacityFilter(0.5f)); | 103 arbitrary_filters.Append(FilterOperation::CreateOpacityFilter(0.5f)); |
| 101 SkXfermode::Mode arbitrary_blend_mode = SkXfermode::kMultiply_Mode; | 104 SkXfermode::Mode arbitrary_blend_mode = SkXfermode::kMultiply_Mode; |
| 102 | 105 |
| 103 // These properties are internal, and should not be considered "change" when | 106 // These properties are internal, and should not be considered "change" when |
| 104 // they are used. | 107 // they are used. |
| 105 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE( | 108 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE( |
| 106 root->set_update_rect(arbitrary_rect_f)); | 109 root->set_update_rect(arbitrary_rect_f)); |
| 107 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE( | 110 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE( |
| 108 root->SetMaxScrollOffset(arbitrary_vector2d)); | 111 root_clip->SetBounds(arbitrary_size)); |
| 109 | 112 |
| 110 // Changing these properties affects the entire subtree of layers. | 113 // Changing these properties affects the entire subtree of layers. |
| 111 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetAnchorPoint(arbitrary_point_f)); | 114 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetAnchorPoint(arbitrary_point_f)); |
| 112 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetAnchorPointZ(arbitrary_number)); | 115 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetAnchorPointZ(arbitrary_number)); |
| 113 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetFilters(arbitrary_filters)); | 116 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetFilters(arbitrary_filters)); |
| 114 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetFilters(FilterOperations())); | 117 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetFilters(FilterOperations())); |
| 115 EXECUTE_AND_VERIFY_SUBTREE_CHANGED( | 118 EXECUTE_AND_VERIFY_SUBTREE_CHANGED( |
| 116 root->SetMaskLayer(LayerImpl::Create(host_impl.active_tree(), 4))); | 119 root->SetMaskLayer(LayerImpl::Create(host_impl.active_tree(), 5))); |
| 117 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetMasksToBounds(true)); | 120 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetMasksToBounds(true)); |
| 118 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetContentsOpaque(true)); | 121 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetContentsOpaque(true)); |
| 119 EXECUTE_AND_VERIFY_SUBTREE_CHANGED( | 122 EXECUTE_AND_VERIFY_SUBTREE_CHANGED( |
| 120 root->SetReplicaLayer(LayerImpl::Create(host_impl.active_tree(), 5))); | 123 root->SetReplicaLayer(LayerImpl::Create(host_impl.active_tree(), 6))); |
| 121 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetPosition(arbitrary_point_f)); | 124 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetPosition(arbitrary_point_f)); |
| 122 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetPreserves3d(true)); | 125 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetPreserves3d(true)); |
| 123 EXECUTE_AND_VERIFY_SUBTREE_CHANGED( | 126 EXECUTE_AND_VERIFY_SUBTREE_CHANGED( |
| 124 root->SetDoubleSided(false)); // constructor initializes it to "true". | 127 root->SetDoubleSided(false)); // constructor initializes it to "true". |
| 125 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->ScrollBy(arbitrary_vector2d)); | 128 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->ScrollBy(arbitrary_vector2d)); |
| 126 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetScrollDelta(gfx::Vector2d())); | 129 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetScrollDelta(gfx::Vector2d())); |
| 127 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetScrollOffset(arbitrary_vector2d)); | 130 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetScrollOffset(arbitrary_vector2d)); |
| 128 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetHideLayerAndSubtree(true)); | 131 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetHideLayerAndSubtree(true)); |
| 129 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetOpacity(arbitrary_number)); | 132 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetOpacity(arbitrary_number)); |
| 130 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetBlendMode(arbitrary_blend_mode)); | 133 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetBlendMode(arbitrary_blend_mode)); |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 188 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(root->SetDrawsContent(true)); | 191 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(root->SetDrawsContent(true)); |
| 189 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE( | 192 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE( |
| 190 root->SetSublayerTransform(arbitrary_transform)); | 193 root->SetSublayerTransform(arbitrary_transform)); |
| 191 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(root->SetBounds(arbitrary_size)); | 194 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(root->SetBounds(arbitrary_size)); |
| 192 } | 195 } |
| 193 | 196 |
| 194 TEST(LayerImplTest, VerifyNeedsUpdateDrawProperties) { | 197 TEST(LayerImplTest, VerifyNeedsUpdateDrawProperties) { |
| 195 FakeImplProxy proxy; | 198 FakeImplProxy proxy; |
| 196 FakeLayerTreeHostImpl host_impl(&proxy); | 199 FakeLayerTreeHostImpl host_impl(&proxy); |
| 197 EXPECT_TRUE(host_impl.InitializeRenderer(CreateFakeOutputSurface())); | 200 EXPECT_TRUE(host_impl.InitializeRenderer(CreateFakeOutputSurface())); |
| 198 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl.active_tree(), 1); | 201 scoped_ptr<LayerImpl> root_clip = |
| 199 root->SetScrollable(true); | 202 LayerImpl::Create(host_impl.active_tree(), 1); |
| 203 root_clip->AddChild(LayerImpl::Create(host_impl.active_tree(), 2)); |
| 204 LayerImpl* root = root_clip->children()[0]; |
| 205 root->SetScrollClipLayer(root_clip->id()); |
| 200 | 206 |
| 201 gfx::PointF arbitrary_point_f = gfx::PointF(0.125f, 0.25f); | 207 gfx::PointF arbitrary_point_f = gfx::PointF(0.125f, 0.25f); |
| 202 float arbitrary_number = 0.352f; | 208 float arbitrary_number = 0.352f; |
| 203 gfx::Size arbitrary_size = gfx::Size(111, 222); | 209 gfx::Size arbitrary_size = gfx::Size(111, 222); |
| 204 gfx::Point arbitrary_point = gfx::Point(333, 444); | 210 gfx::Point arbitrary_point = gfx::Point(333, 444); |
| 205 gfx::Vector2d arbitrary_vector2d = gfx::Vector2d(111, 222); | 211 gfx::Vector2d arbitrary_vector2d = gfx::Vector2d(111, 222); |
| 206 gfx::Vector2d large_vector2d = gfx::Vector2d(1000, 1000); | 212 gfx::Size large_size = gfx::Size(1000, 1000); |
| 207 gfx::Rect arbitrary_rect = gfx::Rect(arbitrary_point, arbitrary_size); | 213 gfx::Rect arbitrary_rect = gfx::Rect(arbitrary_point, arbitrary_size); |
| 208 gfx::RectF arbitrary_rect_f = | 214 gfx::RectF arbitrary_rect_f = |
| 209 gfx::RectF(arbitrary_point_f, gfx::SizeF(1.234f, 5.678f)); | 215 gfx::RectF(arbitrary_point_f, gfx::SizeF(1.234f, 5.678f)); |
| 210 SkColor arbitrary_color = SkColorSetRGB(10, 20, 30); | 216 SkColor arbitrary_color = SkColorSetRGB(10, 20, 30); |
| 211 gfx::Transform arbitrary_transform; | 217 gfx::Transform arbitrary_transform; |
| 212 arbitrary_transform.Scale3d(0.1f, 0.2f, 0.3f); | 218 arbitrary_transform.Scale3d(0.1f, 0.2f, 0.3f); |
| 213 FilterOperations arbitrary_filters; | 219 FilterOperations arbitrary_filters; |
| 214 arbitrary_filters.Append(FilterOperation::CreateOpacityFilter(0.5f)); | 220 arbitrary_filters.Append(FilterOperation::CreateOpacityFilter(0.5f)); |
| 215 SkXfermode::Mode arbitrary_blend_mode = SkXfermode::kMultiply_Mode; | 221 SkXfermode::Mode arbitrary_blend_mode = SkXfermode::kMultiply_Mode; |
| 216 | 222 |
| 217 // Related filter functions. | 223 // Related filter functions. |
| 218 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->SetFilters(arbitrary_filters)); | 224 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->SetFilters(arbitrary_filters)); |
| 219 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->SetFilters(arbitrary_filters)); | 225 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->SetFilters(arbitrary_filters)); |
| 220 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->SetFilters(FilterOperations())); | 226 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->SetFilters(FilterOperations())); |
| 221 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->SetFilters(arbitrary_filters)); | 227 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->SetFilters(arbitrary_filters)); |
| 222 | 228 |
| 223 // Related scrolling functions. | 229 // Related scrolling functions. |
| 224 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->SetMaxScrollOffset(large_vector2d)); | 230 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->SetBounds(large_size)); |
| 225 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES( | 231 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES( |
| 226 root->SetMaxScrollOffset(large_vector2d)); | 232 root->SetBounds(large_size)); |
| 227 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->ScrollBy(arbitrary_vector2d)); | 233 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->ScrollBy(arbitrary_vector2d)); |
| 228 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->ScrollBy(gfx::Vector2d())); | 234 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->ScrollBy(gfx::Vector2d())); |
| 229 root->SetScrollDelta(gfx::Vector2d(0, 0)); | 235 root->SetScrollDelta(gfx::Vector2d(0, 0)); |
| 230 host_impl.ForcePrepareToDraw(); | 236 host_impl.ForcePrepareToDraw(); |
| 231 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->SetScrollDelta(arbitrary_vector2d)); | 237 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->SetScrollDelta(arbitrary_vector2d)); |
| 232 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES( | 238 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES( |
| 233 root->SetScrollDelta(arbitrary_vector2d)); | 239 root->SetScrollDelta(arbitrary_vector2d)); |
| 234 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES( | 240 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES( |
| 235 root->SetScrollOffset(arbitrary_vector2d)); | 241 root->SetScrollOffset(arbitrary_vector2d)); |
| 236 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES( | 242 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES( |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 322 } | 328 } |
| 323 } | 329 } |
| 324 } | 330 } |
| 325 } | 331 } |
| 326 | 332 |
| 327 class LayerImplScrollTest : public testing::Test { | 333 class LayerImplScrollTest : public testing::Test { |
| 328 public: | 334 public: |
| 329 LayerImplScrollTest() : host_impl_(&proxy_), root_id_(7) { | 335 LayerImplScrollTest() : host_impl_(&proxy_), root_id_(7) { |
| 330 host_impl_.active_tree() | 336 host_impl_.active_tree() |
| 331 ->SetRootLayer(LayerImpl::Create(host_impl_.active_tree(), root_id_)); | 337 ->SetRootLayer(LayerImpl::Create(host_impl_.active_tree(), root_id_)); |
| 332 host_impl_.active_tree()->root_layer()->SetScrollable(true); | 338 host_impl_.active_tree()->root_layer()->AddChild( |
| 339 LayerImpl::Create(host_impl_.active_tree(), root_id_ + 1)); |
| 340 layer()->SetScrollClipLayer(root_id_); |
| 341 // Set the max scroll offset by noting that the root layer has bounds (1,1), |
| 342 // thus whatever bounds are set for the layer will be the max scroll |
| 343 // offset plus 1 in each direction. |
| 344 host_impl_.active_tree()->root_layer()->SetBounds(gfx::Size(1, 1)); |
| 345 gfx::Vector2d max_scroll_offset(51, 81); |
| 346 layer()->SetBounds(gfx::Size(max_scroll_offset.x(), max_scroll_offset.y())); |
| 333 } | 347 } |
| 334 | 348 |
| 335 LayerImpl* layer() { return host_impl_.active_tree()->root_layer(); } | 349 LayerImpl* layer() { |
| 350 return host_impl_.active_tree()->root_layer()->children()[0]; |
| 351 } |
| 336 | 352 |
| 337 private: | 353 private: |
| 338 FakeImplProxy proxy_; | 354 FakeImplProxy proxy_; |
| 339 FakeLayerTreeHostImpl host_impl_; | 355 FakeLayerTreeHostImpl host_impl_; |
| 340 int root_id_; | 356 int root_id_; |
| 341 }; | 357 }; |
| 342 | 358 |
| 343 TEST_F(LayerImplScrollTest, ScrollByWithZeroOffset) { | 359 TEST_F(LayerImplScrollTest, ScrollByWithZeroOffset) { |
| 344 // Test that LayerImpl::ScrollBy only affects ScrollDelta and total scroll | 360 // Test that LayerImpl::ScrollBy only affects ScrollDelta and total scroll |
| 345 // offset is bounded by the range [0, max scroll offset]. | 361 // offset is bounded by the range [0, max scroll offset]. |
| 346 gfx::Vector2d max_scroll_offset(50, 80); | |
| 347 layer()->SetMaxScrollOffset(max_scroll_offset); | |
| 348 | 362 |
| 349 EXPECT_VECTOR_EQ(gfx::Vector2dF(), layer()->TotalScrollOffset()); | 363 EXPECT_VECTOR_EQ(gfx::Vector2dF(), layer()->TotalScrollOffset()); |
| 350 EXPECT_VECTOR_EQ(gfx::Vector2dF(), layer()->scroll_offset()); | 364 EXPECT_VECTOR_EQ(gfx::Vector2dF(), layer()->scroll_offset()); |
| 351 EXPECT_VECTOR_EQ(gfx::Vector2dF(), layer()->ScrollDelta()); | 365 EXPECT_VECTOR_EQ(gfx::Vector2dF(), layer()->ScrollDelta()); |
| 352 | 366 |
| 353 layer()->ScrollBy(gfx::Vector2dF(-100, 100)); | 367 layer()->ScrollBy(gfx::Vector2dF(-100, 100)); |
| 354 EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 80), layer()->TotalScrollOffset()); | 368 EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 80), layer()->TotalScrollOffset()); |
| 355 | 369 |
| 356 EXPECT_VECTOR_EQ(layer()->ScrollDelta(), layer()->TotalScrollOffset()); | 370 EXPECT_VECTOR_EQ(layer()->ScrollDelta(), layer()->TotalScrollOffset()); |
| 357 EXPECT_VECTOR_EQ(gfx::Vector2dF(), layer()->scroll_offset()); | 371 EXPECT_VECTOR_EQ(gfx::Vector2dF(), layer()->scroll_offset()); |
| 358 | 372 |
| 359 layer()->ScrollBy(gfx::Vector2dF(100, -100)); | 373 layer()->ScrollBy(gfx::Vector2dF(100, -100)); |
| 360 EXPECT_VECTOR_EQ(gfx::Vector2dF(50, 0), layer()->TotalScrollOffset()); | 374 EXPECT_VECTOR_EQ(gfx::Vector2dF(50, 0), layer()->TotalScrollOffset()); |
| 361 | 375 |
| 362 EXPECT_VECTOR_EQ(layer()->ScrollDelta(), layer()->TotalScrollOffset()); | 376 EXPECT_VECTOR_EQ(layer()->ScrollDelta(), layer()->TotalScrollOffset()); |
| 363 EXPECT_VECTOR_EQ(gfx::Vector2dF(), layer()->scroll_offset()); | 377 EXPECT_VECTOR_EQ(gfx::Vector2dF(), layer()->scroll_offset()); |
| 364 } | 378 } |
| 365 | 379 |
| 366 TEST_F(LayerImplScrollTest, ScrollByWithNonZeroOffset) { | 380 TEST_F(LayerImplScrollTest, ScrollByWithNonZeroOffset) { |
| 367 gfx::Vector2d max_scroll_offset(50, 80); | |
| 368 gfx::Vector2d scroll_offset(10, 5); | 381 gfx::Vector2d scroll_offset(10, 5); |
| 369 layer()->SetMaxScrollOffset(max_scroll_offset); | |
| 370 layer()->SetScrollOffset(scroll_offset); | 382 layer()->SetScrollOffset(scroll_offset); |
| 371 | 383 |
| 372 EXPECT_VECTOR_EQ(scroll_offset, layer()->TotalScrollOffset()); | 384 EXPECT_VECTOR_EQ(scroll_offset, layer()->TotalScrollOffset()); |
| 373 EXPECT_VECTOR_EQ(scroll_offset, layer()->scroll_offset()); | 385 EXPECT_VECTOR_EQ(scroll_offset, layer()->scroll_offset()); |
| 374 EXPECT_VECTOR_EQ(gfx::Vector2dF(), layer()->ScrollDelta()); | 386 EXPECT_VECTOR_EQ(gfx::Vector2dF(), layer()->ScrollDelta()); |
| 375 | 387 |
| 376 layer()->ScrollBy(gfx::Vector2dF(-100, 100)); | 388 layer()->ScrollBy(gfx::Vector2dF(-100, 100)); |
| 377 EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 80), layer()->TotalScrollOffset()); | 389 EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 80), layer()->TotalScrollOffset()); |
| 378 | 390 |
| 379 EXPECT_VECTOR_EQ(layer()->ScrollDelta() + scroll_offset, | 391 EXPECT_VECTOR_EQ(layer()->ScrollDelta() + scroll_offset, |
| (...skipping 22 matching lines...) Expand all Loading... |
| 402 } | 414 } |
| 403 | 415 |
| 404 virtual void SetTotalPageScaleFactor(float page_scale_factor) OVERRIDE {} | 416 virtual void SetTotalPageScaleFactor(float page_scale_factor) OVERRIDE {} |
| 405 virtual void SetScrollableSize(gfx::SizeF scrollable_size) OVERRIDE {} | 417 virtual void SetScrollableSize(gfx::SizeF scrollable_size) OVERRIDE {} |
| 406 | 418 |
| 407 private: | 419 private: |
| 408 gfx::Vector2dF fixed_offset_; | 420 gfx::Vector2dF fixed_offset_; |
| 409 }; | 421 }; |
| 410 | 422 |
| 411 TEST_F(LayerImplScrollTest, ScrollByWithIgnoringDelegate) { | 423 TEST_F(LayerImplScrollTest, ScrollByWithIgnoringDelegate) { |
| 412 gfx::Vector2d max_scroll_offset(50, 80); | |
| 413 gfx::Vector2d scroll_offset(10, 5); | 424 gfx::Vector2d scroll_offset(10, 5); |
| 414 layer()->SetMaxScrollOffset(max_scroll_offset); | |
| 415 layer()->SetScrollOffset(scroll_offset); | 425 layer()->SetScrollOffset(scroll_offset); |
| 416 | 426 |
| 417 EXPECT_VECTOR_EQ(scroll_offset, layer()->TotalScrollOffset()); | 427 EXPECT_VECTOR_EQ(scroll_offset, layer()->TotalScrollOffset()); |
| 418 EXPECT_VECTOR_EQ(scroll_offset, layer()->scroll_offset()); | 428 EXPECT_VECTOR_EQ(scroll_offset, layer()->scroll_offset()); |
| 419 EXPECT_VECTOR_EQ(gfx::Vector2dF(), layer()->ScrollDelta()); | 429 EXPECT_VECTOR_EQ(gfx::Vector2dF(), layer()->ScrollDelta()); |
| 420 | 430 |
| 421 ScrollDelegateIgnore delegate; | 431 ScrollDelegateIgnore delegate; |
| 422 gfx::Vector2dF fixed_offset(32, 12); | 432 gfx::Vector2dF fixed_offset(32, 12); |
| 423 delegate.set_fixed_offset(fixed_offset); | 433 delegate.set_fixed_offset(fixed_offset); |
| 424 layer()->SetScrollOffsetDelegate(&delegate); | 434 layer()->SetScrollOffsetDelegate(&delegate); |
| (...skipping 29 matching lines...) Expand all Loading... |
| 454 } | 464 } |
| 455 virtual bool IsExternalFlingActive() const OVERRIDE { return false; } | 465 virtual bool IsExternalFlingActive() const OVERRIDE { return false; } |
| 456 virtual void SetTotalPageScaleFactor(float page_scale_factor) OVERRIDE {} | 466 virtual void SetTotalPageScaleFactor(float page_scale_factor) OVERRIDE {} |
| 457 virtual void SetScrollableSize(gfx::SizeF scrollable_size) OVERRIDE {} | 467 virtual void SetScrollableSize(gfx::SizeF scrollable_size) OVERRIDE {} |
| 458 | 468 |
| 459 private: | 469 private: |
| 460 gfx::Vector2dF current_offset_; | 470 gfx::Vector2dF current_offset_; |
| 461 }; | 471 }; |
| 462 | 472 |
| 463 TEST_F(LayerImplScrollTest, ScrollByWithAcceptingDelegate) { | 473 TEST_F(LayerImplScrollTest, ScrollByWithAcceptingDelegate) { |
| 464 gfx::Vector2d max_scroll_offset(50, 80); | |
| 465 gfx::Vector2d scroll_offset(10, 5); | 474 gfx::Vector2d scroll_offset(10, 5); |
| 466 layer()->SetMaxScrollOffset(max_scroll_offset); | |
| 467 layer()->SetScrollOffset(scroll_offset); | 475 layer()->SetScrollOffset(scroll_offset); |
| 468 | 476 |
| 469 EXPECT_VECTOR_EQ(scroll_offset, layer()->TotalScrollOffset()); | 477 EXPECT_VECTOR_EQ(scroll_offset, layer()->TotalScrollOffset()); |
| 470 EXPECT_VECTOR_EQ(scroll_offset, layer()->scroll_offset()); | 478 EXPECT_VECTOR_EQ(scroll_offset, layer()->scroll_offset()); |
| 471 EXPECT_VECTOR_EQ(gfx::Vector2dF(), layer()->ScrollDelta()); | 479 EXPECT_VECTOR_EQ(gfx::Vector2dF(), layer()->ScrollDelta()); |
| 472 | 480 |
| 473 ScrollDelegateAccept delegate; | 481 ScrollDelegateAccept delegate; |
| 474 layer()->SetScrollOffsetDelegate(&delegate); | 482 layer()->SetScrollOffsetDelegate(&delegate); |
| 475 | 483 |
| 476 EXPECT_VECTOR_EQ(scroll_offset, layer()->TotalScrollOffset()); | 484 EXPECT_VECTOR_EQ(scroll_offset, layer()->TotalScrollOffset()); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 488 EXPECT_VECTOR_EQ(scroll_offset, layer()->scroll_offset()); | 496 EXPECT_VECTOR_EQ(scroll_offset, layer()->scroll_offset()); |
| 489 | 497 |
| 490 gfx::Vector2dF scroll_delta(1, 1); | 498 gfx::Vector2dF scroll_delta(1, 1); |
| 491 layer()->ScrollBy(scroll_delta); | 499 layer()->ScrollBy(scroll_delta); |
| 492 | 500 |
| 493 EXPECT_VECTOR_EQ(gfx::Vector2dF(1, 80), layer()->TotalScrollOffset()); | 501 EXPECT_VECTOR_EQ(gfx::Vector2dF(1, 80), layer()->TotalScrollOffset()); |
| 494 EXPECT_VECTOR_EQ(scroll_offset, layer()->scroll_offset()); | 502 EXPECT_VECTOR_EQ(scroll_offset, layer()->scroll_offset()); |
| 495 } | 503 } |
| 496 | 504 |
| 497 TEST_F(LayerImplScrollTest, ApplySentScrollsNoDelegate) { | 505 TEST_F(LayerImplScrollTest, ApplySentScrollsNoDelegate) { |
| 498 gfx::Vector2d max_scroll_offset(50, 80); | |
| 499 gfx::Vector2d scroll_offset(10, 5); | 506 gfx::Vector2d scroll_offset(10, 5); |
| 500 gfx::Vector2dF scroll_delta(20.5f, 8.5f); | 507 gfx::Vector2dF scroll_delta(20.5f, 8.5f); |
| 501 gfx::Vector2d sent_scroll_delta(12, -3); | 508 gfx::Vector2d sent_scroll_delta(12, -3); |
| 502 | 509 |
| 503 layer()->SetMaxScrollOffset(max_scroll_offset); | |
| 504 layer()->SetScrollOffset(scroll_offset); | 510 layer()->SetScrollOffset(scroll_offset); |
| 505 layer()->ScrollBy(scroll_delta); | 511 layer()->ScrollBy(scroll_delta); |
| 506 layer()->SetSentScrollDelta(sent_scroll_delta); | 512 layer()->SetSentScrollDelta(sent_scroll_delta); |
| 507 | 513 |
| 508 EXPECT_VECTOR_EQ(scroll_offset + scroll_delta, layer()->TotalScrollOffset()); | 514 EXPECT_VECTOR_EQ(scroll_offset + scroll_delta, layer()->TotalScrollOffset()); |
| 509 EXPECT_VECTOR_EQ(scroll_delta, layer()->ScrollDelta()); | 515 EXPECT_VECTOR_EQ(scroll_delta, layer()->ScrollDelta()); |
| 510 EXPECT_VECTOR_EQ(scroll_offset, layer()->scroll_offset()); | 516 EXPECT_VECTOR_EQ(scroll_offset, layer()->scroll_offset()); |
| 511 EXPECT_VECTOR_EQ(sent_scroll_delta, layer()->sent_scroll_delta()); | 517 EXPECT_VECTOR_EQ(sent_scroll_delta, layer()->sent_scroll_delta()); |
| 512 | 518 |
| 513 layer()->ApplySentScrollDeltasFromAbortedCommit(); | 519 layer()->ApplySentScrollDeltasFromAbortedCommit(); |
| 514 | 520 |
| 515 EXPECT_VECTOR_EQ(scroll_offset + scroll_delta, layer()->TotalScrollOffset()); | 521 EXPECT_VECTOR_EQ(scroll_offset + scroll_delta, layer()->TotalScrollOffset()); |
| 516 EXPECT_VECTOR_EQ(scroll_delta - sent_scroll_delta, layer()->ScrollDelta()); | 522 EXPECT_VECTOR_EQ(scroll_delta - sent_scroll_delta, layer()->ScrollDelta()); |
| 517 EXPECT_VECTOR_EQ(scroll_offset + sent_scroll_delta, layer()->scroll_offset()); | 523 EXPECT_VECTOR_EQ(scroll_offset + sent_scroll_delta, layer()->scroll_offset()); |
| 518 EXPECT_VECTOR_EQ(gfx::Vector2d(), layer()->sent_scroll_delta()); | 524 EXPECT_VECTOR_EQ(gfx::Vector2d(), layer()->sent_scroll_delta()); |
| 519 } | 525 } |
| 520 | 526 |
| 521 TEST_F(LayerImplScrollTest, ApplySentScrollsWithIgnoringDelegate) { | 527 TEST_F(LayerImplScrollTest, ApplySentScrollsWithIgnoringDelegate) { |
| 522 gfx::Vector2d max_scroll_offset(50, 80); | |
| 523 gfx::Vector2d scroll_offset(10, 5); | 528 gfx::Vector2d scroll_offset(10, 5); |
| 524 gfx::Vector2d sent_scroll_delta(12, -3); | 529 gfx::Vector2d sent_scroll_delta(12, -3); |
| 525 gfx::Vector2dF fixed_offset(32, 12); | 530 gfx::Vector2dF fixed_offset(32, 12); |
| 526 | 531 |
| 527 layer()->SetMaxScrollOffset(max_scroll_offset); | |
| 528 layer()->SetScrollOffset(scroll_offset); | 532 layer()->SetScrollOffset(scroll_offset); |
| 529 ScrollDelegateIgnore delegate; | 533 ScrollDelegateIgnore delegate; |
| 530 delegate.set_fixed_offset(fixed_offset); | 534 delegate.set_fixed_offset(fixed_offset); |
| 531 layer()->SetScrollOffsetDelegate(&delegate); | 535 layer()->SetScrollOffsetDelegate(&delegate); |
| 532 layer()->SetSentScrollDelta(sent_scroll_delta); | 536 layer()->SetSentScrollDelta(sent_scroll_delta); |
| 533 | 537 |
| 534 EXPECT_VECTOR_EQ(fixed_offset, layer()->TotalScrollOffset()); | 538 EXPECT_VECTOR_EQ(fixed_offset, layer()->TotalScrollOffset()); |
| 535 EXPECT_VECTOR_EQ(scroll_offset, layer()->scroll_offset()); | 539 EXPECT_VECTOR_EQ(scroll_offset, layer()->scroll_offset()); |
| 536 EXPECT_VECTOR_EQ(sent_scroll_delta, layer()->sent_scroll_delta()); | 540 EXPECT_VECTOR_EQ(sent_scroll_delta, layer()->sent_scroll_delta()); |
| 537 | 541 |
| 538 layer()->ApplySentScrollDeltasFromAbortedCommit(); | 542 layer()->ApplySentScrollDeltasFromAbortedCommit(); |
| 539 | 543 |
| 540 EXPECT_VECTOR_EQ(fixed_offset, layer()->TotalScrollOffset()); | 544 EXPECT_VECTOR_EQ(fixed_offset, layer()->TotalScrollOffset()); |
| 541 EXPECT_VECTOR_EQ(scroll_offset + sent_scroll_delta, layer()->scroll_offset()); | 545 EXPECT_VECTOR_EQ(scroll_offset + sent_scroll_delta, layer()->scroll_offset()); |
| 542 EXPECT_VECTOR_EQ(gfx::Vector2d(), layer()->sent_scroll_delta()); | 546 EXPECT_VECTOR_EQ(gfx::Vector2d(), layer()->sent_scroll_delta()); |
| 543 } | 547 } |
| 544 | 548 |
| 545 TEST_F(LayerImplScrollTest, ApplySentScrollsWithAcceptingDelegate) { | 549 TEST_F(LayerImplScrollTest, ApplySentScrollsWithAcceptingDelegate) { |
| 546 gfx::Vector2d max_scroll_offset(50, 80); | |
| 547 gfx::Vector2d scroll_offset(10, 5); | 550 gfx::Vector2d scroll_offset(10, 5); |
| 548 gfx::Vector2d sent_scroll_delta(12, -3); | 551 gfx::Vector2d sent_scroll_delta(12, -3); |
| 549 gfx::Vector2dF scroll_delta(20.5f, 8.5f); | 552 gfx::Vector2dF scroll_delta(20.5f, 8.5f); |
| 550 | 553 |
| 551 layer()->SetMaxScrollOffset(max_scroll_offset); | |
| 552 layer()->SetScrollOffset(scroll_offset); | 554 layer()->SetScrollOffset(scroll_offset); |
| 553 ScrollDelegateAccept delegate; | 555 ScrollDelegateAccept delegate; |
| 554 layer()->SetScrollOffsetDelegate(&delegate); | 556 layer()->SetScrollOffsetDelegate(&delegate); |
| 555 layer()->ScrollBy(scroll_delta); | 557 layer()->ScrollBy(scroll_delta); |
| 556 layer()->SetSentScrollDelta(sent_scroll_delta); | 558 layer()->SetSentScrollDelta(sent_scroll_delta); |
| 557 | 559 |
| 558 EXPECT_VECTOR_EQ(scroll_offset + scroll_delta, layer()->TotalScrollOffset()); | 560 EXPECT_VECTOR_EQ(scroll_offset + scroll_delta, layer()->TotalScrollOffset()); |
| 559 EXPECT_VECTOR_EQ(scroll_offset, layer()->scroll_offset()); | 561 EXPECT_VECTOR_EQ(scroll_offset, layer()->scroll_offset()); |
| 560 EXPECT_VECTOR_EQ(sent_scroll_delta, layer()->sent_scroll_delta()); | 562 EXPECT_VECTOR_EQ(sent_scroll_delta, layer()->sent_scroll_delta()); |
| 561 | 563 |
| 562 layer()->ApplySentScrollDeltasFromAbortedCommit(); | 564 layer()->ApplySentScrollDeltasFromAbortedCommit(); |
| 563 | 565 |
| 564 EXPECT_VECTOR_EQ(scroll_offset + scroll_delta, layer()->TotalScrollOffset()); | 566 EXPECT_VECTOR_EQ(scroll_offset + scroll_delta, layer()->TotalScrollOffset()); |
| 565 EXPECT_VECTOR_EQ(scroll_offset + sent_scroll_delta, layer()->scroll_offset()); | 567 EXPECT_VECTOR_EQ(scroll_offset + sent_scroll_delta, layer()->scroll_offset()); |
| 566 EXPECT_VECTOR_EQ(gfx::Vector2d(), layer()->sent_scroll_delta()); | 568 EXPECT_VECTOR_EQ(gfx::Vector2d(), layer()->sent_scroll_delta()); |
| 567 } | 569 } |
| 568 | 570 |
| 569 // The user-scrollability breaks for zoomed-in pages. So disable this. | 571 // The user-scrollability breaks for zoomed-in pages. So disable this. |
| 570 // http://crbug.com/322223 | 572 // http://crbug.com/322223 |
| 571 TEST_F(LayerImplScrollTest, DISABLED_ScrollUserUnscrollableLayer) { | 573 TEST_F(LayerImplScrollTest, DISABLED_ScrollUserUnscrollableLayer) { |
| 572 gfx::Vector2d max_scroll_offset(50, 80); | |
| 573 gfx::Vector2d scroll_offset(10, 5); | 574 gfx::Vector2d scroll_offset(10, 5); |
| 574 gfx::Vector2dF scroll_delta(20.5f, 8.5f); | 575 gfx::Vector2dF scroll_delta(20.5f, 8.5f); |
| 575 | 576 |
| 576 layer()->set_user_scrollable_vertical(false); | 577 layer()->set_user_scrollable_vertical(false); |
| 577 layer()->SetMaxScrollOffset(max_scroll_offset); | |
| 578 layer()->SetScrollOffset(scroll_offset); | 578 layer()->SetScrollOffset(scroll_offset); |
| 579 gfx::Vector2dF unscrolled = layer()->ScrollBy(scroll_delta); | 579 gfx::Vector2dF unscrolled = layer()->ScrollBy(scroll_delta); |
| 580 | 580 |
| 581 EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 8.5f), unscrolled); | 581 EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 8.5f), unscrolled); |
| 582 EXPECT_VECTOR_EQ(gfx::Vector2dF(30.5f, 5), layer()->TotalScrollOffset()); | 582 EXPECT_VECTOR_EQ(gfx::Vector2dF(30.5f, 5), layer()->TotalScrollOffset()); |
| 583 } | 583 } |
| 584 | 584 |
| 585 } // namespace | 585 } // namespace |
| 586 } // namespace cc | 586 } // namespace cc |
| OLD | NEW |