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 |