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

Side by Side Diff: cc/trees/layer_tree_host_impl_unittest.cc

Issue 951673002: Revert "Pull chromium at 2c3ffb2355a27c32f45e508ef861416b820c823b" (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: 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
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/trees/layer_tree_host_impl.h" 5 #include "cc/trees/layer_tree_host_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <cmath> 8 #include <cmath>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 479 matching lines...) Expand 10 before | Expand all | Expand 10 after
490 root->ScrollBy(gfx::Vector2d()); 490 root->ScrollBy(gfx::Vector2d());
491 scroll_info = host_impl_->ProcessScrollDeltas(); 491 scroll_info = host_impl_->ProcessScrollDeltas();
492 ExpectContains(*scroll_info, root->id(), scroll_delta + scroll_delta2); 492 ExpectContains(*scroll_info, root->id(), scroll_delta + scroll_delta2);
493 } 493 }
494 494
495 TEST_F(LayerTreeHostImplTest, ScrollRootCallsCommitAndRedraw) { 495 TEST_F(LayerTreeHostImplTest, ScrollRootCallsCommitAndRedraw) {
496 SetupScrollAndContentsLayers(gfx::Size(100, 100)); 496 SetupScrollAndContentsLayers(gfx::Size(100, 100));
497 host_impl_->SetViewportSize(gfx::Size(50, 50)); 497 host_impl_->SetViewportSize(gfx::Size(50, 50));
498 DrawFrame(); 498 DrawFrame();
499 499
500 EXPECT_EQ(InputHandler::SCROLL_STARTED, 500 EXPECT_EQ(InputHandler::ScrollStarted,
501 host_impl_->ScrollBegin(gfx::Point(), InputHandler::WHEEL)); 501 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Wheel));
502 EXPECT_TRUE(host_impl_->IsCurrentlyScrollingLayerAt(gfx::Point(), 502 EXPECT_TRUE(host_impl_->IsCurrentlyScrollingLayerAt(gfx::Point(),
503 InputHandler::WHEEL)); 503 InputHandler::Wheel));
504 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 10)); 504 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 10));
505 EXPECT_TRUE(host_impl_->IsCurrentlyScrollingLayerAt(gfx::Point(0, 10), 505 EXPECT_TRUE(host_impl_->IsCurrentlyScrollingLayerAt(gfx::Point(0, 10),
506 InputHandler::WHEEL)); 506 InputHandler::Wheel));
507 host_impl_->ScrollEnd(); 507 host_impl_->ScrollEnd();
508 EXPECT_FALSE(host_impl_->IsCurrentlyScrollingLayerAt(gfx::Point(), 508 EXPECT_FALSE(host_impl_->IsCurrentlyScrollingLayerAt(gfx::Point(),
509 InputHandler::WHEEL)); 509 InputHandler::Wheel));
510 EXPECT_TRUE(did_request_redraw_); 510 EXPECT_TRUE(did_request_redraw_);
511 EXPECT_TRUE(did_request_commit_); 511 EXPECT_TRUE(did_request_commit_);
512 } 512 }
513 513
514 TEST_F(LayerTreeHostImplTest, ScrollActiveOnlyAfterScrollMovement) { 514 TEST_F(LayerTreeHostImplTest, ScrollActiveOnlyAfterScrollMovement) {
515 SetupScrollAndContentsLayers(gfx::Size(100, 100)); 515 SetupScrollAndContentsLayers(gfx::Size(100, 100));
516 host_impl_->SetViewportSize(gfx::Size(50, 50)); 516 host_impl_->SetViewportSize(gfx::Size(50, 50));
517 DrawFrame(); 517 DrawFrame();
518 518
519 EXPECT_EQ(InputHandler::SCROLL_STARTED, 519 EXPECT_EQ(InputHandler::ScrollStarted,
520 host_impl_->ScrollBegin(gfx::Point(), InputHandler::WHEEL)); 520 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Wheel));
521 EXPECT_FALSE(host_impl_->IsActivelyScrolling()); 521 EXPECT_FALSE(host_impl_->IsActivelyScrolling());
522 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 10)); 522 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 10));
523 EXPECT_TRUE(host_impl_->IsActivelyScrolling()); 523 EXPECT_TRUE(host_impl_->IsActivelyScrolling());
524 host_impl_->ScrollEnd(); 524 host_impl_->ScrollEnd();
525 EXPECT_FALSE(host_impl_->IsActivelyScrolling()); 525 EXPECT_FALSE(host_impl_->IsActivelyScrolling());
526 } 526 }
527 527
528 TEST_F(LayerTreeHostImplTest, ScrollWithoutRootLayer) { 528 TEST_F(LayerTreeHostImplTest, ScrollWithoutRootLayer) {
529 // We should not crash when trying to scroll an empty layer tree. 529 // We should not crash when trying to scroll an empty layer tree.
530 EXPECT_EQ(InputHandler::SCROLL_IGNORED, 530 EXPECT_EQ(InputHandler::ScrollIgnored,
531 host_impl_->ScrollBegin(gfx::Point(), InputHandler::WHEEL)); 531 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Wheel));
532 } 532 }
533 533
534 TEST_F(LayerTreeHostImplTest, ScrollWithoutRenderer) { 534 TEST_F(LayerTreeHostImplTest, ScrollWithoutRenderer) {
535 scoped_ptr<TestWebGraphicsContext3D> context_owned = 535 scoped_ptr<TestWebGraphicsContext3D> context_owned =
536 TestWebGraphicsContext3D::Create(); 536 TestWebGraphicsContext3D::Create();
537 context_owned->set_context_lost(true); 537 context_owned->set_context_lost(true);
538 538
539 // Initialization will fail. 539 // Initialization will fail.
540 EXPECT_FALSE(CreateHostImpl( 540 EXPECT_FALSE(CreateHostImpl(
541 DefaultSettings(), FakeOutputSurface::Create3d(context_owned.Pass()))); 541 DefaultSettings(), FakeOutputSurface::Create3d(context_owned.Pass())));
542 542
543 SetupScrollAndContentsLayers(gfx::Size(100, 100)); 543 SetupScrollAndContentsLayers(gfx::Size(100, 100));
544 544
545 // We should not crash when trying to scroll after the renderer initialization 545 // We should not crash when trying to scroll after the renderer initialization
546 // fails. 546 // fails.
547 EXPECT_EQ(InputHandler::SCROLL_STARTED, 547 EXPECT_EQ(InputHandler::ScrollStarted,
548 host_impl_->ScrollBegin(gfx::Point(), InputHandler::WHEEL)); 548 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Wheel));
549 } 549 }
550 550
551 TEST_F(LayerTreeHostImplTest, ReplaceTreeWhileScrolling) { 551 TEST_F(LayerTreeHostImplTest, ReplaceTreeWhileScrolling) {
552 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 100)); 552 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 100));
553 host_impl_->SetViewportSize(gfx::Size(50, 50)); 553 host_impl_->SetViewportSize(gfx::Size(50, 50));
554 DrawFrame(); 554 DrawFrame();
555 555
556 // We should not crash if the tree is replaced while we are scrolling. 556 // We should not crash if the tree is replaced while we are scrolling.
557 EXPECT_EQ(InputHandler::SCROLL_STARTED, 557 EXPECT_EQ(InputHandler::ScrollStarted,
558 host_impl_->ScrollBegin(gfx::Point(), InputHandler::WHEEL)); 558 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Wheel));
559 host_impl_->active_tree()->DetachLayerTree(); 559 host_impl_->active_tree()->DetachLayerTree();
560 560
561 scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 100)); 561 scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 100));
562 562
563 // We should still be scrolling, because the scrolled layer also exists in the 563 // We should still be scrolling, because the scrolled layer also exists in the
564 // new tree. 564 // new tree.
565 gfx::Vector2d scroll_delta(0, 10); 565 gfx::Vector2d scroll_delta(0, 10);
566 host_impl_->ScrollBy(gfx::Point(), scroll_delta); 566 host_impl_->ScrollBy(gfx::Point(), scroll_delta);
567 host_impl_->ScrollEnd(); 567 host_impl_->ScrollEnd();
568 scoped_ptr<ScrollAndScaleSet> scroll_info = host_impl_->ProcessScrollDeltas(); 568 scoped_ptr<ScrollAndScaleSet> scroll_info = host_impl_->ProcessScrollDeltas();
569 ExpectContains(*scroll_info, scroll_layer->id(), scroll_delta); 569 ExpectContains(*scroll_info, scroll_layer->id(), scroll_delta);
570 } 570 }
571 571
572 TEST_F(LayerTreeHostImplTest, ScrollBlocksOnWheelEventHandlers) { 572 TEST_F(LayerTreeHostImplTest, ScrollBlocksOnWheelEventHandlers) {
573 SetupScrollAndContentsLayers(gfx::Size(100, 100)); 573 SetupScrollAndContentsLayers(gfx::Size(100, 100));
574 host_impl_->SetViewportSize(gfx::Size(50, 50)); 574 host_impl_->SetViewportSize(gfx::Size(50, 50));
575 DrawFrame(); 575 DrawFrame();
576 LayerImpl* root = host_impl_->active_tree()->root_layer(); 576 LayerImpl* root = host_impl_->active_tree()->root_layer();
577 577
578 // With registered event handlers, wheel scrolls don't necessarily 578 // With registered event handlers, wheel scrolls don't necessarily
579 // have to go to the main thread. 579 // have to go to the main thread.
580 root->SetHaveWheelEventHandlers(true); 580 root->SetHaveWheelEventHandlers(true);
581 EXPECT_EQ(InputHandler::SCROLL_STARTED, 581 EXPECT_EQ(InputHandler::ScrollStarted,
582 host_impl_->ScrollBegin(gfx::Point(), InputHandler::WHEEL)); 582 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Wheel));
583 host_impl_->ScrollEnd(); 583 host_impl_->ScrollEnd();
584 584
585 // But typically the scroll-blocks-on mode will require them to. 585 // But typically the scroll-blocks-on mode will require them to.
586 root->SetScrollBlocksOn(SCROLL_BLOCKS_ON_WHEEL_EVENT | 586 root->SetScrollBlocksOn(ScrollBlocksOnWheelEvent | ScrollBlocksOnStartTouch);
587 SCROLL_BLOCKS_ON_START_TOUCH); 587 EXPECT_EQ(InputHandler::ScrollOnMainThread,
588 EXPECT_EQ(InputHandler::SCROLL_ON_MAIN_THREAD, 588 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Wheel));
589 host_impl_->ScrollBegin(gfx::Point(), InputHandler::WHEEL));
590 589
591 // But gesture scrolls can still be handled. 590 // But gesture scrolls can still be handled.
592 EXPECT_EQ(InputHandler::SCROLL_STARTED, 591 EXPECT_EQ(InputHandler::ScrollStarted,
593 host_impl_->ScrollBegin(gfx::Point(), InputHandler::GESTURE)); 592 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture));
594 host_impl_->ScrollEnd(); 593 host_impl_->ScrollEnd();
595 594
596 // And if the handlers go away, wheel scrolls can again be processed 595 // And if the handlers go away, wheel scrolls can again be processed
597 // on impl (despite the scroll-blocks-on mode). 596 // on impl (despite the scroll-blocks-on mode).
598 root->SetHaveWheelEventHandlers(false); 597 root->SetHaveWheelEventHandlers(false);
599 EXPECT_EQ(InputHandler::SCROLL_STARTED, 598 EXPECT_EQ(InputHandler::ScrollStarted,
600 host_impl_->ScrollBegin(gfx::Point(), InputHandler::WHEEL)); 599 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Wheel));
601 host_impl_->ScrollEnd(); 600 host_impl_->ScrollEnd();
602 } 601 }
603 602
604 TEST_F(LayerTreeHostImplTest, ScrollBlocksOnTouchEventHandlers) { 603 TEST_F(LayerTreeHostImplTest, ScrollBlocksOnTouchEventHandlers) {
605 LayerImpl* scroll = SetupScrollAndContentsLayers(gfx::Size(100, 100)); 604 LayerImpl* scroll = SetupScrollAndContentsLayers(gfx::Size(100, 100));
606 host_impl_->SetViewportSize(gfx::Size(50, 50)); 605 host_impl_->SetViewportSize(gfx::Size(50, 50));
607 DrawFrame(); 606 DrawFrame();
608 LayerImpl* root = host_impl_->active_tree()->root_layer(); 607 LayerImpl* root = host_impl_->active_tree()->root_layer();
609 608
610 LayerImpl* child = 0; 609 LayerImpl* child = 0;
611 { 610 {
612 scoped_ptr<LayerImpl> child_layer = 611 scoped_ptr<LayerImpl> child_layer =
613 LayerImpl::Create(host_impl_->active_tree(), 6); 612 LayerImpl::Create(host_impl_->active_tree(), 6);
614 child = child_layer.get(); 613 child = child_layer.get();
615 child_layer->SetDrawsContent(true); 614 child_layer->SetDrawsContent(true);
616 child_layer->SetPosition(gfx::PointF(0, 20)); 615 child_layer->SetPosition(gfx::PointF(0, 20));
617 child_layer->SetBounds(gfx::Size(50, 50)); 616 child_layer->SetBounds(gfx::Size(50, 50));
618 child_layer->SetContentBounds(gfx::Size(50, 50)); 617 child_layer->SetContentBounds(gfx::Size(50, 50));
619 scroll->AddChild(child_layer.Pass()); 618 scroll->AddChild(child_layer.Pass());
620 } 619 }
621 620
622 // Touch handler regions determine whether touch events block scroll. 621 // Touch handler regions determine whether touch events block scroll.
623 root->SetTouchEventHandlerRegion(gfx::Rect(0, 0, 100, 100)); 622 root->SetTouchEventHandlerRegion(gfx::Rect(0, 0, 100, 100));
624 EXPECT_FALSE(host_impl_->DoTouchEventsBlockScrollAt(gfx::Point(10, 10))); 623 EXPECT_FALSE(host_impl_->DoTouchEventsBlockScrollAt(gfx::Point(10, 10)));
625 root->SetScrollBlocksOn(SCROLL_BLOCKS_ON_START_TOUCH | 624 root->SetScrollBlocksOn(ScrollBlocksOnStartTouch | ScrollBlocksOnWheelEvent);
626 SCROLL_BLOCKS_ON_WHEEL_EVENT);
627 EXPECT_TRUE(host_impl_->DoTouchEventsBlockScrollAt(gfx::Point(10, 10))); 625 EXPECT_TRUE(host_impl_->DoTouchEventsBlockScrollAt(gfx::Point(10, 10)));
628 626
629 // But they don't influence the actual handling of the scroll gestures. 627 // But they don't influence the actual handling of the scroll gestures.
630 EXPECT_EQ(InputHandler::SCROLL_STARTED, 628 EXPECT_EQ(InputHandler::ScrollStarted,
631 host_impl_->ScrollBegin(gfx::Point(), InputHandler::GESTURE)); 629 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture));
632 host_impl_->ScrollEnd(); 630 host_impl_->ScrollEnd();
633 631
634 // It's the union of scroll-blocks-on mode bits across all layers in the 632 // It's the union of scroll-blocks-on mode bits across all layers in the
635 // scroll paret chain that matters. 633 // scroll paret chain that matters.
636 EXPECT_TRUE(host_impl_->DoTouchEventsBlockScrollAt(gfx::Point(10, 30))); 634 EXPECT_TRUE(host_impl_->DoTouchEventsBlockScrollAt(gfx::Point(10, 30)));
637 root->SetScrollBlocksOn(SCROLL_BLOCKS_ON_NONE); 635 root->SetScrollBlocksOn(ScrollBlocksOnNone);
638 EXPECT_FALSE(host_impl_->DoTouchEventsBlockScrollAt(gfx::Point(10, 30))); 636 EXPECT_FALSE(host_impl_->DoTouchEventsBlockScrollAt(gfx::Point(10, 30)));
639 child->SetScrollBlocksOn(SCROLL_BLOCKS_ON_START_TOUCH); 637 child->SetScrollBlocksOn(ScrollBlocksOnStartTouch);
640 EXPECT_TRUE(host_impl_->DoTouchEventsBlockScrollAt(gfx::Point(10, 30))); 638 EXPECT_TRUE(host_impl_->DoTouchEventsBlockScrollAt(gfx::Point(10, 30)));
641 } 639 }
642 640
643 TEST_F(LayerTreeHostImplTest, ScrollBlocksOnScrollEventHandlers) { 641 TEST_F(LayerTreeHostImplTest, ScrollBlocksOnScrollEventHandlers) {
644 SetupScrollAndContentsLayers(gfx::Size(100, 100)); 642 SetupScrollAndContentsLayers(gfx::Size(100, 100));
645 host_impl_->SetViewportSize(gfx::Size(50, 50)); 643 host_impl_->SetViewportSize(gfx::Size(50, 50));
646 DrawFrame(); 644 DrawFrame();
647 LayerImpl* root = host_impl_->active_tree()->root_layer(); 645 LayerImpl* root = host_impl_->active_tree()->root_layer();
648 646
649 // With registered scroll handlers, scrolls don't generally have to go 647 // With registered scroll handlers, scrolls don't generally have to go
650 // to the main thread. 648 // to the main thread.
651 root->SetHaveScrollEventHandlers(true); 649 root->SetHaveScrollEventHandlers(true);
652 EXPECT_EQ(InputHandler::SCROLL_STARTED, 650 EXPECT_EQ(InputHandler::ScrollStarted,
653 host_impl_->ScrollBegin(gfx::Point(), InputHandler::WHEEL)); 651 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Wheel));
654 host_impl_->ScrollEnd(); 652 host_impl_->ScrollEnd();
655 653
656 // Even the default scroll blocks on mode doesn't require this. 654 // Even the default scroll blocks on mode doesn't require this.
657 root->SetScrollBlocksOn(SCROLL_BLOCKS_ON_WHEEL_EVENT | 655 root->SetScrollBlocksOn(ScrollBlocksOnWheelEvent | ScrollBlocksOnStartTouch);
658 SCROLL_BLOCKS_ON_START_TOUCH); 656 EXPECT_EQ(InputHandler::ScrollStarted,
659 EXPECT_EQ(InputHandler::SCROLL_STARTED, 657 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture));
660 host_impl_->ScrollBegin(gfx::Point(), InputHandler::GESTURE));
661 host_impl_->ScrollEnd(); 658 host_impl_->ScrollEnd();
662 659
663 // But the page can opt in to blocking on scroll event handlers. 660 // But the page can opt in to blocking on scroll event handlers.
664 root->SetScrollBlocksOn(SCROLL_BLOCKS_ON_SCROLL_EVENT); 661 root->SetScrollBlocksOn(ScrollBlocksOnScrollEvent);
665 EXPECT_EQ(InputHandler::SCROLL_ON_MAIN_THREAD, 662 EXPECT_EQ(InputHandler::ScrollOnMainThread,
666 host_impl_->ScrollBegin(gfx::Point(), InputHandler::GESTURE)); 663 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture));
667 664
668 // GESTURE and WHEEL scrolls behave identically in this regard. 665 // Gesture and Wheel scrolls behave identically in this regard.
669 EXPECT_EQ(InputHandler::SCROLL_ON_MAIN_THREAD, 666 EXPECT_EQ(InputHandler::ScrollOnMainThread,
670 host_impl_->ScrollBegin(gfx::Point(), InputHandler::WHEEL)); 667 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Wheel));
671 668
672 // And if the handlers go away, scrolls can again be processed on impl 669 // And if the handlers go away, scrolls can again be processed on impl
673 // (despite the scroll-blocks-on mode). 670 // (despite the scroll-blocks-on mode).
674 root->SetHaveScrollEventHandlers(false); 671 root->SetHaveScrollEventHandlers(false);
675 EXPECT_EQ(InputHandler::SCROLL_STARTED, 672 EXPECT_EQ(InputHandler::ScrollStarted,
676 host_impl_->ScrollBegin(gfx::Point(), InputHandler::GESTURE)); 673 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture));
677 host_impl_->ScrollEnd(); 674 host_impl_->ScrollEnd();
678 } 675 }
679 676
680 TEST_F(LayerTreeHostImplTest, ScrollBlocksOnLayerTopology) { 677 TEST_F(LayerTreeHostImplTest, ScrollBlocksOnLayerTopology) {
681 host_impl_->SetViewportSize(gfx::Size(50, 50)); 678 host_impl_->SetViewportSize(gfx::Size(50, 50));
682 679
683 // Create a normal scrollable root layer 680 // Create a normal scrollable root layer
684 LayerImpl* root_scroll = SetupScrollAndContentsLayers(gfx::Size(100, 100)); 681 LayerImpl* root_scroll = SetupScrollAndContentsLayers(gfx::Size(100, 100));
685 LayerImpl* root_child = root_scroll->children()[0]; 682 LayerImpl* root_child = root_scroll->children()[0];
686 LayerImpl* root = host_impl_->active_tree()->root_layer(); 683 LayerImpl* root = host_impl_->active_tree()->root_layer();
(...skipping 22 matching lines...) Expand all
709 9, gfx::Size(10, 10), scrollable_child_clip_2.get()); 706 9, gfx::Size(10, 10), scrollable_child_clip_2.get());
710 child2 = scrollable_child_2.get(); 707 child2 = scrollable_child_2.get();
711 scrollable_child_2->SetPosition(gfx::Point(5, 20)); 708 scrollable_child_2->SetPosition(gfx::Point(5, 20));
712 scrollable_child_2->SetHaveWheelEventHandlers(true); 709 scrollable_child_2->SetHaveWheelEventHandlers(true);
713 scrollable_child_2->SetHaveScrollEventHandlers(true); 710 scrollable_child_2->SetHaveScrollEventHandlers(true);
714 scrollable_child_clip_2->AddChild(scrollable_child_2.Pass()); 711 scrollable_child_clip_2->AddChild(scrollable_child_2.Pass());
715 root_child->AddChild(scrollable_child_clip_2.Pass()); 712 root_child->AddChild(scrollable_child_clip_2.Pass());
716 } 713 }
717 714
718 // Scroll-blocks-on on a layer affects scrolls that hit that layer. 715 // Scroll-blocks-on on a layer affects scrolls that hit that layer.
719 EXPECT_EQ(InputHandler::SCROLL_STARTED, 716 EXPECT_EQ(InputHandler::ScrollStarted,
720 host_impl_->ScrollBegin(gfx::Point(10, 10), InputHandler::GESTURE)); 717 host_impl_->ScrollBegin(gfx::Point(10, 10), InputHandler::Gesture));
721 host_impl_->ScrollEnd(); 718 host_impl_->ScrollEnd();
722 child1->SetScrollBlocksOn(SCROLL_BLOCKS_ON_SCROLL_EVENT); 719 child1->SetScrollBlocksOn(ScrollBlocksOnScrollEvent);
723 EXPECT_EQ(InputHandler::SCROLL_ON_MAIN_THREAD, 720 EXPECT_EQ(InputHandler::ScrollOnMainThread,
724 host_impl_->ScrollBegin(gfx::Point(10, 10), InputHandler::GESTURE)); 721 host_impl_->ScrollBegin(gfx::Point(10, 10), InputHandler::Gesture));
725 722
726 // But not those that hit only other layers. 723 // But not those that hit only other layers.
727 EXPECT_EQ(InputHandler::SCROLL_STARTED, 724 EXPECT_EQ(InputHandler::ScrollStarted,
728 host_impl_->ScrollBegin(gfx::Point(10, 25), InputHandler::GESTURE)); 725 host_impl_->ScrollBegin(gfx::Point(10, 25), InputHandler::Gesture));
729 host_impl_->ScrollEnd(); 726 host_impl_->ScrollEnd();
730 727
731 // It's the union of bits set across the scroll ancestor chain that matters. 728 // It's the union of bits set across the scroll ancestor chain that matters.
732 EXPECT_EQ(InputHandler::SCROLL_STARTED, 729 EXPECT_EQ(InputHandler::ScrollStarted,
733 host_impl_->ScrollBegin(gfx::Point(10, 25), InputHandler::GESTURE)); 730 host_impl_->ScrollBegin(gfx::Point(10, 25), InputHandler::Gesture));
734 host_impl_->ScrollEnd(); 731 host_impl_->ScrollEnd();
735 EXPECT_EQ(InputHandler::SCROLL_STARTED, 732 EXPECT_EQ(InputHandler::ScrollStarted,
736 host_impl_->ScrollBegin(gfx::Point(10, 25), InputHandler::WHEEL)); 733 host_impl_->ScrollBegin(gfx::Point(10, 25), InputHandler::Wheel));
737 host_impl_->ScrollEnd(); 734 host_impl_->ScrollEnd();
738 root->SetScrollBlocksOn(SCROLL_BLOCKS_ON_WHEEL_EVENT); 735 root->SetScrollBlocksOn(ScrollBlocksOnWheelEvent);
739 EXPECT_EQ(InputHandler::SCROLL_STARTED, 736 EXPECT_EQ(InputHandler::ScrollStarted,
740 host_impl_->ScrollBegin(gfx::Point(10, 25), InputHandler::GESTURE)); 737 host_impl_->ScrollBegin(gfx::Point(10, 25), InputHandler::Gesture));
741 host_impl_->ScrollEnd(); 738 host_impl_->ScrollEnd();
742 EXPECT_EQ(InputHandler::SCROLL_ON_MAIN_THREAD, 739 EXPECT_EQ(InputHandler::ScrollOnMainThread,
743 host_impl_->ScrollBegin(gfx::Point(10, 25), InputHandler::WHEEL)); 740 host_impl_->ScrollBegin(gfx::Point(10, 25), InputHandler::Wheel));
744 child2->SetScrollBlocksOn(SCROLL_BLOCKS_ON_SCROLL_EVENT); 741 child2->SetScrollBlocksOn(ScrollBlocksOnScrollEvent);
745 EXPECT_EQ(InputHandler::SCROLL_ON_MAIN_THREAD, 742 EXPECT_EQ(InputHandler::ScrollOnMainThread,
746 host_impl_->ScrollBegin(gfx::Point(10, 25), InputHandler::WHEEL)); 743 host_impl_->ScrollBegin(gfx::Point(10, 25), InputHandler::Wheel));
747 EXPECT_EQ(InputHandler::SCROLL_ON_MAIN_THREAD, 744 EXPECT_EQ(InputHandler::ScrollOnMainThread,
748 host_impl_->ScrollBegin(gfx::Point(10, 25), InputHandler::GESTURE)); 745 host_impl_->ScrollBegin(gfx::Point(10, 25), InputHandler::Gesture));
749 } 746 }
750 747
751 TEST_F(LayerTreeHostImplTest, FlingOnlyWhenScrollingTouchscreen) { 748 TEST_F(LayerTreeHostImplTest, FlingOnlyWhenScrollingTouchscreen) {
752 SetupScrollAndContentsLayers(gfx::Size(100, 100)); 749 SetupScrollAndContentsLayers(gfx::Size(100, 100));
753 host_impl_->SetViewportSize(gfx::Size(50, 50)); 750 host_impl_->SetViewportSize(gfx::Size(50, 50));
754 DrawFrame(); 751 DrawFrame();
755 752
756 // Ignore the fling since no layer is being scrolled 753 // Ignore the fling since no layer is being scrolled
757 EXPECT_EQ(InputHandler::SCROLL_IGNORED, host_impl_->FlingScrollBegin()); 754 EXPECT_EQ(InputHandler::ScrollIgnored,
755 host_impl_->FlingScrollBegin());
758 756
759 // Start scrolling a layer 757 // Start scrolling a layer
760 EXPECT_EQ(InputHandler::SCROLL_STARTED, 758 EXPECT_EQ(InputHandler::ScrollStarted,
761 host_impl_->ScrollBegin(gfx::Point(), InputHandler::GESTURE)); 759 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture));
762 760
763 // Now the fling should go ahead since we've started scrolling a layer 761 // Now the fling should go ahead since we've started scrolling a layer
764 EXPECT_EQ(InputHandler::SCROLL_STARTED, host_impl_->FlingScrollBegin()); 762 EXPECT_EQ(InputHandler::ScrollStarted,
763 host_impl_->FlingScrollBegin());
765 } 764 }
766 765
767 TEST_F(LayerTreeHostImplTest, FlingOnlyWhenScrollingTouchpad) { 766 TEST_F(LayerTreeHostImplTest, FlingOnlyWhenScrollingTouchpad) {
768 SetupScrollAndContentsLayers(gfx::Size(100, 100)); 767 SetupScrollAndContentsLayers(gfx::Size(100, 100));
769 host_impl_->SetViewportSize(gfx::Size(50, 50)); 768 host_impl_->SetViewportSize(gfx::Size(50, 50));
770 DrawFrame(); 769 DrawFrame();
771 770
772 // Ignore the fling since no layer is being scrolled 771 // Ignore the fling since no layer is being scrolled
773 EXPECT_EQ(InputHandler::SCROLL_IGNORED, host_impl_->FlingScrollBegin()); 772 EXPECT_EQ(InputHandler::ScrollIgnored,
773 host_impl_->FlingScrollBegin());
774 774
775 // Start scrolling a layer 775 // Start scrolling a layer
776 EXPECT_EQ(InputHandler::SCROLL_STARTED, 776 EXPECT_EQ(InputHandler::ScrollStarted,
777 host_impl_->ScrollBegin(gfx::Point(), InputHandler::WHEEL)); 777 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Wheel));
778 778
779 // Now the fling should go ahead since we've started scrolling a layer 779 // Now the fling should go ahead since we've started scrolling a layer
780 EXPECT_EQ(InputHandler::SCROLL_STARTED, host_impl_->FlingScrollBegin()); 780 EXPECT_EQ(InputHandler::ScrollStarted,
781 host_impl_->FlingScrollBegin());
781 } 782 }
782 783
783 TEST_F(LayerTreeHostImplTest, NoFlingWhenScrollingOnMain) { 784 TEST_F(LayerTreeHostImplTest, NoFlingWhenScrollingOnMain) {
784 SetupScrollAndContentsLayers(gfx::Size(100, 100)); 785 SetupScrollAndContentsLayers(gfx::Size(100, 100));
785 host_impl_->SetViewportSize(gfx::Size(50, 50)); 786 host_impl_->SetViewportSize(gfx::Size(50, 50));
786 DrawFrame(); 787 DrawFrame();
787 LayerImpl* root = host_impl_->active_tree()->root_layer(); 788 LayerImpl* root = host_impl_->active_tree()->root_layer();
788 789
789 root->SetShouldScrollOnMainThread(true); 790 root->SetShouldScrollOnMainThread(true);
790 791
791 // Start scrolling a layer 792 // Start scrolling a layer
792 EXPECT_EQ(InputHandler::SCROLL_ON_MAIN_THREAD, 793 EXPECT_EQ(InputHandler::ScrollOnMainThread,
793 host_impl_->ScrollBegin(gfx::Point(), InputHandler::GESTURE)); 794 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture));
794 795
795 // The fling should be ignored since there's no layer being scrolled impl-side 796 // The fling should be ignored since there's no layer being scrolled impl-side
796 EXPECT_EQ(InputHandler::SCROLL_IGNORED, host_impl_->FlingScrollBegin()); 797 EXPECT_EQ(InputHandler::ScrollIgnored,
798 host_impl_->FlingScrollBegin());
797 } 799 }
798 800
799 TEST_F(LayerTreeHostImplTest, ShouldScrollOnMainThread) { 801 TEST_F(LayerTreeHostImplTest, ShouldScrollOnMainThread) {
800 SetupScrollAndContentsLayers(gfx::Size(100, 100)); 802 SetupScrollAndContentsLayers(gfx::Size(100, 100));
801 host_impl_->SetViewportSize(gfx::Size(50, 50)); 803 host_impl_->SetViewportSize(gfx::Size(50, 50));
802 DrawFrame(); 804 DrawFrame();
803 LayerImpl* root = host_impl_->active_tree()->root_layer(); 805 LayerImpl* root = host_impl_->active_tree()->root_layer();
804 806
805 root->SetShouldScrollOnMainThread(true); 807 root->SetShouldScrollOnMainThread(true);
806 808
807 EXPECT_EQ(InputHandler::SCROLL_ON_MAIN_THREAD, 809 EXPECT_EQ(InputHandler::ScrollOnMainThread,
808 host_impl_->ScrollBegin(gfx::Point(), InputHandler::WHEEL)); 810 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Wheel));
809 EXPECT_EQ(InputHandler::SCROLL_ON_MAIN_THREAD, 811 EXPECT_EQ(InputHandler::ScrollOnMainThread,
810 host_impl_->ScrollBegin(gfx::Point(), InputHandler::GESTURE)); 812 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture));
811 } 813 }
812 814
813 TEST_F(LayerTreeHostImplTest, NonFastScrollableRegionBasic) { 815 TEST_F(LayerTreeHostImplTest, NonFastScrollableRegionBasic) {
814 SetupScrollAndContentsLayers(gfx::Size(200, 200)); 816 SetupScrollAndContentsLayers(gfx::Size(200, 200));
815 host_impl_->SetViewportSize(gfx::Size(100, 100)); 817 host_impl_->SetViewportSize(gfx::Size(100, 100));
816 818
817 LayerImpl* root = host_impl_->active_tree()->root_layer(); 819 LayerImpl* root = host_impl_->active_tree()->root_layer();
818 root->SetContentsScale(2.f, 2.f); 820 root->SetContentsScale(2.f, 2.f);
819 root->SetNonFastScrollableRegion(gfx::Rect(0, 0, 50, 50)); 821 root->SetNonFastScrollableRegion(gfx::Rect(0, 0, 50, 50));
820 822
821 DrawFrame(); 823 DrawFrame();
822 824
823 // All scroll types inside the non-fast scrollable region should fail. 825 // All scroll types inside the non-fast scrollable region should fail.
824 EXPECT_EQ(InputHandler::SCROLL_ON_MAIN_THREAD, 826 EXPECT_EQ(InputHandler::ScrollOnMainThread,
825 host_impl_->ScrollBegin(gfx::Point(25, 25), InputHandler::WHEEL)); 827 host_impl_->ScrollBegin(gfx::Point(25, 25),
828 InputHandler::Wheel));
826 EXPECT_FALSE(host_impl_->IsCurrentlyScrollingLayerAt(gfx::Point(25, 25), 829 EXPECT_FALSE(host_impl_->IsCurrentlyScrollingLayerAt(gfx::Point(25, 25),
827 InputHandler::WHEEL)); 830 InputHandler::Wheel));
828 EXPECT_EQ(InputHandler::SCROLL_ON_MAIN_THREAD, 831 EXPECT_EQ(InputHandler::ScrollOnMainThread,
829 host_impl_->ScrollBegin(gfx::Point(25, 25), InputHandler::GESTURE)); 832 host_impl_->ScrollBegin(gfx::Point(25, 25),
833 InputHandler::Gesture));
830 EXPECT_FALSE(host_impl_->IsCurrentlyScrollingLayerAt(gfx::Point(25, 25), 834 EXPECT_FALSE(host_impl_->IsCurrentlyScrollingLayerAt(gfx::Point(25, 25),
831 InputHandler::GESTURE)); 835 InputHandler::Gesture));
832 836
833 // All scroll types outside this region should succeed. 837 // All scroll types outside this region should succeed.
834 EXPECT_EQ(InputHandler::SCROLL_STARTED, 838 EXPECT_EQ(InputHandler::ScrollStarted,
835 host_impl_->ScrollBegin(gfx::Point(75, 75), InputHandler::WHEEL)); 839 host_impl_->ScrollBegin(gfx::Point(75, 75),
840 InputHandler::Wheel));
836 EXPECT_TRUE(host_impl_->IsCurrentlyScrollingLayerAt(gfx::Point(75, 75), 841 EXPECT_TRUE(host_impl_->IsCurrentlyScrollingLayerAt(gfx::Point(75, 75),
837 InputHandler::GESTURE)); 842 InputHandler::Gesture));
838 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 10)); 843 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 10));
839 EXPECT_FALSE(host_impl_->IsCurrentlyScrollingLayerAt(gfx::Point(25, 25), 844 EXPECT_FALSE(host_impl_->IsCurrentlyScrollingLayerAt(gfx::Point(25, 25),
840 InputHandler::GESTURE)); 845 InputHandler::Gesture));
841 host_impl_->ScrollEnd(); 846 host_impl_->ScrollEnd();
842 EXPECT_FALSE(host_impl_->IsCurrentlyScrollingLayerAt(gfx::Point(75, 75), 847 EXPECT_FALSE(host_impl_->IsCurrentlyScrollingLayerAt(gfx::Point(75, 75),
843 InputHandler::GESTURE)); 848 InputHandler::Gesture));
844 EXPECT_EQ(InputHandler::SCROLL_STARTED, 849 EXPECT_EQ(InputHandler::ScrollStarted,
845 host_impl_->ScrollBegin(gfx::Point(75, 75), InputHandler::GESTURE)); 850 host_impl_->ScrollBegin(gfx::Point(75, 75),
851 InputHandler::Gesture));
846 EXPECT_TRUE(host_impl_->IsCurrentlyScrollingLayerAt(gfx::Point(75, 75), 852 EXPECT_TRUE(host_impl_->IsCurrentlyScrollingLayerAt(gfx::Point(75, 75),
847 InputHandler::GESTURE)); 853 InputHandler::Gesture));
848 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 10)); 854 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 10));
849 host_impl_->ScrollEnd(); 855 host_impl_->ScrollEnd();
850 EXPECT_FALSE(host_impl_->IsCurrentlyScrollingLayerAt(gfx::Point(75, 75), 856 EXPECT_FALSE(host_impl_->IsCurrentlyScrollingLayerAt(gfx::Point(75, 75),
851 InputHandler::GESTURE)); 857 InputHandler::Gesture));
852 } 858 }
853 859
854 TEST_F(LayerTreeHostImplTest, NonFastScrollableRegionWithOffset) { 860 TEST_F(LayerTreeHostImplTest, NonFastScrollableRegionWithOffset) {
855 SetupScrollAndContentsLayers(gfx::Size(200, 200)); 861 SetupScrollAndContentsLayers(gfx::Size(200, 200));
856 host_impl_->SetViewportSize(gfx::Size(100, 100)); 862 host_impl_->SetViewportSize(gfx::Size(100, 100));
857 863
858 LayerImpl* root = host_impl_->active_tree()->root_layer(); 864 LayerImpl* root = host_impl_->active_tree()->root_layer();
859 root->SetContentsScale(2.f, 2.f); 865 root->SetContentsScale(2.f, 2.f);
860 root->SetNonFastScrollableRegion(gfx::Rect(0, 0, 50, 50)); 866 root->SetNonFastScrollableRegion(gfx::Rect(0, 0, 50, 50));
861 root->SetPosition(gfx::PointF(-25.f, 0.f)); 867 root->SetPosition(gfx::PointF(-25.f, 0.f));
862 868
863 DrawFrame(); 869 DrawFrame();
864 870
865 // This point would fall into the non-fast scrollable region except that we've 871 // This point would fall into the non-fast scrollable region except that we've
866 // moved the layer down by 25 pixels. 872 // moved the layer down by 25 pixels.
867 EXPECT_EQ(InputHandler::SCROLL_STARTED, 873 EXPECT_EQ(InputHandler::ScrollStarted,
868 host_impl_->ScrollBegin(gfx::Point(40, 10), InputHandler::WHEEL)); 874 host_impl_->ScrollBegin(gfx::Point(40, 10),
875 InputHandler::Wheel));
869 EXPECT_TRUE(host_impl_->IsCurrentlyScrollingLayerAt(gfx::Point(40, 10), 876 EXPECT_TRUE(host_impl_->IsCurrentlyScrollingLayerAt(gfx::Point(40, 10),
870 InputHandler::WHEEL)); 877 InputHandler::Wheel));
871 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 1)); 878 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 1));
872 host_impl_->ScrollEnd(); 879 host_impl_->ScrollEnd();
873 880
874 // This point is still inside the non-fast region. 881 // This point is still inside the non-fast region.
875 EXPECT_EQ(InputHandler::SCROLL_ON_MAIN_THREAD, 882 EXPECT_EQ(InputHandler::ScrollOnMainThread,
876 host_impl_->ScrollBegin(gfx::Point(10, 10), InputHandler::WHEEL)); 883 host_impl_->ScrollBegin(gfx::Point(10, 10),
884 InputHandler::Wheel));
877 } 885 }
878 886
879 TEST_F(LayerTreeHostImplTest, ScrollHandlerNotPresent) { 887 TEST_F(LayerTreeHostImplTest, ScrollHandlerNotPresent) {
880 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(200, 200)); 888 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(200, 200));
881 EXPECT_FALSE(scroll_layer->have_scroll_event_handlers()); 889 EXPECT_FALSE(scroll_layer->have_scroll_event_handlers());
882 host_impl_->SetViewportSize(gfx::Size(50, 50)); 890 host_impl_->SetViewportSize(gfx::Size(50, 50));
883 DrawFrame(); 891 DrawFrame();
884 892
885 EXPECT_FALSE(host_impl_->scroll_affects_scroll_handler()); 893 EXPECT_FALSE(host_impl_->scroll_affects_scroll_handler());
886 host_impl_->ScrollBegin(gfx::Point(), InputHandler::GESTURE); 894 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture);
887 EXPECT_FALSE(host_impl_->scroll_affects_scroll_handler()); 895 EXPECT_FALSE(host_impl_->scroll_affects_scroll_handler());
888 host_impl_->ScrollEnd(); 896 host_impl_->ScrollEnd();
889 EXPECT_FALSE(host_impl_->scroll_affects_scroll_handler()); 897 EXPECT_FALSE(host_impl_->scroll_affects_scroll_handler());
890 } 898 }
891 899
892 TEST_F(LayerTreeHostImplTest, ScrollHandlerPresent) { 900 TEST_F(LayerTreeHostImplTest, ScrollHandlerPresent) {
893 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(200, 200)); 901 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(200, 200));
894 scroll_layer->SetHaveScrollEventHandlers(true); 902 scroll_layer->SetHaveScrollEventHandlers(true);
895 host_impl_->SetViewportSize(gfx::Size(50, 50)); 903 host_impl_->SetViewportSize(gfx::Size(50, 50));
896 DrawFrame(); 904 DrawFrame();
897 905
898 EXPECT_FALSE(host_impl_->scroll_affects_scroll_handler()); 906 EXPECT_FALSE(host_impl_->scroll_affects_scroll_handler());
899 host_impl_->ScrollBegin(gfx::Point(), InputHandler::GESTURE); 907 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture);
900 EXPECT_TRUE(host_impl_->scroll_affects_scroll_handler()); 908 EXPECT_TRUE(host_impl_->scroll_affects_scroll_handler());
901 host_impl_->ScrollEnd(); 909 host_impl_->ScrollEnd();
902 EXPECT_FALSE(host_impl_->scroll_affects_scroll_handler()); 910 EXPECT_FALSE(host_impl_->scroll_affects_scroll_handler());
903 } 911 }
904 912
905 TEST_F(LayerTreeHostImplTest, ScrollByReturnsCorrectValue) { 913 TEST_F(LayerTreeHostImplTest, ScrollByReturnsCorrectValue) {
906 SetupScrollAndContentsLayers(gfx::Size(200, 200)); 914 SetupScrollAndContentsLayers(gfx::Size(200, 200));
907 host_impl_->SetViewportSize(gfx::Size(100, 100)); 915 host_impl_->SetViewportSize(gfx::Size(100, 100));
908 916
909 DrawFrame(); 917 DrawFrame();
910 918
911 EXPECT_EQ(InputHandler::SCROLL_STARTED, 919 EXPECT_EQ(InputHandler::ScrollStarted,
912 host_impl_->ScrollBegin(gfx::Point(), InputHandler::GESTURE)); 920 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture));
913 921
914 // Trying to scroll to the left/top will not succeed. 922 // Trying to scroll to the left/top will not succeed.
915 EXPECT_FALSE( 923 EXPECT_FALSE(
916 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(-10, 0)).did_scroll); 924 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(-10, 0)).did_scroll);
917 EXPECT_FALSE( 925 EXPECT_FALSE(
918 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, -10)).did_scroll); 926 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, -10)).did_scroll);
919 EXPECT_FALSE( 927 EXPECT_FALSE(
920 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(-10, -10)).did_scroll); 928 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(-10, -10)).did_scroll);
921 929
922 // Scrolling to the right/bottom will succeed. 930 // Scrolling to the right/bottom will succeed.
(...skipping 24 matching lines...) Expand all
947 EXPECT_TRUE( 955 EXPECT_TRUE(
948 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(5000, 5000)).did_scroll); 956 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(5000, 5000)).did_scroll);
949 } 957 }
950 958
951 TEST_F(LayerTreeHostImplTest, ScrollVerticallyByPageReturnsCorrectValue) { 959 TEST_F(LayerTreeHostImplTest, ScrollVerticallyByPageReturnsCorrectValue) {
952 SetupScrollAndContentsLayers(gfx::Size(200, 2000)); 960 SetupScrollAndContentsLayers(gfx::Size(200, 2000));
953 host_impl_->SetViewportSize(gfx::Size(100, 1000)); 961 host_impl_->SetViewportSize(gfx::Size(100, 1000));
954 962
955 DrawFrame(); 963 DrawFrame();
956 964
957 EXPECT_EQ(InputHandler::SCROLL_STARTED, 965 EXPECT_EQ(InputHandler::ScrollStarted,
958 host_impl_->ScrollBegin(gfx::Point(), InputHandler::WHEEL)); 966 host_impl_->ScrollBegin(gfx::Point(),
967 InputHandler::Wheel));
959 968
960 // Trying to scroll without a vertical scrollbar will fail. 969 // Trying to scroll without a vertical scrollbar will fail.
961 EXPECT_FALSE(host_impl_->ScrollVerticallyByPage( 970 EXPECT_FALSE(host_impl_->ScrollVerticallyByPage(
962 gfx::Point(), SCROLL_FORWARD)); 971 gfx::Point(), SCROLL_FORWARD));
963 EXPECT_FALSE(host_impl_->ScrollVerticallyByPage( 972 EXPECT_FALSE(host_impl_->ScrollVerticallyByPage(
964 gfx::Point(), SCROLL_BACKWARD)); 973 gfx::Point(), SCROLL_BACKWARD));
965 974
966 scoped_ptr<PaintedScrollbarLayerImpl> vertical_scrollbar( 975 scoped_ptr<PaintedScrollbarLayerImpl> vertical_scrollbar(
967 PaintedScrollbarLayerImpl::Create( 976 PaintedScrollbarLayerImpl::Create(
968 host_impl_->active_tree(), 977 host_impl_->active_tree(),
(...skipping 21 matching lines...) Expand all
990 LayerImpl* overflow = scroll_layer->children()[0]; 999 LayerImpl* overflow = scroll_layer->children()[0];
991 overflow->SetBounds(overflow_size); 1000 overflow->SetBounds(overflow_size);
992 overflow->SetContentBounds(overflow_size); 1001 overflow->SetContentBounds(overflow_size);
993 overflow->SetScrollClipLayer(scroll_layer->parent()->id()); 1002 overflow->SetScrollClipLayer(scroll_layer->parent()->id());
994 overflow->PushScrollOffsetFromMainThread(gfx::ScrollOffset()); 1003 overflow->PushScrollOffsetFromMainThread(gfx::ScrollOffset());
995 overflow->SetPosition(gfx::PointF()); 1004 overflow->SetPosition(gfx::PointF());
996 1005
997 DrawFrame(); 1006 DrawFrame();
998 gfx::Point scroll_position(10, 10); 1007 gfx::Point scroll_position(10, 10);
999 1008
1000 EXPECT_EQ(InputHandler::SCROLL_STARTED, 1009 EXPECT_EQ(InputHandler::ScrollStarted,
1001 host_impl_->ScrollBegin(scroll_position, InputHandler::WHEEL)); 1010 host_impl_->ScrollBegin(scroll_position, InputHandler::Wheel));
1002 EXPECT_VECTOR_EQ(gfx::Vector2dF(), scroll_layer->CurrentScrollOffset()); 1011 EXPECT_VECTOR_EQ(gfx::Vector2dF(), scroll_layer->CurrentScrollOffset());
1003 EXPECT_VECTOR_EQ(gfx::Vector2dF(), overflow->CurrentScrollOffset()); 1012 EXPECT_VECTOR_EQ(gfx::Vector2dF(), overflow->CurrentScrollOffset());
1004 1013
1005 gfx::Vector2dF scroll_delta(10, 10); 1014 gfx::Vector2dF scroll_delta(10, 10);
1006 host_impl_->ScrollBy(scroll_position, scroll_delta); 1015 host_impl_->ScrollBy(scroll_position, scroll_delta);
1007 host_impl_->ScrollEnd(); 1016 host_impl_->ScrollEnd();
1008 EXPECT_VECTOR_EQ(gfx::Vector2dF(), scroll_layer->CurrentScrollOffset()); 1017 EXPECT_VECTOR_EQ(gfx::Vector2dF(), scroll_layer->CurrentScrollOffset());
1009 EXPECT_VECTOR_EQ(gfx::Vector2dF(10, 10), overflow->CurrentScrollOffset()); 1018 EXPECT_VECTOR_EQ(gfx::Vector2dF(10, 10), overflow->CurrentScrollOffset());
1010 1019
1011 overflow->set_user_scrollable_horizontal(false); 1020 overflow->set_user_scrollable_horizontal(false);
1012 1021
1013 EXPECT_EQ(InputHandler::SCROLL_STARTED, 1022 EXPECT_EQ(InputHandler::ScrollStarted,
1014 host_impl_->ScrollBegin(scroll_position, InputHandler::WHEEL)); 1023 host_impl_->ScrollBegin(scroll_position, InputHandler::Wheel));
1015 EXPECT_VECTOR_EQ(gfx::Vector2dF(), scroll_layer->CurrentScrollOffset()); 1024 EXPECT_VECTOR_EQ(gfx::Vector2dF(), scroll_layer->CurrentScrollOffset());
1016 EXPECT_VECTOR_EQ(gfx::Vector2dF(10, 10), overflow->CurrentScrollOffset()); 1025 EXPECT_VECTOR_EQ(gfx::Vector2dF(10, 10), overflow->CurrentScrollOffset());
1017 1026
1018 host_impl_->ScrollBy(scroll_position, scroll_delta); 1027 host_impl_->ScrollBy(scroll_position, scroll_delta);
1019 host_impl_->ScrollEnd(); 1028 host_impl_->ScrollEnd();
1020 EXPECT_VECTOR_EQ(gfx::Vector2dF(10, 0), scroll_layer->CurrentScrollOffset()); 1029 EXPECT_VECTOR_EQ(gfx::Vector2dF(10, 0), scroll_layer->CurrentScrollOffset());
1021 EXPECT_VECTOR_EQ(gfx::Vector2dF(10, 20), overflow->CurrentScrollOffset()); 1030 EXPECT_VECTOR_EQ(gfx::Vector2dF(10, 20), overflow->CurrentScrollOffset());
1022 1031
1023 overflow->set_user_scrollable_vertical(false); 1032 overflow->set_user_scrollable_vertical(false);
1024 1033
1025 EXPECT_EQ(InputHandler::SCROLL_STARTED, 1034 EXPECT_EQ(InputHandler::ScrollStarted,
1026 host_impl_->ScrollBegin(scroll_position, InputHandler::WHEEL)); 1035 host_impl_->ScrollBegin(scroll_position, InputHandler::Wheel));
1027 EXPECT_VECTOR_EQ(gfx::Vector2dF(10, 0), scroll_layer->CurrentScrollOffset()); 1036 EXPECT_VECTOR_EQ(gfx::Vector2dF(10, 0), scroll_layer->CurrentScrollOffset());
1028 EXPECT_VECTOR_EQ(gfx::Vector2dF(10, 20), overflow->CurrentScrollOffset()); 1037 EXPECT_VECTOR_EQ(gfx::Vector2dF(10, 20), overflow->CurrentScrollOffset());
1029 1038
1030 host_impl_->ScrollBy(scroll_position, scroll_delta); 1039 host_impl_->ScrollBy(scroll_position, scroll_delta);
1031 host_impl_->ScrollEnd(); 1040 host_impl_->ScrollEnd();
1032 EXPECT_VECTOR_EQ(gfx::Vector2dF(20, 10), scroll_layer->CurrentScrollOffset()); 1041 EXPECT_VECTOR_EQ(gfx::Vector2dF(20, 10), scroll_layer->CurrentScrollOffset());
1033 EXPECT_VECTOR_EQ(gfx::Vector2dF(10, 20), overflow->CurrentScrollOffset()); 1042 EXPECT_VECTOR_EQ(gfx::Vector2dF(10, 20), overflow->CurrentScrollOffset());
1034 } 1043 }
1035 1044
1036 TEST_F(LayerTreeHostImplTest, ImplPinchZoom) { 1045 TEST_F(LayerTreeHostImplTest, ImplPinchZoom) {
(...skipping 10 matching lines...) Expand all
1047 1056
1048 // The impl-based pinch zoom should adjust the max scroll position. 1057 // The impl-based pinch zoom should adjust the max scroll position.
1049 { 1058 {
1050 host_impl_->active_tree()->PushPageScaleFromMainThread( 1059 host_impl_->active_tree()->PushPageScaleFromMainThread(
1051 page_scale_factor, min_page_scale, max_page_scale); 1060 page_scale_factor, min_page_scale, max_page_scale);
1052 host_impl_->SetPageScaleOnActiveTree(page_scale_factor); 1061 host_impl_->SetPageScaleOnActiveTree(page_scale_factor);
1053 scroll_layer->SetScrollDelta(gfx::Vector2d()); 1062 scroll_layer->SetScrollDelta(gfx::Vector2d());
1054 1063
1055 float page_scale_delta = 2.f; 1064 float page_scale_delta = 2.f;
1056 1065
1057 host_impl_->ScrollBegin(gfx::Point(50, 50), InputHandler::GESTURE); 1066 host_impl_->ScrollBegin(gfx::Point(50, 50), InputHandler::Gesture);
1058 host_impl_->PinchGestureBegin(); 1067 host_impl_->PinchGestureBegin();
1059 host_impl_->PinchGestureUpdate(page_scale_delta, gfx::Point(50, 50)); 1068 host_impl_->PinchGestureUpdate(page_scale_delta, gfx::Point(50, 50));
1060 host_impl_->PinchGestureEnd(); 1069 host_impl_->PinchGestureEnd();
1061 host_impl_->ScrollEnd(); 1070 host_impl_->ScrollEnd();
1062 EXPECT_FALSE(did_request_animate_); 1071 EXPECT_FALSE(did_request_animate_);
1063 EXPECT_TRUE(did_request_redraw_); 1072 EXPECT_TRUE(did_request_redraw_);
1064 EXPECT_TRUE(did_request_commit_); 1073 EXPECT_TRUE(did_request_commit_);
1065 EXPECT_EQ(gfx::Size(50, 50), container_layer->bounds()); 1074 EXPECT_EQ(gfx::Size(50, 50), container_layer->bounds());
1066 1075
1067 scoped_ptr<ScrollAndScaleSet> scroll_info = 1076 scoped_ptr<ScrollAndScaleSet> scroll_info =
1068 host_impl_->ProcessScrollDeltas(); 1077 host_impl_->ProcessScrollDeltas();
1069 EXPECT_EQ(scroll_info->page_scale_delta, page_scale_delta); 1078 EXPECT_EQ(scroll_info->page_scale_delta, page_scale_delta);
1070 1079
1071 EXPECT_EQ(gfx::ScrollOffset(75.0, 75.0).ToString(), 1080 EXPECT_EQ(gfx::ScrollOffset(75.0, 75.0).ToString(),
1072 scroll_layer->MaxScrollOffset().ToString()); 1081 scroll_layer->MaxScrollOffset().ToString());
1073 } 1082 }
1074 1083
1075 // Scrolling after a pinch gesture should always be in local space. The 1084 // Scrolling after a pinch gesture should always be in local space. The
1076 // scroll deltas have the page scale factor applied. 1085 // scroll deltas have the page scale factor applied.
1077 { 1086 {
1078 host_impl_->active_tree()->PushPageScaleFromMainThread( 1087 host_impl_->active_tree()->PushPageScaleFromMainThread(
1079 page_scale_factor, min_page_scale, max_page_scale); 1088 page_scale_factor, min_page_scale, max_page_scale);
1080 host_impl_->SetPageScaleOnActiveTree(page_scale_factor); 1089 host_impl_->SetPageScaleOnActiveTree(page_scale_factor);
1081 scroll_layer->SetScrollDelta(gfx::Vector2d()); 1090 scroll_layer->SetScrollDelta(gfx::Vector2d());
1082 1091
1083 float page_scale_delta = 2.f; 1092 float page_scale_delta = 2.f;
1084 host_impl_->ScrollBegin(gfx::Point(), InputHandler::GESTURE); 1093 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture);
1085 host_impl_->PinchGestureBegin(); 1094 host_impl_->PinchGestureBegin();
1086 host_impl_->PinchGestureUpdate(page_scale_delta, gfx::Point()); 1095 host_impl_->PinchGestureUpdate(page_scale_delta, gfx::Point());
1087 host_impl_->PinchGestureEnd(); 1096 host_impl_->PinchGestureEnd();
1088 host_impl_->ScrollEnd(); 1097 host_impl_->ScrollEnd();
1089 1098
1090 gfx::Vector2d scroll_delta(0, 10); 1099 gfx::Vector2d scroll_delta(0, 10);
1091 EXPECT_EQ(InputHandler::SCROLL_STARTED, 1100 EXPECT_EQ(InputHandler::ScrollStarted,
1092 host_impl_->ScrollBegin(gfx::Point(5, 5), InputHandler::WHEEL)); 1101 host_impl_->ScrollBegin(gfx::Point(5, 5),
1102 InputHandler::Wheel));
1093 host_impl_->ScrollBy(gfx::Point(), scroll_delta); 1103 host_impl_->ScrollBy(gfx::Point(), scroll_delta);
1094 host_impl_->ScrollEnd(); 1104 host_impl_->ScrollEnd();
1095 1105
1096 scoped_ptr<ScrollAndScaleSet> scroll_info = 1106 scoped_ptr<ScrollAndScaleSet> scroll_info =
1097 host_impl_->ProcessScrollDeltas(); 1107 host_impl_->ProcessScrollDeltas();
1098 ExpectContains(*scroll_info.get(), scroll_layer->id(), 1108 ExpectContains(*scroll_info.get(), scroll_layer->id(),
1099 gfx::Vector2d(0, scroll_delta.y() / page_scale_delta)); 1109 gfx::Vector2d(0, scroll_delta.y() / page_scale_delta));
1100 } 1110 }
1101 } 1111 }
1102 1112
1103 TEST_F(LayerTreeHostImplTest, ScrollWithSwapPromises) { 1113 TEST_F(LayerTreeHostImplTest, ScrollWithSwapPromises) {
1104 ui::LatencyInfo latency_info; 1114 ui::LatencyInfo latency_info;
1105 latency_info.trace_id = 1234; 1115 latency_info.trace_id = 1234;
1106 scoped_ptr<SwapPromise> swap_promise( 1116 scoped_ptr<SwapPromise> swap_promise(
1107 new LatencyInfoSwapPromise(latency_info)); 1117 new LatencyInfoSwapPromise(latency_info));
1108 1118
1109 SetupScrollAndContentsLayers(gfx::Size(100, 100)); 1119 SetupScrollAndContentsLayers(gfx::Size(100, 100));
1110 EXPECT_EQ(InputHandler::SCROLL_STARTED, 1120 EXPECT_EQ(InputHandler::ScrollStarted,
1111 host_impl_->ScrollBegin(gfx::Point(), InputHandler::GESTURE)); 1121 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture));
1112 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 10)); 1122 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 10));
1113 host_impl_->QueueSwapPromiseForMainThreadScrollUpdate(swap_promise.Pass()); 1123 host_impl_->QueueSwapPromiseForMainThreadScrollUpdate(swap_promise.Pass());
1114 host_impl_->ScrollEnd(); 1124 host_impl_->ScrollEnd();
1115 1125
1116 scoped_ptr<ScrollAndScaleSet> scroll_info = host_impl_->ProcessScrollDeltas(); 1126 scoped_ptr<ScrollAndScaleSet> scroll_info = host_impl_->ProcessScrollDeltas();
1117 EXPECT_EQ(1u, scroll_info->swap_promises.size()); 1127 EXPECT_EQ(1u, scroll_info->swap_promises.size());
1118 EXPECT_EQ(latency_info.trace_id, scroll_info->swap_promises[0]->TraceId()); 1128 EXPECT_EQ(latency_info.trace_id, scroll_info->swap_promises[0]->TraceId());
1119 } 1129 }
1120 1130
1121 TEST_F(LayerTreeHostImplTest, PinchGesture) { 1131 TEST_F(LayerTreeHostImplTest, PinchGesture) {
1122 SetupScrollAndContentsLayers(gfx::Size(100, 100)); 1132 SetupScrollAndContentsLayers(gfx::Size(100, 100));
1123 host_impl_->SetViewportSize(gfx::Size(50, 50)); 1133 host_impl_->SetViewportSize(gfx::Size(50, 50));
1124 DrawFrame(); 1134 DrawFrame();
1125 1135
1126 LayerImpl* scroll_layer = host_impl_->InnerViewportScrollLayer(); 1136 LayerImpl* scroll_layer = host_impl_->InnerViewportScrollLayer();
1127 DCHECK(scroll_layer); 1137 DCHECK(scroll_layer);
1128 1138
1129 float min_page_scale = 1.f; 1139 float min_page_scale = 1.f;
1130 float max_page_scale = 4.f; 1140 float max_page_scale = 4.f;
1131 1141
1132 // Basic pinch zoom in gesture 1142 // Basic pinch zoom in gesture
1133 { 1143 {
1134 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, min_page_scale, 1144 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, min_page_scale,
1135 max_page_scale); 1145 max_page_scale);
1136 scroll_layer->SetScrollDelta(gfx::Vector2d()); 1146 scroll_layer->SetScrollDelta(gfx::Vector2d());
1137 1147
1138 float page_scale_delta = 2.f; 1148 float page_scale_delta = 2.f;
1139 host_impl_->ScrollBegin(gfx::Point(50, 50), InputHandler::GESTURE); 1149 host_impl_->ScrollBegin(gfx::Point(50, 50), InputHandler::Gesture);
1140 host_impl_->PinchGestureBegin(); 1150 host_impl_->PinchGestureBegin();
1141 host_impl_->PinchGestureUpdate(page_scale_delta, gfx::Point(50, 50)); 1151 host_impl_->PinchGestureUpdate(page_scale_delta, gfx::Point(50, 50));
1142 host_impl_->PinchGestureEnd(); 1152 host_impl_->PinchGestureEnd();
1143 host_impl_->ScrollEnd(); 1153 host_impl_->ScrollEnd();
1144 EXPECT_FALSE(did_request_animate_); 1154 EXPECT_FALSE(did_request_animate_);
1145 EXPECT_TRUE(did_request_redraw_); 1155 EXPECT_TRUE(did_request_redraw_);
1146 EXPECT_TRUE(did_request_commit_); 1156 EXPECT_TRUE(did_request_commit_);
1147 1157
1148 scoped_ptr<ScrollAndScaleSet> scroll_info = 1158 scoped_ptr<ScrollAndScaleSet> scroll_info =
1149 host_impl_->ProcessScrollDeltas(); 1159 host_impl_->ProcessScrollDeltas();
1150 EXPECT_EQ(scroll_info->page_scale_delta, page_scale_delta); 1160 EXPECT_EQ(scroll_info->page_scale_delta, page_scale_delta);
1151 } 1161 }
1152 1162
1153 // Zoom-in clamping 1163 // Zoom-in clamping
1154 { 1164 {
1155 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, min_page_scale, 1165 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, min_page_scale,
1156 max_page_scale); 1166 max_page_scale);
1157 scroll_layer->SetScrollDelta(gfx::Vector2d()); 1167 scroll_layer->SetScrollDelta(gfx::Vector2d());
1158 float page_scale_delta = 10.f; 1168 float page_scale_delta = 10.f;
1159 1169
1160 host_impl_->ScrollBegin(gfx::Point(50, 50), InputHandler::GESTURE); 1170 host_impl_->ScrollBegin(gfx::Point(50, 50), InputHandler::Gesture);
1161 host_impl_->PinchGestureBegin(); 1171 host_impl_->PinchGestureBegin();
1162 host_impl_->PinchGestureUpdate(page_scale_delta, gfx::Point(50, 50)); 1172 host_impl_->PinchGestureUpdate(page_scale_delta, gfx::Point(50, 50));
1163 host_impl_->PinchGestureEnd(); 1173 host_impl_->PinchGestureEnd();
1164 host_impl_->ScrollEnd(); 1174 host_impl_->ScrollEnd();
1165 1175
1166 scoped_ptr<ScrollAndScaleSet> scroll_info = 1176 scoped_ptr<ScrollAndScaleSet> scroll_info =
1167 host_impl_->ProcessScrollDeltas(); 1177 host_impl_->ProcessScrollDeltas();
1168 EXPECT_EQ(scroll_info->page_scale_delta, max_page_scale); 1178 EXPECT_EQ(scroll_info->page_scale_delta, max_page_scale);
1169 } 1179 }
1170 1180
1171 // Zoom-out clamping 1181 // Zoom-out clamping
1172 { 1182 {
1173 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, min_page_scale, 1183 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, min_page_scale,
1174 max_page_scale); 1184 max_page_scale);
1175 scroll_layer->SetScrollDelta(gfx::Vector2d()); 1185 scroll_layer->SetScrollDelta(gfx::Vector2d());
1176 scroll_layer->PullDeltaForMainThread(); 1186 scroll_layer->PullDeltaForMainThread();
1177 scroll_layer->PushScrollOffsetFromMainThread(gfx::ScrollOffset(50, 50)); 1187 scroll_layer->PushScrollOffsetFromMainThread(gfx::ScrollOffset(50, 50));
1178 1188
1179 float page_scale_delta = 0.1f; 1189 float page_scale_delta = 0.1f;
1180 host_impl_->ScrollBegin(gfx::Point(), InputHandler::GESTURE); 1190 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture);
1181 host_impl_->PinchGestureBegin(); 1191 host_impl_->PinchGestureBegin();
1182 host_impl_->PinchGestureUpdate(page_scale_delta, gfx::Point()); 1192 host_impl_->PinchGestureUpdate(page_scale_delta, gfx::Point());
1183 host_impl_->PinchGestureEnd(); 1193 host_impl_->PinchGestureEnd();
1184 host_impl_->ScrollEnd(); 1194 host_impl_->ScrollEnd();
1185 1195
1186 scoped_ptr<ScrollAndScaleSet> scroll_info = 1196 scoped_ptr<ScrollAndScaleSet> scroll_info =
1187 host_impl_->ProcessScrollDeltas(); 1197 host_impl_->ProcessScrollDeltas();
1188 EXPECT_EQ(scroll_info->page_scale_delta, min_page_scale); 1198 EXPECT_EQ(scroll_info->page_scale_delta, min_page_scale);
1189 1199
1190 EXPECT_TRUE(scroll_info->scrolls.empty()); 1200 EXPECT_TRUE(scroll_info->scrolls.empty());
1191 } 1201 }
1192 1202
1193 // Two-finger panning should not happen based on pinch events only 1203 // Two-finger panning should not happen based on pinch events only
1194 { 1204 {
1195 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, min_page_scale, 1205 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, min_page_scale,
1196 max_page_scale); 1206 max_page_scale);
1197 scroll_layer->SetScrollDelta(gfx::Vector2d()); 1207 scroll_layer->SetScrollDelta(gfx::Vector2d());
1198 scroll_layer->PullDeltaForMainThread(); 1208 scroll_layer->PullDeltaForMainThread();
1199 scroll_layer->PushScrollOffsetFromMainThread(gfx::ScrollOffset(20, 20)); 1209 scroll_layer->PushScrollOffsetFromMainThread(gfx::ScrollOffset(20, 20));
1200 1210
1201 float page_scale_delta = 1.f; 1211 float page_scale_delta = 1.f;
1202 host_impl_->ScrollBegin(gfx::Point(10, 10), InputHandler::GESTURE); 1212 host_impl_->ScrollBegin(gfx::Point(10, 10), InputHandler::Gesture);
1203 host_impl_->PinchGestureBegin(); 1213 host_impl_->PinchGestureBegin();
1204 host_impl_->PinchGestureUpdate(page_scale_delta, gfx::Point(10, 10)); 1214 host_impl_->PinchGestureUpdate(page_scale_delta, gfx::Point(10, 10));
1205 host_impl_->PinchGestureUpdate(page_scale_delta, gfx::Point(20, 20)); 1215 host_impl_->PinchGestureUpdate(page_scale_delta, gfx::Point(20, 20));
1206 host_impl_->PinchGestureEnd(); 1216 host_impl_->PinchGestureEnd();
1207 host_impl_->ScrollEnd(); 1217 host_impl_->ScrollEnd();
1208 1218
1209 scoped_ptr<ScrollAndScaleSet> scroll_info = 1219 scoped_ptr<ScrollAndScaleSet> scroll_info =
1210 host_impl_->ProcessScrollDeltas(); 1220 host_impl_->ProcessScrollDeltas();
1211 EXPECT_EQ(scroll_info->page_scale_delta, page_scale_delta); 1221 EXPECT_EQ(scroll_info->page_scale_delta, page_scale_delta);
1212 EXPECT_TRUE(scroll_info->scrolls.empty()); 1222 EXPECT_TRUE(scroll_info->scrolls.empty());
1213 } 1223 }
1214 1224
1215 // Two-finger panning should work with interleaved scroll events 1225 // Two-finger panning should work with interleaved scroll events
1216 { 1226 {
1217 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, min_page_scale, 1227 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, min_page_scale,
1218 max_page_scale); 1228 max_page_scale);
1219 scroll_layer->SetScrollDelta(gfx::Vector2d()); 1229 scroll_layer->SetScrollDelta(gfx::Vector2d());
1220 scroll_layer->PullDeltaForMainThread(); 1230 scroll_layer->PullDeltaForMainThread();
1221 scroll_layer->PushScrollOffsetFromMainThread(gfx::ScrollOffset(20, 20)); 1231 scroll_layer->PushScrollOffsetFromMainThread(gfx::ScrollOffset(20, 20));
1222 1232
1223 float page_scale_delta = 1.f; 1233 float page_scale_delta = 1.f;
1224 host_impl_->ScrollBegin(gfx::Point(10, 10), InputHandler::GESTURE); 1234 host_impl_->ScrollBegin(gfx::Point(10, 10), InputHandler::Gesture);
1225 host_impl_->PinchGestureBegin(); 1235 host_impl_->PinchGestureBegin();
1226 host_impl_->PinchGestureUpdate(page_scale_delta, gfx::Point(10, 10)); 1236 host_impl_->PinchGestureUpdate(page_scale_delta, gfx::Point(10, 10));
1227 host_impl_->ScrollBy(gfx::Point(10, 10), gfx::Vector2d(-10, -10)); 1237 host_impl_->ScrollBy(gfx::Point(10, 10), gfx::Vector2d(-10, -10));
1228 host_impl_->PinchGestureUpdate(page_scale_delta, gfx::Point(20, 20)); 1238 host_impl_->PinchGestureUpdate(page_scale_delta, gfx::Point(20, 20));
1229 host_impl_->PinchGestureEnd(); 1239 host_impl_->PinchGestureEnd();
1230 host_impl_->ScrollEnd(); 1240 host_impl_->ScrollEnd();
1231 1241
1232 scoped_ptr<ScrollAndScaleSet> scroll_info = 1242 scoped_ptr<ScrollAndScaleSet> scroll_info =
1233 host_impl_->ProcessScrollDeltas(); 1243 host_impl_->ProcessScrollDeltas();
1234 EXPECT_EQ(scroll_info->page_scale_delta, page_scale_delta); 1244 EXPECT_EQ(scroll_info->page_scale_delta, page_scale_delta);
1235 ExpectContains(*scroll_info, scroll_layer->id(), gfx::Vector2d(-10, -10)); 1245 ExpectContains(*scroll_info, scroll_layer->id(), gfx::Vector2d(-10, -10));
1236 } 1246 }
1237 1247
1238 // Two-finger panning should work when starting fully zoomed out. 1248 // Two-finger panning should work when starting fully zoomed out.
1239 { 1249 {
1240 host_impl_->active_tree()->PushPageScaleFromMainThread(0.5f, 0.5f, 4.f); 1250 host_impl_->active_tree()->PushPageScaleFromMainThread(0.5f, 0.5f, 4.f);
1241 scroll_layer->SetScrollDelta(gfx::Vector2d()); 1251 scroll_layer->SetScrollDelta(gfx::Vector2d());
1242 scroll_layer->PullDeltaForMainThread(); 1252 scroll_layer->PullDeltaForMainThread();
1243 scroll_layer->PushScrollOffsetFromMainThread(gfx::ScrollOffset(0, 0)); 1253 scroll_layer->PushScrollOffsetFromMainThread(gfx::ScrollOffset(0, 0));
1244 1254
1245 host_impl_->ScrollBegin(gfx::Point(0, 0), InputHandler::GESTURE); 1255 host_impl_->ScrollBegin(gfx::Point(0, 0), InputHandler::Gesture);
1246 host_impl_->PinchGestureBegin(); 1256 host_impl_->PinchGestureBegin();
1247 host_impl_->PinchGestureUpdate(2.f, gfx::Point(0, 0)); 1257 host_impl_->PinchGestureUpdate(2.f, gfx::Point(0, 0));
1248 host_impl_->PinchGestureUpdate(1.f, gfx::Point(0, 0)); 1258 host_impl_->PinchGestureUpdate(1.f, gfx::Point(0, 0));
1249 host_impl_->ScrollBy(gfx::Point(0, 0), gfx::Vector2d(10, 10)); 1259 host_impl_->ScrollBy(gfx::Point(0, 0), gfx::Vector2d(10, 10));
1250 host_impl_->PinchGestureUpdate(1.f, gfx::Point(10, 10)); 1260 host_impl_->PinchGestureUpdate(1.f, gfx::Point(10, 10));
1251 host_impl_->PinchGestureEnd(); 1261 host_impl_->PinchGestureEnd();
1252 host_impl_->ScrollEnd(); 1262 host_impl_->ScrollEnd();
1253 1263
1254 scoped_ptr<ScrollAndScaleSet> scroll_info = 1264 scoped_ptr<ScrollAndScaleSet> scroll_info =
1255 host_impl_->ProcessScrollDeltas(); 1265 host_impl_->ProcessScrollDeltas();
(...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after
1601 root->AddChild(scrollbar.Pass()); \ 1611 root->AddChild(scrollbar.Pass()); \
1602 \ 1612 \
1603 host_impl_->active_tree()->SetRootLayer(root.Pass()); \ 1613 host_impl_->active_tree()->SetRootLayer(root.Pass()); \
1604 host_impl_->active_tree()->SetViewportLayersFromIds(Layer::INVALID_ID, 1, 2, \ 1614 host_impl_->active_tree()->SetViewportLayersFromIds(Layer::INVALID_ID, 1, 2, \
1605 Layer::INVALID_ID); \ 1615 Layer::INVALID_ID); \
1606 host_impl_->active_tree()->DidBecomeActive(); \ 1616 host_impl_->active_tree()->DidBecomeActive(); \
1607 DrawFrame(); 1617 DrawFrame();
1608 1618
1609 TEST_F(LayerTreeHostImplTest, ScrollbarLinearFadeScheduling) { 1619 TEST_F(LayerTreeHostImplTest, ScrollbarLinearFadeScheduling) {
1610 LayerTreeSettings settings; 1620 LayerTreeSettings settings;
1611 settings.scrollbar_animator = LayerTreeSettings::LINEAR_FADE; 1621 settings.scrollbar_animator = LayerTreeSettings::LinearFade;
1612 settings.scrollbar_fade_delay_ms = 20; 1622 settings.scrollbar_fade_delay_ms = 20;
1613 settings.scrollbar_fade_duration_ms = 20; 1623 settings.scrollbar_fade_duration_ms = 20;
1614 1624
1615 SETUP_LAYERS_FOR_SCROLLBAR_ANIMATION_TEST(); 1625 SETUP_LAYERS_FOR_SCROLLBAR_ANIMATION_TEST();
1616 1626
1617 base::TimeTicks fake_now = gfx::FrameTime::Now(); 1627 base::TimeTicks fake_now = gfx::FrameTime::Now();
1618 1628
1619 EXPECT_EQ(base::TimeDelta(), requested_scrollbar_animation_delay_); 1629 EXPECT_EQ(base::TimeDelta(), requested_scrollbar_animation_delay_);
1620 EXPECT_FALSE(did_request_redraw_); 1630 EXPECT_FALSE(did_request_redraw_);
1621 1631
1622 // If no scroll happened during a scroll gesture, it should have no effect. 1632 // If no scroll happened during a scroll gesture, it should have no effect.
1623 host_impl_->ScrollBegin(gfx::Point(), InputHandler::WHEEL); 1633 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Wheel);
1624 host_impl_->ScrollEnd(); 1634 host_impl_->ScrollEnd();
1625 EXPECT_EQ(base::TimeDelta(), requested_scrollbar_animation_delay_); 1635 EXPECT_EQ(base::TimeDelta(), requested_scrollbar_animation_delay_);
1626 EXPECT_FALSE(did_request_redraw_); 1636 EXPECT_FALSE(did_request_redraw_);
1627 EXPECT_TRUE(scrollbar_fade_start_.Equals(base::Closure())); 1637 EXPECT_TRUE(scrollbar_fade_start_.Equals(base::Closure()));
1628 1638
1629 // After a scroll, a fade animation should be scheduled about 20ms from now. 1639 // After a scroll, a fade animation should be scheduled about 20ms from now.
1630 host_impl_->ScrollBegin(gfx::Point(), InputHandler::WHEEL); 1640 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Wheel);
1631 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2dF(0, 5)); 1641 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2dF(0, 5));
1632 host_impl_->ScrollEnd(); 1642 host_impl_->ScrollEnd();
1633 did_request_redraw_ = false; 1643 did_request_redraw_ = false;
1634 did_request_animate_ = false; 1644 did_request_animate_ = false;
1635 EXPECT_LT(base::TimeDelta::FromMilliseconds(19), 1645 EXPECT_LT(base::TimeDelta::FromMilliseconds(19),
1636 requested_scrollbar_animation_delay_); 1646 requested_scrollbar_animation_delay_);
1637 EXPECT_FALSE(did_request_redraw_); 1647 EXPECT_FALSE(did_request_redraw_);
1638 EXPECT_FALSE(did_request_animate_); 1648 EXPECT_FALSE(did_request_animate_);
1639 requested_scrollbar_animation_delay_ = base::TimeDelta(); 1649 requested_scrollbar_animation_delay_ = base::TimeDelta();
1640 scrollbar_fade_start_.Run(); 1650 scrollbar_fade_start_.Run();
(...skipping 10 matching lines...) Expand all
1651 // to appear and to schedule a fade. 1661 // to appear and to schedule a fade.
1652 host_impl_->InnerViewportScrollLayer()->PushScrollOffsetFromMainThread( 1662 host_impl_->InnerViewportScrollLayer()->PushScrollOffsetFromMainThread(
1653 gfx::ScrollOffset(5, 5)); 1663 gfx::ScrollOffset(5, 5));
1654 EXPECT_LT(base::TimeDelta::FromMilliseconds(19), 1664 EXPECT_LT(base::TimeDelta::FromMilliseconds(19),
1655 requested_scrollbar_animation_delay_); 1665 requested_scrollbar_animation_delay_);
1656 EXPECT_FALSE(did_request_redraw_); 1666 EXPECT_FALSE(did_request_redraw_);
1657 EXPECT_FALSE(did_request_animate_); 1667 EXPECT_FALSE(did_request_animate_);
1658 requested_scrollbar_animation_delay_ = base::TimeDelta(); 1668 requested_scrollbar_animation_delay_ = base::TimeDelta();
1659 1669
1660 // Unnecessarily Fade animation of solid color scrollbar is not triggered. 1670 // Unnecessarily Fade animation of solid color scrollbar is not triggered.
1661 host_impl_->ScrollBegin(gfx::Point(), InputHandler::WHEEL); 1671 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Wheel);
1662 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2dF(5, 0)); 1672 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2dF(5, 0));
1663 host_impl_->ScrollEnd(); 1673 host_impl_->ScrollEnd();
1664 EXPECT_EQ(base::TimeDelta(), requested_scrollbar_animation_delay_); 1674 EXPECT_EQ(base::TimeDelta(), requested_scrollbar_animation_delay_);
1665 } 1675 }
1666 1676
1667 TEST_F(LayerTreeHostImplTest, ScrollbarFadePinchZoomScrollbars) { 1677 TEST_F(LayerTreeHostImplTest, ScrollbarFadePinchZoomScrollbars) {
1668 LayerTreeSettings settings; 1678 LayerTreeSettings settings;
1669 settings.scrollbar_animator = LayerTreeSettings::LINEAR_FADE; 1679 settings.scrollbar_animator = LayerTreeSettings::LinearFade;
1670 settings.scrollbar_fade_delay_ms = 20; 1680 settings.scrollbar_fade_delay_ms = 20;
1671 settings.scrollbar_fade_duration_ms = 20; 1681 settings.scrollbar_fade_duration_ms = 20;
1672 settings.use_pinch_zoom_scrollbars = true; 1682 settings.use_pinch_zoom_scrollbars = true;
1673 1683
1674 SETUP_LAYERS_FOR_SCROLLBAR_ANIMATION_TEST(); 1684 SETUP_LAYERS_FOR_SCROLLBAR_ANIMATION_TEST();
1675 1685
1676 base::TimeTicks fake_now = gfx::FrameTime::Now(); 1686 base::TimeTicks fake_now = gfx::FrameTime::Now();
1677 1687
1678 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, 1.f, 4.f); 1688 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, 1.f, 4.f);
1679 1689
1680 EXPECT_EQ(base::TimeDelta(), requested_scrollbar_animation_delay_); 1690 EXPECT_EQ(base::TimeDelta(), requested_scrollbar_animation_delay_);
1681 EXPECT_FALSE(did_request_animate_); 1691 EXPECT_FALSE(did_request_animate_);
1682 1692
1683 // If no scroll happened during a scroll gesture, it should have no effect. 1693 // If no scroll happened during a scroll gesture, it should have no effect.
1684 host_impl_->ScrollBegin(gfx::Point(), InputHandler::WHEEL); 1694 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Wheel);
1685 host_impl_->ScrollEnd(); 1695 host_impl_->ScrollEnd();
1686 EXPECT_EQ(base::TimeDelta(), requested_scrollbar_animation_delay_); 1696 EXPECT_EQ(base::TimeDelta(), requested_scrollbar_animation_delay_);
1687 EXPECT_FALSE(did_request_animate_); 1697 EXPECT_FALSE(did_request_animate_);
1688 EXPECT_TRUE(scrollbar_fade_start_.Equals(base::Closure())); 1698 EXPECT_TRUE(scrollbar_fade_start_.Equals(base::Closure()));
1689 1699
1690 // After a scroll, no fade animation should be scheduled. 1700 // After a scroll, no fade animation should be scheduled.
1691 host_impl_->ScrollBegin(gfx::Point(), InputHandler::WHEEL); 1701 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Wheel);
1692 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2dF(5, 0)); 1702 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2dF(5, 0));
1693 host_impl_->ScrollEnd(); 1703 host_impl_->ScrollEnd();
1694 did_request_redraw_ = false; 1704 did_request_redraw_ = false;
1695 EXPECT_EQ(base::TimeDelta(), requested_scrollbar_animation_delay_); 1705 EXPECT_EQ(base::TimeDelta(), requested_scrollbar_animation_delay_);
1696 EXPECT_FALSE(did_request_animate_); 1706 EXPECT_FALSE(did_request_animate_);
1697 requested_scrollbar_animation_delay_ = base::TimeDelta(); 1707 requested_scrollbar_animation_delay_ = base::TimeDelta();
1698 1708
1699 // We should not see any draw requests. 1709 // We should not see any draw requests.
1700 fake_now += base::TimeDelta::FromMilliseconds(25); 1710 fake_now += base::TimeDelta::FromMilliseconds(25);
1701 EXPECT_EQ(base::TimeDelta(), requested_scrollbar_animation_delay_); 1711 EXPECT_EQ(base::TimeDelta(), requested_scrollbar_animation_delay_);
1702 EXPECT_FALSE(did_request_animate_); 1712 EXPECT_FALSE(did_request_animate_);
1703 1713
1704 // Make page scale > min so that subsequent scrolls will trigger fades. 1714 // Make page scale > min so that subsequent scrolls will trigger fades.
1705 host_impl_->SetPageScaleOnActiveTree(1.1f); 1715 host_impl_->SetPageScaleOnActiveTree(1.1f);
1706 1716
1707 // After a scroll, a fade animation should be scheduled about 20ms from now. 1717 // After a scroll, a fade animation should be scheduled about 20ms from now.
1708 host_impl_->ScrollBegin(gfx::Point(), InputHandler::WHEEL); 1718 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Wheel);
1709 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2dF(5, 0)); 1719 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2dF(5, 0));
1710 host_impl_->ScrollEnd(); 1720 host_impl_->ScrollEnd();
1711 did_request_redraw_ = false; 1721 did_request_redraw_ = false;
1712 EXPECT_LT(base::TimeDelta::FromMilliseconds(19), 1722 EXPECT_LT(base::TimeDelta::FromMilliseconds(19),
1713 requested_scrollbar_animation_delay_); 1723 requested_scrollbar_animation_delay_);
1714 EXPECT_FALSE(did_request_animate_); 1724 EXPECT_FALSE(did_request_animate_);
1715 requested_scrollbar_animation_delay_ = base::TimeDelta(); 1725 requested_scrollbar_animation_delay_ = base::TimeDelta();
1716 scrollbar_fade_start_.Run(); 1726 scrollbar_fade_start_.Run();
1717 1727
1718 // After the fade begins, we should start getting redraws instead of a 1728 // After the fade begins, we should start getting redraws instead of a
1719 // scheduled animation. 1729 // scheduled animation.
1720 fake_now += base::TimeDelta::FromMilliseconds(25); 1730 fake_now += base::TimeDelta::FromMilliseconds(25);
1721 host_impl_->Animate(fake_now); 1731 host_impl_->Animate(fake_now);
1722 EXPECT_TRUE(did_request_animate_); 1732 EXPECT_TRUE(did_request_animate_);
1723 } 1733 }
1724 1734
1725 void LayerTreeHostImplTest::SetupMouseMoveAtWithDeviceScale( 1735 void LayerTreeHostImplTest::SetupMouseMoveAtWithDeviceScale(
1726 float device_scale_factor) { 1736 float device_scale_factor) {
1727 LayerTreeSettings settings; 1737 LayerTreeSettings settings;
1728 settings.scrollbar_fade_delay_ms = 500; 1738 settings.scrollbar_fade_delay_ms = 500;
1729 settings.scrollbar_fade_duration_ms = 300; 1739 settings.scrollbar_fade_duration_ms = 300;
1730 settings.scrollbar_animator = LayerTreeSettings::THINNING; 1740 settings.scrollbar_animator = LayerTreeSettings::Thinning;
1731 1741
1732 gfx::Size viewport_size(300, 200); 1742 gfx::Size viewport_size(300, 200);
1733 gfx::Size device_viewport_size = gfx::ToFlooredSize( 1743 gfx::Size device_viewport_size = gfx::ToFlooredSize(
1734 gfx::ScaleSize(viewport_size, device_scale_factor)); 1744 gfx::ScaleSize(viewport_size, device_scale_factor));
1735 gfx::Size content_size(1000, 1000); 1745 gfx::Size content_size(1000, 1000);
1736 1746
1737 CreateHostImpl(settings, CreateOutputSurface()); 1747 CreateHostImpl(settings, CreateOutputSurface());
1738 host_impl_->SetDeviceScaleFactor(device_scale_factor); 1748 host_impl_->SetDeviceScaleFactor(device_scale_factor);
1739 host_impl_->SetViewportSize(device_viewport_size); 1749 host_impl_->SetViewportSize(device_viewport_size);
1740 1750
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
1827 EXPECT_EQ(1.f, metadata.page_scale_factor); 1837 EXPECT_EQ(1.f, metadata.page_scale_factor);
1828 EXPECT_EQ(gfx::SizeF(50.f, 50.f), metadata.scrollable_viewport_size); 1838 EXPECT_EQ(gfx::SizeF(50.f, 50.f), metadata.scrollable_viewport_size);
1829 EXPECT_EQ(gfx::SizeF(100.f, 100.f), metadata.root_layer_size); 1839 EXPECT_EQ(gfx::SizeF(100.f, 100.f), metadata.root_layer_size);
1830 EXPECT_EQ(0.5f, metadata.min_page_scale_factor); 1840 EXPECT_EQ(0.5f, metadata.min_page_scale_factor);
1831 EXPECT_EQ(4.f, metadata.max_page_scale_factor); 1841 EXPECT_EQ(4.f, metadata.max_page_scale_factor);
1832 EXPECT_FALSE(metadata.root_overflow_x_hidden); 1842 EXPECT_FALSE(metadata.root_overflow_x_hidden);
1833 EXPECT_FALSE(metadata.root_overflow_y_hidden); 1843 EXPECT_FALSE(metadata.root_overflow_y_hidden);
1834 } 1844 }
1835 1845
1836 // Scrolling should update metadata immediately. 1846 // Scrolling should update metadata immediately.
1837 EXPECT_EQ(InputHandler::SCROLL_STARTED, 1847 EXPECT_EQ(InputHandler::ScrollStarted,
1838 host_impl_->ScrollBegin(gfx::Point(), InputHandler::WHEEL)); 1848 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Wheel));
1839 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 10)); 1849 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 10));
1840 { 1850 {
1841 CompositorFrameMetadata metadata = 1851 CompositorFrameMetadata metadata =
1842 host_impl_->MakeCompositorFrameMetadata(); 1852 host_impl_->MakeCompositorFrameMetadata();
1843 EXPECT_EQ(gfx::Vector2dF(0.f, 10.f), metadata.root_scroll_offset); 1853 EXPECT_EQ(gfx::Vector2dF(0.f, 10.f), metadata.root_scroll_offset);
1844 } 1854 }
1845 host_impl_->ScrollEnd(); 1855 host_impl_->ScrollEnd();
1846 { 1856 {
1847 CompositorFrameMetadata metadata = 1857 CompositorFrameMetadata metadata =
1848 host_impl_->MakeCompositorFrameMetadata(); 1858 host_impl_->MakeCompositorFrameMetadata();
(...skipping 12 matching lines...) Expand all
1861 1871
1862 host_impl_->active_tree() 1872 host_impl_->active_tree()
1863 ->InnerViewportScrollLayer() 1873 ->InnerViewportScrollLayer()
1864 ->set_user_scrollable_vertical(false); 1874 ->set_user_scrollable_vertical(false);
1865 metadata = host_impl_->MakeCompositorFrameMetadata(); 1875 metadata = host_impl_->MakeCompositorFrameMetadata();
1866 EXPECT_TRUE(metadata.root_overflow_x_hidden); 1876 EXPECT_TRUE(metadata.root_overflow_x_hidden);
1867 EXPECT_TRUE(metadata.root_overflow_y_hidden); 1877 EXPECT_TRUE(metadata.root_overflow_y_hidden);
1868 } 1878 }
1869 1879
1870 // Page scale should update metadata correctly (shrinking only the viewport). 1880 // Page scale should update metadata correctly (shrinking only the viewport).
1871 host_impl_->ScrollBegin(gfx::Point(), InputHandler::GESTURE); 1881 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture);
1872 host_impl_->PinchGestureBegin(); 1882 host_impl_->PinchGestureBegin();
1873 host_impl_->PinchGestureUpdate(2.f, gfx::Point()); 1883 host_impl_->PinchGestureUpdate(2.f, gfx::Point());
1874 host_impl_->PinchGestureEnd(); 1884 host_impl_->PinchGestureEnd();
1875 host_impl_->ScrollEnd(); 1885 host_impl_->ScrollEnd();
1876 { 1886 {
1877 CompositorFrameMetadata metadata = 1887 CompositorFrameMetadata metadata =
1878 host_impl_->MakeCompositorFrameMetadata(); 1888 host_impl_->MakeCompositorFrameMetadata();
1879 EXPECT_EQ(gfx::Vector2dF(0.f, 10.f), metadata.root_scroll_offset); 1889 EXPECT_EQ(gfx::Vector2dF(0.f, 10.f), metadata.root_scroll_offset);
1880 EXPECT_EQ(2.f, metadata.page_scale_factor); 1890 EXPECT_EQ(2.f, metadata.page_scale_factor);
1881 EXPECT_EQ(gfx::SizeF(25.f, 25.f), metadata.scrollable_viewport_size); 1891 EXPECT_EQ(gfx::SizeF(25.f, 25.f), metadata.scrollable_viewport_size);
(...skipping 545 matching lines...) Expand 10 before | Expand all | Expand 10 after
2427 } 2437 }
2428 2438
2429 TEST_F(LayerTreeHostImplTest, ScrollRootIgnored) { 2439 TEST_F(LayerTreeHostImplTest, ScrollRootIgnored) {
2430 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1); 2440 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1);
2431 root->SetScrollClipLayer(Layer::INVALID_ID); 2441 root->SetScrollClipLayer(Layer::INVALID_ID);
2432 root->SetHasRenderSurface(true); 2442 root->SetHasRenderSurface(true);
2433 host_impl_->active_tree()->SetRootLayer(root.Pass()); 2443 host_impl_->active_tree()->SetRootLayer(root.Pass());
2434 DrawFrame(); 2444 DrawFrame();
2435 2445
2436 // Scroll event is ignored because layer is not scrollable. 2446 // Scroll event is ignored because layer is not scrollable.
2437 EXPECT_EQ(InputHandler::SCROLL_IGNORED, 2447 EXPECT_EQ(InputHandler::ScrollIgnored,
2438 host_impl_->ScrollBegin(gfx::Point(), InputHandler::WHEEL)); 2448 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Wheel));
2439 EXPECT_FALSE(did_request_redraw_); 2449 EXPECT_FALSE(did_request_redraw_);
2440 EXPECT_FALSE(did_request_commit_); 2450 EXPECT_FALSE(did_request_commit_);
2441 } 2451 }
2442 2452
2443 // TODO(bokan): Convert these tests to create inner and outer viewports. 2453 // TODO(bokan): Convert these tests to create inner and outer viewports.
2444 class LayerTreeHostImplTopControlsTest : public LayerTreeHostImplTest { 2454 class LayerTreeHostImplTopControlsTest : public LayerTreeHostImplTest {
2445 public: 2455 public:
2446 LayerTreeHostImplTopControlsTest() 2456 LayerTreeHostImplTopControlsTest()
2447 // Make the clip size the same as the layer (content) size so the layer is 2457 // Make the clip size the same as the layer (content) size so the layer is
2448 // non-scrollable. 2458 // non-scrollable.
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
2585 float top_controls_height_; 2595 float top_controls_height_;
2586 2596
2587 LayerTreeSettings settings_; 2597 LayerTreeSettings settings_;
2588 }; // class LayerTreeHostImplTopControlsTest 2598 }; // class LayerTreeHostImplTopControlsTest
2589 2599
2590 TEST_F(LayerTreeHostImplTopControlsTest, ScrollTopControlsByFractionalAmount) { 2600 TEST_F(LayerTreeHostImplTopControlsTest, ScrollTopControlsByFractionalAmount) {
2591 SetupTopControlsAndScrollLayerWithVirtualViewport( 2601 SetupTopControlsAndScrollLayerWithVirtualViewport(
2592 gfx::Size(10, 10), gfx::Size(10, 10), gfx::Size(10, 10)); 2602 gfx::Size(10, 10), gfx::Size(10, 10), gfx::Size(10, 10));
2593 DrawFrame(); 2603 DrawFrame();
2594 2604
2595 EXPECT_EQ(InputHandler::SCROLL_STARTED, 2605 EXPECT_EQ(InputHandler::ScrollStarted,
2596 host_impl_->ScrollBegin(gfx::Point(), InputHandler::GESTURE)); 2606 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture));
2597 2607
2598 // Make the test scroll delta a fractional amount, to verify that the 2608 // Make the test scroll delta a fractional amount, to verify that the
2599 // fixed container size delta is (1) non-zero, and (2) fractional, and 2609 // fixed container size delta is (1) non-zero, and (2) fractional, and
2600 // (3) matches the movement of the top controls. 2610 // (3) matches the movement of the top controls.
2601 gfx::Vector2dF top_controls_scroll_delta(0.f, 5.25f); 2611 gfx::Vector2dF top_controls_scroll_delta(0.f, 5.25f);
2602 host_impl_->top_controls_manager()->ScrollBegin(); 2612 host_impl_->top_controls_manager()->ScrollBegin();
2603 host_impl_->top_controls_manager()->ScrollBy(top_controls_scroll_delta); 2613 host_impl_->top_controls_manager()->ScrollBy(top_controls_scroll_delta);
2604 host_impl_->top_controls_manager()->ScrollEnd(); 2614 host_impl_->top_controls_manager()->ScrollEnd();
2605 2615
2606 LayerImpl* inner_viewport_scroll_layer = 2616 LayerImpl* inner_viewport_scroll_layer =
(...skipping 19 matching lines...) Expand all
2626 host_impl_->active_tree()->InnerViewportContainerLayer(); 2636 host_impl_->active_tree()->InnerViewportContainerLayer();
2627 LayerImpl *outer_scroll = 2637 LayerImpl *outer_scroll =
2628 host_impl_->active_tree()->OuterViewportScrollLayer(); 2638 host_impl_->active_tree()->OuterViewportScrollLayer();
2629 LayerImpl *outer_container = 2639 LayerImpl *outer_container =
2630 host_impl_->active_tree()->OuterViewportContainerLayer(); 2640 host_impl_->active_tree()->OuterViewportContainerLayer();
2631 2641
2632 // Need SetDrawsContent so ScrollBegin's hit test finds an actual layer. 2642 // Need SetDrawsContent so ScrollBegin's hit test finds an actual layer.
2633 outer_scroll->SetDrawsContent(true); 2643 outer_scroll->SetDrawsContent(true);
2634 host_impl_->active_tree()->PushPageScaleFromMainThread(2.f, 1.f, 2.f); 2644 host_impl_->active_tree()->PushPageScaleFromMainThread(2.f, 1.f, 2.f);
2635 2645
2636 EXPECT_EQ(InputHandler::SCROLL_STARTED, 2646 EXPECT_EQ(InputHandler::ScrollStarted,
2637 host_impl_->ScrollBegin(gfx::Point(), InputHandler::GESTURE)); 2647 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture));
2638 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2dF(0.f, 50.f)); 2648 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2dF(0.f, 50.f));
2639 2649
2640 // The entire scroll delta should have been used to hide the top controls. 2650 // The entire scroll delta should have been used to hide the top controls.
2641 // The viewport layers should be resized back to their full sizes. 2651 // The viewport layers should be resized back to their full sizes.
2642 EXPECT_EQ(0.f, host_impl_->active_tree()->CurrentTopControlsShownRatio()); 2652 EXPECT_EQ(0.f, host_impl_->active_tree()->CurrentTopControlsShownRatio());
2643 EXPECT_EQ(0.f, inner_scroll->CurrentScrollOffset().y()); 2653 EXPECT_EQ(0.f, inner_scroll->CurrentScrollOffset().y());
2644 EXPECT_EQ(100.f, inner_container->BoundsForScrolling().height()); 2654 EXPECT_EQ(100.f, inner_container->BoundsForScrolling().height());
2645 EXPECT_EQ(100.f, outer_container->BoundsForScrolling().height()); 2655 EXPECT_EQ(100.f, outer_container->BoundsForScrolling().height());
2646 2656
2647 // The inner viewport should be scrollable by 50px * page_scale. 2657 // The inner viewport should be scrollable by 50px * page_scale.
2648 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2dF(0.f, 100.f)); 2658 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2dF(0.f, 100.f));
2649 EXPECT_EQ(50.f, inner_scroll->CurrentScrollOffset().y()); 2659 EXPECT_EQ(50.f, inner_scroll->CurrentScrollOffset().y());
2650 EXPECT_EQ(0.f, outer_scroll->CurrentScrollOffset().y()); 2660 EXPECT_EQ(0.f, outer_scroll->CurrentScrollOffset().y());
2651 EXPECT_EQ(gfx::ScrollOffset(), outer_scroll->MaxScrollOffset()); 2661 EXPECT_EQ(gfx::ScrollOffset(), outer_scroll->MaxScrollOffset());
2652 2662
2653 host_impl_->ScrollEnd(); 2663 host_impl_->ScrollEnd();
2654 2664
2655 EXPECT_EQ(InputHandler::SCROLL_STARTED, 2665 EXPECT_EQ(InputHandler::ScrollStarted,
2656 host_impl_->ScrollBegin(gfx::Point(), InputHandler::GESTURE)); 2666 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture));
2657 EXPECT_EQ(host_impl_->CurrentlyScrollingLayer(), inner_scroll); 2667 EXPECT_EQ(host_impl_->CurrentlyScrollingLayer(), inner_scroll);
2658 2668
2659 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2dF(0.f, -50.f)); 2669 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2dF(0.f, -50.f));
2660 2670
2661 // The entire scroll delta should have been used to show the top controls. 2671 // The entire scroll delta should have been used to show the top controls.
2662 // The outer viewport should be resized to accomodate and scrolled to the 2672 // The outer viewport should be resized to accomodate and scrolled to the
2663 // bottom of the document to keep the viewport in place. 2673 // bottom of the document to keep the viewport in place.
2664 EXPECT_EQ(1.f, host_impl_->active_tree()->CurrentTopControlsShownRatio()); 2674 EXPECT_EQ(1.f, host_impl_->active_tree()->CurrentTopControlsShownRatio());
2665 EXPECT_EQ(50.f, outer_container->BoundsForScrolling().height()); 2675 EXPECT_EQ(50.f, outer_container->BoundsForScrolling().height());
2666 EXPECT_EQ(50.f, inner_container->BoundsForScrolling().height()); 2676 EXPECT_EQ(50.f, inner_container->BoundsForScrolling().height());
(...skipping 25 matching lines...) Expand all
2692 DrawFrame(); 2702 DrawFrame();
2693 2703
2694 float page_scale = 1.5f; 2704 float page_scale = 1.5f;
2695 LayerImpl* outer_viewport_scroll_layer = 2705 LayerImpl* outer_viewport_scroll_layer =
2696 host_impl_->active_tree()->OuterViewportScrollLayer(); 2706 host_impl_->active_tree()->OuterViewportScrollLayer();
2697 2707
2698 // Zoom in, since the fixed container is the outer viewport, the delta should 2708 // Zoom in, since the fixed container is the outer viewport, the delta should
2699 // not be scaled. 2709 // not be scaled.
2700 host_impl_->active_tree()->PushPageScaleFromMainThread(page_scale, 1.f, 2.f); 2710 host_impl_->active_tree()->PushPageScaleFromMainThread(page_scale, 1.f, 2.f);
2701 2711
2702 EXPECT_EQ(InputHandler::SCROLL_STARTED, 2712 EXPECT_EQ(InputHandler::ScrollStarted,
2703 host_impl_->ScrollBegin(gfx::Point(), InputHandler::GESTURE)); 2713 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture));
2704 2714
2705 // Scroll down, the top controls hiding should expand the viewport size so 2715 // Scroll down, the top controls hiding should expand the viewport size so
2706 // the delta should be equal to the scroll distance. 2716 // the delta should be equal to the scroll distance.
2707 gfx::Vector2dF top_controls_scroll_delta(0.f, 20.f); 2717 gfx::Vector2dF top_controls_scroll_delta(0.f, 20.f);
2708 host_impl_->top_controls_manager()->ScrollBegin(); 2718 host_impl_->top_controls_manager()->ScrollBegin();
2709 host_impl_->top_controls_manager()->ScrollBy(top_controls_scroll_delta); 2719 host_impl_->top_controls_manager()->ScrollBy(top_controls_scroll_delta);
2710 EXPECT_FLOAT_EQ(top_controls_height_ - top_controls_scroll_delta.y(), 2720 EXPECT_FLOAT_EQ(top_controls_height_ - top_controls_scroll_delta.y(),
2711 host_impl_->top_controls_manager()->ContentTopOffset()); 2721 host_impl_->top_controls_manager()->ContentTopOffset());
2712 EXPECT_VECTOR_EQ(top_controls_scroll_delta, 2722 EXPECT_VECTOR_EQ(top_controls_scroll_delta,
2713 outer_viewport_scroll_layer->FixedContainerSizeDelta()); 2723 outer_viewport_scroll_layer->FixedContainerSizeDelta());
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
2764 child->SetDrawsContent(true); 2774 child->SetDrawsContent(true);
2765 child->SetIsContainerForFixedPositionLayers(true); 2775 child->SetIsContainerForFixedPositionLayers(true);
2766 2776
2767 // scroll child to limit 2777 // scroll child to limit
2768 child->SetScrollDelta(gfx::Vector2dF(0, 100.f)); 2778 child->SetScrollDelta(gfx::Vector2dF(0, 100.f));
2769 child_clip->AddChild(child.Pass()); 2779 child_clip->AddChild(child.Pass());
2770 outer_viewport_scroll_layer->AddChild(child_clip.Pass()); 2780 outer_viewport_scroll_layer->AddChild(child_clip.Pass());
2771 2781
2772 // Scroll 25px to hide top controls 2782 // Scroll 25px to hide top controls
2773 gfx::Vector2dF scroll_delta(0.f, 25.f); 2783 gfx::Vector2dF scroll_delta(0.f, 25.f);
2774 EXPECT_EQ(InputHandler::SCROLL_STARTED, 2784 EXPECT_EQ(InputHandler::ScrollStarted,
2775 host_impl_->ScrollBegin(gfx::Point(), InputHandler::GESTURE)); 2785 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture));
2776 host_impl_->ScrollBy(gfx::Point(), scroll_delta); 2786 host_impl_->ScrollBy(gfx::Point(), scroll_delta);
2777 host_impl_->ScrollEnd(); 2787 host_impl_->ScrollEnd();
2778 2788
2779 // Top controls should be hidden 2789 // Top controls should be hidden
2780 EXPECT_EQ(scroll_delta.y(), 2790 EXPECT_EQ(scroll_delta.y(),
2781 top_controls_height_ - 2791 top_controls_height_ -
2782 host_impl_->top_controls_manager()->ContentTopOffset()); 2792 host_impl_->top_controls_manager()->ContentTopOffset());
2783 } 2793 }
2784 2794
2785 // Ensure setting the top controls position explicitly using the setters on the 2795 // Ensure setting the top controls position explicitly using the setters on the
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
2913 // Scroll the viewports to max scroll offset. 2923 // Scroll the viewports to max scroll offset.
2914 outer_scroll->SetScrollDelta(gfx::Vector2dF(0, 200.f)); 2924 outer_scroll->SetScrollDelta(gfx::Vector2dF(0, 200.f));
2915 inner_scroll->SetScrollDelta(gfx::Vector2dF(100, 100.f)); 2925 inner_scroll->SetScrollDelta(gfx::Vector2dF(100, 100.f));
2916 2926
2917 gfx::ScrollOffset viewport_offset = 2927 gfx::ScrollOffset viewport_offset =
2918 host_impl_->active_tree()->TotalScrollOffset(); 2928 host_impl_->active_tree()->TotalScrollOffset();
2919 EXPECT_EQ(host_impl_->active_tree()->TotalMaxScrollOffset(), viewport_offset); 2929 EXPECT_EQ(host_impl_->active_tree()->TotalMaxScrollOffset(), viewport_offset);
2920 2930
2921 // Hide the top controls by 25px. 2931 // Hide the top controls by 25px.
2922 gfx::Vector2dF scroll_delta(0.f, 25.f); 2932 gfx::Vector2dF scroll_delta(0.f, 25.f);
2923 EXPECT_EQ(InputHandler::SCROLL_STARTED, 2933 EXPECT_EQ(InputHandler::ScrollStarted,
2924 host_impl_->ScrollBegin(gfx::Point(), InputHandler::GESTURE)); 2934 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture));
2925 host_impl_->ScrollBy(gfx::Point(), scroll_delta); 2935 host_impl_->ScrollBy(gfx::Point(), scroll_delta);
2926 2936
2927 // scrolling down at the max extents no longer hides the top controls 2937 // scrolling down at the max extents no longer hides the top controls
2928 EXPECT_EQ(1.f, host_impl_->active_tree()->CurrentTopControlsShownRatio()); 2938 EXPECT_EQ(1.f, host_impl_->active_tree()->CurrentTopControlsShownRatio());
2929 2939
2930 // forcefully hide the top controls by 25px 2940 // forcefully hide the top controls by 25px
2931 host_impl_->top_controls_manager()->ScrollBy(scroll_delta); 2941 host_impl_->top_controls_manager()->ScrollBy(scroll_delta);
2932 host_impl_->ScrollEnd(); 2942 host_impl_->ScrollEnd();
2933 2943
2934 EXPECT_FLOAT_EQ(scroll_delta.y(), 2944 EXPECT_FLOAT_EQ(scroll_delta.y(),
2935 top_controls_height_ - 2945 top_controls_height_ -
2936 host_impl_->top_controls_manager()->ContentTopOffset()); 2946 host_impl_->top_controls_manager()->ContentTopOffset());
2937 2947
2938 inner_scroll->ClampScrollToMaxScrollOffset(); 2948 inner_scroll->ClampScrollToMaxScrollOffset();
2939 outer_scroll->ClampScrollToMaxScrollOffset(); 2949 outer_scroll->ClampScrollToMaxScrollOffset();
2940 2950
2941 // We should still be fully scrolled. 2951 // We should still be fully scrolled.
2942 EXPECT_EQ(host_impl_->active_tree()->TotalMaxScrollOffset(), 2952 EXPECT_EQ(host_impl_->active_tree()->TotalMaxScrollOffset(),
2943 host_impl_->active_tree()->TotalScrollOffset()); 2953 host_impl_->active_tree()->TotalScrollOffset());
2944 2954
2945 viewport_offset = host_impl_->active_tree()->TotalScrollOffset(); 2955 viewport_offset = host_impl_->active_tree()->TotalScrollOffset();
2946 2956
2947 // Bring the top controls down by 25px. 2957 // Bring the top controls down by 25px.
2948 scroll_delta = gfx::Vector2dF(0.f, -25.f); 2958 scroll_delta = gfx::Vector2dF(0.f, -25.f);
2949 EXPECT_EQ(InputHandler::SCROLL_STARTED, 2959 EXPECT_EQ(InputHandler::ScrollStarted,
2950 host_impl_->ScrollBegin(gfx::Point(), InputHandler::GESTURE)); 2960 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture));
2951 host_impl_->ScrollBy(gfx::Point(), scroll_delta); 2961 host_impl_->ScrollBy(gfx::Point(), scroll_delta);
2952 host_impl_->ScrollEnd(); 2962 host_impl_->ScrollEnd();
2953 2963
2954 // The viewport offset shouldn't have changed. 2964 // The viewport offset shouldn't have changed.
2955 EXPECT_EQ(viewport_offset, 2965 EXPECT_EQ(viewport_offset,
2956 host_impl_->active_tree()->TotalScrollOffset()); 2966 host_impl_->active_tree()->TotalScrollOffset());
2957 2967
2958 // Scroll the viewports to max scroll offset. 2968 // Scroll the viewports to max scroll offset.
2959 outer_scroll->SetScrollDelta(gfx::Vector2dF(0, 200.f)); 2969 outer_scroll->SetScrollDelta(gfx::Vector2dF(0, 200.f));
2960 inner_scroll->SetScrollDelta(gfx::Vector2dF(100, 100.f)); 2970 inner_scroll->SetScrollDelta(gfx::Vector2dF(100, 100.f));
2961 EXPECT_EQ(host_impl_->active_tree()->TotalMaxScrollOffset(), 2971 EXPECT_EQ(host_impl_->active_tree()->TotalMaxScrollOffset(),
2962 host_impl_->active_tree()->TotalScrollOffset()); 2972 host_impl_->active_tree()->TotalScrollOffset());
2963 } 2973 }
2964 2974
2965 // Test that the top controls coming in and out maintains the same aspect ratio 2975 // Test that the top controls coming in and out maintains the same aspect ratio
2966 // between the inner and outer viewports. 2976 // between the inner and outer viewports.
2967 TEST_F(LayerTreeHostImplTopControlsTest, TopControlsAspectRatio) { 2977 TEST_F(LayerTreeHostImplTopControlsTest, TopControlsAspectRatio) {
2968 SetupTopControlsAndScrollLayerWithVirtualViewport( 2978 SetupTopControlsAndScrollLayerWithVirtualViewport(
2969 gfx::Size(100, 100), gfx::Size(200, 200), gfx::Size(200, 400)); 2979 gfx::Size(100, 100), gfx::Size(200, 200), gfx::Size(200, 400));
2970 DrawFrame(); 2980 DrawFrame();
2971 2981
2972 EXPECT_FLOAT_EQ(top_controls_height_, 2982 EXPECT_FLOAT_EQ(top_controls_height_,
2973 host_impl_->top_controls_manager()->ContentTopOffset()); 2983 host_impl_->top_controls_manager()->ContentTopOffset());
2974 2984
2975 gfx::Vector2dF scroll_delta(0.f, 25.f); 2985 gfx::Vector2dF scroll_delta(0.f, 25.f);
2976 EXPECT_EQ(InputHandler::SCROLL_STARTED, 2986 EXPECT_EQ(InputHandler::ScrollStarted,
2977 host_impl_->ScrollBegin(gfx::Point(), InputHandler::GESTURE)); 2987 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture));
2978 host_impl_->ScrollBy(gfx::Point(), scroll_delta); 2988 host_impl_->ScrollBy(gfx::Point(), scroll_delta);
2979 host_impl_->ScrollEnd(); 2989 host_impl_->ScrollEnd();
2980 2990
2981 EXPECT_FLOAT_EQ(scroll_delta.y(), 2991 EXPECT_FLOAT_EQ(scroll_delta.y(),
2982 top_controls_height_ - 2992 top_controls_height_ -
2983 host_impl_->top_controls_manager()->ContentTopOffset()); 2993 host_impl_->top_controls_manager()->ContentTopOffset());
2984 2994
2985 // Top controls were hidden by 25px so the inner viewport should have expanded 2995 // Top controls were hidden by 25px so the inner viewport should have expanded
2986 // by that much. 2996 // by that much.
2987 LayerImpl* outer_container = 2997 LayerImpl* outer_container =
(...skipping 16 matching lines...) Expand all
3004 SetupTopControlsAndScrollLayerWithVirtualViewport( 3014 SetupTopControlsAndScrollLayerWithVirtualViewport(
3005 gfx::Size(100, 100), gfx::Size(200, 200), gfx::Size(200, 400)); 3015 gfx::Size(100, 100), gfx::Size(200, 200), gfx::Size(200, 400));
3006 DrawFrame(); 3016 DrawFrame();
3007 3017
3008 EXPECT_EQ(top_controls_height_, 3018 EXPECT_EQ(top_controls_height_,
3009 host_impl_->top_controls_manager()->ContentTopOffset()); 3019 host_impl_->top_controls_manager()->ContentTopOffset());
3010 3020
3011 // Send a gesture scroll that will scroll the outer viewport, make sure the 3021 // Send a gesture scroll that will scroll the outer viewport, make sure the
3012 // top controls get scrolled. 3022 // top controls get scrolled.
3013 gfx::Vector2dF scroll_delta(0.f, 15.f); 3023 gfx::Vector2dF scroll_delta(0.f, 15.f);
3014 EXPECT_EQ(InputHandler::SCROLL_STARTED, 3024 EXPECT_EQ(InputHandler::ScrollStarted,
3015 host_impl_->ScrollBegin(gfx::Point(), InputHandler::GESTURE)); 3025 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture));
3016 host_impl_->ScrollBy(gfx::Point(), scroll_delta); 3026 host_impl_->ScrollBy(gfx::Point(), scroll_delta);
3017 EXPECT_EQ(host_impl_->OuterViewportScrollLayer(), 3027 EXPECT_EQ(host_impl_->OuterViewportScrollLayer(),
3018 host_impl_->CurrentlyScrollingLayer()); 3028 host_impl_->CurrentlyScrollingLayer());
3019 host_impl_->ScrollEnd(); 3029 host_impl_->ScrollEnd();
3020 3030
3021 EXPECT_FLOAT_EQ(scroll_delta.y(), 3031 EXPECT_FLOAT_EQ(scroll_delta.y(),
3022 top_controls_height_ - 3032 top_controls_height_ -
3023 host_impl_->top_controls_manager()->ContentTopOffset()); 3033 host_impl_->top_controls_manager()->ContentTopOffset());
3024 3034
3025 scroll_delta = gfx::Vector2dF(0.f, 50.f); 3035 scroll_delta = gfx::Vector2dF(0.f, 50.f);
3026 EXPECT_EQ(InputHandler::SCROLL_STARTED, 3036 EXPECT_EQ(InputHandler::ScrollStarted,
3027 host_impl_->ScrollBegin(gfx::Point(), InputHandler::GESTURE)); 3037 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture));
3028 host_impl_->ScrollBy(gfx::Point(), scroll_delta); 3038 host_impl_->ScrollBy(gfx::Point(), scroll_delta);
3029 3039
3030 EXPECT_EQ(0, host_impl_->top_controls_manager()->ContentTopOffset()); 3040 EXPECT_EQ(0, host_impl_->top_controls_manager()->ContentTopOffset());
3031 EXPECT_EQ(host_impl_->OuterViewportScrollLayer(), 3041 EXPECT_EQ(host_impl_->OuterViewportScrollLayer(),
3032 host_impl_->CurrentlyScrollingLayer()); 3042 host_impl_->CurrentlyScrollingLayer());
3033 3043
3034 host_impl_->ScrollEnd(); 3044 host_impl_->ScrollEnd();
3035 3045
3036 // Position the viewports such that the inner viewport will be scrolled. 3046 // Position the viewports such that the inner viewport will be scrolled.
3037 gfx::Vector2dF inner_viewport_offset(0.f, 25.f); 3047 gfx::Vector2dF inner_viewport_offset(0.f, 25.f);
3038 host_impl_->OuterViewportScrollLayer()->SetScrollDelta(gfx::Vector2dF()); 3048 host_impl_->OuterViewportScrollLayer()->SetScrollDelta(gfx::Vector2dF());
3039 host_impl_->InnerViewportScrollLayer()->SetScrollDelta(inner_viewport_offset); 3049 host_impl_->InnerViewportScrollLayer()->SetScrollDelta(inner_viewport_offset);
3040 3050
3041 scroll_delta = gfx::Vector2dF(0.f, -65.f); 3051 scroll_delta = gfx::Vector2dF(0.f, -65.f);
3042 EXPECT_EQ(InputHandler::SCROLL_STARTED, 3052 EXPECT_EQ(InputHandler::ScrollStarted,
3043 host_impl_->ScrollBegin(gfx::Point(), InputHandler::GESTURE)); 3053 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture));
3044 host_impl_->ScrollBy(gfx::Point(), scroll_delta); 3054 host_impl_->ScrollBy(gfx::Point(), scroll_delta);
3045 3055
3046 EXPECT_EQ(top_controls_height_, 3056 EXPECT_EQ(top_controls_height_,
3047 host_impl_->top_controls_manager()->ContentTopOffset()); 3057 host_impl_->top_controls_manager()->ContentTopOffset());
3048 EXPECT_FLOAT_EQ( 3058 EXPECT_FLOAT_EQ(
3049 inner_viewport_offset.y() + (scroll_delta.y() + top_controls_height_), 3059 inner_viewport_offset.y() + (scroll_delta.y() + top_controls_height_),
3050 host_impl_->InnerViewportScrollLayer()->ScrollDelta().y()); 3060 host_impl_->InnerViewportScrollLayer()->ScrollDelta().y());
3051 3061
3052 host_impl_->ScrollEnd(); 3062 host_impl_->ScrollEnd();
3053 } 3063 }
3054 3064
3055 TEST_F(LayerTreeHostImplTopControlsTest, 3065 TEST_F(LayerTreeHostImplTopControlsTest,
3056 ScrollNonScrollableRootWithTopControls) { 3066 ScrollNonScrollableRootWithTopControls) {
3057 CreateHostImpl(settings_, CreateOutputSurface()); 3067 CreateHostImpl(settings_, CreateOutputSurface());
3058 SetupTopControlsAndScrollLayer(); 3068 SetupTopControlsAndScrollLayer();
3059 DrawFrame(); 3069 DrawFrame();
3060 3070
3061 EXPECT_EQ(InputHandler::SCROLL_STARTED, 3071 EXPECT_EQ(InputHandler::ScrollStarted,
3062 host_impl_->ScrollBegin(gfx::Point(), InputHandler::GESTURE)); 3072 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture));
3063 3073
3064 host_impl_->top_controls_manager()->ScrollBegin(); 3074 host_impl_->top_controls_manager()->ScrollBegin();
3065 host_impl_->top_controls_manager()->ScrollBy(gfx::Vector2dF(0.f, 50.f)); 3075 host_impl_->top_controls_manager()->ScrollBy(gfx::Vector2dF(0.f, 50.f));
3066 host_impl_->top_controls_manager()->ScrollEnd(); 3076 host_impl_->top_controls_manager()->ScrollEnd();
3067 EXPECT_EQ(0.f, host_impl_->top_controls_manager()->ContentTopOffset()); 3077 EXPECT_EQ(0.f, host_impl_->top_controls_manager()->ContentTopOffset());
3068 // Now that top controls have moved, expect the clip to resize. 3078 // Now that top controls have moved, expect the clip to resize.
3069 LayerImpl* root_clip_ptr = host_impl_->active_tree()->root_layer(); 3079 LayerImpl* root_clip_ptr = host_impl_->active_tree()->root_layer();
3070 EXPECT_EQ(viewport_size_, root_clip_ptr->bounds()); 3080 EXPECT_EQ(viewport_size_, root_clip_ptr->bounds());
3071 3081
3072 host_impl_->ScrollEnd(); 3082 host_impl_->ScrollEnd();
3073 3083
3074 EXPECT_EQ(InputHandler::SCROLL_STARTED, 3084 EXPECT_EQ(InputHandler::ScrollStarted,
3075 host_impl_->ScrollBegin(gfx::Point(), InputHandler::GESTURE)); 3085 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture));
3076 3086
3077 float scroll_increment_y = -25.f; 3087 float scroll_increment_y = -25.f;
3078 host_impl_->top_controls_manager()->ScrollBegin(); 3088 host_impl_->top_controls_manager()->ScrollBegin();
3079 host_impl_->top_controls_manager()->ScrollBy( 3089 host_impl_->top_controls_manager()->ScrollBy(
3080 gfx::Vector2dF(0.f, scroll_increment_y)); 3090 gfx::Vector2dF(0.f, scroll_increment_y));
3081 EXPECT_FLOAT_EQ(-scroll_increment_y, 3091 EXPECT_FLOAT_EQ(-scroll_increment_y,
3082 host_impl_->top_controls_manager()->ContentTopOffset()); 3092 host_impl_->top_controls_manager()->ContentTopOffset());
3083 // Now that top controls have moved, expect the clip to resize. 3093 // Now that top controls have moved, expect the clip to resize.
3084 EXPECT_EQ(gfx::Size(viewport_size_.width(), 3094 EXPECT_EQ(gfx::Size(viewport_size_.width(),
3085 viewport_size_.height() + scroll_increment_y), 3095 viewport_size_.height() + scroll_increment_y),
3086 root_clip_ptr->bounds()); 3096 root_clip_ptr->bounds());
3087 3097
3088 host_impl_->top_controls_manager()->ScrollBy( 3098 host_impl_->top_controls_manager()->ScrollBy(
3089 gfx::Vector2dF(0.f, scroll_increment_y)); 3099 gfx::Vector2dF(0.f, scroll_increment_y));
3090 host_impl_->top_controls_manager()->ScrollEnd(); 3100 host_impl_->top_controls_manager()->ScrollEnd();
3091 EXPECT_FLOAT_EQ(-2 * scroll_increment_y, 3101 EXPECT_FLOAT_EQ(-2 * scroll_increment_y,
3092 host_impl_->top_controls_manager()->ContentTopOffset()); 3102 host_impl_->top_controls_manager()->ContentTopOffset());
3093 // Now that top controls have moved, expect the clip to resize. 3103 // Now that top controls have moved, expect the clip to resize.
3094 EXPECT_EQ(clip_size_, root_clip_ptr->bounds()); 3104 EXPECT_EQ(clip_size_, root_clip_ptr->bounds());
3095 3105
3096 host_impl_->ScrollEnd(); 3106 host_impl_->ScrollEnd();
3097 3107
3098 // Verify the layer is once-again non-scrollable. 3108 // Verify the layer is once-again non-scrollable.
3099 EXPECT_EQ( 3109 EXPECT_EQ(
3100 gfx::ScrollOffset(), 3110 gfx::ScrollOffset(),
3101 host_impl_->active_tree()->InnerViewportScrollLayer()->MaxScrollOffset()); 3111 host_impl_->active_tree()->InnerViewportScrollLayer()->MaxScrollOffset());
3102 3112
3103 EXPECT_EQ(InputHandler::SCROLL_STARTED, 3113 EXPECT_EQ(InputHandler::ScrollStarted,
3104 host_impl_->ScrollBegin(gfx::Point(), InputHandler::GESTURE)); 3114 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture));
3105 } 3115 }
3106 3116
3107 TEST_F(LayerTreeHostImplTest, ScrollNonCompositedRoot) { 3117 TEST_F(LayerTreeHostImplTest, ScrollNonCompositedRoot) {
3108 // Test the configuration where a non-composited root layer is embedded in a 3118 // Test the configuration where a non-composited root layer is embedded in a
3109 // scrollable outer layer. 3119 // scrollable outer layer.
3110 gfx::Size surface_size(10, 10); 3120 gfx::Size surface_size(10, 10);
3111 gfx::Size contents_size(20, 20); 3121 gfx::Size contents_size(20, 20);
3112 3122
3113 scoped_ptr<LayerImpl> content_layer = 3123 scoped_ptr<LayerImpl> content_layer =
3114 LayerImpl::Create(host_impl_->active_tree(), 1); 3124 LayerImpl::Create(host_impl_->active_tree(), 1);
(...skipping 14 matching lines...) Expand all
3129 scroll_layer->SetContentBounds(contents_size); 3139 scroll_layer->SetContentBounds(contents_size);
3130 scroll_layer->SetPosition(gfx::PointF()); 3140 scroll_layer->SetPosition(gfx::PointF());
3131 scroll_layer->AddChild(content_layer.Pass()); 3141 scroll_layer->AddChild(content_layer.Pass());
3132 scroll_clip_layer->AddChild(scroll_layer.Pass()); 3142 scroll_clip_layer->AddChild(scroll_layer.Pass());
3133 3143
3134 scroll_clip_layer->SetHasRenderSurface(true); 3144 scroll_clip_layer->SetHasRenderSurface(true);
3135 host_impl_->active_tree()->SetRootLayer(scroll_clip_layer.Pass()); 3145 host_impl_->active_tree()->SetRootLayer(scroll_clip_layer.Pass());
3136 host_impl_->SetViewportSize(surface_size); 3146 host_impl_->SetViewportSize(surface_size);
3137 DrawFrame(); 3147 DrawFrame();
3138 3148
3139 EXPECT_EQ(InputHandler::SCROLL_STARTED, 3149 EXPECT_EQ(InputHandler::ScrollStarted,
3140 host_impl_->ScrollBegin(gfx::Point(5, 5), InputHandler::WHEEL)); 3150 host_impl_->ScrollBegin(gfx::Point(5, 5),
3151 InputHandler::Wheel));
3141 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 10)); 3152 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 10));
3142 host_impl_->ScrollEnd(); 3153 host_impl_->ScrollEnd();
3143 EXPECT_TRUE(did_request_redraw_); 3154 EXPECT_TRUE(did_request_redraw_);
3144 EXPECT_TRUE(did_request_commit_); 3155 EXPECT_TRUE(did_request_commit_);
3145 } 3156 }
3146 3157
3147 TEST_F(LayerTreeHostImplTest, ScrollChildCallsCommitAndRedraw) { 3158 TEST_F(LayerTreeHostImplTest, ScrollChildCallsCommitAndRedraw) {
3148 gfx::Size surface_size(10, 10); 3159 gfx::Size surface_size(10, 10);
3149 gfx::Size contents_size(20, 20); 3160 gfx::Size contents_size(20, 20);
3150 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1); 3161 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1);
3151 root->SetBounds(surface_size); 3162 root->SetBounds(surface_size);
3152 root->SetContentBounds(contents_size); 3163 root->SetContentBounds(contents_size);
3153 root->AddChild(CreateScrollableLayer(2, contents_size, root.get())); 3164 root->AddChild(CreateScrollableLayer(2, contents_size, root.get()));
3154 root->SetHasRenderSurface(true); 3165 root->SetHasRenderSurface(true);
3155 host_impl_->active_tree()->SetRootLayer(root.Pass()); 3166 host_impl_->active_tree()->SetRootLayer(root.Pass());
3156 host_impl_->SetViewportSize(surface_size); 3167 host_impl_->SetViewportSize(surface_size);
3157 DrawFrame(); 3168 DrawFrame();
3158 3169
3159 EXPECT_EQ(InputHandler::SCROLL_STARTED, 3170 EXPECT_EQ(InputHandler::ScrollStarted,
3160 host_impl_->ScrollBegin(gfx::Point(5, 5), InputHandler::WHEEL)); 3171 host_impl_->ScrollBegin(gfx::Point(5, 5),
3172 InputHandler::Wheel));
3161 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 10)); 3173 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 10));
3162 host_impl_->ScrollEnd(); 3174 host_impl_->ScrollEnd();
3163 EXPECT_TRUE(did_request_redraw_); 3175 EXPECT_TRUE(did_request_redraw_);
3164 EXPECT_TRUE(did_request_commit_); 3176 EXPECT_TRUE(did_request_commit_);
3165 } 3177 }
3166 3178
3167 TEST_F(LayerTreeHostImplTest, ScrollMissesChild) { 3179 TEST_F(LayerTreeHostImplTest, ScrollMissesChild) {
3168 gfx::Size surface_size(10, 10); 3180 gfx::Size surface_size(10, 10);
3169 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1); 3181 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1);
3170 root->AddChild(CreateScrollableLayer(2, surface_size, root.get())); 3182 root->AddChild(CreateScrollableLayer(2, surface_size, root.get()));
3171 root->SetHasRenderSurface(true); 3183 root->SetHasRenderSurface(true);
3172 host_impl_->active_tree()->SetRootLayer(root.Pass()); 3184 host_impl_->active_tree()->SetRootLayer(root.Pass());
3173 host_impl_->SetViewportSize(surface_size); 3185 host_impl_->SetViewportSize(surface_size);
3174 DrawFrame(); 3186 DrawFrame();
3175 3187
3176 // Scroll event is ignored because the input coordinate is outside the layer 3188 // Scroll event is ignored because the input coordinate is outside the layer
3177 // boundaries. 3189 // boundaries.
3178 EXPECT_EQ(InputHandler::SCROLL_IGNORED, 3190 EXPECT_EQ(InputHandler::ScrollIgnored,
3179 host_impl_->ScrollBegin(gfx::Point(15, 5), InputHandler::WHEEL)); 3191 host_impl_->ScrollBegin(gfx::Point(15, 5),
3192 InputHandler::Wheel));
3180 EXPECT_FALSE(did_request_redraw_); 3193 EXPECT_FALSE(did_request_redraw_);
3181 EXPECT_FALSE(did_request_commit_); 3194 EXPECT_FALSE(did_request_commit_);
3182 } 3195 }
3183 3196
3184 TEST_F(LayerTreeHostImplTest, ScrollMissesBackfacingChild) { 3197 TEST_F(LayerTreeHostImplTest, ScrollMissesBackfacingChild) {
3185 gfx::Size surface_size(10, 10); 3198 gfx::Size surface_size(10, 10);
3186 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1); 3199 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1);
3187 root->SetHasRenderSurface(true); 3200 root->SetHasRenderSurface(true);
3188 scoped_ptr<LayerImpl> child = 3201 scoped_ptr<LayerImpl> child =
3189 CreateScrollableLayer(2, surface_size, root.get()); 3202 CreateScrollableLayer(2, surface_size, root.get());
3190 host_impl_->SetViewportSize(surface_size); 3203 host_impl_->SetViewportSize(surface_size);
3191 3204
3192 gfx::Transform matrix; 3205 gfx::Transform matrix;
3193 matrix.RotateAboutXAxis(180.0); 3206 matrix.RotateAboutXAxis(180.0);
3194 child->SetTransform(matrix); 3207 child->SetTransform(matrix);
3195 child->SetDoubleSided(false); 3208 child->SetDoubleSided(false);
3196 3209
3197 root->AddChild(child.Pass()); 3210 root->AddChild(child.Pass());
3198 host_impl_->active_tree()->SetRootLayer(root.Pass()); 3211 host_impl_->active_tree()->SetRootLayer(root.Pass());
3199 DrawFrame(); 3212 DrawFrame();
3200 3213
3201 // Scroll event is ignored because the scrollable layer is not facing the 3214 // Scroll event is ignored because the scrollable layer is not facing the
3202 // viewer and there is nothing scrollable behind it. 3215 // viewer and there is nothing scrollable behind it.
3203 EXPECT_EQ(InputHandler::SCROLL_IGNORED, 3216 EXPECT_EQ(InputHandler::ScrollIgnored,
3204 host_impl_->ScrollBegin(gfx::Point(5, 5), InputHandler::WHEEL)); 3217 host_impl_->ScrollBegin(gfx::Point(5, 5),
3218 InputHandler::Wheel));
3205 EXPECT_FALSE(did_request_redraw_); 3219 EXPECT_FALSE(did_request_redraw_);
3206 EXPECT_FALSE(did_request_commit_); 3220 EXPECT_FALSE(did_request_commit_);
3207 } 3221 }
3208 3222
3209 TEST_F(LayerTreeHostImplTest, ScrollBlockedByContentLayer) { 3223 TEST_F(LayerTreeHostImplTest, ScrollBlockedByContentLayer) {
3210 gfx::Size surface_size(10, 10); 3224 gfx::Size surface_size(10, 10);
3211 scoped_ptr<LayerImpl> clip_layer = 3225 scoped_ptr<LayerImpl> clip_layer =
3212 LayerImpl::Create(host_impl_->active_tree(), 3); 3226 LayerImpl::Create(host_impl_->active_tree(), 3);
3213 scoped_ptr<LayerImpl> content_layer = 3227 scoped_ptr<LayerImpl> content_layer =
3214 CreateScrollableLayer(1, surface_size, clip_layer.get()); 3228 CreateScrollableLayer(1, surface_size, clip_layer.get());
3215 content_layer->SetShouldScrollOnMainThread(true); 3229 content_layer->SetShouldScrollOnMainThread(true);
3216 content_layer->SetScrollClipLayer(Layer::INVALID_ID); 3230 content_layer->SetScrollClipLayer(Layer::INVALID_ID);
3217 3231
3218 // Note: we can use the same clip layer for both since both calls to 3232 // Note: we can use the same clip layer for both since both calls to
3219 // CreateScrollableLayer() use the same surface size. 3233 // CreateScrollableLayer() use the same surface size.
3220 scoped_ptr<LayerImpl> scroll_layer = 3234 scoped_ptr<LayerImpl> scroll_layer =
3221 CreateScrollableLayer(2, surface_size, clip_layer.get()); 3235 CreateScrollableLayer(2, surface_size, clip_layer.get());
3222 scroll_layer->AddChild(content_layer.Pass()); 3236 scroll_layer->AddChild(content_layer.Pass());
3223 clip_layer->AddChild(scroll_layer.Pass()); 3237 clip_layer->AddChild(scroll_layer.Pass());
3224 clip_layer->SetHasRenderSurface(true); 3238 clip_layer->SetHasRenderSurface(true);
3225 3239
3226 host_impl_->active_tree()->SetRootLayer(clip_layer.Pass()); 3240 host_impl_->active_tree()->SetRootLayer(clip_layer.Pass());
3227 host_impl_->SetViewportSize(surface_size); 3241 host_impl_->SetViewportSize(surface_size);
3228 DrawFrame(); 3242 DrawFrame();
3229 3243
3230 // Scrolling fails because the content layer is asking to be scrolled on the 3244 // Scrolling fails because the content layer is asking to be scrolled on the
3231 // main thread. 3245 // main thread.
3232 EXPECT_EQ(InputHandler::SCROLL_ON_MAIN_THREAD, 3246 EXPECT_EQ(InputHandler::ScrollOnMainThread,
3233 host_impl_->ScrollBegin(gfx::Point(5, 5), InputHandler::WHEEL)); 3247 host_impl_->ScrollBegin(gfx::Point(5, 5),
3248 InputHandler::Wheel));
3234 } 3249 }
3235 3250
3236 TEST_F(LayerTreeHostImplTest, ScrollRootAndChangePageScaleOnMainThread) { 3251 TEST_F(LayerTreeHostImplTest, ScrollRootAndChangePageScaleOnMainThread) {
3237 gfx::Size surface_size(20, 20); 3252 gfx::Size surface_size(20, 20);
3238 gfx::Size viewport_size(10, 10); 3253 gfx::Size viewport_size(10, 10);
3239 float page_scale = 2.f; 3254 float page_scale = 2.f;
3240 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1); 3255 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1);
3241 scoped_ptr<LayerImpl> root_clip = 3256 scoped_ptr<LayerImpl> root_clip =
3242 LayerImpl::Create(host_impl_->active_tree(), 2); 3257 LayerImpl::Create(host_impl_->active_tree(), 2);
3243 scoped_ptr<LayerImpl> root_scrolling = 3258 scoped_ptr<LayerImpl> root_scrolling =
(...skipping 12 matching lines...) Expand all
3256 host_impl_->SetViewportSize(viewport_size); 3271 host_impl_->SetViewportSize(viewport_size);
3257 DrawFrame(); 3272 DrawFrame();
3258 3273
3259 LayerImpl* root_scroll = 3274 LayerImpl* root_scroll =
3260 host_impl_->active_tree()->InnerViewportScrollLayer(); 3275 host_impl_->active_tree()->InnerViewportScrollLayer();
3261 EXPECT_EQ(viewport_size, root_scroll->scroll_clip_layer()->bounds()); 3276 EXPECT_EQ(viewport_size, root_scroll->scroll_clip_layer()->bounds());
3262 3277
3263 gfx::Vector2d scroll_delta(0, 10); 3278 gfx::Vector2d scroll_delta(0, 10);
3264 gfx::Vector2d expected_scroll_delta = scroll_delta; 3279 gfx::Vector2d expected_scroll_delta = scroll_delta;
3265 gfx::ScrollOffset expected_max_scroll = root_scroll->MaxScrollOffset(); 3280 gfx::ScrollOffset expected_max_scroll = root_scroll->MaxScrollOffset();
3266 EXPECT_EQ(InputHandler::SCROLL_STARTED, 3281 EXPECT_EQ(InputHandler::ScrollStarted,
3267 host_impl_->ScrollBegin(gfx::Point(5, 5), InputHandler::WHEEL)); 3282 host_impl_->ScrollBegin(gfx::Point(5, 5),
3283 InputHandler::Wheel));
3268 host_impl_->ScrollBy(gfx::Point(), scroll_delta); 3284 host_impl_->ScrollBy(gfx::Point(), scroll_delta);
3269 host_impl_->ScrollEnd(); 3285 host_impl_->ScrollEnd();
3270 3286
3271 // Set new page scale from main thread. 3287 // Set new page scale from main thread.
3272 host_impl_->active_tree()->PushPageScaleFromMainThread(page_scale, page_scale, 3288 host_impl_->active_tree()->PushPageScaleFromMainThread(page_scale, page_scale,
3273 page_scale); 3289 page_scale);
3274 3290
3275 scoped_ptr<ScrollAndScaleSet> scroll_info = host_impl_->ProcessScrollDeltas(); 3291 scoped_ptr<ScrollAndScaleSet> scroll_info = host_impl_->ProcessScrollDeltas();
3276 ExpectContains(*scroll_info.get(), root_scroll->id(), expected_scroll_delta); 3292 ExpectContains(*scroll_info.get(), root_scroll->id(), expected_scroll_delta);
3277 3293
(...skipping 29 matching lines...) Expand all
3307 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, 1.f, page_scale); 3323 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, 1.f, page_scale);
3308 DrawFrame(); 3324 DrawFrame();
3309 3325
3310 LayerImpl* root_scroll = 3326 LayerImpl* root_scroll =
3311 host_impl_->active_tree()->InnerViewportScrollLayer(); 3327 host_impl_->active_tree()->InnerViewportScrollLayer();
3312 EXPECT_EQ(viewport_size, root_scroll->scroll_clip_layer()->bounds()); 3328 EXPECT_EQ(viewport_size, root_scroll->scroll_clip_layer()->bounds());
3313 3329
3314 gfx::Vector2d scroll_delta(0, 10); 3330 gfx::Vector2d scroll_delta(0, 10);
3315 gfx::Vector2d expected_scroll_delta = scroll_delta; 3331 gfx::Vector2d expected_scroll_delta = scroll_delta;
3316 gfx::ScrollOffset expected_max_scroll = root_scroll->MaxScrollOffset(); 3332 gfx::ScrollOffset expected_max_scroll = root_scroll->MaxScrollOffset();
3317 EXPECT_EQ(InputHandler::SCROLL_STARTED, 3333 EXPECT_EQ(InputHandler::ScrollStarted,
3318 host_impl_->ScrollBegin(gfx::Point(5, 5), InputHandler::WHEEL)); 3334 host_impl_->ScrollBegin(gfx::Point(5, 5),
3335 InputHandler::Wheel));
3319 host_impl_->ScrollBy(gfx::Point(), scroll_delta); 3336 host_impl_->ScrollBy(gfx::Point(), scroll_delta);
3320 host_impl_->ScrollEnd(); 3337 host_impl_->ScrollEnd();
3321 3338
3322 // Set new page scale on impl thread by pinching. 3339 // Set new page scale on impl thread by pinching.
3323 host_impl_->ScrollBegin(gfx::Point(), InputHandler::GESTURE); 3340 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture);
3324 host_impl_->PinchGestureBegin(); 3341 host_impl_->PinchGestureBegin();
3325 host_impl_->PinchGestureUpdate(page_scale, gfx::Point()); 3342 host_impl_->PinchGestureUpdate(page_scale, gfx::Point());
3326 host_impl_->PinchGestureEnd(); 3343 host_impl_->PinchGestureEnd();
3327 host_impl_->ScrollEnd(); 3344 host_impl_->ScrollEnd();
3328 DrawOneFrame(); 3345 DrawOneFrame();
3329 3346
3330 // The scroll delta is not scaled because the main thread did not scale. 3347 // The scroll delta is not scaled because the main thread did not scale.
3331 scoped_ptr<ScrollAndScaleSet> scroll_info = host_impl_->ProcessScrollDeltas(); 3348 scoped_ptr<ScrollAndScaleSet> scroll_info = host_impl_->ProcessScrollDeltas();
3332 ExpectContains(*scroll_info.get(), root_scroll->id(), expected_scroll_delta); 3349 ExpectContains(*scroll_info.get(), root_scroll->id(), expected_scroll_delta);
3333 3350
(...skipping 21 matching lines...) Expand all
3355 3372
3356 scoped_ptr<LayerImpl> scrollable_child_clip = 3373 scoped_ptr<LayerImpl> scrollable_child_clip =
3357 LayerImpl::Create(host_impl_->active_tree(), 6); 3374 LayerImpl::Create(host_impl_->active_tree(), 6);
3358 scoped_ptr<LayerImpl> scrollable_child = 3375 scoped_ptr<LayerImpl> scrollable_child =
3359 CreateScrollableLayer(7, surface_size, scrollable_child_clip.get()); 3376 CreateScrollableLayer(7, surface_size, scrollable_child_clip.get());
3360 scrollable_child_clip->AddChild(scrollable_child.Pass()); 3377 scrollable_child_clip->AddChild(scrollable_child.Pass());
3361 child->AddChild(scrollable_child_clip.Pass()); 3378 child->AddChild(scrollable_child_clip.Pass());
3362 LayerImpl* grand_child = child->children()[0]; 3379 LayerImpl* grand_child = child->children()[0];
3363 3380
3364 // Set new page scale on impl thread by pinching. 3381 // Set new page scale on impl thread by pinching.
3365 host_impl_->ScrollBegin(gfx::Point(), InputHandler::GESTURE); 3382 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture);
3366 host_impl_->PinchGestureBegin(); 3383 host_impl_->PinchGestureBegin();
3367 host_impl_->PinchGestureUpdate(new_page_scale, gfx::Point()); 3384 host_impl_->PinchGestureUpdate(new_page_scale, gfx::Point());
3368 host_impl_->PinchGestureEnd(); 3385 host_impl_->PinchGestureEnd();
3369 host_impl_->ScrollEnd(); 3386 host_impl_->ScrollEnd();
3370 DrawOneFrame(); 3387 DrawOneFrame();
3371 3388
3372 EXPECT_EQ(1.f, root->contents_scale_x()); 3389 EXPECT_EQ(1.f, root->contents_scale_x());
3373 EXPECT_EQ(1.f, root->contents_scale_y()); 3390 EXPECT_EQ(1.f, root->contents_scale_y());
3374 EXPECT_EQ(1.f, scroll->contents_scale_x()); 3391 EXPECT_EQ(1.f, scroll->contents_scale_x());
3375 EXPECT_EQ(1.f, scroll->contents_scale_y()); 3392 EXPECT_EQ(1.f, scroll->contents_scale_y());
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
3418 host_impl_->active_tree()->SetRootLayer(root.Pass()); 3435 host_impl_->active_tree()->SetRootLayer(root.Pass());
3419 host_impl_->active_tree()->SetViewportLayersFromIds(Layer::INVALID_ID, 1, 2, 3436 host_impl_->active_tree()->SetViewportLayersFromIds(Layer::INVALID_ID, 1, 2,
3420 Layer::INVALID_ID); 3437 Layer::INVALID_ID);
3421 host_impl_->active_tree()->DidBecomeActive(); 3438 host_impl_->active_tree()->DidBecomeActive();
3422 host_impl_->SetViewportSize(surface_size); 3439 host_impl_->SetViewportSize(surface_size);
3423 DrawFrame(); 3440 DrawFrame();
3424 3441
3425 gfx::Vector2d scroll_delta(0, 10); 3442 gfx::Vector2d scroll_delta(0, 10);
3426 gfx::Vector2d expected_scroll_delta(scroll_delta); 3443 gfx::Vector2d expected_scroll_delta(scroll_delta);
3427 gfx::ScrollOffset expected_max_scroll(child->MaxScrollOffset()); 3444 gfx::ScrollOffset expected_max_scroll(child->MaxScrollOffset());
3428 EXPECT_EQ(InputHandler::SCROLL_STARTED, 3445 EXPECT_EQ(InputHandler::ScrollStarted,
3429 host_impl_->ScrollBegin(gfx::Point(5, 5), InputHandler::WHEEL)); 3446 host_impl_->ScrollBegin(gfx::Point(5, 5),
3447 InputHandler::Wheel));
3430 host_impl_->ScrollBy(gfx::Point(), scroll_delta); 3448 host_impl_->ScrollBy(gfx::Point(), scroll_delta);
3431 host_impl_->ScrollEnd(); 3449 host_impl_->ScrollEnd();
3432 3450
3433 float page_scale = 2.f; 3451 float page_scale = 2.f;
3434 host_impl_->active_tree()->PushPageScaleFromMainThread(page_scale, 1.f, 3452 host_impl_->active_tree()->PushPageScaleFromMainThread(page_scale, 1.f,
3435 page_scale); 3453 page_scale);
3436 3454
3437 DrawOneFrame(); 3455 DrawOneFrame();
3438 3456
3439 scoped_ptr<ScrollAndScaleSet> scroll_info = host_impl_->ProcessScrollDeltas(); 3457 scoped_ptr<ScrollAndScaleSet> scroll_info = host_impl_->ProcessScrollDeltas();
(...skipping 29 matching lines...) Expand all
3469 root->AddChild(child.Pass()); 3487 root->AddChild(child.Pass());
3470 host_impl_->active_tree()->SetRootLayer(root.Pass()); 3488 host_impl_->active_tree()->SetRootLayer(root.Pass());
3471 host_impl_->active_tree()->DidBecomeActive(); 3489 host_impl_->active_tree()->DidBecomeActive();
3472 host_impl_->SetViewportSize(surface_size); 3490 host_impl_->SetViewportSize(surface_size);
3473 grand_child_layer->PushScrollOffsetFromMainThread(gfx::ScrollOffset(0, 5)); 3491 grand_child_layer->PushScrollOffsetFromMainThread(gfx::ScrollOffset(0, 5));
3474 child_layer->PushScrollOffsetFromMainThread(gfx::ScrollOffset(3, 0)); 3492 child_layer->PushScrollOffsetFromMainThread(gfx::ScrollOffset(3, 0));
3475 3493
3476 DrawFrame(); 3494 DrawFrame();
3477 { 3495 {
3478 gfx::Vector2d scroll_delta(-8, -7); 3496 gfx::Vector2d scroll_delta(-8, -7);
3479 EXPECT_EQ(InputHandler::SCROLL_STARTED, 3497 EXPECT_EQ(InputHandler::ScrollStarted,
3480 host_impl_->ScrollBegin(gfx::Point(), InputHandler::WHEEL)); 3498 host_impl_->ScrollBegin(gfx::Point(),
3499 InputHandler::Wheel));
3481 host_impl_->ScrollBy(gfx::Point(), scroll_delta); 3500 host_impl_->ScrollBy(gfx::Point(), scroll_delta);
3482 host_impl_->ScrollEnd(); 3501 host_impl_->ScrollEnd();
3483 3502
3484 scoped_ptr<ScrollAndScaleSet> scroll_info = 3503 scoped_ptr<ScrollAndScaleSet> scroll_info =
3485 host_impl_->ProcessScrollDeltas(); 3504 host_impl_->ProcessScrollDeltas();
3486 3505
3487 // The grand child should have scrolled up to its limit. 3506 // The grand child should have scrolled up to its limit.
3488 LayerImpl* child = host_impl_->active_tree()->root_layer()->children()[0]; 3507 LayerImpl* child = host_impl_->active_tree()->root_layer()->children()[0];
3489 LayerImpl* grand_child = child->children()[0]; 3508 LayerImpl* grand_child = child->children()[0];
3490 ExpectContains(*scroll_info.get(), grand_child->id(), gfx::Vector2d(0, -5)); 3509 ExpectContains(*scroll_info.get(), grand_child->id(), gfx::Vector2d(0, -5));
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
3522 Layer::INVALID_ID); 3541 Layer::INVALID_ID);
3523 host_impl_->active_tree()->DidBecomeActive(); 3542 host_impl_->active_tree()->DidBecomeActive();
3524 host_impl_->SetViewportSize(viewport_size); 3543 host_impl_->SetViewportSize(viewport_size);
3525 3544
3526 grand_child_layer->PushScrollOffsetFromMainThread(gfx::ScrollOffset(0, 2)); 3545 grand_child_layer->PushScrollOffsetFromMainThread(gfx::ScrollOffset(0, 2));
3527 child_layer->PushScrollOffsetFromMainThread(gfx::ScrollOffset(0, 3)); 3546 child_layer->PushScrollOffsetFromMainThread(gfx::ScrollOffset(0, 3));
3528 3547
3529 DrawFrame(); 3548 DrawFrame();
3530 { 3549 {
3531 gfx::Vector2d scroll_delta(0, -10); 3550 gfx::Vector2d scroll_delta(0, -10);
3532 EXPECT_EQ(InputHandler::SCROLL_STARTED, 3551 EXPECT_EQ(InputHandler::ScrollStarted,
3533 host_impl_->ScrollBegin(gfx::Point(), 3552 host_impl_->ScrollBegin(gfx::Point(),
3534 InputHandler::NON_BUBBLING_GESTURE)); 3553 InputHandler::NonBubblingGesture));
3535 host_impl_->ScrollBy(gfx::Point(), scroll_delta); 3554 host_impl_->ScrollBy(gfx::Point(), scroll_delta);
3536 host_impl_->ScrollEnd(); 3555 host_impl_->ScrollEnd();
3537 3556
3538 scoped_ptr<ScrollAndScaleSet> scroll_info = 3557 scoped_ptr<ScrollAndScaleSet> scroll_info =
3539 host_impl_->ProcessScrollDeltas(); 3558 host_impl_->ProcessScrollDeltas();
3540 3559
3541 // The grand child should have scrolled up to its limit. 3560 // The grand child should have scrolled up to its limit.
3542 LayerImpl* child = 3561 LayerImpl* child =
3543 host_impl_->active_tree()->root_layer()->children()[0]->children()[0]; 3562 host_impl_->active_tree()->root_layer()->children()[0]->children()[0];
3544 LayerImpl* grand_child = child->children()[0]; 3563 LayerImpl* grand_child = child->children()[0];
3545 ExpectContains(*scroll_info.get(), grand_child->id(), gfx::Vector2d(0, -2)); 3564 ExpectContains(*scroll_info.get(), grand_child->id(), gfx::Vector2d(0, -2));
3546 3565
3547 // The child should not have scrolled. 3566 // The child should not have scrolled.
3548 ExpectNone(*scroll_info.get(), child->id()); 3567 ExpectNone(*scroll_info.get(), child->id());
3549 3568
3550 // The next time we scroll we should only scroll the parent. 3569 // The next time we scroll we should only scroll the parent.
3551 scroll_delta = gfx::Vector2d(0, -3); 3570 scroll_delta = gfx::Vector2d(0, -3);
3552 EXPECT_EQ(InputHandler::SCROLL_STARTED, 3571 EXPECT_EQ(InputHandler::ScrollStarted,
3553 host_impl_->ScrollBegin(gfx::Point(5, 5), 3572 host_impl_->ScrollBegin(gfx::Point(5, 5),
3554 InputHandler::NON_BUBBLING_GESTURE)); 3573 InputHandler::NonBubblingGesture));
3555 EXPECT_EQ(host_impl_->CurrentlyScrollingLayer(), grand_child); 3574 EXPECT_EQ(host_impl_->CurrentlyScrollingLayer(), grand_child);
3556 host_impl_->ScrollBy(gfx::Point(), scroll_delta); 3575 host_impl_->ScrollBy(gfx::Point(), scroll_delta);
3557 EXPECT_EQ(host_impl_->CurrentlyScrollingLayer(), child); 3576 EXPECT_EQ(host_impl_->CurrentlyScrollingLayer(), child);
3558 host_impl_->ScrollEnd(); 3577 host_impl_->ScrollEnd();
3559 3578
3560 scroll_info = host_impl_->ProcessScrollDeltas(); 3579 scroll_info = host_impl_->ProcessScrollDeltas();
3561 3580
3562 // The child should have scrolled up to its limit. 3581 // The child should have scrolled up to its limit.
3563 ExpectContains(*scroll_info.get(), child->id(), gfx::Vector2d(0, -3)); 3582 ExpectContains(*scroll_info.get(), child->id(), gfx::Vector2d(0, -3));
3564 3583
3565 // The grand child should not have scrolled. 3584 // The grand child should not have scrolled.
3566 ExpectContains(*scroll_info.get(), grand_child->id(), gfx::Vector2d(0, -2)); 3585 ExpectContains(*scroll_info.get(), grand_child->id(), gfx::Vector2d(0, -2));
3567 3586
3568 // After scrolling the parent, another scroll on the opposite direction 3587 // After scrolling the parent, another scroll on the opposite direction
3569 // should still scroll the child. 3588 // should still scroll the child.
3570 scroll_delta = gfx::Vector2d(0, 7); 3589 scroll_delta = gfx::Vector2d(0, 7);
3571 EXPECT_EQ(InputHandler::SCROLL_STARTED, 3590 EXPECT_EQ(InputHandler::ScrollStarted,
3572 host_impl_->ScrollBegin(gfx::Point(5, 5), 3591 host_impl_->ScrollBegin(gfx::Point(5, 5),
3573 InputHandler::NON_BUBBLING_GESTURE)); 3592 InputHandler::NonBubblingGesture));
3574 EXPECT_EQ(host_impl_->CurrentlyScrollingLayer(), grand_child); 3593 EXPECT_EQ(host_impl_->CurrentlyScrollingLayer(), grand_child);
3575 host_impl_->ScrollBy(gfx::Point(), scroll_delta); 3594 host_impl_->ScrollBy(gfx::Point(), scroll_delta);
3576 EXPECT_EQ(host_impl_->CurrentlyScrollingLayer(), grand_child); 3595 EXPECT_EQ(host_impl_->CurrentlyScrollingLayer(), grand_child);
3577 host_impl_->ScrollEnd(); 3596 host_impl_->ScrollEnd();
3578 3597
3579 scroll_info = host_impl_->ProcessScrollDeltas(); 3598 scroll_info = host_impl_->ProcessScrollDeltas();
3580 3599
3581 // The grand child should have scrolled. 3600 // The grand child should have scrolled.
3582 ExpectContains(*scroll_info.get(), grand_child->id(), gfx::Vector2d(0, 5)); 3601 ExpectContains(*scroll_info.get(), grand_child->id(), gfx::Vector2d(0, 5));
3583 3602
3584 // The child should not have scrolled. 3603 // The child should not have scrolled.
3585 ExpectContains(*scroll_info.get(), child->id(), gfx::Vector2d(0, -3)); 3604 ExpectContains(*scroll_info.get(), child->id(), gfx::Vector2d(0, -3));
3586 3605
3587 3606
3588 // Scrolling should be adjusted from viewport space. 3607 // Scrolling should be adjusted from viewport space.
3589 host_impl_->active_tree()->PushPageScaleFromMainThread(2.f, 2.f, 2.f); 3608 host_impl_->active_tree()->PushPageScaleFromMainThread(2.f, 2.f, 2.f);
3590 host_impl_->SetPageScaleOnActiveTree(2.f); 3609 host_impl_->SetPageScaleOnActiveTree(2.f);
3591 3610
3592 scroll_delta = gfx::Vector2d(0, -2); 3611 scroll_delta = gfx::Vector2d(0, -2);
3593 EXPECT_EQ(InputHandler::SCROLL_STARTED, 3612 EXPECT_EQ(InputHandler::ScrollStarted,
3594 host_impl_->ScrollBegin(gfx::Point(1, 1), 3613 host_impl_->ScrollBegin(gfx::Point(1, 1),
3595 InputHandler::NON_BUBBLING_GESTURE)); 3614 InputHandler::NonBubblingGesture));
3596 EXPECT_EQ(grand_child, host_impl_->CurrentlyScrollingLayer()); 3615 EXPECT_EQ(grand_child, host_impl_->CurrentlyScrollingLayer());
3597 host_impl_->ScrollBy(gfx::Point(), scroll_delta); 3616 host_impl_->ScrollBy(gfx::Point(), scroll_delta);
3598 host_impl_->ScrollEnd(); 3617 host_impl_->ScrollEnd();
3599 3618
3600 scroll_info = host_impl_->ProcessScrollDeltas(); 3619 scroll_info = host_impl_->ProcessScrollDeltas();
3601 3620
3602 // Should have scrolled by half the amount in layer space (5 - 2/2) 3621 // Should have scrolled by half the amount in layer space (5 - 2/2)
3603 ExpectContains(*scroll_info.get(), grand_child->id(), gfx::Vector2d(0, 4)); 3622 ExpectContains(*scroll_info.get(), grand_child->id(), gfx::Vector2d(0, 4));
3604 } 3623 }
3605 } 3624 }
(...skipping 19 matching lines...) Expand all
3625 root_clip->AddChild(root.Pass()); 3644 root_clip->AddChild(root.Pass());
3626 3645
3627 host_impl_->SetViewportSize(surface_size); 3646 host_impl_->SetViewportSize(surface_size);
3628 host_impl_->active_tree()->SetRootLayer(root_clip.Pass()); 3647 host_impl_->active_tree()->SetRootLayer(root_clip.Pass());
3629 host_impl_->active_tree()->SetViewportLayersFromIds(Layer::INVALID_ID, 3, 2, 3648 host_impl_->active_tree()->SetViewportLayersFromIds(Layer::INVALID_ID, 3, 2,
3630 Layer::INVALID_ID); 3649 Layer::INVALID_ID);
3631 host_impl_->active_tree()->DidBecomeActive(); 3650 host_impl_->active_tree()->DidBecomeActive();
3632 DrawFrame(); 3651 DrawFrame();
3633 { 3652 {
3634 gfx::Vector2d scroll_delta(0, 4); 3653 gfx::Vector2d scroll_delta(0, 4);
3635 EXPECT_EQ(InputHandler::SCROLL_STARTED, 3654 EXPECT_EQ(InputHandler::ScrollStarted,
3636 host_impl_->ScrollBegin(gfx::Point(5, 5), InputHandler::WHEEL)); 3655 host_impl_->ScrollBegin(gfx::Point(5, 5),
3656 InputHandler::Wheel));
3637 host_impl_->ScrollBy(gfx::Point(), scroll_delta); 3657 host_impl_->ScrollBy(gfx::Point(), scroll_delta);
3638 host_impl_->ScrollEnd(); 3658 host_impl_->ScrollEnd();
3639 3659
3640 scoped_ptr<ScrollAndScaleSet> scroll_info = 3660 scoped_ptr<ScrollAndScaleSet> scroll_info =
3641 host_impl_->ProcessScrollDeltas(); 3661 host_impl_->ProcessScrollDeltas();
3642 3662
3643 // Only the root scroll should have scrolled. 3663 // Only the root scroll should have scrolled.
3644 ASSERT_EQ(scroll_info->scrolls.size(), 1u); 3664 ASSERT_EQ(scroll_info->scrolls.size(), 1u);
3645 ExpectContains(*scroll_info.get(), root_scroll_id, scroll_delta); 3665 ExpectContains(*scroll_info.get(), root_scroll_id, scroll_delta);
3646 } 3666 }
(...skipping 24 matching lines...) Expand all
3671 CreateScrollableLayer(4, surface_size, root_clip2.get()); 3691 CreateScrollableLayer(4, surface_size, root_clip2.get());
3672 root_scroll2->SetIsContainerForFixedPositionLayers(true); 3692 root_scroll2->SetIsContainerForFixedPositionLayers(true);
3673 root_clip2->AddChild(root_scroll2.Pass()); 3693 root_clip2->AddChild(root_scroll2.Pass());
3674 root_clip2->SetHasRenderSurface(true); 3694 root_clip2->SetHasRenderSurface(true);
3675 host_impl_->active_tree()->SetRootLayer(root_clip2.Pass()); 3695 host_impl_->active_tree()->SetRootLayer(root_clip2.Pass());
3676 host_impl_->active_tree()->SetViewportLayersFromIds(Layer::INVALID_ID, 3, 4, 3696 host_impl_->active_tree()->SetViewportLayersFromIds(Layer::INVALID_ID, 3, 4,
3677 Layer::INVALID_ID); 3697 Layer::INVALID_ID);
3678 host_impl_->active_tree()->DidBecomeActive(); 3698 host_impl_->active_tree()->DidBecomeActive();
3679 3699
3680 // Scrolling should still work even though we did not draw yet. 3700 // Scrolling should still work even though we did not draw yet.
3681 EXPECT_EQ(InputHandler::SCROLL_STARTED, 3701 EXPECT_EQ(InputHandler::ScrollStarted,
3682 host_impl_->ScrollBegin(gfx::Point(5, 5), InputHandler::WHEEL)); 3702 host_impl_->ScrollBegin(gfx::Point(5, 5),
3703 InputHandler::Wheel));
3683 } 3704 }
3684 3705
3685 TEST_F(LayerTreeHostImplTest, ScrollAxisAlignedRotatedLayer) { 3706 TEST_F(LayerTreeHostImplTest, ScrollAxisAlignedRotatedLayer) {
3686 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 100)); 3707 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 100));
3687 3708
3688 // Rotate the root layer 90 degrees counter-clockwise about its center. 3709 // Rotate the root layer 90 degrees counter-clockwise about its center.
3689 gfx::Transform rotate_transform; 3710 gfx::Transform rotate_transform;
3690 rotate_transform.Rotate(-90.0); 3711 rotate_transform.Rotate(-90.0);
3691 host_impl_->active_tree()->root_layer()->SetTransform(rotate_transform); 3712 host_impl_->active_tree()->root_layer()->SetTransform(rotate_transform);
3692 3713
3693 gfx::Size surface_size(50, 50); 3714 gfx::Size surface_size(50, 50);
3694 host_impl_->SetViewportSize(surface_size); 3715 host_impl_->SetViewportSize(surface_size);
3695 DrawFrame(); 3716 DrawFrame();
3696 3717
3697 // Scroll to the right in screen coordinates with a gesture. 3718 // Scroll to the right in screen coordinates with a gesture.
3698 gfx::Vector2d gesture_scroll_delta(10, 0); 3719 gfx::Vector2d gesture_scroll_delta(10, 0);
3699 EXPECT_EQ(InputHandler::SCROLL_STARTED, 3720 EXPECT_EQ(InputHandler::ScrollStarted,
3700 host_impl_->ScrollBegin(gfx::Point(), InputHandler::GESTURE)); 3721 host_impl_->ScrollBegin(gfx::Point(),
3722 InputHandler::Gesture));
3701 host_impl_->ScrollBy(gfx::Point(), gesture_scroll_delta); 3723 host_impl_->ScrollBy(gfx::Point(), gesture_scroll_delta);
3702 host_impl_->ScrollEnd(); 3724 host_impl_->ScrollEnd();
3703 3725
3704 // The layer should have scrolled down in its local coordinates. 3726 // The layer should have scrolled down in its local coordinates.
3705 scoped_ptr<ScrollAndScaleSet> scroll_info = host_impl_->ProcessScrollDeltas(); 3727 scoped_ptr<ScrollAndScaleSet> scroll_info = host_impl_->ProcessScrollDeltas();
3706 ExpectContains(*scroll_info.get(), scroll_layer->id(), 3728 ExpectContains(*scroll_info.get(), scroll_layer->id(),
3707 gfx::Vector2dF(0, gesture_scroll_delta.x())); 3729 gfx::Vector2dF(0, gesture_scroll_delta.x()));
3708 3730
3709 // Reset and scroll down with the wheel. 3731 // Reset and scroll down with the wheel.
3710 scroll_layer->SetScrollDelta(gfx::Vector2dF()); 3732 scroll_layer->SetScrollDelta(gfx::Vector2dF());
3711 gfx::Vector2d wheel_scroll_delta(0, 10); 3733 gfx::Vector2d wheel_scroll_delta(0, 10);
3712 EXPECT_EQ(InputHandler::SCROLL_STARTED, 3734 EXPECT_EQ(InputHandler::ScrollStarted,
3713 host_impl_->ScrollBegin(gfx::Point(), InputHandler::WHEEL)); 3735 host_impl_->ScrollBegin(gfx::Point(),
3736 InputHandler::Wheel));
3714 host_impl_->ScrollBy(gfx::Point(), wheel_scroll_delta); 3737 host_impl_->ScrollBy(gfx::Point(), wheel_scroll_delta);
3715 host_impl_->ScrollEnd(); 3738 host_impl_->ScrollEnd();
3716 3739
3717 // The layer should have scrolled down in its local coordinates. 3740 // The layer should have scrolled down in its local coordinates.
3718 scroll_info = host_impl_->ProcessScrollDeltas(); 3741 scroll_info = host_impl_->ProcessScrollDeltas();
3719 ExpectContains(*scroll_info.get(), 3742 ExpectContains(*scroll_info.get(),
3720 scroll_layer->id(), 3743 scroll_layer->id(),
3721 wheel_scroll_delta); 3744 wheel_scroll_delta);
3722 } 3745 }
3723 3746
(...skipping 25 matching lines...) Expand all
3749 LayerImpl* child_ptr = child.get(); 3772 LayerImpl* child_ptr = child.get();
3750 clip_layer->AddChild(child.Pass()); 3773 clip_layer->AddChild(child.Pass());
3751 scroll_layer->AddChild(clip_layer.Pass()); 3774 scroll_layer->AddChild(clip_layer.Pass());
3752 3775
3753 gfx::Size surface_size(50, 50); 3776 gfx::Size surface_size(50, 50);
3754 host_impl_->SetViewportSize(surface_size); 3777 host_impl_->SetViewportSize(surface_size);
3755 DrawFrame(); 3778 DrawFrame();
3756 { 3779 {
3757 // Scroll down in screen coordinates with a gesture. 3780 // Scroll down in screen coordinates with a gesture.
3758 gfx::Vector2d gesture_scroll_delta(0, 10); 3781 gfx::Vector2d gesture_scroll_delta(0, 10);
3759 EXPECT_EQ(InputHandler::SCROLL_STARTED, 3782 EXPECT_EQ(InputHandler::ScrollStarted,
3760 host_impl_->ScrollBegin(gfx::Point(1, 1), InputHandler::GESTURE)); 3783 host_impl_->ScrollBegin(gfx::Point(1, 1),
3784 InputHandler::Gesture));
3761 host_impl_->ScrollBy(gfx::Point(), gesture_scroll_delta); 3785 host_impl_->ScrollBy(gfx::Point(), gesture_scroll_delta);
3762 host_impl_->ScrollEnd(); 3786 host_impl_->ScrollEnd();
3763 3787
3764 // The child layer should have scrolled down in its local coordinates an 3788 // The child layer should have scrolled down in its local coordinates an
3765 // amount proportional to the angle between it and the input scroll delta. 3789 // amount proportional to the angle between it and the input scroll delta.
3766 gfx::Vector2dF expected_scroll_delta( 3790 gfx::Vector2dF expected_scroll_delta(
3767 0, gesture_scroll_delta.y() * 3791 0, gesture_scroll_delta.y() *
3768 std::cos(MathUtil::Deg2Rad(child_layer_angle))); 3792 std::cos(MathUtil::Deg2Rad(child_layer_angle)));
3769 scoped_ptr<ScrollAndScaleSet> scroll_info = 3793 scoped_ptr<ScrollAndScaleSet> scroll_info =
3770 host_impl_->ProcessScrollDeltas(); 3794 host_impl_->ProcessScrollDeltas();
3771 ExpectContains(*scroll_info.get(), child_layer_id, expected_scroll_delta); 3795 ExpectContains(*scroll_info.get(), child_layer_id, expected_scroll_delta);
3772 3796
3773 // The root scroll layer should not have scrolled, because the input delta 3797 // The root scroll layer should not have scrolled, because the input delta
3774 // was close to the layer's axis of movement. 3798 // was close to the layer's axis of movement.
3775 EXPECT_EQ(scroll_info->scrolls.size(), 1u); 3799 EXPECT_EQ(scroll_info->scrolls.size(), 1u);
3776 } 3800 }
3777 { 3801 {
3778 // Now reset and scroll the same amount horizontally. 3802 // Now reset and scroll the same amount horizontally.
3779 child_ptr->SetScrollDelta(gfx::Vector2dF()); 3803 child_ptr->SetScrollDelta(gfx::Vector2dF());
3780 gfx::Vector2d gesture_scroll_delta(10, 0); 3804 gfx::Vector2d gesture_scroll_delta(10, 0);
3781 EXPECT_EQ(InputHandler::SCROLL_STARTED, 3805 EXPECT_EQ(InputHandler::ScrollStarted,
3782 host_impl_->ScrollBegin(gfx::Point(1, 1), InputHandler::GESTURE)); 3806 host_impl_->ScrollBegin(gfx::Point(1, 1),
3807 InputHandler::Gesture));
3783 host_impl_->ScrollBy(gfx::Point(), gesture_scroll_delta); 3808 host_impl_->ScrollBy(gfx::Point(), gesture_scroll_delta);
3784 host_impl_->ScrollEnd(); 3809 host_impl_->ScrollEnd();
3785 3810
3786 // The child layer should have scrolled down in its local coordinates an 3811 // The child layer should have scrolled down in its local coordinates an
3787 // amount proportional to the angle between it and the input scroll delta. 3812 // amount proportional to the angle between it and the input scroll delta.
3788 gfx::Vector2dF expected_scroll_delta( 3813 gfx::Vector2dF expected_scroll_delta(
3789 0, -gesture_scroll_delta.x() * 3814 0, -gesture_scroll_delta.x() *
3790 std::sin(MathUtil::Deg2Rad(child_layer_angle))); 3815 std::sin(MathUtil::Deg2Rad(child_layer_angle)));
3791 scoped_ptr<ScrollAndScaleSet> scroll_info = 3816 scoped_ptr<ScrollAndScaleSet> scroll_info =
3792 host_impl_->ProcessScrollDeltas(); 3817 host_impl_->ProcessScrollDeltas();
(...skipping 20 matching lines...) Expand all
3813 gfx::Transform scale_transform; 3838 gfx::Transform scale_transform;
3814 scale_transform.Scale(scale, scale); 3839 scale_transform.Scale(scale, scale);
3815 scroll_layer->SetTransform(scale_transform); 3840 scroll_layer->SetTransform(scale_transform);
3816 3841
3817 gfx::Size surface_size(50, 50); 3842 gfx::Size surface_size(50, 50);
3818 host_impl_->SetViewportSize(surface_size); 3843 host_impl_->SetViewportSize(surface_size);
3819 DrawFrame(); 3844 DrawFrame();
3820 3845
3821 // Scroll down in screen coordinates with a gesture. 3846 // Scroll down in screen coordinates with a gesture.
3822 gfx::Vector2d scroll_delta(0, 10); 3847 gfx::Vector2d scroll_delta(0, 10);
3823 EXPECT_EQ(InputHandler::SCROLL_STARTED, 3848 EXPECT_EQ(InputHandler::ScrollStarted,
3824 host_impl_->ScrollBegin(gfx::Point(), InputHandler::GESTURE)); 3849 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture));
3825 host_impl_->ScrollBy(gfx::Point(), scroll_delta); 3850 host_impl_->ScrollBy(gfx::Point(), scroll_delta);
3826 host_impl_->ScrollEnd(); 3851 host_impl_->ScrollEnd();
3827 3852
3828 // The layer should have scrolled down in its local coordinates, but half the 3853 // The layer should have scrolled down in its local coordinates, but half the
3829 // amount. 3854 // amount.
3830 scoped_ptr<ScrollAndScaleSet> scroll_info = host_impl_->ProcessScrollDeltas(); 3855 scoped_ptr<ScrollAndScaleSet> scroll_info = host_impl_->ProcessScrollDeltas();
3831 ExpectContains(*scroll_info.get(), 3856 ExpectContains(*scroll_info.get(),
3832 scroll_layer->id(), 3857 scroll_layer->id(),
3833 gfx::Vector2d(0, scroll_delta.y() / scale)); 3858 gfx::Vector2d(0, scroll_delta.y() / scale));
3834 3859
3835 // Reset and scroll down with the wheel. 3860 // Reset and scroll down with the wheel.
3836 scroll_layer->SetScrollDelta(gfx::Vector2dF()); 3861 scroll_layer->SetScrollDelta(gfx::Vector2dF());
3837 gfx::Vector2d wheel_scroll_delta(0, 10); 3862 gfx::Vector2d wheel_scroll_delta(0, 10);
3838 EXPECT_EQ(InputHandler::SCROLL_STARTED, 3863 EXPECT_EQ(InputHandler::ScrollStarted,
3839 host_impl_->ScrollBegin(gfx::Point(), InputHandler::WHEEL)); 3864 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Wheel));
3840 host_impl_->ScrollBy(gfx::Point(), wheel_scroll_delta); 3865 host_impl_->ScrollBy(gfx::Point(), wheel_scroll_delta);
3841 host_impl_->ScrollEnd(); 3866 host_impl_->ScrollEnd();
3842 3867
3843 // It should apply the scale factor to the scroll delta for the wheel event. 3868 // It should apply the scale factor to the scroll delta for the wheel event.
3844 scroll_info = host_impl_->ProcessScrollDeltas(); 3869 scroll_info = host_impl_->ProcessScrollDeltas();
3845 ExpectContains(*scroll_info.get(), 3870 ExpectContains(*scroll_info.get(),
3846 scroll_layer->id(), 3871 scroll_layer->id(),
3847 wheel_scroll_delta); 3872 wheel_scroll_delta);
3848 } 3873 }
3849 3874
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
3968 EXPECT_EQ(4.f, scroll_delegate.max_page_scale_factor()); 3993 EXPECT_EQ(4.f, scroll_delegate.max_page_scale_factor());
3969 host_impl_->SetPageScaleOnActiveTree(2.f); 3994 host_impl_->SetPageScaleOnActiveTree(2.f);
3970 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, 0.5f, 4.f); 3995 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, 0.5f, 4.f);
3971 EXPECT_EQ(1.f, scroll_delegate.page_scale_factor()); 3996 EXPECT_EQ(1.f, scroll_delegate.page_scale_factor());
3972 EXPECT_EQ(0.5f, scroll_delegate.min_page_scale_factor()); 3997 EXPECT_EQ(0.5f, scroll_delegate.min_page_scale_factor());
3973 EXPECT_EQ(4.f, scroll_delegate.max_page_scale_factor()); 3998 EXPECT_EQ(4.f, scroll_delegate.max_page_scale_factor());
3974 3999
3975 // The pinch gesture doesn't put the delegate into a state where the scroll 4000 // The pinch gesture doesn't put the delegate into a state where the scroll
3976 // offset is outside of the scroll range. (this is verified by DCHECKs in the 4001 // offset is outside of the scroll range. (this is verified by DCHECKs in the
3977 // delegate). 4002 // delegate).
3978 host_impl_->ScrollBegin(gfx::Point(), InputHandler::GESTURE); 4003 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture);
3979 host_impl_->PinchGestureBegin(); 4004 host_impl_->PinchGestureBegin();
3980 host_impl_->PinchGestureUpdate(2.f, gfx::Point()); 4005 host_impl_->PinchGestureUpdate(2.f, gfx::Point());
3981 host_impl_->PinchGestureUpdate(.5f, gfx::Point()); 4006 host_impl_->PinchGestureUpdate(.5f, gfx::Point());
3982 host_impl_->PinchGestureEnd(); 4007 host_impl_->PinchGestureEnd();
3983 host_impl_->ScrollEnd(); 4008 host_impl_->ScrollEnd();
3984 4009
3985 // Scrolling should be relative to the offset as returned by the delegate. 4010 // Scrolling should be relative to the offset as returned by the delegate.
3986 gfx::Vector2dF scroll_delta(0.f, 10.f); 4011 gfx::Vector2dF scroll_delta(0.f, 10.f);
3987 gfx::ScrollOffset current_offset(7.f, 8.f); 4012 gfx::ScrollOffset current_offset(7.f, 8.f);
3988 4013
3989 scroll_delegate.set_getter_return_value(current_offset); 4014 scroll_delegate.set_getter_return_value(current_offset);
3990 EXPECT_EQ(InputHandler::SCROLL_STARTED, 4015 EXPECT_EQ(InputHandler::ScrollStarted,
3991 host_impl_->ScrollBegin(gfx::Point(), InputHandler::GESTURE)); 4016 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture));
3992 4017
3993 host_impl_->ScrollBy(gfx::Point(), scroll_delta); 4018 host_impl_->ScrollBy(gfx::Point(), scroll_delta);
3994 EXPECT_EQ(ScrollOffsetWithDelta(current_offset, scroll_delta), 4019 EXPECT_EQ(ScrollOffsetWithDelta(current_offset, scroll_delta),
3995 scroll_delegate.last_set_scroll_offset()); 4020 scroll_delegate.last_set_scroll_offset());
3996 4021
3997 current_offset = gfx::ScrollOffset(42.f, 41.f); 4022 current_offset = gfx::ScrollOffset(42.f, 41.f);
3998 scroll_delegate.set_getter_return_value(current_offset); 4023 scroll_delegate.set_getter_return_value(current_offset);
3999 host_impl_->ScrollBy(gfx::Point(), scroll_delta); 4024 host_impl_->ScrollBy(gfx::Point(), scroll_delta);
4000 EXPECT_EQ(current_offset + gfx::ScrollOffset(scroll_delta), 4025 EXPECT_EQ(current_offset + gfx::ScrollOffset(scroll_delta),
4001 scroll_delegate.last_set_scroll_offset()); 4026 scroll_delegate.last_set_scroll_offset());
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
4062 4087
4063 TEST_F(LayerTreeHostImplTest, OverscrollRoot) { 4088 TEST_F(LayerTreeHostImplTest, OverscrollRoot) {
4064 InputHandlerScrollResult scroll_result; 4089 InputHandlerScrollResult scroll_result;
4065 SetupScrollAndContentsLayers(gfx::Size(100, 100)); 4090 SetupScrollAndContentsLayers(gfx::Size(100, 100));
4066 host_impl_->SetViewportSize(gfx::Size(50, 50)); 4091 host_impl_->SetViewportSize(gfx::Size(50, 50));
4067 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, 0.5f, 4.f); 4092 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, 0.5f, 4.f);
4068 DrawFrame(); 4093 DrawFrame();
4069 EXPECT_EQ(gfx::Vector2dF(), host_impl_->accumulated_root_overscroll()); 4094 EXPECT_EQ(gfx::Vector2dF(), host_impl_->accumulated_root_overscroll());
4070 4095
4071 // In-bounds scrolling does not affect overscroll. 4096 // In-bounds scrolling does not affect overscroll.
4072 EXPECT_EQ(InputHandler::SCROLL_STARTED, 4097 EXPECT_EQ(InputHandler::ScrollStarted,
4073 host_impl_->ScrollBegin(gfx::Point(), InputHandler::WHEEL)); 4098 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Wheel));
4074 scroll_result = host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 10)); 4099 scroll_result = host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 10));
4075 EXPECT_TRUE(scroll_result.did_scroll); 4100 EXPECT_TRUE(scroll_result.did_scroll);
4076 EXPECT_FALSE(scroll_result.did_overscroll_root); 4101 EXPECT_FALSE(scroll_result.did_overscroll_root);
4077 EXPECT_EQ(gfx::Vector2dF(), scroll_result.unused_scroll_delta); 4102 EXPECT_EQ(gfx::Vector2dF(), scroll_result.unused_scroll_delta);
4078 EXPECT_EQ(gfx::Vector2dF(), host_impl_->accumulated_root_overscroll()); 4103 EXPECT_EQ(gfx::Vector2dF(), host_impl_->accumulated_root_overscroll());
4079 4104
4080 // Overscroll events are reflected immediately. 4105 // Overscroll events are reflected immediately.
4081 scroll_result = host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 50)); 4106 scroll_result = host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 50));
4082 EXPECT_TRUE(scroll_result.did_scroll); 4107 EXPECT_TRUE(scroll_result.did_scroll);
4083 EXPECT_TRUE(scroll_result.did_overscroll_root); 4108 EXPECT_TRUE(scroll_result.did_overscroll_root);
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
4197 root->AddChild(child.Pass()); 4222 root->AddChild(child.Pass());
4198 root_clip->AddChild(root.Pass()); 4223 root_clip->AddChild(root.Pass());
4199 child_layer->PushScrollOffsetFromMainThread(gfx::ScrollOffset(0, 3)); 4224 child_layer->PushScrollOffsetFromMainThread(gfx::ScrollOffset(0, 3));
4200 grand_child_layer->PushScrollOffsetFromMainThread(gfx::ScrollOffset(0, 2)); 4225 grand_child_layer->PushScrollOffsetFromMainThread(gfx::ScrollOffset(0, 2));
4201 host_impl_->active_tree()->SetRootLayer(root_clip.Pass()); 4226 host_impl_->active_tree()->SetRootLayer(root_clip.Pass());
4202 host_impl_->active_tree()->DidBecomeActive(); 4227 host_impl_->active_tree()->DidBecomeActive();
4203 host_impl_->SetViewportSize(surface_size); 4228 host_impl_->SetViewportSize(surface_size);
4204 DrawFrame(); 4229 DrawFrame();
4205 { 4230 {
4206 gfx::Vector2d scroll_delta(0, -10); 4231 gfx::Vector2d scroll_delta(0, -10);
4207 EXPECT_EQ(InputHandler::SCROLL_STARTED, 4232 EXPECT_EQ(InputHandler::ScrollStarted,
4208 host_impl_->ScrollBegin(gfx::Point(), 4233 host_impl_->ScrollBegin(gfx::Point(),
4209 InputHandler::NON_BUBBLING_GESTURE)); 4234 InputHandler::NonBubblingGesture));
4210 host_impl_->ScrollBy(gfx::Point(), scroll_delta); 4235 host_impl_->ScrollBy(gfx::Point(), scroll_delta);
4211 EXPECT_EQ(gfx::Vector2dF(), host_impl_->accumulated_root_overscroll()); 4236 EXPECT_EQ(gfx::Vector2dF(), host_impl_->accumulated_root_overscroll());
4212 host_impl_->ScrollEnd(); 4237 host_impl_->ScrollEnd();
4213 4238
4214 // The next time we scroll we should only scroll the parent, but overscroll 4239 // The next time we scroll we should only scroll the parent, but overscroll
4215 // should still not reach the root layer. 4240 // should still not reach the root layer.
4216 scroll_delta = gfx::Vector2d(0, -30); 4241 scroll_delta = gfx::Vector2d(0, -30);
4217 EXPECT_EQ(InputHandler::SCROLL_STARTED, 4242 EXPECT_EQ(InputHandler::ScrollStarted,
4218 host_impl_->ScrollBegin(gfx::Point(5, 5), 4243 host_impl_->ScrollBegin(gfx::Point(5, 5),
4219 InputHandler::NON_BUBBLING_GESTURE)); 4244 InputHandler::NonBubblingGesture));
4220 EXPECT_EQ(host_impl_->CurrentlyScrollingLayer(), grand_child_layer); 4245 EXPECT_EQ(host_impl_->CurrentlyScrollingLayer(), grand_child_layer);
4221 EXPECT_EQ(gfx::Vector2dF(), host_impl_->accumulated_root_overscroll()); 4246 EXPECT_EQ(gfx::Vector2dF(), host_impl_->accumulated_root_overscroll());
4222 host_impl_->ScrollBy(gfx::Point(), scroll_delta); 4247 host_impl_->ScrollBy(gfx::Point(), scroll_delta);
4223 EXPECT_EQ(host_impl_->CurrentlyScrollingLayer(), child_layer); 4248 EXPECT_EQ(host_impl_->CurrentlyScrollingLayer(), child_layer);
4224 EXPECT_EQ(gfx::Vector2dF(), host_impl_->accumulated_root_overscroll()); 4249 EXPECT_EQ(gfx::Vector2dF(), host_impl_->accumulated_root_overscroll());
4225 host_impl_->ScrollEnd(); 4250 host_impl_->ScrollEnd();
4226 4251
4227 // After scrolling the parent, another scroll on the opposite direction 4252 // After scrolling the parent, another scroll on the opposite direction
4228 // should scroll the child. 4253 // should scroll the child.
4229 scroll_delta = gfx::Vector2d(0, 70); 4254 scroll_delta = gfx::Vector2d(0, 70);
4230 EXPECT_EQ(InputHandler::SCROLL_STARTED, 4255 EXPECT_EQ(InputHandler::ScrollStarted,
4231 host_impl_->ScrollBegin(gfx::Point(5, 5), 4256 host_impl_->ScrollBegin(gfx::Point(5, 5),
4232 InputHandler::NON_BUBBLING_GESTURE)); 4257 InputHandler::NonBubblingGesture));
4233 EXPECT_EQ(host_impl_->CurrentlyScrollingLayer(), grand_child_layer); 4258 EXPECT_EQ(host_impl_->CurrentlyScrollingLayer(), grand_child_layer);
4234 host_impl_->ScrollBy(gfx::Point(), scroll_delta); 4259 host_impl_->ScrollBy(gfx::Point(), scroll_delta);
4235 EXPECT_EQ(host_impl_->CurrentlyScrollingLayer(), grand_child_layer); 4260 EXPECT_EQ(host_impl_->CurrentlyScrollingLayer(), grand_child_layer);
4236 EXPECT_EQ(gfx::Vector2dF(), host_impl_->accumulated_root_overscroll()); 4261 EXPECT_EQ(gfx::Vector2dF(), host_impl_->accumulated_root_overscroll());
4237 host_impl_->ScrollEnd(); 4262 host_impl_->ScrollEnd();
4238 } 4263 }
4239 } 4264 }
4240 4265
4241 TEST_F(LayerTreeHostImplTest, OverscrollChildEventBubbling) { 4266 TEST_F(LayerTreeHostImplTest, OverscrollChildEventBubbling) {
4242 // When we try to scroll a non-scrollable child layer, the scroll delta 4267 // When we try to scroll a non-scrollable child layer, the scroll delta
(...skipping 16 matching lines...) Expand all
4259 root_clip->AddChild(root.Pass()); 4284 root_clip->AddChild(root.Pass());
4260 4285
4261 host_impl_->SetViewportSize(surface_size); 4286 host_impl_->SetViewportSize(surface_size);
4262 host_impl_->active_tree()->SetRootLayer(root_clip.Pass()); 4287 host_impl_->active_tree()->SetRootLayer(root_clip.Pass());
4263 host_impl_->active_tree()->SetViewportLayersFromIds(Layer::INVALID_ID, 3, 1, 4288 host_impl_->active_tree()->SetViewportLayersFromIds(Layer::INVALID_ID, 3, 1,
4264 Layer::INVALID_ID); 4289 Layer::INVALID_ID);
4265 host_impl_->active_tree()->DidBecomeActive(); 4290 host_impl_->active_tree()->DidBecomeActive();
4266 DrawFrame(); 4291 DrawFrame();
4267 { 4292 {
4268 gfx::Vector2d scroll_delta(0, 8); 4293 gfx::Vector2d scroll_delta(0, 8);
4269 EXPECT_EQ(InputHandler::SCROLL_STARTED, 4294 EXPECT_EQ(InputHandler::ScrollStarted,
4270 host_impl_->ScrollBegin(gfx::Point(5, 5), InputHandler::WHEEL)); 4295 host_impl_->ScrollBegin(gfx::Point(5, 5),
4296 InputHandler::Wheel));
4271 host_impl_->ScrollBy(gfx::Point(), scroll_delta); 4297 host_impl_->ScrollBy(gfx::Point(), scroll_delta);
4272 EXPECT_EQ(gfx::Vector2dF(), host_impl_->accumulated_root_overscroll()); 4298 EXPECT_EQ(gfx::Vector2dF(), host_impl_->accumulated_root_overscroll());
4273 host_impl_->ScrollBy(gfx::Point(), scroll_delta); 4299 host_impl_->ScrollBy(gfx::Point(), scroll_delta);
4274 EXPECT_EQ(gfx::Vector2dF(0, 6), host_impl_->accumulated_root_overscroll()); 4300 EXPECT_EQ(gfx::Vector2dF(0, 6), host_impl_->accumulated_root_overscroll());
4275 host_impl_->ScrollBy(gfx::Point(), scroll_delta); 4301 host_impl_->ScrollBy(gfx::Point(), scroll_delta);
4276 EXPECT_EQ(gfx::Vector2dF(0, 14), host_impl_->accumulated_root_overscroll()); 4302 EXPECT_EQ(gfx::Vector2dF(0, 14), host_impl_->accumulated_root_overscroll());
4277 host_impl_->ScrollEnd(); 4303 host_impl_->ScrollEnd();
4278 } 4304 }
4279 } 4305 }
4280 4306
4281 TEST_F(LayerTreeHostImplTest, OverscrollAlways) { 4307 TEST_F(LayerTreeHostImplTest, OverscrollAlways) {
4282 LayerTreeSettings settings; 4308 LayerTreeSettings settings;
4283 CreateHostImpl(settings, CreateOutputSurface()); 4309 CreateHostImpl(settings, CreateOutputSurface());
4284 4310
4285 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(50, 50)); 4311 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(50, 50));
4286 LayerImpl* clip_layer = scroll_layer->parent()->parent(); 4312 LayerImpl* clip_layer = scroll_layer->parent()->parent();
4287 clip_layer->SetBounds(gfx::Size(50, 50)); 4313 clip_layer->SetBounds(gfx::Size(50, 50));
4288 host_impl_->SetViewportSize(gfx::Size(50, 50)); 4314 host_impl_->SetViewportSize(gfx::Size(50, 50));
4289 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, 0.5f, 4.f); 4315 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, 0.5f, 4.f);
4290 DrawFrame(); 4316 DrawFrame();
4291 EXPECT_EQ(gfx::Vector2dF(), host_impl_->accumulated_root_overscroll()); 4317 EXPECT_EQ(gfx::Vector2dF(), host_impl_->accumulated_root_overscroll());
4292 4318
4293 // Even though the layer can't scroll the overscroll still happens. 4319 // Even though the layer can't scroll the overscroll still happens.
4294 EXPECT_EQ(InputHandler::SCROLL_STARTED, 4320 EXPECT_EQ(InputHandler::ScrollStarted,
4295 host_impl_->ScrollBegin(gfx::Point(), InputHandler::WHEEL)); 4321 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Wheel));
4296 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 10)); 4322 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 10));
4297 EXPECT_EQ(gfx::Vector2dF(0, 10), host_impl_->accumulated_root_overscroll()); 4323 EXPECT_EQ(gfx::Vector2dF(0, 10), host_impl_->accumulated_root_overscroll());
4298 } 4324 }
4299 4325
4300 TEST_F(LayerTreeHostImplTest, NoOverscrollOnFractionalDeviceScale) { 4326 TEST_F(LayerTreeHostImplTest, NoOverscrollOnFractionalDeviceScale) {
4301 gfx::Size surface_size(980, 1439); 4327 gfx::Size surface_size(980, 1439);
4302 gfx::Size content_size(980, 1438); 4328 gfx::Size content_size(980, 1438);
4303 float device_scale_factor = 1.5f; 4329 float device_scale_factor = 1.5f;
4304 scoped_ptr<LayerImpl> root_clip = 4330 scoped_ptr<LayerImpl> root_clip =
4305 LayerImpl::Create(host_impl_->active_tree(), 3); 4331 LayerImpl::Create(host_impl_->active_tree(), 3);
(...skipping 16 matching lines...) Expand all
4322 host_impl_->SetDeviceScaleFactor(device_scale_factor); 4348 host_impl_->SetDeviceScaleFactor(device_scale_factor);
4323 host_impl_->active_tree()->SetRootLayer(root_clip.Pass()); 4349 host_impl_->active_tree()->SetRootLayer(root_clip.Pass());
4324 host_impl_->active_tree()->SetViewportLayersFromIds(Layer::INVALID_ID, 3, 1, 4350 host_impl_->active_tree()->SetViewportLayersFromIds(Layer::INVALID_ID, 3, 1,
4325 Layer::INVALID_ID); 4351 Layer::INVALID_ID);
4326 host_impl_->active_tree()->DidBecomeActive(); 4352 host_impl_->active_tree()->DidBecomeActive();
4327 DrawFrame(); 4353 DrawFrame();
4328 { 4354 {
4329 // Horizontal & Vertical GlowEffect should not be applied when 4355 // Horizontal & Vertical GlowEffect should not be applied when
4330 // content size is less then view port size. For Example Horizontal & 4356 // content size is less then view port size. For Example Horizontal &
4331 // vertical GlowEffect should not be applied in about:blank page. 4357 // vertical GlowEffect should not be applied in about:blank page.
4332 EXPECT_EQ(InputHandler::SCROLL_STARTED, 4358 EXPECT_EQ(InputHandler::ScrollStarted,
4333 host_impl_->ScrollBegin(gfx::Point(0, 0), InputHandler::WHEEL)); 4359 host_impl_->ScrollBegin(gfx::Point(0, 0), InputHandler::Wheel));
4334 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2dF(0, -1)); 4360 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2dF(0, -1));
4335 EXPECT_EQ(gfx::Vector2dF().ToString(), 4361 EXPECT_EQ(gfx::Vector2dF().ToString(),
4336 host_impl_->accumulated_root_overscroll().ToString()); 4362 host_impl_->accumulated_root_overscroll().ToString());
4337 4363
4338 host_impl_->ScrollEnd(); 4364 host_impl_->ScrollEnd();
4339 } 4365 }
4340 } 4366 }
4341 4367
4342 TEST_F(LayerTreeHostImplTest, NoOverscrollWhenNotAtEdge) { 4368 TEST_F(LayerTreeHostImplTest, NoOverscrollWhenNotAtEdge) {
4343 gfx::Size surface_size(100, 100); 4369 gfx::Size surface_size(100, 100);
(...skipping 15 matching lines...) Expand all
4359 host_impl_->SetViewportSize(surface_size); 4385 host_impl_->SetViewportSize(surface_size);
4360 host_impl_->active_tree()->SetRootLayer(root_clip.Pass()); 4386 host_impl_->active_tree()->SetRootLayer(root_clip.Pass());
4361 host_impl_->active_tree()->SetViewportLayersFromIds(Layer::INVALID_ID, 3, 1, 4387 host_impl_->active_tree()->SetViewportLayersFromIds(Layer::INVALID_ID, 3, 1,
4362 Layer::INVALID_ID); 4388 Layer::INVALID_ID);
4363 host_impl_->active_tree()->DidBecomeActive(); 4389 host_impl_->active_tree()->DidBecomeActive();
4364 DrawFrame(); 4390 DrawFrame();
4365 { 4391 {
4366 // Edge glow effect should be applicable only upon reaching Edges 4392 // Edge glow effect should be applicable only upon reaching Edges
4367 // of the content. unnecessary glow effect calls shouldn't be 4393 // of the content. unnecessary glow effect calls shouldn't be
4368 // called while scrolling up without reaching the edge of the content. 4394 // called while scrolling up without reaching the edge of the content.
4369 EXPECT_EQ(InputHandler::SCROLL_STARTED, 4395 EXPECT_EQ(InputHandler::ScrollStarted,
4370 host_impl_->ScrollBegin(gfx::Point(0, 0), InputHandler::WHEEL)); 4396 host_impl_->ScrollBegin(gfx::Point(0, 0), InputHandler::Wheel));
4371 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2dF(0, 100)); 4397 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2dF(0, 100));
4372 EXPECT_EQ(gfx::Vector2dF().ToString(), 4398 EXPECT_EQ(gfx::Vector2dF().ToString(),
4373 host_impl_->accumulated_root_overscroll().ToString()); 4399 host_impl_->accumulated_root_overscroll().ToString());
4374 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2dF(0, -2.30f)); 4400 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2dF(0, -2.30f));
4375 EXPECT_EQ(gfx::Vector2dF().ToString(), 4401 EXPECT_EQ(gfx::Vector2dF().ToString(),
4376 host_impl_->accumulated_root_overscroll().ToString()); 4402 host_impl_->accumulated_root_overscroll().ToString());
4377 host_impl_->ScrollEnd(); 4403 host_impl_->ScrollEnd();
4378 // unusedrootDelta should be subtracted from applied delta so that 4404 // unusedrootDelta should be subtracted from applied delta so that
4379 // unwanted glow effect calls are not called. 4405 // unwanted glow effect calls are not called.
4380 EXPECT_EQ(InputHandler::SCROLL_STARTED, 4406 EXPECT_EQ(InputHandler::ScrollStarted,
4381 host_impl_->ScrollBegin(gfx::Point(0, 0), 4407 host_impl_->ScrollBegin(gfx::Point(0, 0),
4382 InputHandler::NON_BUBBLING_GESTURE)); 4408 InputHandler::NonBubblingGesture));
4383 EXPECT_EQ(InputHandler::SCROLL_STARTED, host_impl_->FlingScrollBegin()); 4409 EXPECT_EQ(InputHandler::ScrollStarted, host_impl_->FlingScrollBegin());
4384 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2dF(0, 20)); 4410 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2dF(0, 20));
4385 EXPECT_EQ(gfx::Vector2dF(0.000000f, 17.699997f).ToString(), 4411 EXPECT_EQ(gfx::Vector2dF(0.000000f, 17.699997f).ToString(),
4386 host_impl_->accumulated_root_overscroll().ToString()); 4412 host_impl_->accumulated_root_overscroll().ToString());
4387 4413
4388 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2dF(0.02f, -0.01f)); 4414 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2dF(0.02f, -0.01f));
4389 EXPECT_EQ(gfx::Vector2dF(0.000000f, 17.699997f).ToString(), 4415 EXPECT_EQ(gfx::Vector2dF(0.000000f, 17.699997f).ToString(),
4390 host_impl_->accumulated_root_overscroll().ToString()); 4416 host_impl_->accumulated_root_overscroll().ToString());
4391 host_impl_->ScrollEnd(); 4417 host_impl_->ScrollEnd();
4392 // TestCase to check kEpsilon, which prevents minute values to trigger 4418 // TestCase to check kEpsilon, which prevents minute values to trigger
4393 // gloweffect without reaching edge. 4419 // gloweffect without reaching edge.
4394 EXPECT_EQ(InputHandler::SCROLL_STARTED, 4420 EXPECT_EQ(InputHandler::ScrollStarted,
4395 host_impl_->ScrollBegin(gfx::Point(0, 0), InputHandler::WHEEL)); 4421 host_impl_->ScrollBegin(gfx::Point(0, 0), InputHandler::Wheel));
4396 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2dF(-0.12f, 0.1f)); 4422 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2dF(-0.12f, 0.1f));
4397 EXPECT_EQ(gfx::Vector2dF().ToString(), 4423 EXPECT_EQ(gfx::Vector2dF().ToString(),
4398 host_impl_->accumulated_root_overscroll().ToString()); 4424 host_impl_->accumulated_root_overscroll().ToString());
4399 host_impl_->ScrollEnd(); 4425 host_impl_->ScrollEnd();
4400 } 4426 }
4401 } 4427 }
4402 4428
4403 class BlendStateCheckLayer : public LayerImpl { 4429 class BlendStateCheckLayer : public LayerImpl {
4404 public: 4430 public:
4405 static scoped_ptr<LayerImpl> Create(LayerTreeImpl* tree_impl, 4431 static scoped_ptr<LayerImpl> Create(LayerTreeImpl* tree_impl,
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
4460 ResourceProvider* resource_provider) 4486 ResourceProvider* resource_provider)
4461 : LayerImpl(tree_impl, id), 4487 : LayerImpl(tree_impl, id),
4462 blend_(false), 4488 blend_(false),
4463 has_render_surface_(false), 4489 has_render_surface_(false),
4464 quads_appended_(false), 4490 quads_appended_(false),
4465 quad_rect_(5, 5, 5, 5), 4491 quad_rect_(5, 5, 5, 5),
4466 quad_visible_rect_(5, 5, 5, 5), 4492 quad_visible_rect_(5, 5, 5, 5),
4467 resource_id_(resource_provider->CreateResource( 4493 resource_id_(resource_provider->CreateResource(
4468 gfx::Size(1, 1), 4494 gfx::Size(1, 1),
4469 GL_CLAMP_TO_EDGE, 4495 GL_CLAMP_TO_EDGE,
4470 ResourceProvider::TEXTURE_HINT_IMMUTABLE, 4496 ResourceProvider::TextureHintImmutable,
4471 RGBA_8888)) { 4497 RGBA_8888)) {
4472 resource_provider->AllocateForTesting(resource_id_); 4498 resource_provider->AllocateForTesting(resource_id_);
4473 SetBounds(gfx::Size(10, 10)); 4499 SetBounds(gfx::Size(10, 10));
4474 SetContentBounds(gfx::Size(10, 10)); 4500 SetContentBounds(gfx::Size(10, 10));
4475 SetDrawsContent(true); 4501 SetDrawsContent(true);
4476 } 4502 }
4477 4503
4478 bool blend_; 4504 bool blend_;
4479 bool has_render_surface_; 4505 bool has_render_surface_;
4480 bool quads_appended_; 4506 bool quads_appended_;
(...skipping 1922 matching lines...) Expand 10 before | Expand all | Expand 10 after
6403 content_layer->SetDrawsContent(true); 6429 content_layer->SetDrawsContent(true);
6404 6430
6405 root->SetBounds(root_size); 6431 root->SetBounds(root_size);
6406 6432
6407 gfx::ScrollOffset scroll_offset(100000, 0); 6433 gfx::ScrollOffset scroll_offset(100000, 0);
6408 scrolling_layer->SetScrollClipLayer(root->id()); 6434 scrolling_layer->SetScrollClipLayer(root->id());
6409 scrolling_layer->PushScrollOffsetFromMainThread(scroll_offset); 6435 scrolling_layer->PushScrollOffsetFromMainThread(scroll_offset);
6410 6436
6411 host_impl_->ActivateSyncTree(); 6437 host_impl_->ActivateSyncTree();
6412 6438
6413 bool update_lcd_text = false; 6439 host_impl_->active_tree()->UpdateDrawProperties();
6414 host_impl_->active_tree()->UpdateDrawProperties(update_lcd_text);
6415 ASSERT_EQ(1u, host_impl_->active_tree()->RenderSurfaceLayerList().size()); 6440 ASSERT_EQ(1u, host_impl_->active_tree()->RenderSurfaceLayerList().size());
6416 6441
6417 LayerTreeHostImpl::FrameData frame; 6442 LayerTreeHostImpl::FrameData frame;
6418 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 6443 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
6419 6444
6420 ASSERT_EQ(1u, frame.render_passes.size()); 6445 ASSERT_EQ(1u, frame.render_passes.size());
6421 ASSERT_LE(1u, frame.render_passes[0]->quad_list.size()); 6446 ASSERT_LE(1u, frame.render_passes[0]->quad_list.size());
6422 const DrawQuad* quad = frame.render_passes[0]->quad_list.front(); 6447 const DrawQuad* quad = frame.render_passes[0]->quad_list.front();
6423 6448
6424 bool antialiased = 6449 bool antialiased =
(...skipping 460 matching lines...) Expand 10 before | Expand all | Expand 10 after
6885 int root_id = root->id(); 6910 int root_id = root->id();
6886 root_clip->AddChild(root.Pass()); 6911 root_clip->AddChild(root.Pass());
6887 6912
6888 host_impl_->SetViewportSize(surface_size); 6913 host_impl_->SetViewportSize(surface_size);
6889 host_impl_->active_tree()->SetRootLayer(root_clip.Pass()); 6914 host_impl_->active_tree()->SetRootLayer(root_clip.Pass());
6890 host_impl_->active_tree()->SetViewportLayersFromIds(Layer::INVALID_ID, 3, 1, 6915 host_impl_->active_tree()->SetViewportLayersFromIds(Layer::INVALID_ID, 3, 1,
6891 Layer::INVALID_ID); 6916 Layer::INVALID_ID);
6892 host_impl_->active_tree()->DidBecomeActive(); 6917 host_impl_->active_tree()->DidBecomeActive();
6893 DrawFrame(); 6918 DrawFrame();
6894 { 6919 {
6895 EXPECT_EQ(InputHandler::SCROLL_STARTED, 6920 EXPECT_EQ(InputHandler::ScrollStarted,
6896 host_impl_->ScrollBegin(gfx::Point(), InputHandler::GESTURE)); 6921 host_impl_->ScrollBegin(gfx::Point(),
6922 InputHandler::Gesture));
6897 6923
6898 EXPECT_EQ(InputHandler::SCROLL_STARTED, host_impl_->FlingScrollBegin()); 6924 EXPECT_EQ(InputHandler::ScrollStarted,
6925 host_impl_->FlingScrollBegin());
6899 6926
6900 gfx::Vector2d scroll_delta(0, 100); 6927 gfx::Vector2d scroll_delta(0, 100);
6901 host_impl_->ScrollBy(gfx::Point(), scroll_delta); 6928 host_impl_->ScrollBy(gfx::Point(), scroll_delta);
6902 host_impl_->ScrollBy(gfx::Point(), scroll_delta); 6929 host_impl_->ScrollBy(gfx::Point(), scroll_delta);
6903 6930
6904 host_impl_->ScrollEnd(); 6931 host_impl_->ScrollEnd();
6905 6932
6906 scoped_ptr<ScrollAndScaleSet> scroll_info = 6933 scoped_ptr<ScrollAndScaleSet> scroll_info =
6907 host_impl_->ProcessScrollDeltas(); 6934 host_impl_->ProcessScrollDeltas();
6908 6935
(...skipping 27 matching lines...) Expand all
6936 host_impl_->active_tree()->DidBecomeActive(); 6963 host_impl_->active_tree()->DidBecomeActive();
6937 host_impl_->SetViewportSize(surface_size); 6964 host_impl_->SetViewportSize(surface_size);
6938 DrawFrame(); 6965 DrawFrame();
6939 { 6966 {
6940 scoped_ptr<ScrollAndScaleSet> scroll_info; 6967 scoped_ptr<ScrollAndScaleSet> scroll_info;
6941 LayerImpl* child = 6968 LayerImpl* child =
6942 host_impl_->active_tree()->root_layer()->children()[0]->children()[0]; 6969 host_impl_->active_tree()->root_layer()->children()[0]->children()[0];
6943 LayerImpl* grand_child = child->children()[0]; 6970 LayerImpl* grand_child = child->children()[0];
6944 6971
6945 gfx::Vector2d scroll_delta(0, -2); 6972 gfx::Vector2d scroll_delta(0, -2);
6946 EXPECT_EQ(InputHandler::SCROLL_STARTED, 6973 EXPECT_EQ(InputHandler::ScrollStarted,
6947 host_impl_->ScrollBegin(gfx::Point(), InputHandler::GESTURE)); 6974 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture));
6948 EXPECT_TRUE(host_impl_->ScrollBy(gfx::Point(), scroll_delta).did_scroll); 6975 EXPECT_TRUE(host_impl_->ScrollBy(gfx::Point(), scroll_delta).did_scroll);
6949 6976
6950 // The grand child should have scrolled up to its limit. 6977 // The grand child should have scrolled up to its limit.
6951 scroll_info = host_impl_->ProcessScrollDeltas(); 6978 scroll_info = host_impl_->ProcessScrollDeltas();
6952 ASSERT_EQ(1u, scroll_info->scrolls.size()); 6979 ASSERT_EQ(1u, scroll_info->scrolls.size());
6953 ExpectContains(*scroll_info, grand_child->id(), scroll_delta); 6980 ExpectContains(*scroll_info, grand_child->id(), scroll_delta);
6954 EXPECT_EQ(host_impl_->CurrentlyScrollingLayer(), grand_child); 6981 EXPECT_EQ(host_impl_->CurrentlyScrollingLayer(), grand_child);
6955 6982
6956 // The child should have received the bubbled delta, but the locked 6983 // The child should have received the bubbled delta, but the locked
6957 // scrolling layer should remain set as the grand child. 6984 // scrolling layer should remain set as the grand child.
6958 EXPECT_TRUE(host_impl_->ScrollBy(gfx::Point(), scroll_delta).did_scroll); 6985 EXPECT_TRUE(host_impl_->ScrollBy(gfx::Point(), scroll_delta).did_scroll);
6959 scroll_info = host_impl_->ProcessScrollDeltas(); 6986 scroll_info = host_impl_->ProcessScrollDeltas();
6960 ASSERT_EQ(2u, scroll_info->scrolls.size()); 6987 ASSERT_EQ(2u, scroll_info->scrolls.size());
6961 ExpectContains(*scroll_info, grand_child->id(), scroll_delta); 6988 ExpectContains(*scroll_info, grand_child->id(), scroll_delta);
6962 ExpectContains(*scroll_info, child->id(), scroll_delta); 6989 ExpectContains(*scroll_info, child->id(), scroll_delta);
6963 EXPECT_EQ(host_impl_->CurrentlyScrollingLayer(), grand_child); 6990 EXPECT_EQ(host_impl_->CurrentlyScrollingLayer(), grand_child);
6964 6991
6965 // The first |ScrollBy| after the fling should re-lock the scrolling 6992 // The first |ScrollBy| after the fling should re-lock the scrolling
6966 // layer to the first layer that scrolled, which is the child. 6993 // layer to the first layer that scrolled, which is the child.
6967 EXPECT_EQ(InputHandler::SCROLL_STARTED, host_impl_->FlingScrollBegin()); 6994 EXPECT_EQ(InputHandler::ScrollStarted, host_impl_->FlingScrollBegin());
6968 EXPECT_TRUE(host_impl_->ScrollBy(gfx::Point(), scroll_delta).did_scroll); 6995 EXPECT_TRUE(host_impl_->ScrollBy(gfx::Point(), scroll_delta).did_scroll);
6969 EXPECT_EQ(host_impl_->CurrentlyScrollingLayer(), child); 6996 EXPECT_EQ(host_impl_->CurrentlyScrollingLayer(), child);
6970 6997
6971 // The child should have scrolled up to its limit. 6998 // The child should have scrolled up to its limit.
6972 scroll_info = host_impl_->ProcessScrollDeltas(); 6999 scroll_info = host_impl_->ProcessScrollDeltas();
6973 ASSERT_EQ(2u, scroll_info->scrolls.size()); 7000 ASSERT_EQ(2u, scroll_info->scrolls.size());
6974 ExpectContains(*scroll_info, grand_child->id(), scroll_delta); 7001 ExpectContains(*scroll_info, grand_child->id(), scroll_delta);
6975 ExpectContains(*scroll_info, child->id(), scroll_delta + scroll_delta); 7002 ExpectContains(*scroll_info, child->id(), scroll_delta + scroll_delta);
6976 7003
6977 // As the locked layer is at it's limit, no further scrolling can occur. 7004 // As the locked layer is at it's limit, no further scrolling can occur.
(...skipping 18 matching lines...) Expand all
6996 CreateScrollableLayer(2, content_size, root_clip.get()); 7023 CreateScrollableLayer(2, content_size, root_clip.get());
6997 7024
6998 root_scroll->AddChild(child.Pass()); 7025 root_scroll->AddChild(child.Pass());
6999 root_clip->AddChild(root_scroll.Pass()); 7026 root_clip->AddChild(root_scroll.Pass());
7000 7027
7001 host_impl_->SetViewportSize(surface_size); 7028 host_impl_->SetViewportSize(surface_size);
7002 host_impl_->active_tree()->SetRootLayer(root_clip.Pass()); 7029 host_impl_->active_tree()->SetRootLayer(root_clip.Pass());
7003 host_impl_->active_tree()->DidBecomeActive(); 7030 host_impl_->active_tree()->DidBecomeActive();
7004 DrawFrame(); 7031 DrawFrame();
7005 { 7032 {
7006 EXPECT_EQ(InputHandler::SCROLL_STARTED, 7033 EXPECT_EQ(InputHandler::ScrollStarted,
7007 host_impl_->ScrollBegin(gfx::Point(), InputHandler::WHEEL)); 7034 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Wheel));
7008 7035
7009 EXPECT_EQ(InputHandler::SCROLL_STARTED, host_impl_->FlingScrollBegin()); 7036 EXPECT_EQ(InputHandler::ScrollStarted,
7037 host_impl_->FlingScrollBegin());
7010 7038
7011 gfx::Vector2d scroll_delta(0, 100); 7039 gfx::Vector2d scroll_delta(0, 100);
7012 host_impl_->ScrollBy(gfx::Point(), scroll_delta); 7040 host_impl_->ScrollBy(gfx::Point(), scroll_delta);
7013 host_impl_->ScrollBy(gfx::Point(), scroll_delta); 7041 host_impl_->ScrollBy(gfx::Point(), scroll_delta);
7014 7042
7015 host_impl_->ScrollEnd(); 7043 host_impl_->ScrollEnd();
7016 7044
7017 scoped_ptr<ScrollAndScaleSet> scroll_info = 7045 scoped_ptr<ScrollAndScaleSet> scroll_info =
7018 host_impl_->ProcessScrollDeltas(); 7046 host_impl_->ProcessScrollDeltas();
7019 7047
7020 // The root should have scrolled. 7048 // The root should have scrolled.
7021 ASSERT_EQ(2u, scroll_info->scrolls.size()); 7049 ASSERT_EQ(2u, scroll_info->scrolls.size());
7022 ExpectContains(*scroll_info.get(), root_scroll_id, gfx::Vector2d(0, 10)); 7050 ExpectContains(*scroll_info.get(), root_scroll_id, gfx::Vector2d(0, 10));
7023 } 7051 }
7024 } 7052 }
7025 7053
7026 TEST_F(LayerTreeHostImplTest, ScrollUnknownNotOnAncestorChain) { 7054 TEST_F(LayerTreeHostImplTest, ScrollUnknownNotOnAncestorChain) {
7027 // If we ray cast a scroller that is not on the first layer's ancestor chain, 7055 // If we ray cast a scroller that is not on the first layer's ancestor chain,
7028 // we should return SCROLL_UNKNOWN. 7056 // we should return ScrollUnknown.
7029 gfx::Size content_size(100, 100); 7057 gfx::Size content_size(100, 100);
7030 SetupScrollAndContentsLayers(content_size); 7058 SetupScrollAndContentsLayers(content_size);
7031 7059
7032 int scroll_layer_id = 2; 7060 int scroll_layer_id = 2;
7033 LayerImpl* scroll_layer = 7061 LayerImpl* scroll_layer =
7034 host_impl_->active_tree()->LayerById(scroll_layer_id); 7062 host_impl_->active_tree()->LayerById(scroll_layer_id);
7035 scroll_layer->SetDrawsContent(true); 7063 scroll_layer->SetDrawsContent(true);
7036 7064
7037 int page_scale_layer_id = 5; 7065 int page_scale_layer_id = 5;
7038 LayerImpl* page_scale_layer = 7066 LayerImpl* page_scale_layer =
7039 host_impl_->active_tree()->LayerById(page_scale_layer_id); 7067 host_impl_->active_tree()->LayerById(page_scale_layer_id);
7040 7068
7041 int occluder_layer_id = 6; 7069 int occluder_layer_id = 6;
7042 scoped_ptr<LayerImpl> occluder_layer = 7070 scoped_ptr<LayerImpl> occluder_layer =
7043 LayerImpl::Create(host_impl_->active_tree(), occluder_layer_id); 7071 LayerImpl::Create(host_impl_->active_tree(), occluder_layer_id);
7044 occluder_layer->SetDrawsContent(true); 7072 occluder_layer->SetDrawsContent(true);
7045 occluder_layer->SetBounds(content_size); 7073 occluder_layer->SetBounds(content_size);
7046 occluder_layer->SetContentBounds(content_size); 7074 occluder_layer->SetContentBounds(content_size);
7047 occluder_layer->SetPosition(gfx::PointF()); 7075 occluder_layer->SetPosition(gfx::PointF());
7048 7076
7049 // The parent of the occluder is *above* the scroller. 7077 // The parent of the occluder is *above* the scroller.
7050 page_scale_layer->AddChild(occluder_layer.Pass()); 7078 page_scale_layer->AddChild(occluder_layer.Pass());
7051 7079
7052 DrawFrame(); 7080 DrawFrame();
7053 7081
7054 EXPECT_EQ(InputHandler::SCROLL_UNKNOWN, 7082 EXPECT_EQ(InputHandler::ScrollUnknown,
7055 host_impl_->ScrollBegin(gfx::Point(), InputHandler::WHEEL)); 7083 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Wheel));
7056 } 7084 }
7057 7085
7058 TEST_F(LayerTreeHostImplTest, ScrollUnknownScrollAncestorMismatch) { 7086 TEST_F(LayerTreeHostImplTest, ScrollUnknownScrollAncestorMismatch) {
7059 // If we ray cast a scroller this is on the first layer's ancestor chain, but 7087 // If we ray cast a scroller this is on the first layer's ancestor chain, but
7060 // is not the first scroller we encounter when walking up from the layer, we 7088 // is not the first scroller we encounter when walking up from the layer, we
7061 // should also return SCROLL_UNKNOWN. 7089 // should also return ScrollUnknown.
7062 gfx::Size content_size(100, 100); 7090 gfx::Size content_size(100, 100);
7063 SetupScrollAndContentsLayers(content_size); 7091 SetupScrollAndContentsLayers(content_size);
7064 7092
7065 int scroll_layer_id = 2; 7093 int scroll_layer_id = 2;
7066 LayerImpl* scroll_layer = 7094 LayerImpl* scroll_layer =
7067 host_impl_->active_tree()->LayerById(scroll_layer_id); 7095 host_impl_->active_tree()->LayerById(scroll_layer_id);
7068 scroll_layer->SetDrawsContent(true); 7096 scroll_layer->SetDrawsContent(true);
7069 7097
7070 int occluder_layer_id = 6; 7098 int occluder_layer_id = 6;
7071 scoped_ptr<LayerImpl> occluder_layer = 7099 scoped_ptr<LayerImpl> occluder_layer =
(...skipping 11 matching lines...) Expand all
7083 scoped_ptr<LayerImpl> child_scroll = CreateScrollableLayer( 7111 scoped_ptr<LayerImpl> child_scroll = CreateScrollableLayer(
7084 child_scroll_layer_id, content_size, child_scroll_clip.get()); 7112 child_scroll_layer_id, content_size, child_scroll_clip.get());
7085 7113
7086 child_scroll->SetPosition(gfx::PointF(10.f, 10.f)); 7114 child_scroll->SetPosition(gfx::PointF(10.f, 10.f));
7087 7115
7088 child_scroll->AddChild(occluder_layer.Pass()); 7116 child_scroll->AddChild(occluder_layer.Pass());
7089 scroll_layer->AddChild(child_scroll.Pass()); 7117 scroll_layer->AddChild(child_scroll.Pass());
7090 7118
7091 DrawFrame(); 7119 DrawFrame();
7092 7120
7093 EXPECT_EQ(InputHandler::SCROLL_UNKNOWN, 7121 EXPECT_EQ(InputHandler::ScrollUnknown,
7094 host_impl_->ScrollBegin(gfx::Point(), InputHandler::WHEEL)); 7122 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Wheel));
7095 } 7123 }
7096 7124
7097 TEST_F(LayerTreeHostImplTest, ScrollInvisibleScroller) { 7125 TEST_F(LayerTreeHostImplTest, ScrollInvisibleScroller) {
7098 gfx::Size content_size(100, 100); 7126 gfx::Size content_size(100, 100);
7099 SetupScrollAndContentsLayers(content_size); 7127 SetupScrollAndContentsLayers(content_size);
7100 7128
7101 LayerImpl* root = host_impl_->active_tree()->LayerById(1); 7129 LayerImpl* root = host_impl_->active_tree()->LayerById(1);
7102 7130
7103 int scroll_layer_id = 2; 7131 int scroll_layer_id = 2;
7104 LayerImpl* scroll_layer = 7132 LayerImpl* scroll_layer =
7105 host_impl_->active_tree()->LayerById(scroll_layer_id); 7133 host_impl_->active_tree()->LayerById(scroll_layer_id);
7106 7134
7107 int child_scroll_layer_id = 7; 7135 int child_scroll_layer_id = 7;
7108 scoped_ptr<LayerImpl> child_scroll = 7136 scoped_ptr<LayerImpl> child_scroll =
7109 CreateScrollableLayer(child_scroll_layer_id, content_size, root); 7137 CreateScrollableLayer(child_scroll_layer_id, content_size, root);
7110 child_scroll->SetDrawsContent(false); 7138 child_scroll->SetDrawsContent(false);
7111 7139
7112 scroll_layer->AddChild(child_scroll.Pass()); 7140 scroll_layer->AddChild(child_scroll.Pass());
7113 7141
7114 DrawFrame(); 7142 DrawFrame();
7115 7143
7116 // We should not have scrolled |child_scroll| even though we technically "hit" 7144 // We should not have scrolled |child_scroll| even though we technically "hit"
7117 // it. The reason for this is that if the scrolling the scroll would not move 7145 // it. The reason for this is that if the scrolling the scroll would not move
7118 // any layer that is a drawn RSLL member, then we can ignore the hit. 7146 // any layer that is a drawn RSLL member, then we can ignore the hit.
7119 // 7147 //
7120 // Why SCROLL_STARTED? In this case, it's because we've bubbled out and 7148 // Why ScrollStarted? In this case, it's because we've bubbled out and started
7121 // started overscrolling the inner viewport. 7149 // overscrolling the inner viewport.
7122 EXPECT_EQ(InputHandler::SCROLL_STARTED, 7150 EXPECT_EQ(InputHandler::ScrollStarted,
7123 host_impl_->ScrollBegin(gfx::Point(), InputHandler::WHEEL)); 7151 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Wheel));
7124 7152
7125 EXPECT_EQ(2, host_impl_->CurrentlyScrollingLayer()->id()); 7153 EXPECT_EQ(2, host_impl_->CurrentlyScrollingLayer()->id());
7126 } 7154 }
7127 7155
7128 TEST_F(LayerTreeHostImplTest, ScrollInvisibleScrollerWithVisibleScrollChild) { 7156 TEST_F(LayerTreeHostImplTest, ScrollInvisibleScrollerWithVisibleScrollChild) {
7129 // This test case is very similar to the one above with one key difference: 7157 // This test case is very similar to the one above with one key difference:
7130 // the invisible scroller has a scroll child that is indeed draw contents. 7158 // the invisible scroller has a scroll child that is indeed draw contents.
7131 // If we attempt to initiate a gesture scroll off of the visible scroll child 7159 // If we attempt to initiate a gesture scroll off of the visible scroll child
7132 // we should still start the scroll child. 7160 // we should still start the scroll child.
7133 gfx::Size content_size(100, 100); 7161 gfx::Size content_size(100, 100);
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
7167 container->AddChild(scroll_child.Pass()); 7195 container->AddChild(scroll_child.Pass());
7168 7196
7169 scroll_layer->AddChild(container.Pass()); 7197 scroll_layer->AddChild(container.Pass());
7170 7198
7171 DrawFrame(); 7199 DrawFrame();
7172 7200
7173 // We should not have scrolled |child_scroll| even though we technically "hit" 7201 // We should not have scrolled |child_scroll| even though we technically "hit"
7174 // it. The reason for this is that if the scrolling the scroll would not move 7202 // it. The reason for this is that if the scrolling the scroll would not move
7175 // any layer that is a drawn RSLL member, then we can ignore the hit. 7203 // any layer that is a drawn RSLL member, then we can ignore the hit.
7176 // 7204 //
7177 // Why SCROLL_STARTED? In this case, it's because we've bubbled out and 7205 // Why ScrollStarted? In this case, it's because we've bubbled out and started
7178 // started overscrolling the inner viewport. 7206 // overscrolling the inner viewport.
7179 EXPECT_EQ(InputHandler::SCROLL_STARTED, 7207 EXPECT_EQ(InputHandler::ScrollStarted,
7180 host_impl_->ScrollBegin(gfx::Point(), InputHandler::WHEEL)); 7208 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Wheel));
7181 7209
7182 EXPECT_EQ(7, host_impl_->CurrentlyScrollingLayer()->id()); 7210 EXPECT_EQ(7, host_impl_->CurrentlyScrollingLayer()->id());
7183 } 7211 }
7184 7212
7185 // Make sure LatencyInfo carried by LatencyInfoSwapPromise are passed 7213 // Make sure LatencyInfo carried by LatencyInfoSwapPromise are passed
7186 // to CompositorFrameMetadata after SwapBuffers(); 7214 // to CompositorFrameMetadata after SwapBuffers();
7187 TEST_F(LayerTreeHostImplTest, LatencyInfoPassedToCompositorFrameMetadata) { 7215 TEST_F(LayerTreeHostImplTest, LatencyInfoPassedToCompositorFrameMetadata) {
7188 scoped_ptr<SolidColorLayerImpl> root = 7216 scoped_ptr<SolidColorLayerImpl> root =
7189 SolidColorLayerImpl::Create(host_impl_->active_tree(), 1); 7217 SolidColorLayerImpl::Create(host_impl_->active_tree(), 1);
7190 root->SetPosition(gfx::PointF()); 7218 root->SetPosition(gfx::PointF());
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after
7366 forward_to_main_count = 0; 7394 forward_to_main_count = 0;
7367 scoped_ptr<SimpleSwapPromiseMonitor> swap_promise_monitor( 7395 scoped_ptr<SimpleSwapPromiseMonitor> swap_promise_monitor(
7368 new SimpleSwapPromiseMonitor(NULL, 7396 new SimpleSwapPromiseMonitor(NULL,
7369 host_impl_.get(), 7397 host_impl_.get(),
7370 &set_needs_commit_count, 7398 &set_needs_commit_count,
7371 &set_needs_redraw_count, 7399 &set_needs_redraw_count,
7372 &forward_to_main_count)); 7400 &forward_to_main_count));
7373 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 100)); 7401 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 100));
7374 7402
7375 // Scrolling normally should not trigger any forwarding. 7403 // Scrolling normally should not trigger any forwarding.
7376 EXPECT_EQ(InputHandler::SCROLL_STARTED, 7404 EXPECT_EQ(InputHandler::ScrollStarted,
7377 host_impl_->ScrollBegin(gfx::Point(), InputHandler::GESTURE)); 7405 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture));
7378 EXPECT_TRUE( 7406 EXPECT_TRUE(
7379 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 10)).did_scroll); 7407 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 10)).did_scroll);
7380 host_impl_->ScrollEnd(); 7408 host_impl_->ScrollEnd();
7381 7409
7382 EXPECT_EQ(0, set_needs_commit_count); 7410 EXPECT_EQ(0, set_needs_commit_count);
7383 EXPECT_EQ(1, set_needs_redraw_count); 7411 EXPECT_EQ(1, set_needs_redraw_count);
7384 EXPECT_EQ(0, forward_to_main_count); 7412 EXPECT_EQ(0, forward_to_main_count);
7385 7413
7386 // Scrolling with a scroll handler should defer the swap to the main 7414 // Scrolling with a scroll handler should defer the swap to the main
7387 // thread. 7415 // thread.
7388 scroll_layer->SetHaveScrollEventHandlers(true); 7416 scroll_layer->SetHaveScrollEventHandlers(true);
7389 EXPECT_EQ(InputHandler::SCROLL_STARTED, 7417 EXPECT_EQ(InputHandler::ScrollStarted,
7390 host_impl_->ScrollBegin(gfx::Point(), InputHandler::GESTURE)); 7418 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture));
7391 EXPECT_TRUE( 7419 EXPECT_TRUE(
7392 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 10)).did_scroll); 7420 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 10)).did_scroll);
7393 host_impl_->ScrollEnd(); 7421 host_impl_->ScrollEnd();
7394 7422
7395 EXPECT_EQ(0, set_needs_commit_count); 7423 EXPECT_EQ(0, set_needs_commit_count);
7396 EXPECT_EQ(2, set_needs_redraw_count); 7424 EXPECT_EQ(2, set_needs_redraw_count);
7397 EXPECT_EQ(1, forward_to_main_count); 7425 EXPECT_EQ(1, forward_to_main_count);
7398 } 7426 }
7399 } 7427 }
7400 7428
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
7455 EXPECT_TRUE(did_request_redraw_); 7483 EXPECT_TRUE(did_request_redraw_);
7456 } 7484 }
7457 7485
7458 TEST_F(LayerTreeHostImplWithTopControlsTest, ScrollHandledByTopControls) { 7486 TEST_F(LayerTreeHostImplWithTopControlsTest, ScrollHandledByTopControls) {
7459 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 200)); 7487 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 200));
7460 host_impl_->SetViewportSize(gfx::Size(100, 100)); 7488 host_impl_->SetViewportSize(gfx::Size(100, 100));
7461 host_impl_->top_controls_manager()->UpdateTopControlsState( 7489 host_impl_->top_controls_manager()->UpdateTopControlsState(
7462 BOTH, SHOWN, false); 7490 BOTH, SHOWN, false);
7463 DrawFrame(); 7491 DrawFrame();
7464 7492
7465 EXPECT_EQ(InputHandler::SCROLL_STARTED, 7493 EXPECT_EQ(InputHandler::ScrollStarted,
7466 host_impl_->ScrollBegin(gfx::Point(), InputHandler::GESTURE)); 7494 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture));
7467 EXPECT_EQ(0, host_impl_->top_controls_manager()->ControlsTopOffset()); 7495 EXPECT_EQ(0, host_impl_->top_controls_manager()->ControlsTopOffset());
7468 EXPECT_EQ(gfx::Vector2dF().ToString(), 7496 EXPECT_EQ(gfx::Vector2dF().ToString(),
7469 scroll_layer->CurrentScrollOffset().ToString()); 7497 scroll_layer->CurrentScrollOffset().ToString());
7470 7498
7471 // Scroll just the top controls and verify that the scroll succeeds. 7499 // Scroll just the top controls and verify that the scroll succeeds.
7472 const float residue = 10; 7500 const float residue = 10;
7473 float offset = top_controls_height_ - residue; 7501 float offset = top_controls_height_ - residue;
7474 EXPECT_TRUE( 7502 EXPECT_TRUE(
7475 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, offset)).did_scroll); 7503 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, offset)).did_scroll);
7476 EXPECT_EQ(-offset, host_impl_->top_controls_manager()->ControlsTopOffset()); 7504 EXPECT_EQ(-offset, host_impl_->top_controls_manager()->ControlsTopOffset());
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
7514 host_impl_->ScrollEnd(); 7542 host_impl_->ScrollEnd();
7515 } 7543 }
7516 7544
7517 TEST_F(LayerTreeHostImplWithTopControlsTest, TopControlsAnimationAtOrigin) { 7545 TEST_F(LayerTreeHostImplWithTopControlsTest, TopControlsAnimationAtOrigin) {
7518 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 200)); 7546 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 200));
7519 host_impl_->SetViewportSize(gfx::Size(100, 200)); 7547 host_impl_->SetViewportSize(gfx::Size(100, 200));
7520 host_impl_->top_controls_manager()->UpdateTopControlsState( 7548 host_impl_->top_controls_manager()->UpdateTopControlsState(
7521 BOTH, SHOWN, false); 7549 BOTH, SHOWN, false);
7522 DrawFrame(); 7550 DrawFrame();
7523 7551
7524 EXPECT_EQ(InputHandler::SCROLL_STARTED, 7552 EXPECT_EQ(InputHandler::ScrollStarted,
7525 host_impl_->ScrollBegin(gfx::Point(), InputHandler::GESTURE)); 7553 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture));
7526 EXPECT_EQ(0, host_impl_->top_controls_manager()->ControlsTopOffset()); 7554 EXPECT_EQ(0, host_impl_->top_controls_manager()->ControlsTopOffset());
7527 EXPECT_EQ(gfx::Vector2dF().ToString(), 7555 EXPECT_EQ(gfx::Vector2dF().ToString(),
7528 scroll_layer->CurrentScrollOffset().ToString()); 7556 scroll_layer->CurrentScrollOffset().ToString());
7529 7557
7530 // Scroll the top controls partially. 7558 // Scroll the top controls partially.
7531 const float residue = 35; 7559 const float residue = 35;
7532 float offset = top_controls_height_ - residue; 7560 float offset = top_controls_height_ - residue;
7533 EXPECT_TRUE( 7561 EXPECT_TRUE(
7534 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, offset)).did_scroll); 7562 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, offset)).did_scroll);
7535 EXPECT_EQ(-offset, host_impl_->top_controls_manager()->ControlsTopOffset()); 7563 EXPECT_EQ(-offset, host_impl_->top_controls_manager()->ControlsTopOffset());
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
7584 TEST_F(LayerTreeHostImplWithTopControlsTest, TopControlsAnimationAfterScroll) { 7612 TEST_F(LayerTreeHostImplWithTopControlsTest, TopControlsAnimationAfterScroll) {
7585 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 200)); 7613 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 200));
7586 host_impl_->SetViewportSize(gfx::Size(100, 100)); 7614 host_impl_->SetViewportSize(gfx::Size(100, 100));
7587 host_impl_->top_controls_manager()->UpdateTopControlsState( 7615 host_impl_->top_controls_manager()->UpdateTopControlsState(
7588 BOTH, SHOWN, false); 7616 BOTH, SHOWN, false);
7589 float initial_scroll_offset = 50; 7617 float initial_scroll_offset = 50;
7590 scroll_layer->PushScrollOffsetFromMainThread( 7618 scroll_layer->PushScrollOffsetFromMainThread(
7591 gfx::ScrollOffset(0, initial_scroll_offset)); 7619 gfx::ScrollOffset(0, initial_scroll_offset));
7592 DrawFrame(); 7620 DrawFrame();
7593 7621
7594 EXPECT_EQ(InputHandler::SCROLL_STARTED, 7622 EXPECT_EQ(InputHandler::ScrollStarted,
7595 host_impl_->ScrollBegin(gfx::Point(), InputHandler::GESTURE)); 7623 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture));
7596 EXPECT_EQ(0, host_impl_->top_controls_manager()->ControlsTopOffset()); 7624 EXPECT_EQ(0, host_impl_->top_controls_manager()->ControlsTopOffset());
7597 EXPECT_EQ(gfx::Vector2dF(0, initial_scroll_offset).ToString(), 7625 EXPECT_EQ(gfx::Vector2dF(0, initial_scroll_offset).ToString(),
7598 scroll_layer->CurrentScrollOffset().ToString()); 7626 scroll_layer->CurrentScrollOffset().ToString());
7599 7627
7600 // Scroll the top controls partially. 7628 // Scroll the top controls partially.
7601 const float residue = 15; 7629 const float residue = 15;
7602 float offset = top_controls_height_ - residue; 7630 float offset = top_controls_height_ - residue;
7603 EXPECT_TRUE( 7631 EXPECT_TRUE(
7604 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, offset)).did_scroll); 7632 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, offset)).did_scroll);
7605 EXPECT_EQ(-offset, host_impl_->top_controls_manager()->ControlsTopOffset()); 7633 EXPECT_EQ(-offset, host_impl_->top_controls_manager()->ControlsTopOffset());
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
7645 TopControlsScrollDeltaInOverScroll) { 7673 TopControlsScrollDeltaInOverScroll) {
7646 // test varifies that the overscroll delta should not have accumulated in 7674 // test varifies that the overscroll delta should not have accumulated in
7647 // the top controls if we do a hide and show without releasing finger. 7675 // the top controls if we do a hide and show without releasing finger.
7648 7676
7649 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 200)); 7677 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 200));
7650 host_impl_->SetViewportSize(gfx::Size(100, 100)); 7678 host_impl_->SetViewportSize(gfx::Size(100, 100));
7651 host_impl_->top_controls_manager()->UpdateTopControlsState(BOTH, SHOWN, 7679 host_impl_->top_controls_manager()->UpdateTopControlsState(BOTH, SHOWN,
7652 false); 7680 false);
7653 DrawFrame(); 7681 DrawFrame();
7654 7682
7655 EXPECT_EQ(InputHandler::SCROLL_STARTED, 7683 EXPECT_EQ(InputHandler::ScrollStarted,
7656 host_impl_->ScrollBegin(gfx::Point(), InputHandler::GESTURE)); 7684 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture));
7657 EXPECT_EQ(0, host_impl_->top_controls_manager()->ControlsTopOffset()); 7685 EXPECT_EQ(0, host_impl_->top_controls_manager()->ControlsTopOffset());
7658 7686
7659 float offset = 50; 7687 float offset = 50;
7660 EXPECT_TRUE( 7688 EXPECT_TRUE(
7661 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, offset)).did_scroll); 7689 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, offset)).did_scroll);
7662 EXPECT_EQ(-offset, host_impl_->top_controls_manager()->ControlsTopOffset()); 7690 EXPECT_EQ(-offset, host_impl_->top_controls_manager()->ControlsTopOffset());
7663 EXPECT_EQ(gfx::Vector2dF().ToString(), 7691 EXPECT_EQ(gfx::Vector2dF().ToString(),
7664 scroll_layer->CurrentScrollOffset().ToString()); 7692 scroll_layer->CurrentScrollOffset().ToString());
7665 7693
7666 EXPECT_TRUE( 7694 EXPECT_TRUE(
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
7778 LayerImpl* outer_scroll = host_impl_->OuterViewportScrollLayer(); 7806 LayerImpl* outer_scroll = host_impl_->OuterViewportScrollLayer();
7779 LayerImpl* inner_scroll = host_impl_->InnerViewportScrollLayer(); 7807 LayerImpl* inner_scroll = host_impl_->InnerViewportScrollLayer();
7780 DrawFrame(); 7808 DrawFrame();
7781 { 7809 {
7782 gfx::Vector2dF inner_expected; 7810 gfx::Vector2dF inner_expected;
7783 gfx::Vector2dF outer_expected; 7811 gfx::Vector2dF outer_expected;
7784 EXPECT_VECTOR_EQ(inner_expected, inner_scroll->CurrentScrollOffset()); 7812 EXPECT_VECTOR_EQ(inner_expected, inner_scroll->CurrentScrollOffset());
7785 EXPECT_VECTOR_EQ(outer_expected, outer_scroll->CurrentScrollOffset()); 7813 EXPECT_VECTOR_EQ(outer_expected, outer_scroll->CurrentScrollOffset());
7786 7814
7787 // Make sure the fling goes to the outer viewport first 7815 // Make sure the fling goes to the outer viewport first
7788 EXPECT_EQ(InputHandler::SCROLL_STARTED, 7816 EXPECT_EQ(InputHandler::ScrollStarted,
7789 host_impl_->ScrollBegin(gfx::Point(), InputHandler::GESTURE)); 7817 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture));
7790 EXPECT_EQ(InputHandler::SCROLL_STARTED, host_impl_->FlingScrollBegin()); 7818 EXPECT_EQ(InputHandler::ScrollStarted, host_impl_->FlingScrollBegin());
7791 7819
7792 gfx::Vector2d scroll_delta(inner_viewport.width(), inner_viewport.height()); 7820 gfx::Vector2d scroll_delta(inner_viewport.width(), inner_viewport.height());
7793 host_impl_->ScrollBy(gfx::Point(), scroll_delta); 7821 host_impl_->ScrollBy(gfx::Point(), scroll_delta);
7794 outer_expected += gfx::Vector2dF(scroll_delta.x(), scroll_delta.y()); 7822 outer_expected += gfx::Vector2dF(scroll_delta.x(), scroll_delta.y());
7795 7823
7796 host_impl_->ScrollEnd(); 7824 host_impl_->ScrollEnd();
7797 7825
7798 EXPECT_VECTOR_EQ(inner_expected, inner_scroll->CurrentScrollOffset()); 7826 EXPECT_VECTOR_EQ(inner_expected, inner_scroll->CurrentScrollOffset());
7799 EXPECT_VECTOR_EQ(outer_expected, outer_scroll->CurrentScrollOffset()); 7827 EXPECT_VECTOR_EQ(outer_expected, outer_scroll->CurrentScrollOffset());
7800 7828
7801 // Fling past the outer viewport boundry, make sure inner viewport scrolls. 7829 // Fling past the outer viewport boundry, make sure inner viewport scrolls.
7802 EXPECT_EQ(InputHandler::SCROLL_STARTED, 7830 EXPECT_EQ(InputHandler::ScrollStarted,
7803 host_impl_->ScrollBegin(gfx::Point(), InputHandler::GESTURE)); 7831 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture));
7804 EXPECT_EQ(InputHandler::SCROLL_STARTED, host_impl_->FlingScrollBegin()); 7832 EXPECT_EQ(InputHandler::ScrollStarted, host_impl_->FlingScrollBegin());
7805 7833
7806 host_impl_->ScrollBy(gfx::Point(), scroll_delta); 7834 host_impl_->ScrollBy(gfx::Point(), scroll_delta);
7807 outer_expected += gfx::Vector2dF(scroll_delta.x(), scroll_delta.y()); 7835 outer_expected += gfx::Vector2dF(scroll_delta.x(), scroll_delta.y());
7808 7836
7809 host_impl_->ScrollBy(gfx::Point(), scroll_delta); 7837 host_impl_->ScrollBy(gfx::Point(), scroll_delta);
7810 inner_expected += gfx::Vector2dF(scroll_delta.x(), scroll_delta.y()); 7838 inner_expected += gfx::Vector2dF(scroll_delta.x(), scroll_delta.y());
7811 7839
7812 host_impl_->ScrollEnd(); 7840 host_impl_->ScrollEnd();
7813 7841
7814 EXPECT_VECTOR_EQ(inner_expected, inner_scroll->CurrentScrollOffset()); 7842 EXPECT_VECTOR_EQ(inner_expected, inner_scroll->CurrentScrollOffset());
(...skipping 12 matching lines...) Expand all
7827 LayerImpl* outer_scroll = host_impl_->OuterViewportScrollLayer(); 7855 LayerImpl* outer_scroll = host_impl_->OuterViewportScrollLayer();
7828 LayerImpl* inner_scroll = host_impl_->InnerViewportScrollLayer(); 7856 LayerImpl* inner_scroll = host_impl_->InnerViewportScrollLayer();
7829 DrawFrame(); 7857 DrawFrame();
7830 { 7858 {
7831 gfx::Vector2dF inner_expected; 7859 gfx::Vector2dF inner_expected;
7832 gfx::Vector2dF outer_expected; 7860 gfx::Vector2dF outer_expected;
7833 EXPECT_VECTOR_EQ(inner_expected, inner_scroll->CurrentScrollOffset()); 7861 EXPECT_VECTOR_EQ(inner_expected, inner_scroll->CurrentScrollOffset());
7834 EXPECT_VECTOR_EQ(outer_expected, outer_scroll->CurrentScrollOffset()); 7862 EXPECT_VECTOR_EQ(outer_expected, outer_scroll->CurrentScrollOffset());
7835 7863
7836 // Make sure the scroll goes to the outer viewport first. 7864 // Make sure the scroll goes to the outer viewport first.
7837 EXPECT_EQ(InputHandler::SCROLL_STARTED, 7865 EXPECT_EQ(InputHandler::ScrollStarted,
7838 host_impl_->ScrollBegin(gfx::Point(), InputHandler::GESTURE)); 7866 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture));
7839 EXPECT_EQ(InputHandler::SCROLL_STARTED, host_impl_->FlingScrollBegin()); 7867 EXPECT_EQ(InputHandler::ScrollStarted, host_impl_->FlingScrollBegin());
7840 7868
7841 // Scroll near the edge of the outer viewport. 7869 // Scroll near the edge of the outer viewport.
7842 gfx::Vector2d scroll_delta(inner_viewport.width(), inner_viewport.height()); 7870 gfx::Vector2d scroll_delta(inner_viewport.width(), inner_viewport.height());
7843 host_impl_->ScrollBy(gfx::Point(), scroll_delta); 7871 host_impl_->ScrollBy(gfx::Point(), scroll_delta);
7844 outer_expected += scroll_delta; 7872 outer_expected += scroll_delta;
7845 7873
7846 EXPECT_VECTOR_EQ(inner_expected, inner_scroll->CurrentScrollOffset()); 7874 EXPECT_VECTOR_EQ(inner_expected, inner_scroll->CurrentScrollOffset());
7847 EXPECT_VECTOR_EQ(outer_expected, outer_scroll->CurrentScrollOffset()); 7875 EXPECT_VECTOR_EQ(outer_expected, outer_scroll->CurrentScrollOffset());
7848 7876
7849 // Now diagonal scroll across the outer viewport boundary in a single event. 7877 // Now diagonal scroll across the outer viewport boundary in a single event.
(...skipping 23 matching lines...) Expand all
7873 scoped_ptr<LayerImpl> child = 7901 scoped_ptr<LayerImpl> child =
7874 CreateScrollableLayer(10, outer_viewport, outer_scroll); 7902 CreateScrollableLayer(10, outer_viewport, outer_scroll);
7875 LayerImpl* child_scroll = child.get(); 7903 LayerImpl* child_scroll = child.get();
7876 outer_scroll->children()[0]->AddChild(child.Pass()); 7904 outer_scroll->children()[0]->AddChild(child.Pass());
7877 7905
7878 DrawFrame(); 7906 DrawFrame();
7879 { 7907 {
7880 scoped_ptr<ScrollAndScaleSet> scroll_info; 7908 scoped_ptr<ScrollAndScaleSet> scroll_info;
7881 7909
7882 gfx::Vector2d scroll_delta(0, inner_viewport.height()); 7910 gfx::Vector2d scroll_delta(0, inner_viewport.height());
7883 EXPECT_EQ(InputHandler::SCROLL_STARTED, 7911 EXPECT_EQ(InputHandler::ScrollStarted,
7884 host_impl_->ScrollBegin(gfx::Point(), InputHandler::GESTURE)); 7912 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture));
7885 EXPECT_TRUE(host_impl_->ScrollBy(gfx::Point(), scroll_delta).did_scroll); 7913 EXPECT_TRUE(host_impl_->ScrollBy(gfx::Point(), scroll_delta).did_scroll);
7886 7914
7887 // The child should have scrolled up to its limit. 7915 // The child should have scrolled up to its limit.
7888 scroll_info = host_impl_->ProcessScrollDeltas(); 7916 scroll_info = host_impl_->ProcessScrollDeltas();
7889 ASSERT_EQ(1u, scroll_info->scrolls.size()); 7917 ASSERT_EQ(1u, scroll_info->scrolls.size());
7890 ExpectContains(*scroll_info, child_scroll->id(), scroll_delta); 7918 ExpectContains(*scroll_info, child_scroll->id(), scroll_delta);
7891 EXPECT_EQ(host_impl_->CurrentlyScrollingLayer(), child_scroll); 7919 EXPECT_EQ(host_impl_->CurrentlyScrollingLayer(), child_scroll);
7892 7920
7893 // The first |ScrollBy| after the fling should re-lock the scrolling 7921 // The first |ScrollBy| after the fling should re-lock the scrolling
7894 // layer to the first layer that scrolled, the inner viewport scroll layer. 7922 // layer to the first layer that scrolled, the inner viewport scroll layer.
7895 EXPECT_EQ(InputHandler::SCROLL_STARTED, host_impl_->FlingScrollBegin()); 7923 EXPECT_EQ(InputHandler::ScrollStarted, host_impl_->FlingScrollBegin());
7896 EXPECT_TRUE(host_impl_->ScrollBy(gfx::Point(), scroll_delta).did_scroll); 7924 EXPECT_TRUE(host_impl_->ScrollBy(gfx::Point(), scroll_delta).did_scroll);
7897 EXPECT_EQ(host_impl_->CurrentlyScrollingLayer(), inner_scroll); 7925 EXPECT_EQ(host_impl_->CurrentlyScrollingLayer(), inner_scroll);
7898 7926
7899 // The inner viewport should have scrolled up to its limit. 7927 // The inner viewport should have scrolled up to its limit.
7900 scroll_info = host_impl_->ProcessScrollDeltas(); 7928 scroll_info = host_impl_->ProcessScrollDeltas();
7901 ASSERT_EQ(2u, scroll_info->scrolls.size()); 7929 ASSERT_EQ(2u, scroll_info->scrolls.size());
7902 ExpectContains(*scroll_info, child_scroll->id(), scroll_delta); 7930 ExpectContains(*scroll_info, child_scroll->id(), scroll_delta);
7903 ExpectContains(*scroll_info, inner_scroll->id(), scroll_delta); 7931 ExpectContains(*scroll_info, inner_scroll->id(), scroll_delta);
7904 7932
7905 // As the locked layer is at its limit, no further scrolling can occur. 7933 // As the locked layer is at its limit, no further scrolling can occur.
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
7961 external_transform, layer->draw_properties().target_space_transform); 7989 external_transform, layer->draw_properties().target_space_transform);
7962 } 7990 }
7963 7991
7964 TEST_F(LayerTreeHostImplTest, ScrollAnimated) { 7992 TEST_F(LayerTreeHostImplTest, ScrollAnimated) {
7965 SetupScrollAndContentsLayers(gfx::Size(100, 200)); 7993 SetupScrollAndContentsLayers(gfx::Size(100, 200));
7966 DrawFrame(); 7994 DrawFrame();
7967 7995
7968 base::TimeTicks start_time = 7996 base::TimeTicks start_time =
7969 base::TimeTicks() + base::TimeDelta::FromMilliseconds(100); 7997 base::TimeTicks() + base::TimeDelta::FromMilliseconds(100);
7970 7998
7971 EXPECT_EQ(InputHandler::SCROLL_STARTED, 7999 EXPECT_EQ(InputHandler::ScrollStarted,
7972 host_impl_->ScrollAnimated(gfx::Point(), gfx::Vector2d(0, 50))); 8000 host_impl_->ScrollAnimated(gfx::Point(), gfx::Vector2d(0, 50)));
7973 8001
7974 LayerImpl* scrolling_layer = host_impl_->CurrentlyScrollingLayer(); 8002 LayerImpl* scrolling_layer = host_impl_->CurrentlyScrollingLayer();
7975 8003
7976 host_impl_->Animate(start_time); 8004 host_impl_->Animate(start_time);
7977 host_impl_->UpdateAnimationState(true); 8005 host_impl_->UpdateAnimationState(true);
7978 8006
7979 EXPECT_EQ(gfx::ScrollOffset(), scrolling_layer->CurrentScrollOffset()); 8007 EXPECT_EQ(gfx::ScrollOffset(), scrolling_layer->CurrentScrollOffset());
7980 8008
7981 host_impl_->Animate(start_time + base::TimeDelta::FromMilliseconds(50)); 8009 host_impl_->Animate(start_time + base::TimeDelta::FromMilliseconds(50));
7982 host_impl_->UpdateAnimationState(true); 8010 host_impl_->UpdateAnimationState(true);
7983 8011
7984 float y = scrolling_layer->CurrentScrollOffset().y(); 8012 float y = scrolling_layer->CurrentScrollOffset().y();
7985 EXPECT_TRUE(y > 1 && y < 49); 8013 EXPECT_TRUE(y > 1 && y < 49);
7986 8014
7987 // Update target. 8015 // Update target.
7988 EXPECT_EQ(InputHandler::SCROLL_STARTED, 8016 EXPECT_EQ(InputHandler::ScrollStarted,
7989 host_impl_->ScrollAnimated(gfx::Point(), gfx::Vector2d(0, 50))); 8017 host_impl_->ScrollAnimated(gfx::Point(), gfx::Vector2d(0, 50)));
7990 8018
7991 host_impl_->Animate(start_time + base::TimeDelta::FromMilliseconds(200)); 8019 host_impl_->Animate(start_time + base::TimeDelta::FromMilliseconds(200));
7992 host_impl_->UpdateAnimationState(true); 8020 host_impl_->UpdateAnimationState(true);
7993 8021
7994 y = scrolling_layer->CurrentScrollOffset().y(); 8022 y = scrolling_layer->CurrentScrollOffset().y();
7995 EXPECT_TRUE(y > 50 && y < 100); 8023 EXPECT_TRUE(y > 50 && y < 100);
7996 EXPECT_EQ(scrolling_layer, host_impl_->CurrentlyScrollingLayer()); 8024 EXPECT_EQ(scrolling_layer, host_impl_->CurrentlyScrollingLayer());
7997 8025
7998 host_impl_->Animate(start_time + base::TimeDelta::FromMilliseconds(250)); 8026 host_impl_->Animate(start_time + base::TimeDelta::FromMilliseconds(250));
(...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after
8321 float page_scale_factor = 1.f; 8349 float page_scale_factor = 1.f;
8322 8350
8323 // The scroll deltas should have the page scale factor applied. 8351 // The scroll deltas should have the page scale factor applied.
8324 { 8352 {
8325 host_impl_->active_tree()->PushPageScaleFromMainThread( 8353 host_impl_->active_tree()->PushPageScaleFromMainThread(
8326 page_scale_factor, min_page_scale, max_page_scale); 8354 page_scale_factor, min_page_scale, max_page_scale);
8327 host_impl_->SetPageScaleOnActiveTree(page_scale_factor); 8355 host_impl_->SetPageScaleOnActiveTree(page_scale_factor);
8328 scroll_layer->SetScrollDelta(gfx::Vector2d()); 8356 scroll_layer->SetScrollDelta(gfx::Vector2d());
8329 8357
8330 float page_scale_delta = 2.f; 8358 float page_scale_delta = 2.f;
8331 host_impl_->ScrollBegin(gfx::Point(), InputHandler::GESTURE); 8359 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture);
8332 host_impl_->PinchGestureBegin(); 8360 host_impl_->PinchGestureBegin();
8333 host_impl_->PinchGestureUpdate(page_scale_delta, gfx::Point()); 8361 host_impl_->PinchGestureUpdate(page_scale_delta, gfx::Point());
8334 host_impl_->PinchGestureEnd(); 8362 host_impl_->PinchGestureEnd();
8335 host_impl_->ScrollEnd(); 8363 host_impl_->ScrollEnd();
8336 8364
8337 gfx::Vector2dF scroll_delta(0, 5); 8365 gfx::Vector2dF scroll_delta(0, 5);
8338 EXPECT_EQ(InputHandler::SCROLL_STARTED, 8366 EXPECT_EQ(InputHandler::ScrollStarted,
8339 host_impl_->ScrollBegin(gfx::Point(), InputHandler::WHEEL)); 8367 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Wheel));
8340 EXPECT_VECTOR_EQ(gfx::Vector2dF(), scroll_layer->CurrentScrollOffset()); 8368 EXPECT_VECTOR_EQ(gfx::Vector2dF(), scroll_layer->CurrentScrollOffset());
8341 8369
8342 host_impl_->ScrollBy(gfx::Point(), scroll_delta); 8370 host_impl_->ScrollBy(gfx::Point(), scroll_delta);
8343 host_impl_->ScrollEnd(); 8371 host_impl_->ScrollEnd();
8344 EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 2.5), 8372 EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 2.5),
8345 scroll_layer->CurrentScrollOffset()); 8373 scroll_layer->CurrentScrollOffset());
8346 } 8374 }
8347 } 8375 }
8348 8376
8349 class LayerTreeHostImplCountingLostSurfaces : public LayerTreeHostImplTest { 8377 class LayerTreeHostImplCountingLostSurfaces : public LayerTreeHostImplTest {
(...skipping 11 matching lines...) Expand all
8361 // surface. 8389 // surface.
8362 EXPECT_EQ(0, num_lost_surfaces_); 8390 EXPECT_EQ(0, num_lost_surfaces_);
8363 host_impl_->DidLoseOutputSurface(); 8391 host_impl_->DidLoseOutputSurface();
8364 EXPECT_EQ(1, num_lost_surfaces_); 8392 EXPECT_EQ(1, num_lost_surfaces_);
8365 host_impl_->DidLoseOutputSurface(); 8393 host_impl_->DidLoseOutputSurface();
8366 EXPECT_LE(1, num_lost_surfaces_); 8394 EXPECT_LE(1, num_lost_surfaces_);
8367 } 8395 }
8368 8396
8369 } // namespace 8397 } // namespace
8370 } // namespace cc 8398 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_host_impl.cc ('k') | cc/trees/layer_tree_host_pixeltest_on_demand_raster.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698