OLD | NEW |
1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "cc/trees/layer_tree_host_impl.h" | 5 #include "cc/trees/layer_tree_host_impl.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 #include <cmath> | 10 #include <cmath> |
(...skipping 702 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
713 } | 713 } |
714 | 714 |
715 TEST_F(LayerTreeHostImplTest, ScrollBlocksOnWheelEventHandlers) { | 715 TEST_F(LayerTreeHostImplTest, ScrollBlocksOnWheelEventHandlers) { |
716 SetupScrollAndContentsLayers(gfx::Size(100, 100)); | 716 SetupScrollAndContentsLayers(gfx::Size(100, 100)); |
717 host_impl_->SetViewportSize(gfx::Size(50, 50)); | 717 host_impl_->SetViewportSize(gfx::Size(50, 50)); |
718 DrawFrame(); | 718 DrawFrame(); |
719 LayerImpl* root = host_impl_->active_tree()->root_layer(); | 719 LayerImpl* root = host_impl_->active_tree()->root_layer(); |
720 | 720 |
721 // With registered event handlers, wheel scrolls don't necessarily | 721 // With registered event handlers, wheel scrolls don't necessarily |
722 // have to go to the main thread. | 722 // have to go to the main thread. |
723 root->SetHaveWheelEventHandlers(true); | 723 host_impl_->active_tree()->set_have_wheel_event_handlers(true); |
724 InputHandler::ScrollStatus status = host_impl_->ScrollBegin( | 724 InputHandler::ScrollStatus status = host_impl_->ScrollBegin( |
725 BeginState(gfx::Point()).get(), InputHandler::WHEEL); | 725 BeginState(gfx::Point()).get(), InputHandler::WHEEL); |
726 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, status.thread); | 726 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, status.thread); |
727 EXPECT_EQ(MainThreadScrollingReason::kNotScrollingOnMain, | 727 EXPECT_EQ(MainThreadScrollingReason::kNotScrollingOnMain, |
728 status.main_thread_scrolling_reasons); | 728 status.main_thread_scrolling_reasons); |
729 host_impl_->ScrollEnd(EndState().get()); | 729 host_impl_->ScrollEnd(EndState().get()); |
730 | 730 |
731 // But typically the scroll-blocks-on mode will require them to. | 731 // But typically the scroll-blocks-on mode will require them to. |
732 root->SetScrollBlocksOn(SCROLL_BLOCKS_ON_WHEEL_EVENT | | 732 root->SetScrollBlocksOn(SCROLL_BLOCKS_ON_WHEEL_EVENT | |
733 SCROLL_BLOCKS_ON_START_TOUCH); | 733 SCROLL_BLOCKS_ON_START_TOUCH); |
734 status = host_impl_->ScrollBegin(BeginState(gfx::Point()).get(), | 734 status = host_impl_->ScrollBegin(BeginState(gfx::Point()).get(), |
735 InputHandler::WHEEL); | 735 InputHandler::WHEEL); |
736 EXPECT_EQ(InputHandler::SCROLL_ON_MAIN_THREAD, status.thread); | 736 EXPECT_EQ(InputHandler::SCROLL_ON_MAIN_THREAD, status.thread); |
737 EXPECT_EQ(MainThreadScrollingReason::kEventHandlers, | 737 EXPECT_EQ(MainThreadScrollingReason::kEventHandlers, |
738 status.main_thread_scrolling_reasons); | 738 status.main_thread_scrolling_reasons); |
739 | 739 |
740 // But gesture scrolls can still be handled. | 740 // But gesture scrolls can still be handled. |
741 status = host_impl_->ScrollBegin(BeginState(gfx::Point()).get(), | 741 status = host_impl_->ScrollBegin(BeginState(gfx::Point()).get(), |
742 InputHandler::GESTURE); | 742 InputHandler::GESTURE); |
743 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, status.thread); | 743 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, status.thread); |
744 EXPECT_EQ(MainThreadScrollingReason::kNotScrollingOnMain, | 744 EXPECT_EQ(MainThreadScrollingReason::kNotScrollingOnMain, |
745 status.main_thread_scrolling_reasons); | 745 status.main_thread_scrolling_reasons); |
746 host_impl_->ScrollEnd(EndState().get()); | 746 host_impl_->ScrollEnd(EndState().get()); |
747 | 747 |
748 // And if the handlers go away, wheel scrolls can again be processed | 748 // And if the handlers go away, wheel scrolls can again be processed |
749 // on impl (despite the scroll-blocks-on mode). | 749 // on impl (despite the scroll-blocks-on mode). |
750 root->SetHaveWheelEventHandlers(false); | 750 host_impl_->active_tree()->set_have_wheel_event_handlers(false); |
751 status = host_impl_->ScrollBegin(BeginState(gfx::Point()).get(), | 751 status = host_impl_->ScrollBegin(BeginState(gfx::Point()).get(), |
752 InputHandler::WHEEL); | 752 InputHandler::WHEEL); |
753 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, status.thread); | 753 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, status.thread); |
754 EXPECT_EQ(MainThreadScrollingReason::kNotScrollingOnMain, | 754 EXPECT_EQ(MainThreadScrollingReason::kNotScrollingOnMain, |
755 status.main_thread_scrolling_reasons); | 755 status.main_thread_scrolling_reasons); |
756 host_impl_->ScrollEnd(EndState().get()); | 756 host_impl_->ScrollEnd(EndState().get()); |
757 } | 757 } |
758 | 758 |
759 TEST_F(LayerTreeHostImplTest, ScrollBlocksOnTouchEventHandlers) { | 759 TEST_F(LayerTreeHostImplTest, ScrollBlocksOnTouchEventHandlers) { |
760 LayerImpl* scroll = SetupScrollAndContentsLayers(gfx::Size(100, 100)); | 760 LayerImpl* scroll = SetupScrollAndContentsLayers(gfx::Size(100, 100)); |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
855 | 855 |
856 TEST_F(LayerTreeHostImplTest, ScrollBlocksOnLayerTopology) { | 856 TEST_F(LayerTreeHostImplTest, ScrollBlocksOnLayerTopology) { |
857 host_impl_->SetViewportSize(gfx::Size(50, 50)); | 857 host_impl_->SetViewportSize(gfx::Size(50, 50)); |
858 | 858 |
859 // Create a normal scrollable root layer | 859 // Create a normal scrollable root layer |
860 LayerImpl* root_scroll = SetupScrollAndContentsLayers(gfx::Size(100, 100)); | 860 LayerImpl* root_scroll = SetupScrollAndContentsLayers(gfx::Size(100, 100)); |
861 LayerImpl* root_child = root_scroll->children()[0].get(); | 861 LayerImpl* root_child = root_scroll->children()[0].get(); |
862 LayerImpl* root = host_impl_->active_tree()->root_layer(); | 862 LayerImpl* root = host_impl_->active_tree()->root_layer(); |
863 DrawFrame(); | 863 DrawFrame(); |
864 | 864 |
| 865 host_impl_->active_tree()->set_have_wheel_event_handlers(true); |
| 866 |
865 // Create two child scrollable layers | 867 // Create two child scrollable layers |
866 LayerImpl* child1 = 0; | 868 LayerImpl* child1 = 0; |
867 { | 869 { |
868 scoped_ptr<LayerImpl> scrollable_child_clip_1 = | 870 scoped_ptr<LayerImpl> scrollable_child_clip_1 = |
869 LayerImpl::Create(host_impl_->active_tree(), 6); | 871 LayerImpl::Create(host_impl_->active_tree(), 6); |
870 scoped_ptr<LayerImpl> scrollable_child_1 = CreateScrollableLayer( | 872 scoped_ptr<LayerImpl> scrollable_child_1 = CreateScrollableLayer( |
871 7, gfx::Size(10, 10), scrollable_child_clip_1.get()); | 873 7, gfx::Size(10, 10), scrollable_child_clip_1.get()); |
872 child1 = scrollable_child_1.get(); | 874 child1 = scrollable_child_1.get(); |
873 scrollable_child_1->SetPosition(gfx::PointF(5.f, 5.f)); | 875 scrollable_child_1->SetPosition(gfx::PointF(5.f, 5.f)); |
874 scrollable_child_1->SetHaveWheelEventHandlers(true); | |
875 scrollable_child_1->SetHaveScrollEventHandlers(true); | 876 scrollable_child_1->SetHaveScrollEventHandlers(true); |
876 scrollable_child_clip_1->AddChild(std::move(scrollable_child_1)); | 877 scrollable_child_clip_1->AddChild(std::move(scrollable_child_1)); |
877 root_child->AddChild(std::move(scrollable_child_clip_1)); | 878 root_child->AddChild(std::move(scrollable_child_clip_1)); |
878 RebuildPropertyTrees(); | 879 RebuildPropertyTrees(); |
879 } | 880 } |
880 | 881 |
881 LayerImpl* child2 = 0; | 882 LayerImpl* child2 = 0; |
882 { | 883 { |
883 scoped_ptr<LayerImpl> scrollable_child_clip_2 = | 884 scoped_ptr<LayerImpl> scrollable_child_clip_2 = |
884 LayerImpl::Create(host_impl_->active_tree(), 8); | 885 LayerImpl::Create(host_impl_->active_tree(), 8); |
885 scoped_ptr<LayerImpl> scrollable_child_2 = CreateScrollableLayer( | 886 scoped_ptr<LayerImpl> scrollable_child_2 = CreateScrollableLayer( |
886 9, gfx::Size(10, 10), scrollable_child_clip_2.get()); | 887 9, gfx::Size(10, 10), scrollable_child_clip_2.get()); |
887 child2 = scrollable_child_2.get(); | 888 child2 = scrollable_child_2.get(); |
888 scrollable_child_2->SetPosition(gfx::PointF(5.f, 20.f)); | 889 scrollable_child_2->SetPosition(gfx::PointF(5.f, 20.f)); |
889 scrollable_child_2->SetHaveWheelEventHandlers(true); | |
890 scrollable_child_2->SetHaveScrollEventHandlers(true); | 890 scrollable_child_2->SetHaveScrollEventHandlers(true); |
891 scrollable_child_clip_2->AddChild(std::move(scrollable_child_2)); | 891 scrollable_child_clip_2->AddChild(std::move(scrollable_child_2)); |
892 root_child->AddChild(std::move(scrollable_child_clip_2)); | 892 root_child->AddChild(std::move(scrollable_child_clip_2)); |
893 RebuildPropertyTrees(); | 893 RebuildPropertyTrees(); |
894 } | 894 } |
895 | 895 |
896 InputHandler::ScrollStatus status = host_impl_->ScrollBegin( | 896 InputHandler::ScrollStatus status = host_impl_->ScrollBegin( |
897 BeginState(gfx::Point(10, 10)).get(), InputHandler::GESTURE); | 897 BeginState(gfx::Point(10, 10)).get(), InputHandler::GESTURE); |
898 // Scroll-blocks-on on a layer affects scrolls that hit that layer. | 898 // Scroll-blocks-on on a layer affects scrolls that hit that layer. |
899 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, status.thread); | 899 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, status.thread); |
(...skipping 9200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10100 // There should not be any jitter measured till we hit the fixed point hits | 10100 // There should not be any jitter measured till we hit the fixed point hits |
10101 // threshold. | 10101 // threshold. |
10102 float expected_jitter = | 10102 float expected_jitter = |
10103 (i == pending_tree->kFixedPointHitsThreshold) ? 500 : 0; | 10103 (i == pending_tree->kFixedPointHitsThreshold) ? 500 : 0; |
10104 EXPECT_EQ(jitter, expected_jitter); | 10104 EXPECT_EQ(jitter, expected_jitter); |
10105 } | 10105 } |
10106 } | 10106 } |
10107 | 10107 |
10108 } // namespace | 10108 } // namespace |
10109 } // namespace cc | 10109 } // namespace cc |
OLD | NEW |