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

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

Issue 910373002: [Android] Disable pull-to-refresh with overflow:hidden (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Pass overflow:hidden via metadata 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 1826 matching lines...) Expand 10 before | Expand all | Expand 10 after
1837 DrawFrame(); 1837 DrawFrame();
1838 { 1838 {
1839 CompositorFrameMetadata metadata = 1839 CompositorFrameMetadata metadata =
1840 host_impl_->MakeCompositorFrameMetadata(); 1840 host_impl_->MakeCompositorFrameMetadata();
1841 EXPECT_EQ(gfx::Vector2dF(), metadata.root_scroll_offset); 1841 EXPECT_EQ(gfx::Vector2dF(), metadata.root_scroll_offset);
1842 EXPECT_EQ(1.f, metadata.page_scale_factor); 1842 EXPECT_EQ(1.f, metadata.page_scale_factor);
1843 EXPECT_EQ(gfx::SizeF(50.f, 50.f), metadata.scrollable_viewport_size); 1843 EXPECT_EQ(gfx::SizeF(50.f, 50.f), metadata.scrollable_viewport_size);
1844 EXPECT_EQ(gfx::SizeF(100.f, 100.f), metadata.root_layer_size); 1844 EXPECT_EQ(gfx::SizeF(100.f, 100.f), metadata.root_layer_size);
1845 EXPECT_EQ(0.5f, metadata.min_page_scale_factor); 1845 EXPECT_EQ(0.5f, metadata.min_page_scale_factor);
1846 EXPECT_EQ(4.f, metadata.max_page_scale_factor); 1846 EXPECT_EQ(4.f, metadata.max_page_scale_factor);
1847 EXPECT_FALSE(metadata.root_overflow_x_hidden);
1848 EXPECT_FALSE(metadata.root_overflow_y_hidden);
1847 } 1849 }
1848 1850
1849 // Scrolling should update metadata immediately. 1851 // Scrolling should update metadata immediately.
1850 EXPECT_EQ(InputHandler::ScrollStarted, 1852 EXPECT_EQ(InputHandler::ScrollStarted,
1851 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Wheel)); 1853 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Wheel));
1852 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 10)); 1854 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 10));
1853 { 1855 {
1854 CompositorFrameMetadata metadata = 1856 CompositorFrameMetadata metadata =
1855 host_impl_->MakeCompositorFrameMetadata(); 1857 host_impl_->MakeCompositorFrameMetadata();
1856 EXPECT_EQ(gfx::Vector2dF(0.f, 10.f), metadata.root_scroll_offset); 1858 EXPECT_EQ(gfx::Vector2dF(0.f, 10.f), metadata.root_scroll_offset);
1857 } 1859 }
1858 host_impl_->ScrollEnd(); 1860 host_impl_->ScrollEnd();
1859 { 1861 {
1860 CompositorFrameMetadata metadata = 1862 CompositorFrameMetadata metadata =
1861 host_impl_->MakeCompositorFrameMetadata(); 1863 host_impl_->MakeCompositorFrameMetadata();
1862 EXPECT_EQ(gfx::Vector2dF(0.f, 10.f), metadata.root_scroll_offset); 1864 EXPECT_EQ(gfx::Vector2dF(0.f, 10.f), metadata.root_scroll_offset);
1863 } 1865 }
1864 1866
1867 // Root "overflow: hidden" properties should be reflected.
1868 {
1869 host_impl_->active_tree()
1870 ->InnerViewportScrollLayer()
1871 ->set_user_scrollable_horizontal(false);
1872 CompositorFrameMetadata metadata =
1873 host_impl_->MakeCompositorFrameMetadata();
1874 EXPECT_TRUE(metadata.root_overflow_x_hidden);
1875 EXPECT_FALSE(metadata.root_overflow_y_hidden);
1876
1877 host_impl_->active_tree()
1878 ->InnerViewportScrollLayer()
1879 ->set_user_scrollable_vertical(false);
1880 metadata = host_impl_->MakeCompositorFrameMetadata();
1881 EXPECT_TRUE(metadata.root_overflow_x_hidden);
1882 EXPECT_TRUE(metadata.root_overflow_y_hidden);
1883 }
1884
1865 // Page scale should update metadata correctly (shrinking only the viewport). 1885 // Page scale should update metadata correctly (shrinking only the viewport).
1866 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture); 1886 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture);
1867 host_impl_->PinchGestureBegin(); 1887 host_impl_->PinchGestureBegin();
1868 host_impl_->PinchGestureUpdate(2.f, gfx::Point()); 1888 host_impl_->PinchGestureUpdate(2.f, gfx::Point());
1869 host_impl_->PinchGestureEnd(); 1889 host_impl_->PinchGestureEnd();
1870 host_impl_->ScrollEnd(); 1890 host_impl_->ScrollEnd();
1871 { 1891 {
1872 CompositorFrameMetadata metadata = 1892 CompositorFrameMetadata metadata =
1873 host_impl_->MakeCompositorFrameMetadata(); 1893 host_impl_->MakeCompositorFrameMetadata();
1874 EXPECT_EQ(gfx::Vector2dF(0.f, 10.f), metadata.root_scroll_offset); 1894 EXPECT_EQ(gfx::Vector2dF(0.f, 10.f), metadata.root_scroll_offset);
(...skipping 6068 matching lines...) Expand 10 before | Expand all | Expand 10 after
7943 ExpectContains(*scroll_info, child_scroll->id(), scroll_delta); 7963 ExpectContains(*scroll_info, child_scroll->id(), scroll_delta);
7944 ExpectContains(*scroll_info, inner_scroll->id(), scroll_delta); 7964 ExpectContains(*scroll_info, inner_scroll->id(), scroll_delta);
7945 7965
7946 // As the locked layer is at its limit, no further scrolling can occur. 7966 // As the locked layer is at its limit, no further scrolling can occur.
7947 EXPECT_FALSE(host_impl_->ScrollBy(gfx::Point(), scroll_delta).did_scroll); 7967 EXPECT_FALSE(host_impl_->ScrollBy(gfx::Point(), scroll_delta).did_scroll);
7948 EXPECT_EQ(host_impl_->CurrentlyScrollingLayer(), inner_scroll); 7968 EXPECT_EQ(host_impl_->CurrentlyScrollingLayer(), inner_scroll);
7949 host_impl_->ScrollEnd(); 7969 host_impl_->ScrollEnd();
7950 } 7970 }
7951 } 7971 }
7952 7972
7973 TEST_F(LayerTreeHostImplVirtualViewportTest,
7974 NoOverscrollWhenRootMarkedNonUserScrollable) {
7975 gfx::Size content_size = gfx::Size(100, 160);
7976 gfx::Size outer_viewport = gfx::Size(50, 80);
7977 gfx::Size inner_viewport = gfx::Size(25, 40);
7978
7979 SetupVirtualViewportLayers(content_size, outer_viewport, inner_viewport);
7980
7981 LayerImpl* outer_scroll = host_impl_->OuterViewportScrollLayer();
7982 outer_scroll->set_user_scrollable_vertical(false);
7983
7984 InputHandlerScrollResult scroll_result;
7985 DrawFrame();
7986 EXPECT_EQ(gfx::Vector2dF(), host_impl_->accumulated_root_overscroll());
7987
7988 // In-bounds scrolling does not affect overscroll.
7989 EXPECT_EQ(InputHandler::ScrollStarted,
7990 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture));
7991 scroll_result = host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 10));
7992 EXPECT_TRUE(scroll_result.did_scroll);
7993 EXPECT_FALSE(scroll_result.did_overscroll_root);
7994 EXPECT_EQ(gfx::Vector2dF(), scroll_result.unused_scroll_delta);
7995 EXPECT_EQ(gfx::Vector2dF(), host_impl_->accumulated_root_overscroll());
7996
7997 // As the outer viewport is marked as non-scrollable on the y-axis,
7998 // overscroll reporting should be suppressed, and indicated as such.
7999 scroll_result = host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 50));
8000 EXPECT_TRUE(scroll_result.did_scroll);
8001 EXPECT_FALSE(scroll_result.did_overscroll_root);
8002 EXPECT_EQ(gfx::Vector2dF(), scroll_result.unused_scroll_delta);
8003 EXPECT_EQ(gfx::Vector2dF(), host_impl_->accumulated_root_overscroll());
8004
8005 // Repeated overscrolls should also be suppressed.
8006 scroll_result = host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 50));
8007 EXPECT_FALSE(scroll_result.did_scroll);
8008 EXPECT_FALSE(scroll_result.did_overscroll_root);
8009 EXPECT_EQ(gfx::Vector2dF(), scroll_result.unused_scroll_delta);
8010 EXPECT_EQ(gfx::Vector2dF(), host_impl_->accumulated_root_overscroll());
8011
8012 // Scrolling the inner viewport back up should be possible.
8013 scroll_result = host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, -10));
8014 EXPECT_TRUE(scroll_result.did_scroll);
8015 EXPECT_FALSE(scroll_result.did_overscroll_root);
8016 EXPECT_EQ(gfx::Vector2dF(), scroll_result.unused_scroll_delta);
8017 EXPECT_EQ(gfx::Vector2dF(), host_impl_->accumulated_root_overscroll());
8018
8019 host_impl_->ScrollEnd();
8020 }
8021
7953 class LayerTreeHostImplWithImplicitLimitsTest : public LayerTreeHostImplTest { 8022 class LayerTreeHostImplWithImplicitLimitsTest : public LayerTreeHostImplTest {
7954 public: 8023 public:
7955 void SetUp() override { 8024 void SetUp() override {
7956 LayerTreeSettings settings = DefaultSettings(); 8025 LayerTreeSettings settings = DefaultSettings();
7957 settings.max_memory_for_prepaint_percentage = 50; 8026 settings.max_memory_for_prepaint_percentage = 50;
7958 CreateHostImpl(settings, CreateOutputSurface()); 8027 CreateHostImpl(settings, CreateOutputSurface());
7959 } 8028 }
7960 }; 8029 };
7961 8030
7962 TEST_F(LayerTreeHostImplWithImplicitLimitsTest, ImplicitMemoryLimits) { 8031 TEST_F(LayerTreeHostImplWithImplicitLimitsTest, ImplicitMemoryLimits) {
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after
8215 // surface. 8284 // surface.
8216 EXPECT_EQ(0, num_lost_surfaces_); 8285 EXPECT_EQ(0, num_lost_surfaces_);
8217 host_impl_->DidLoseOutputSurface(); 8286 host_impl_->DidLoseOutputSurface();
8218 EXPECT_EQ(1, num_lost_surfaces_); 8287 EXPECT_EQ(1, num_lost_surfaces_);
8219 host_impl_->DidLoseOutputSurface(); 8288 host_impl_->DidLoseOutputSurface();
8220 EXPECT_LE(1, num_lost_surfaces_); 8289 EXPECT_LE(1, num_lost_surfaces_);
8221 } 8290 }
8222 8291
8223 } // namespace 8292 } // namespace
8224 } // namespace cc 8293 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698