| 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/layers/painted_scrollbar_layer_impl.h" | 7 #include "cc/layers/painted_scrollbar_layer_impl.h" |
| 8 #include "cc/output/filter_operation.h" | 8 #include "cc/output/filter_operation.h" |
| 9 #include "cc/output/filter_operations.h" | 9 #include "cc/output/filter_operations.h" |
| 10 #include "cc/test/fake_impl_proxy.h" | 10 #include "cc/test/fake_impl_proxy.h" |
| (...skipping 416 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 427 // offset plus 1 in each direction. | 427 // offset plus 1 in each direction. |
| 428 host_impl_.active_tree()->root_layer()->SetBounds(gfx::Size(1, 1)); | 428 host_impl_.active_tree()->root_layer()->SetBounds(gfx::Size(1, 1)); |
| 429 gfx::Vector2d max_scroll_offset(51, 81); | 429 gfx::Vector2d max_scroll_offset(51, 81); |
| 430 layer()->SetBounds(gfx::Size(max_scroll_offset.x(), max_scroll_offset.y())); | 430 layer()->SetBounds(gfx::Size(max_scroll_offset.x(), max_scroll_offset.y())); |
| 431 } | 431 } |
| 432 | 432 |
| 433 LayerImpl* layer() { | 433 LayerImpl* layer() { |
| 434 return host_impl_.active_tree()->root_layer()->children()[0]; | 434 return host_impl_.active_tree()->root_layer()->children()[0]; |
| 435 } | 435 } |
| 436 | 436 |
| 437 LayerTreeHostImpl& host_impl() { return host_impl_; } |
| 438 |
| 437 LayerTreeImpl* tree() { return host_impl_.active_tree(); } | 439 LayerTreeImpl* tree() { return host_impl_.active_tree(); } |
| 438 | 440 |
| 439 LayerTreeSettings settings() { | 441 LayerTreeSettings settings() { |
| 440 LayerTreeSettings settings; | 442 LayerTreeSettings settings; |
| 441 settings.use_pinch_virtual_viewport = true; | 443 settings.use_pinch_virtual_viewport = true; |
| 442 return settings; | 444 return settings; |
| 443 } | 445 } |
| 444 | 446 |
| 445 private: | 447 private: |
| 446 FakeImplProxy proxy_; | 448 FakeImplProxy proxy_; |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 490 EXPECT_VECTOR_EQ(gfx::Vector2dF(50, 0), layer()->TotalScrollOffset()); | 492 EXPECT_VECTOR_EQ(gfx::Vector2dF(50, 0), layer()->TotalScrollOffset()); |
| 491 | 493 |
| 492 EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(scroll_offset, | 494 EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(scroll_offset, |
| 493 layer()->ScrollDelta()), | 495 layer()->ScrollDelta()), |
| 494 layer()->TotalScrollOffset()); | 496 layer()->TotalScrollOffset()); |
| 495 EXPECT_VECTOR_EQ(scroll_offset, layer()->scroll_offset()); | 497 EXPECT_VECTOR_EQ(scroll_offset, layer()->scroll_offset()); |
| 496 } | 498 } |
| 497 | 499 |
| 498 class ScrollDelegateIgnore : public LayerImpl::ScrollOffsetDelegate { | 500 class ScrollDelegateIgnore : public LayerImpl::ScrollOffsetDelegate { |
| 499 public: | 501 public: |
| 500 void SetTotalScrollOffset(const gfx::ScrollOffset& new_value) override {} | 502 void SetTotalScrollOffset(const gfx::ScrollOffset& new_value) override { |
| 503 last_attempted_set_offset_ = new_value; |
| 504 } |
| 505 gfx::ScrollOffset last_attempted_set_offset() const { |
| 506 return last_attempted_set_offset_; |
| 507 } |
| 508 |
| 501 gfx::ScrollOffset GetTotalScrollOffset() override { | 509 gfx::ScrollOffset GetTotalScrollOffset() override { |
| 502 return gfx::ScrollOffset(fixed_offset_); | 510 return gfx::ScrollOffset(fixed_offset_); |
| 503 } | 511 } |
| 504 bool IsExternalFlingActive() const override { return false; } | 512 bool IsExternalFlingActive() const override { return false; } |
| 505 void Update() const override { } | 513 void Update() const override { } |
| 506 | 514 |
| 507 void set_fixed_offset(const gfx::Vector2dF& fixed_offset) { | 515 void set_fixed_offset(const gfx::Vector2dF& fixed_offset) { |
| 508 fixed_offset_ = fixed_offset; | 516 fixed_offset_ = fixed_offset; |
| 509 } | 517 } |
| 510 | 518 |
| 511 private: | 519 private: |
| 520 gfx::ScrollOffset last_attempted_set_offset_; |
| 512 gfx::Vector2dF fixed_offset_; | 521 gfx::Vector2dF fixed_offset_; |
| 513 }; | 522 }; |
| 514 | 523 |
| 515 TEST_F(LayerImplScrollTest, ScrollByWithIgnoringDelegate) { | 524 TEST_F(LayerImplScrollTest, ScrollByWithIgnoringDelegate) { |
| 516 gfx::ScrollOffset scroll_offset(10, 5); | 525 gfx::ScrollOffset scroll_offset(10, 5); |
| 517 layer()->SetScrollOffset(scroll_offset); | 526 layer()->SetScrollOffset(scroll_offset); |
| 518 | 527 |
| 519 EXPECT_VECTOR_EQ(scroll_offset, layer()->TotalScrollOffset()); | 528 EXPECT_VECTOR_EQ(scroll_offset, layer()->TotalScrollOffset()); |
| 520 EXPECT_VECTOR_EQ(scroll_offset, layer()->scroll_offset()); | 529 EXPECT_VECTOR_EQ(scroll_offset, layer()->scroll_offset()); |
| 521 EXPECT_VECTOR_EQ(gfx::Vector2dF(), layer()->ScrollDelta()); | 530 EXPECT_VECTOR_EQ(gfx::Vector2dF(), layer()->ScrollDelta()); |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 625 delegate.set_fixed_offset(fixed_offset); | 634 delegate.set_fixed_offset(fixed_offset); |
| 626 layer()->SetScrollOffsetDelegate(&delegate); | 635 layer()->SetScrollOffsetDelegate(&delegate); |
| 627 layer()->SetSentScrollDelta(sent_scroll_delta); | 636 layer()->SetSentScrollDelta(sent_scroll_delta); |
| 628 | 637 |
| 629 EXPECT_VECTOR_EQ(fixed_offset, layer()->TotalScrollOffset()); | 638 EXPECT_VECTOR_EQ(fixed_offset, layer()->TotalScrollOffset()); |
| 630 EXPECT_VECTOR_EQ(scroll_offset, layer()->scroll_offset()); | 639 EXPECT_VECTOR_EQ(scroll_offset, layer()->scroll_offset()); |
| 631 EXPECT_VECTOR_EQ(sent_scroll_delta, layer()->sent_scroll_delta()); | 640 EXPECT_VECTOR_EQ(sent_scroll_delta, layer()->sent_scroll_delta()); |
| 632 | 641 |
| 633 layer()->ApplySentScrollDeltasFromAbortedCommit(); | 642 layer()->ApplySentScrollDeltasFromAbortedCommit(); |
| 634 | 643 |
| 644 EXPECT_VECTOR_EQ(fixed_offset, delegate.last_attempted_set_offset()); |
| 645 |
| 635 EXPECT_VECTOR_EQ(fixed_offset, layer()->TotalScrollOffset()); | 646 EXPECT_VECTOR_EQ(fixed_offset, layer()->TotalScrollOffset()); |
| 636 EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(scroll_offset, sent_scroll_delta), | 647 EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(scroll_offset, sent_scroll_delta), |
| 637 layer()->scroll_offset()); | 648 layer()->scroll_offset()); |
| 638 EXPECT_VECTOR_EQ(gfx::Vector2d(), layer()->sent_scroll_delta()); | 649 EXPECT_VECTOR_EQ(gfx::Vector2d(), layer()->sent_scroll_delta()); |
| 639 } | 650 } |
| 640 | 651 |
| 641 TEST_F(LayerImplScrollTest, ApplySentScrollsWithAcceptingDelegate) { | 652 TEST_F(LayerImplScrollTest, ApplySentScrollsWithAcceptingDelegate) { |
| 642 gfx::ScrollOffset scroll_offset(10, 5); | 653 gfx::ScrollOffset scroll_offset(10, 5); |
| 643 gfx::Vector2d sent_scroll_delta(12, -3); | 654 gfx::Vector2d sent_scroll_delta(12, -3); |
| 644 gfx::Vector2dF scroll_delta(20.5f, 8.5f); | 655 gfx::Vector2dF scroll_delta(20.5f, 8.5f); |
| (...skipping 23 matching lines...) Expand all Loading... |
| 668 gfx::Vector2dF scroll_delta(20.5f, 8.5f); | 679 gfx::Vector2dF scroll_delta(20.5f, 8.5f); |
| 669 | 680 |
| 670 layer()->set_user_scrollable_vertical(false); | 681 layer()->set_user_scrollable_vertical(false); |
| 671 layer()->SetScrollOffset(scroll_offset); | 682 layer()->SetScrollOffset(scroll_offset); |
| 672 gfx::Vector2dF unscrolled = layer()->ScrollBy(scroll_delta); | 683 gfx::Vector2dF unscrolled = layer()->ScrollBy(scroll_delta); |
| 673 | 684 |
| 674 EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 8.5f), unscrolled); | 685 EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 8.5f), unscrolled); |
| 675 EXPECT_VECTOR_EQ(gfx::Vector2dF(30.5f, 5), layer()->TotalScrollOffset()); | 686 EXPECT_VECTOR_EQ(gfx::Vector2dF(30.5f, 5), layer()->TotalScrollOffset()); |
| 676 } | 687 } |
| 677 | 688 |
| 689 TEST_F(LayerImplScrollTest, PushPropertiesToMirrorsTotalScrollOffset) { |
| 690 gfx::ScrollOffset scroll_offset(10, 5); |
| 691 gfx::Vector2dF scroll_delta(12, 18); |
| 692 |
| 693 host_impl().CreatePendingTree(); |
| 694 |
| 695 layer()->SetScrollOffset(scroll_offset); |
| 696 gfx::Vector2dF unscrolled = layer()->ScrollBy(scroll_delta); |
| 697 |
| 698 EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 0), unscrolled); |
| 699 EXPECT_VECTOR_EQ(gfx::Vector2dF(22, 23), layer()->TotalScrollOffset()); |
| 700 |
| 701 layer()->SetSentScrollDelta(scroll_delta); |
| 702 |
| 703 scoped_ptr<LayerImpl> pending_layer = |
| 704 LayerImpl::Create(host_impl().sync_tree(), layer()->id()); |
| 705 pending_layer->SetScrollOffset(layer()->TotalScrollOffset()); |
| 706 |
| 707 pending_layer->PushPropertiesTo(layer()); |
| 708 |
| 709 EXPECT_VECTOR_EQ(gfx::Vector2dF(22, 23), layer()->TotalScrollOffset()); |
| 710 EXPECT_VECTOR_EQ(layer()->TotalScrollOffset(), |
| 711 pending_layer->TotalScrollOffset()); |
| 712 } |
| 713 |
| 678 TEST_F(LayerImplScrollTest, SetNewScrollbarParameters) { | 714 TEST_F(LayerImplScrollTest, SetNewScrollbarParameters) { |
| 679 gfx::ScrollOffset scroll_offset(10, 5); | 715 gfx::ScrollOffset scroll_offset(10, 5); |
| 680 layer()->SetScrollOffset(scroll_offset); | 716 layer()->SetScrollOffset(scroll_offset); |
| 681 | 717 |
| 682 scoped_ptr<PaintedScrollbarLayerImpl> vertical_scrollbar( | 718 scoped_ptr<PaintedScrollbarLayerImpl> vertical_scrollbar( |
| 683 PaintedScrollbarLayerImpl::Create(tree(), 100, VERTICAL)); | 719 PaintedScrollbarLayerImpl::Create(tree(), 100, VERTICAL)); |
| 684 vertical_scrollbar->SetScrollLayerAndClipLayerByIds( | 720 vertical_scrollbar->SetScrollLayerAndClipLayerByIds( |
| 685 layer()->id(), tree()->root_layer()->id()); | 721 layer()->id(), tree()->root_layer()->id()); |
| 686 | 722 |
| 687 int expected_vertical_maximum = | 723 int expected_vertical_maximum = |
| 688 layer()->bounds().height() - tree()->root_layer()->bounds().height(); | 724 layer()->bounds().height() - tree()->root_layer()->bounds().height(); |
| 689 EXPECT_EQ(expected_vertical_maximum, vertical_scrollbar->maximum()); | 725 EXPECT_EQ(expected_vertical_maximum, vertical_scrollbar->maximum()); |
| 690 EXPECT_EQ(scroll_offset.y(), vertical_scrollbar->current_pos()); | 726 EXPECT_EQ(scroll_offset.y(), vertical_scrollbar->current_pos()); |
| 691 | 727 |
| 692 scoped_ptr<PaintedScrollbarLayerImpl> horizontal_scrollbar( | 728 scoped_ptr<PaintedScrollbarLayerImpl> horizontal_scrollbar( |
| 693 PaintedScrollbarLayerImpl::Create(tree(), 101, HORIZONTAL)); | 729 PaintedScrollbarLayerImpl::Create(tree(), 101, HORIZONTAL)); |
| 694 horizontal_scrollbar->SetScrollLayerAndClipLayerByIds( | 730 horizontal_scrollbar->SetScrollLayerAndClipLayerByIds( |
| 695 layer()->id(), tree()->root_layer()->id()); | 731 layer()->id(), tree()->root_layer()->id()); |
| 696 | 732 |
| 697 int expected_horizontal_maximum = | 733 int expected_horizontal_maximum = |
| 698 layer()->bounds().width() - tree()->root_layer()->bounds().width(); | 734 layer()->bounds().width() - tree()->root_layer()->bounds().width(); |
| 699 EXPECT_EQ(expected_horizontal_maximum, horizontal_scrollbar->maximum()); | 735 EXPECT_EQ(expected_horizontal_maximum, horizontal_scrollbar->maximum()); |
| 700 EXPECT_EQ(scroll_offset.x(), horizontal_scrollbar->current_pos()); | 736 EXPECT_EQ(scroll_offset.x(), horizontal_scrollbar->current_pos()); |
| 701 } | 737 } |
| 702 | 738 |
| 703 } // namespace | 739 } // namespace |
| 704 } // namespace cc | 740 } // namespace cc |
| OLD | NEW |