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 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
162 root->SetUpdateRect(arbitrary_rect)); | 162 root->SetUpdateRect(arbitrary_rect)); |
163 EXECUTE_AND_VERIFY_ONLY_LAYER_CHANGED(root->SetBounds(arbitrary_size)); | 163 EXECUTE_AND_VERIFY_ONLY_LAYER_CHANGED(root->SetBounds(arbitrary_size)); |
164 host_impl.active_tree()->property_trees()->needs_rebuild = true; | 164 host_impl.active_tree()->property_trees()->needs_rebuild = true; |
165 host_impl.active_tree()->BuildPropertyTreesForTesting(); | 165 host_impl.active_tree()->BuildPropertyTreesForTesting(); |
166 | 166 |
167 // Changing these properties affects the entire subtree of layers. | 167 // Changing these properties affects the entire subtree of layers. |
168 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->OnFilterAnimated(arbitrary_filters)); | 168 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->OnFilterAnimated(arbitrary_filters)); |
169 EXECUTE_AND_VERIFY_SUBTREE_CHANGED( | 169 EXECUTE_AND_VERIFY_SUBTREE_CHANGED( |
170 root->OnFilterAnimated(FilterOperations())); | 170 root->OnFilterAnimated(FilterOperations())); |
171 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->ScrollBy(arbitrary_vector2d)); | 171 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->ScrollBy(arbitrary_vector2d)); |
172 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetScrollDelta(gfx::Vector2d())); | 172 root->layer_tree_impl() |
173 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->PushScrollOffsetFromMainThread( | 173 ->property_trees() |
174 gfx::ScrollOffset(arbitrary_vector2d))); | 174 ->scroll_tree.UpdateScrollOffsetBaseForTesting( |
175 root->id(), | |
176 gfx::ScrollOffset(arbitrary_vector2d.x(), arbitrary_vector2d.y())); | |
ajuma
2016/03/07 19:10:19
Is this line needed? (It's not obvious which, if a
sunxd
2016/03/09 01:51:20
Done.
| |
175 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->OnOpacityAnimated(arbitrary_number)); | 177 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->OnOpacityAnimated(arbitrary_number)); |
176 EXECUTE_AND_VERIFY_SUBTREE_CHANGED( | 178 EXECUTE_AND_VERIFY_SUBTREE_CHANGED( |
177 root->OnTransformAnimated(arbitrary_transform)); | 179 root->OnTransformAnimated(arbitrary_transform)); |
178 // SetBoundsDelta changes subtree only when masks_to_bounds is true and it | 180 // SetBoundsDelta changes subtree only when masks_to_bounds is true and it |
179 // doesn't set needs_push_properties as it is always called on active tree. | 181 // doesn't set needs_push_properties as it is always called on active tree. |
180 root->SetMasksToBounds(true); | 182 root->SetMasksToBounds(true); |
181 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetBoundsDelta(arbitrary_vector2d); | 183 EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetBoundsDelta(arbitrary_vector2d); |
182 root->SetNeedsPushProperties()); | 184 root->SetNeedsPushProperties()); |
183 | 185 |
184 // Changing these properties only affects the layer itself. | 186 // Changing these properties only affects the layer itself. |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
226 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(root->SetMasksToBounds(true)); | 228 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(root->SetMasksToBounds(true)); |
227 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE( | 229 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE( |
228 root->SetPosition(arbitrary_point_f)); | 230 root->SetPosition(arbitrary_point_f)); |
229 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE( | 231 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE( |
230 root->SetShouldFlattenTransform(false)); | 232 root->SetShouldFlattenTransform(false)); |
231 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(root->Set3dSortingContextId(1)); | 233 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(root->Set3dSortingContextId(1)); |
232 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE( | 234 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE( |
233 root->SetTransform(arbitrary_transform)); | 235 root->SetTransform(arbitrary_transform)); |
234 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE( | 236 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE( |
235 root->SetDoubleSided(false)); // constructor initializes it to "true". | 237 root->SetDoubleSided(false)); // constructor initializes it to "true". |
236 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE( | |
237 root->SetScrollDelta(gfx::Vector2d())); | |
238 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE( | |
239 root->PushScrollOffsetFromMainThread( | |
240 gfx::ScrollOffset(arbitrary_vector2d))); | |
241 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(root->SetContentsOpaque(true)); | 238 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(root->SetContentsOpaque(true)); |
242 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(root->SetOpacity(arbitrary_number)); | 239 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(root->SetOpacity(arbitrary_number)); |
243 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE( | 240 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE( |
244 root->SetBlendMode(arbitrary_blend_mode)); | 241 root->SetBlendMode(arbitrary_blend_mode)); |
245 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE( | 242 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE( |
246 root->SetIsRootForIsolatedGroup(true)); | 243 root->SetIsRootForIsolatedGroup(true)); |
247 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(root->SetDrawsContent(true)); | 244 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(root->SetDrawsContent(true)); |
248 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(root->SetBounds(bounds_size)); | 245 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(root->SetBounds(bounds_size)); |
249 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE( | 246 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE( |
250 root->SetScrollParent(scroll_parent.get())); | 247 root->SetScrollParent(scroll_parent.get())); |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
322 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES( | 319 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES( |
323 root->OnFilterAnimated(FilterOperations())); | 320 root->OnFilterAnimated(FilterOperations())); |
324 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES( | 321 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES( |
325 root->OnFilterAnimated(arbitrary_filters)); | 322 root->OnFilterAnimated(arbitrary_filters)); |
326 | 323 |
327 // Related scrolling functions. | 324 // Related scrolling functions. |
328 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetBounds(large_size)); | 325 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetBounds(large_size)); |
329 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetBounds(large_size)); | 326 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetBounds(large_size)); |
330 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(layer->ScrollBy(arbitrary_vector2d)); | 327 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(layer->ScrollBy(arbitrary_vector2d)); |
331 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(layer->ScrollBy(gfx::Vector2d())); | 328 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(layer->ScrollBy(gfx::Vector2d())); |
332 layer->SetScrollDelta(gfx::Vector2d(0, 0)); | |
333 host_impl.ForcePrepareToDraw(); | |
334 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES( | |
335 layer->SetScrollDelta(arbitrary_vector2d)); | |
336 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES( | |
337 layer->SetScrollDelta(arbitrary_vector2d)); | |
338 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(layer->PushScrollOffsetFromMainThread( | |
339 gfx::ScrollOffset(arbitrary_vector2d))); | |
ajuma
2016/03/07 19:10:19
For these removed lines, do we have equivalent tes
sunxd
2016/03/09 01:51:20
Done.
| |
340 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(layer->DidUpdateScrollOffset()); | 329 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(layer->DidUpdateScrollOffset()); |
341 | 330 |
342 // Unrelated functions, always set to new values, always set needs update. | 331 // Unrelated functions, always set to new values, always set needs update. |
343 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES( | 332 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES( |
344 layer->SetMaskLayer(LayerImpl::Create(host_impl.active_tree(), 4)); | 333 layer->SetMaskLayer(LayerImpl::Create(host_impl.active_tree(), 4)); |
345 layer->NoteLayerPropertyChanged()); | 334 layer->NoteLayerPropertyChanged()); |
346 host_impl.active_tree()->BuildPropertyTreesForTesting(); | 335 host_impl.active_tree()->BuildPropertyTreesForTesting(); |
347 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetMasksToBounds(true); | 336 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetMasksToBounds(true); |
348 layer->NoteLayerPropertyChanged()); | 337 layer->NoteLayerPropertyChanged()); |
349 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetContentsOpaque(true); | 338 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetContentsOpaque(true); |
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
492 host_impl_.active_tree()->root_layer()->SetBounds(gfx::Size(1, 1)); | 481 host_impl_.active_tree()->root_layer()->SetBounds(gfx::Size(1, 1)); |
493 gfx::Vector2d max_scroll_offset(51, 81); | 482 gfx::Vector2d max_scroll_offset(51, 81); |
494 layer()->SetBounds(gfx::Size(max_scroll_offset.x(), max_scroll_offset.y())); | 483 layer()->SetBounds(gfx::Size(max_scroll_offset.x(), max_scroll_offset.y())); |
495 host_impl_.active_tree()->BuildPropertyTreesForTesting(); | 484 host_impl_.active_tree()->BuildPropertyTreesForTesting(); |
496 } | 485 } |
497 | 486 |
498 LayerImpl* layer() { | 487 LayerImpl* layer() { |
499 return host_impl_.active_tree()->root_layer()->children()[0].get(); | 488 return host_impl_.active_tree()->root_layer()->children()[0].get(); |
500 } | 489 } |
501 | 490 |
491 ScrollTree* scroll_tree(LayerImpl* layer_impl) { | |
492 return &layer_impl->layer_tree_impl()->property_trees()->scroll_tree; | |
493 } | |
494 | |
502 LayerTreeHostImpl& host_impl() { return host_impl_; } | 495 LayerTreeHostImpl& host_impl() { return host_impl_; } |
503 | 496 |
504 LayerTreeImpl* tree() { return host_impl_.active_tree(); } | 497 LayerTreeImpl* tree() { return host_impl_.active_tree(); } |
505 | 498 |
506 LayerTreeSettings settings() { | 499 LayerTreeSettings settings() { |
507 LayerTreeSettings settings; | 500 LayerTreeSettings settings; |
508 return settings; | 501 return settings; |
509 } | 502 } |
510 | 503 |
511 private: | 504 private: |
512 FakeImplTaskRunnerProvider task_runner_provider_; | 505 FakeImplTaskRunnerProvider task_runner_provider_; |
513 TestSharedBitmapManager shared_bitmap_manager_; | 506 TestSharedBitmapManager shared_bitmap_manager_; |
514 TestTaskGraphRunner task_graph_runner_; | 507 TestTaskGraphRunner task_graph_runner_; |
515 FakeLayerTreeHostImpl host_impl_; | 508 FakeLayerTreeHostImpl host_impl_; |
516 int root_id_; | 509 int root_id_; |
517 }; | 510 }; |
518 | 511 |
519 TEST_F(LayerImplScrollTest, ScrollByWithZeroOffset) { | 512 TEST_F(LayerImplScrollTest, ScrollByWithZeroOffset) { |
520 // Test that LayerImpl::ScrollBy only affects ScrollDelta and total scroll | 513 // Test that LayerImpl::ScrollBy only affects ScrollDelta and total scroll |
521 // offset is bounded by the range [0, max scroll offset]. | 514 // offset is bounded by the range [0, max scroll offset]. |
522 | 515 |
523 EXPECT_VECTOR_EQ(gfx::Vector2dF(), layer()->CurrentScrollOffset()); | 516 EXPECT_VECTOR_EQ(gfx::Vector2dF(), layer()->CurrentScrollOffset()); |
524 EXPECT_VECTOR_EQ(gfx::Vector2dF(), layer()->BaseScrollOffset()); | 517 EXPECT_VECTOR_EQ( |
518 gfx::Vector2dF(), | |
519 scroll_tree(layer())->GetScrollOffsetBaseForTesting(layer()->id())); | |
525 EXPECT_VECTOR_EQ(gfx::Vector2dF(), layer()->ScrollDelta()); | 520 EXPECT_VECTOR_EQ(gfx::Vector2dF(), layer()->ScrollDelta()); |
526 | 521 |
527 layer()->ScrollBy(gfx::Vector2dF(-100, 100)); | 522 layer()->ScrollBy(gfx::Vector2dF(-100, 100)); |
528 EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 80), layer()->CurrentScrollOffset()); | 523 EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 80), layer()->CurrentScrollOffset()); |
529 | 524 |
530 EXPECT_VECTOR_EQ(layer()->ScrollDelta(), layer()->CurrentScrollOffset()); | 525 EXPECT_VECTOR_EQ(layer()->ScrollDelta(), layer()->CurrentScrollOffset()); |
531 EXPECT_VECTOR_EQ(gfx::Vector2dF(), layer()->BaseScrollOffset()); | 526 EXPECT_VECTOR_EQ( |
527 gfx::Vector2dF(), | |
528 scroll_tree(layer())->GetScrollOffsetBaseForTesting(layer()->id())); | |
532 | 529 |
533 layer()->ScrollBy(gfx::Vector2dF(100, -100)); | 530 layer()->ScrollBy(gfx::Vector2dF(100, -100)); |
534 EXPECT_VECTOR_EQ(gfx::Vector2dF(50, 0), layer()->CurrentScrollOffset()); | 531 EXPECT_VECTOR_EQ(gfx::Vector2dF(50, 0), layer()->CurrentScrollOffset()); |
535 | 532 |
536 EXPECT_VECTOR_EQ(layer()->ScrollDelta(), layer()->CurrentScrollOffset()); | 533 EXPECT_VECTOR_EQ(layer()->ScrollDelta(), layer()->CurrentScrollOffset()); |
537 EXPECT_VECTOR_EQ(gfx::Vector2dF(), layer()->BaseScrollOffset()); | 534 EXPECT_VECTOR_EQ( |
535 gfx::Vector2dF(), | |
536 scroll_tree(layer())->GetScrollOffsetBaseForTesting(layer()->id())); | |
538 } | 537 } |
539 | 538 |
540 TEST_F(LayerImplScrollTest, ScrollByWithNonZeroOffset) { | 539 TEST_F(LayerImplScrollTest, ScrollByWithNonZeroOffset) { |
541 gfx::ScrollOffset scroll_offset(10, 5); | 540 gfx::ScrollOffset scroll_offset(10, 5); |
542 layer()->PushScrollOffsetFromMainThread(scroll_offset); | 541 scroll_tree(layer())->UpdateScrollOffsetBaseForTesting(layer()->id(), |
542 scroll_offset); | |
543 | 543 |
544 EXPECT_VECTOR_EQ(scroll_offset, layer()->CurrentScrollOffset()); | 544 EXPECT_VECTOR_EQ(scroll_offset, layer()->CurrentScrollOffset()); |
545 EXPECT_VECTOR_EQ(scroll_offset, layer()->BaseScrollOffset()); | 545 EXPECT_VECTOR_EQ( |
546 scroll_offset, | |
547 scroll_tree(layer())->GetScrollOffsetBaseForTesting(layer()->id())); | |
546 EXPECT_VECTOR_EQ(gfx::Vector2dF(), layer()->ScrollDelta()); | 548 EXPECT_VECTOR_EQ(gfx::Vector2dF(), layer()->ScrollDelta()); |
547 | 549 |
548 layer()->ScrollBy(gfx::Vector2dF(-100, 100)); | 550 layer()->ScrollBy(gfx::Vector2dF(-100, 100)); |
549 EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 80), layer()->CurrentScrollOffset()); | 551 EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 80), layer()->CurrentScrollOffset()); |
550 | 552 |
551 EXPECT_VECTOR_EQ( | 553 EXPECT_VECTOR_EQ( |
552 gfx::ScrollOffsetWithDelta(scroll_offset, layer()->ScrollDelta()), | 554 gfx::ScrollOffsetWithDelta(scroll_offset, layer()->ScrollDelta()), |
553 layer()->CurrentScrollOffset()); | 555 layer()->CurrentScrollOffset()); |
554 EXPECT_VECTOR_EQ(scroll_offset, layer()->BaseScrollOffset()); | 556 EXPECT_VECTOR_EQ( |
557 scroll_offset, | |
558 scroll_tree(layer())->GetScrollOffsetBaseForTesting(layer()->id())); | |
555 | 559 |
556 layer()->ScrollBy(gfx::Vector2dF(100, -100)); | 560 layer()->ScrollBy(gfx::Vector2dF(100, -100)); |
557 EXPECT_VECTOR_EQ(gfx::Vector2dF(50, 0), layer()->CurrentScrollOffset()); | 561 EXPECT_VECTOR_EQ(gfx::Vector2dF(50, 0), layer()->CurrentScrollOffset()); |
558 | 562 |
559 EXPECT_VECTOR_EQ( | 563 EXPECT_VECTOR_EQ( |
560 gfx::ScrollOffsetWithDelta(scroll_offset, layer()->ScrollDelta()), | 564 gfx::ScrollOffsetWithDelta(scroll_offset, layer()->ScrollDelta()), |
561 layer()->CurrentScrollOffset()); | 565 layer()->CurrentScrollOffset()); |
562 EXPECT_VECTOR_EQ(scroll_offset, layer()->BaseScrollOffset()); | 566 EXPECT_VECTOR_EQ( |
567 scroll_offset, | |
568 scroll_tree(layer())->GetScrollOffsetBaseForTesting(layer()->id())); | |
563 } | 569 } |
564 | 570 |
565 TEST_F(LayerImplScrollTest, ApplySentScrollsNoListener) { | 571 TEST_F(LayerImplScrollTest, ApplySentScrollsNoListener) { |
566 gfx::ScrollOffset scroll_offset(10, 5); | 572 gfx::ScrollOffset scroll_offset(10, 5); |
567 gfx::Vector2dF scroll_delta(20.5f, 8.5f); | 573 gfx::Vector2dF scroll_delta(20.5f, 8.5f); |
568 gfx::Vector2d sent_scroll_delta(12, -3); | 574 gfx::Vector2d sent_scroll_delta(12, -3); |
569 | 575 |
570 layer()->PushScrollOffsetFromMainThread(scroll_offset); | 576 scroll_tree(layer())->UpdateScrollOffsetBaseForTesting(layer()->id(), |
577 scroll_offset); | |
571 layer()->ScrollBy(sent_scroll_delta); | 578 layer()->ScrollBy(sent_scroll_delta); |
572 layer()->synced_scroll_offset()->PullDeltaForMainThread(); | 579 layer()->synced_scroll_offset()->PullDeltaForMainThread(); |
573 layer()->SetCurrentScrollOffset(scroll_offset + | 580 layer()->SetCurrentScrollOffset(scroll_offset + |
574 gfx::ScrollOffset(scroll_delta)); | 581 gfx::ScrollOffset(scroll_delta)); |
575 | 582 |
576 EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(scroll_offset, scroll_delta), | 583 EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(scroll_offset, scroll_delta), |
577 layer()->CurrentScrollOffset()); | 584 layer()->CurrentScrollOffset()); |
578 EXPECT_VECTOR_EQ(scroll_delta, layer()->ScrollDelta()); | 585 EXPECT_VECTOR_EQ(scroll_delta, layer()->ScrollDelta()); |
579 EXPECT_VECTOR_EQ(scroll_offset, layer()->BaseScrollOffset()); | 586 EXPECT_VECTOR_EQ( |
587 scroll_offset, | |
588 scroll_tree(layer())->GetScrollOffsetBaseForTesting(layer()->id())); | |
580 | 589 |
581 layer()->synced_scroll_offset()->AbortCommit(); | 590 layer()->synced_scroll_offset()->AbortCommit(); |
582 | 591 |
583 EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(scroll_offset, scroll_delta), | 592 EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(scroll_offset, scroll_delta), |
584 layer()->CurrentScrollOffset()); | 593 layer()->CurrentScrollOffset()); |
585 EXPECT_VECTOR_EQ(scroll_delta - sent_scroll_delta, layer()->ScrollDelta()); | 594 EXPECT_VECTOR_EQ(scroll_delta - sent_scroll_delta, layer()->ScrollDelta()); |
586 EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(scroll_offset, sent_scroll_delta), | 595 EXPECT_VECTOR_EQ( |
587 layer()->BaseScrollOffset()); | 596 gfx::ScrollOffsetWithDelta(scroll_offset, sent_scroll_delta), |
597 scroll_tree(layer())->GetScrollOffsetBaseForTesting(layer()->id())); | |
588 } | 598 } |
589 | 599 |
590 TEST_F(LayerImplScrollTest, ScrollUserUnscrollableLayer) { | 600 TEST_F(LayerImplScrollTest, ScrollUserUnscrollableLayer) { |
591 gfx::ScrollOffset scroll_offset(10, 5); | 601 gfx::ScrollOffset scroll_offset(10, 5); |
592 gfx::Vector2dF scroll_delta(20.5f, 8.5f); | 602 gfx::Vector2dF scroll_delta(20.5f, 8.5f); |
593 | 603 |
594 layer()->set_user_scrollable_vertical(false); | 604 layer()->set_user_scrollable_vertical(false); |
595 layer()->PushScrollOffsetFromMainThread(scroll_offset); | 605 scroll_tree(layer())->UpdateScrollOffsetBaseForTesting(layer()->id(), |
606 scroll_offset); | |
596 gfx::Vector2dF unscrolled = layer()->ScrollBy(scroll_delta); | 607 gfx::Vector2dF unscrolled = layer()->ScrollBy(scroll_delta); |
597 | 608 |
598 EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 8.5f), unscrolled); | 609 EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 8.5f), unscrolled); |
599 EXPECT_VECTOR_EQ(gfx::Vector2dF(30.5f, 5), layer()->CurrentScrollOffset()); | 610 EXPECT_VECTOR_EQ(gfx::Vector2dF(30.5f, 5), layer()->CurrentScrollOffset()); |
600 } | 611 } |
601 | 612 |
602 TEST_F(LayerImplScrollTest, PushPropertiesToMirrorsCurrentScrollOffset) { | 613 TEST_F(LayerImplScrollTest, PushPropertiesToMirrorsCurrentScrollOffset) { |
603 gfx::ScrollOffset scroll_offset(10, 5); | 614 gfx::ScrollOffset scroll_offset(10, 5); |
604 gfx::Vector2dF scroll_delta(12, 18); | 615 gfx::Vector2dF scroll_delta(12, 18); |
605 | 616 |
606 host_impl().CreatePendingTree(); | 617 host_impl().CreatePendingTree(); |
607 | 618 |
608 layer()->PushScrollOffsetFromMainThread(scroll_offset); | 619 scroll_tree(layer())->UpdateScrollOffsetBaseForTesting(layer()->id(), |
620 scroll_offset); | |
609 gfx::Vector2dF unscrolled = layer()->ScrollBy(scroll_delta); | 621 gfx::Vector2dF unscrolled = layer()->ScrollBy(scroll_delta); |
610 | 622 |
611 EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 0), unscrolled); | 623 EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 0), unscrolled); |
612 EXPECT_VECTOR_EQ(gfx::Vector2dF(22, 23), layer()->CurrentScrollOffset()); | 624 EXPECT_VECTOR_EQ(gfx::Vector2dF(22, 23), layer()->CurrentScrollOffset()); |
613 | 625 |
614 layer()->synced_scroll_offset()->PullDeltaForMainThread(); | 626 layer()->synced_scroll_offset()->PullDeltaForMainThread(); |
615 | 627 |
616 scoped_ptr<LayerImpl> pending_layer = | 628 scoped_ptr<LayerImpl> pending_layer = |
617 LayerImpl::Create(host_impl().sync_tree(), layer()->id()); | 629 LayerImpl::Create(host_impl().sync_tree(), layer()->id()); |
618 pending_layer->PushScrollOffsetFromMainThread(layer()->CurrentScrollOffset()); | 630 scroll_tree(pending_layer.get()) |
631 ->UpdateScrollOffsetBaseForTesting(pending_layer->id(), | |
632 layer()->CurrentScrollOffset()); | |
619 | 633 |
620 pending_layer->PushPropertiesTo(layer()); | 634 pending_layer->PushPropertiesTo(layer()); |
621 | 635 |
622 EXPECT_VECTOR_EQ(gfx::Vector2dF(22, 23), layer()->CurrentScrollOffset()); | 636 EXPECT_VECTOR_EQ(gfx::Vector2dF(22, 23), layer()->CurrentScrollOffset()); |
623 EXPECT_VECTOR_EQ(layer()->CurrentScrollOffset(), | 637 EXPECT_VECTOR_EQ(layer()->CurrentScrollOffset(), |
624 pending_layer->CurrentScrollOffset()); | 638 pending_layer->CurrentScrollOffset()); |
625 } | 639 } |
626 | 640 |
627 } // namespace | 641 } // namespace |
628 } // namespace cc | 642 } // namespace cc |
OLD | NEW |