Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(120)

Side by Side Diff: cc/layers/layer_impl_unittest.cc

Issue 800613009: Convert scroll offsets to use SyncedProperty. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix Android WebView tests Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « cc/layers/layer_impl.cc ('k') | cc/layers/picture_image_layer_impl.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/layers/solid_color_scrollbar_layer_impl.h" 8 #include "cc/layers/solid_color_scrollbar_layer_impl.h"
9 #include "cc/output/filter_operation.h" 9 #include "cc/output/filter_operation.h"
10 #include "cc/output/filter_operations.h" 10 #include "cc/output/filter_operations.h"
(...skipping 493 matching lines...) Expand 10 before | Expand all | Expand 10 after
504 EXPECT_VECTOR_EQ(gfx::Vector2dF(50, 0), layer()->TotalScrollOffset()); 504 EXPECT_VECTOR_EQ(gfx::Vector2dF(50, 0), layer()->TotalScrollOffset());
505 505
506 EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(scroll_offset, 506 EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(scroll_offset,
507 layer()->ScrollDelta()), 507 layer()->ScrollDelta()),
508 layer()->TotalScrollOffset()); 508 layer()->TotalScrollOffset());
509 EXPECT_VECTOR_EQ(scroll_offset, layer()->scroll_offset()); 509 EXPECT_VECTOR_EQ(scroll_offset, layer()->scroll_offset());
510 } 510 }
511 511
512 class ScrollDelegateIgnore : public LayerImpl::ScrollOffsetDelegate { 512 class ScrollDelegateIgnore : public LayerImpl::ScrollOffsetDelegate {
513 public: 513 public:
514 void SetTotalScrollOffset(const gfx::ScrollOffset& new_value) override { 514 void SetCurrentScrollOffset(const gfx::ScrollOffset& new_value) override {
515 last_attempted_set_offset_ = new_value; 515 last_attempted_set_offset_ = new_value;
516 } 516 }
517 gfx::ScrollOffset last_attempted_set_offset() const { 517 gfx::ScrollOffset last_attempted_set_offset() const {
518 return last_attempted_set_offset_; 518 return last_attempted_set_offset_;
519 } 519 }
520 520
521 gfx::ScrollOffset GetTotalScrollOffset() override { 521 gfx::ScrollOffset GetCurrentScrollOffset() override {
522 return gfx::ScrollOffset(fixed_offset_); 522 return gfx::ScrollOffset(fixed_offset_);
523 } 523 }
524 bool IsExternalFlingActive() const override { return false; } 524 bool IsExternalFlingActive() const override { return false; }
525 void Update() const override { } 525 void Update() const override { }
526 526
527 void set_fixed_offset(const gfx::Vector2dF& fixed_offset) { 527 void set_fixed_offset(const gfx::Vector2dF& fixed_offset) {
528 fixed_offset_ = fixed_offset; 528 fixed_offset_ = fixed_offset;
529 } 529 }
530 530
531 private: 531 private:
532 gfx::ScrollOffset last_attempted_set_offset_; 532 gfx::ScrollOffset last_attempted_set_offset_;
533 gfx::Vector2dF fixed_offset_; 533 gfx::Vector2dF fixed_offset_;
534 }; 534 };
535 535
536 TEST_F(LayerImplScrollTest, ScrollByWithIgnoringDelegate) { 536 TEST_F(LayerImplScrollTest, ScrollByWithIgnoringDelegate) {
537 gfx::ScrollOffset scroll_offset(10, 5); 537 gfx::ScrollOffset scroll_offset(10, 5);
538 layer()->SetScrollOffset(scroll_offset); 538 layer()->SetScrollOffset(scroll_offset);
539 539
540 EXPECT_VECTOR_EQ(scroll_offset, layer()->TotalScrollOffset()); 540 EXPECT_VECTOR_EQ(scroll_offset, layer()->TotalScrollOffset());
541 EXPECT_VECTOR_EQ(scroll_offset, layer()->scroll_offset()); 541 EXPECT_VECTOR_EQ(scroll_offset, layer()->scroll_offset());
542 EXPECT_VECTOR_EQ(gfx::Vector2dF(), layer()->ScrollDelta()); 542 EXPECT_VECTOR_EQ(gfx::Vector2dF(), layer()->ScrollDelta());
543 543
544 ScrollDelegateIgnore delegate; 544 ScrollDelegateIgnore delegate;
545 gfx::Vector2dF fixed_offset(32, 12); 545 gfx::Vector2dF fixed_offset(32, 12);
546 delegate.set_fixed_offset(fixed_offset); 546 delegate.set_fixed_offset(fixed_offset);
547 layer()->SetScrollOffsetDelegate(&delegate); 547 layer()->SetScrollOffsetDelegate(&delegate);
548 layer()->RefreshFromScrollDelegate();
548 549
549 EXPECT_VECTOR_EQ(fixed_offset, layer()->TotalScrollOffset()); 550 EXPECT_VECTOR_EQ(fixed_offset, layer()->TotalScrollOffset());
550 EXPECT_VECTOR_EQ(scroll_offset, layer()->scroll_offset()); 551 EXPECT_VECTOR_EQ(scroll_offset, layer()->scroll_offset());
551 552
552 layer()->ScrollBy(gfx::Vector2dF(-100, 100)); 553 layer()->ScrollBy(gfx::Vector2dF(-100, 100));
553 554
554 EXPECT_VECTOR_EQ(fixed_offset, layer()->TotalScrollOffset()); 555 EXPECT_VECTOR_EQ(fixed_offset, layer()->TotalScrollOffset());
555 EXPECT_VECTOR_EQ(scroll_offset, layer()->scroll_offset()); 556 EXPECT_VECTOR_EQ(scroll_offset, layer()->scroll_offset());
556 557
557 layer()->SetScrollOffsetDelegate(nullptr); 558 layer()->SetScrollOffsetDelegate(nullptr);
558 559
559 EXPECT_VECTOR_EQ(fixed_offset, layer()->TotalScrollOffset()); 560 EXPECT_VECTOR_EQ(fixed_offset, layer()->TotalScrollOffset());
560 EXPECT_VECTOR_EQ(scroll_offset, layer()->scroll_offset()); 561 EXPECT_VECTOR_EQ(scroll_offset, layer()->scroll_offset());
561 562
562 gfx::Vector2dF scroll_delta(1, 1); 563 gfx::Vector2dF scroll_delta(1, 1);
563 layer()->ScrollBy(scroll_delta); 564 layer()->ScrollBy(scroll_delta);
564 565
565 EXPECT_VECTOR_EQ(fixed_offset + scroll_delta, layer()->TotalScrollOffset()); 566 EXPECT_VECTOR_EQ(fixed_offset + scroll_delta, layer()->TotalScrollOffset());
566 EXPECT_VECTOR_EQ(scroll_offset, layer()->scroll_offset()); 567 EXPECT_VECTOR_EQ(scroll_offset, layer()->scroll_offset());
567 } 568 }
568 569
569 class ScrollDelegateAccept : public LayerImpl::ScrollOffsetDelegate { 570 class ScrollDelegateAccept : public LayerImpl::ScrollOffsetDelegate {
570 public: 571 public:
571 void SetTotalScrollOffset(const gfx::ScrollOffset& new_value) override { 572 void SetCurrentScrollOffset(const gfx::ScrollOffset& new_value) override {
572 current_offset_ = new_value; 573 current_offset_ = new_value;
573 } 574 }
574 gfx::ScrollOffset GetTotalScrollOffset() override { return current_offset_; } 575 gfx::ScrollOffset GetCurrentScrollOffset() override {
576 return current_offset_;
577 }
575 bool IsExternalFlingActive() const override { return false; } 578 bool IsExternalFlingActive() const override { return false; }
576 void Update() const override { } 579 void Update() const override { }
577 580
578 private: 581 private:
579 gfx::ScrollOffset current_offset_; 582 gfx::ScrollOffset current_offset_;
580 }; 583 };
581 584
582 TEST_F(LayerImplScrollTest, ScrollByWithAcceptingDelegate) { 585 TEST_F(LayerImplScrollTest, ScrollByWithAcceptingDelegate) {
583 gfx::ScrollOffset scroll_offset(10, 5); 586 gfx::ScrollOffset scroll_offset(10, 5);
584 layer()->SetScrollOffset(scroll_offset); 587 layer()->SetScrollOffset(scroll_offset);
(...skipping 24 matching lines...) Expand all
609 612
610 EXPECT_VECTOR_EQ(gfx::Vector2dF(1, 80), layer()->TotalScrollOffset()); 613 EXPECT_VECTOR_EQ(gfx::Vector2dF(1, 80), layer()->TotalScrollOffset());
611 EXPECT_VECTOR_EQ(scroll_offset, layer()->scroll_offset()); 614 EXPECT_VECTOR_EQ(scroll_offset, layer()->scroll_offset());
612 } 615 }
613 616
614 TEST_F(LayerImplScrollTest, ApplySentScrollsNoDelegate) { 617 TEST_F(LayerImplScrollTest, ApplySentScrollsNoDelegate) {
615 gfx::ScrollOffset scroll_offset(10, 5); 618 gfx::ScrollOffset scroll_offset(10, 5);
616 gfx::Vector2dF scroll_delta(20.5f, 8.5f); 619 gfx::Vector2dF scroll_delta(20.5f, 8.5f);
617 gfx::Vector2d sent_scroll_delta(12, -3); 620 gfx::Vector2d sent_scroll_delta(12, -3);
618 621
619 layer()->SetScrollOffset(scroll_offset); 622 layer()->PushScrollOffsetFromMainThread(scroll_offset);
620 layer()->ScrollBy(scroll_delta); 623 layer()->ScrollBy(sent_scroll_delta);
621 layer()->SetSentScrollDelta(sent_scroll_delta); 624 layer()->PullDeltaForMainThread();
625 layer()->SetCurrentScrollOffset(scroll_offset +
626 gfx::ScrollOffset(scroll_delta));
622 627
623 EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(scroll_offset, scroll_delta), 628 EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(scroll_offset, scroll_delta),
624 layer()->TotalScrollOffset()); 629 layer()->TotalScrollOffset());
625 EXPECT_VECTOR_EQ(scroll_delta, layer()->ScrollDelta()); 630 EXPECT_VECTOR_EQ(scroll_delta, layer()->ScrollDelta());
626 EXPECT_VECTOR_EQ(scroll_offset, layer()->scroll_offset()); 631 EXPECT_VECTOR_EQ(scroll_offset, layer()->scroll_offset());
627 EXPECT_VECTOR_EQ(sent_scroll_delta, layer()->sent_scroll_delta());
628 632
629 layer()->ApplySentScrollDeltasFromAbortedCommit(); 633 layer()->ApplySentScrollDeltasFromAbortedCommit();
630 634
631 EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(scroll_offset, scroll_delta), 635 EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(scroll_offset, scroll_delta),
632 layer()->TotalScrollOffset()); 636 layer()->TotalScrollOffset());
633 EXPECT_VECTOR_EQ(scroll_delta - sent_scroll_delta, layer()->ScrollDelta()); 637 EXPECT_VECTOR_EQ(scroll_delta - sent_scroll_delta, layer()->ScrollDelta());
634 EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(scroll_offset, sent_scroll_delta), 638 EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(scroll_offset, sent_scroll_delta),
635 layer()->scroll_offset()); 639 layer()->scroll_offset());
636 EXPECT_VECTOR_EQ(gfx::Vector2d(), layer()->sent_scroll_delta());
637 } 640 }
638 641
639 TEST_F(LayerImplScrollTest, ApplySentScrollsWithIgnoringDelegate) { 642 TEST_F(LayerImplScrollTest, ApplySentScrollsWithIgnoringDelegate) {
640 gfx::ScrollOffset scroll_offset(10, 5); 643 gfx::ScrollOffset scroll_offset(10, 5);
641 gfx::Vector2d sent_scroll_delta(12, -3); 644 gfx::Vector2d sent_scroll_delta(12, -3);
642 gfx::Vector2dF fixed_offset(32, 12); 645 gfx::Vector2dF fixed_offset(32, 12);
643 646
644 layer()->SetScrollOffset(scroll_offset); 647 layer()->PushScrollOffsetFromMainThread(scroll_offset);
648 layer()->ScrollBy(sent_scroll_delta);
649 layer()->PullDeltaForMainThread();
650 layer()->SetCurrentScrollOffset(scroll_offset);
645 ScrollDelegateIgnore delegate; 651 ScrollDelegateIgnore delegate;
646 delegate.set_fixed_offset(fixed_offset); 652 delegate.set_fixed_offset(fixed_offset);
647 layer()->SetScrollOffsetDelegate(&delegate); 653 layer()->SetScrollOffsetDelegate(&delegate);
648 layer()->SetSentScrollDelta(sent_scroll_delta); 654 layer()->RefreshFromScrollDelegate();
649 655
650 EXPECT_VECTOR_EQ(fixed_offset, layer()->TotalScrollOffset()); 656 EXPECT_VECTOR_EQ(fixed_offset, layer()->TotalScrollOffset());
651 EXPECT_VECTOR_EQ(scroll_offset, layer()->scroll_offset()); 657 EXPECT_VECTOR_EQ(scroll_offset, layer()->scroll_offset());
652 EXPECT_VECTOR_EQ(sent_scroll_delta, layer()->sent_scroll_delta());
653 658
654 layer()->ApplySentScrollDeltasFromAbortedCommit(); 659 layer()->ApplySentScrollDeltasFromAbortedCommit();
655 660
656 EXPECT_VECTOR_EQ(fixed_offset, delegate.last_attempted_set_offset()); 661 EXPECT_VECTOR_EQ(fixed_offset, delegate.last_attempted_set_offset());
657 662
658 EXPECT_VECTOR_EQ(fixed_offset, layer()->TotalScrollOffset()); 663 EXPECT_VECTOR_EQ(fixed_offset, layer()->TotalScrollOffset());
659 EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(scroll_offset, sent_scroll_delta), 664 EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(scroll_offset, sent_scroll_delta),
660 layer()->scroll_offset()); 665 layer()->scroll_offset());
661 EXPECT_VECTOR_EQ(gfx::Vector2d(), layer()->sent_scroll_delta());
662 } 666 }
663 667
664 TEST_F(LayerImplScrollTest, ApplySentScrollsWithAcceptingDelegate) { 668 TEST_F(LayerImplScrollTest, ApplySentScrollsWithAcceptingDelegate) {
665 gfx::ScrollOffset scroll_offset(10, 5); 669 gfx::ScrollOffset scroll_offset(10, 5);
666 gfx::Vector2d sent_scroll_delta(12, -3); 670 gfx::Vector2d sent_scroll_delta(12, -3);
667 gfx::Vector2dF scroll_delta(20.5f, 8.5f); 671 gfx::Vector2dF scroll_delta(20.5f, 8.5f);
668 672
669 layer()->SetScrollOffset(scroll_offset); 673 layer()->PushScrollOffsetFromMainThread(scroll_offset);
674 layer()->ScrollBy(sent_scroll_delta);
675 layer()->PullDeltaForMainThread();
670 ScrollDelegateAccept delegate; 676 ScrollDelegateAccept delegate;
671 layer()->SetScrollOffsetDelegate(&delegate); 677 layer()->SetScrollOffsetDelegate(&delegate);
672 layer()->ScrollBy(scroll_delta); 678 layer()->SetCurrentScrollOffset(scroll_offset +
673 layer()->SetSentScrollDelta(sent_scroll_delta); 679 gfx::ScrollOffset(scroll_delta));
674 680
675 EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(scroll_offset, scroll_delta), 681 EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(scroll_offset, scroll_delta),
676 layer()->TotalScrollOffset()); 682 layer()->TotalScrollOffset());
677 EXPECT_VECTOR_EQ(scroll_offset, layer()->scroll_offset()); 683 EXPECT_VECTOR_EQ(scroll_offset, layer()->scroll_offset());
678 EXPECT_VECTOR_EQ(sent_scroll_delta, layer()->sent_scroll_delta());
679 684
680 layer()->ApplySentScrollDeltasFromAbortedCommit(); 685 layer()->ApplySentScrollDeltasFromAbortedCommit();
681 686
682 EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(scroll_offset, scroll_delta), 687 EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(scroll_offset, scroll_delta),
683 layer()->TotalScrollOffset()); 688 layer()->TotalScrollOffset());
684 EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(scroll_offset, sent_scroll_delta), 689 EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(scroll_offset, sent_scroll_delta),
685 layer()->scroll_offset()); 690 layer()->scroll_offset());
686 EXPECT_VECTOR_EQ(gfx::Vector2d(), layer()->sent_scroll_delta());
687 } 691 }
688 692
689 TEST_F(LayerImplScrollTest, ScrollUserUnscrollableLayer) { 693 TEST_F(LayerImplScrollTest, ScrollUserUnscrollableLayer) {
690 gfx::ScrollOffset scroll_offset(10, 5); 694 gfx::ScrollOffset scroll_offset(10, 5);
691 gfx::Vector2dF scroll_delta(20.5f, 8.5f); 695 gfx::Vector2dF scroll_delta(20.5f, 8.5f);
692 696
693 layer()->set_user_scrollable_vertical(false); 697 layer()->set_user_scrollable_vertical(false);
694 layer()->SetScrollOffset(scroll_offset); 698 layer()->SetScrollOffset(scroll_offset);
695 gfx::Vector2dF unscrolled = layer()->ScrollBy(scroll_delta); 699 gfx::Vector2dF unscrolled = layer()->ScrollBy(scroll_delta);
696 700
697 EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 8.5f), unscrolled); 701 EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 8.5f), unscrolled);
698 EXPECT_VECTOR_EQ(gfx::Vector2dF(30.5f, 5), layer()->TotalScrollOffset()); 702 EXPECT_VECTOR_EQ(gfx::Vector2dF(30.5f, 5), layer()->TotalScrollOffset());
699 } 703 }
700 704
701 TEST_F(LayerImplScrollTest, PushPropertiesToMirrorsTotalScrollOffset) { 705 TEST_F(LayerImplScrollTest, PushPropertiesToMirrorsTotalScrollOffset) {
702 gfx::ScrollOffset scroll_offset(10, 5); 706 gfx::ScrollOffset scroll_offset(10, 5);
703 gfx::Vector2dF scroll_delta(12, 18); 707 gfx::Vector2dF scroll_delta(12, 18);
704 708
705 host_impl().CreatePendingTree(); 709 host_impl().CreatePendingTree();
706 710
707 layer()->SetScrollOffset(scroll_offset); 711 layer()->SetScrollOffset(scroll_offset);
708 gfx::Vector2dF unscrolled = layer()->ScrollBy(scroll_delta); 712 gfx::Vector2dF unscrolled = layer()->ScrollBy(scroll_delta);
709 713
710 EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 0), unscrolled); 714 EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 0), unscrolled);
711 EXPECT_VECTOR_EQ(gfx::Vector2dF(22, 23), layer()->TotalScrollOffset()); 715 EXPECT_VECTOR_EQ(gfx::Vector2dF(22, 23), layer()->TotalScrollOffset());
712 716
713 layer()->SetSentScrollDelta(scroll_delta); 717 layer()->PullDeltaForMainThread();
714 718
715 scoped_ptr<LayerImpl> pending_layer = 719 scoped_ptr<LayerImpl> pending_layer = LayerImpl::Create(
716 LayerImpl::Create(host_impl().sync_tree(), layer()->id()); 720 host_impl().sync_tree(), layer()->id(), layer()->synced_scroll_offset());
717 pending_layer->SetScrollOffset(layer()->TotalScrollOffset()); 721 pending_layer->SetScrollOffset(layer()->TotalScrollOffset());
718 722
719 pending_layer->PushPropertiesTo(layer()); 723 pending_layer->PushPropertiesTo(layer());
720 724
721 EXPECT_VECTOR_EQ(gfx::Vector2dF(22, 23), layer()->TotalScrollOffset()); 725 EXPECT_VECTOR_EQ(gfx::Vector2dF(22, 23), layer()->TotalScrollOffset());
722 EXPECT_VECTOR_EQ(layer()->TotalScrollOffset(), 726 EXPECT_VECTOR_EQ(layer()->TotalScrollOffset(),
723 pending_layer->TotalScrollOffset()); 727 pending_layer->TotalScrollOffset());
724 } 728 }
725 729
726 TEST_F(LayerImplScrollTest, SetNewScrollbarParameters) { 730 TEST_F(LayerImplScrollTest, SetNewScrollbarParameters) {
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
869 873
870 ASSERT_TRUE(layer(IV_SCROLL, ACTIVE)->scrollable()); 874 ASSERT_TRUE(layer(IV_SCROLL, ACTIVE)->scrollable());
871 875
872 ASSERT_TRUE(LayerHasScrollbar(OV_SCROLL, ACTIVE)); 876 ASSERT_TRUE(LayerHasScrollbar(OV_SCROLL, ACTIVE));
873 ASSERT_TRUE(LayerHasScrollbar(IV_CLIP, ACTIVE)); 877 ASSERT_TRUE(LayerHasScrollbar(IV_CLIP, ACTIVE));
874 ASSERT_TRUE(LayerHasScrollbar(IV_SCROLL, ACTIVE)); 878 ASSERT_TRUE(LayerHasScrollbar(IV_SCROLL, ACTIVE));
875 } 879 }
876 880
877 } // namespace 881 } // namespace
878 } // namespace cc 882 } // namespace cc
OLDNEW
« no previous file with comments | « cc/layers/layer_impl.cc ('k') | cc/layers/picture_image_layer_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698