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

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

Issue 2443613002: Rename classes related to top controls (Closed)
Patch Set: fix test Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « cc/trees/layer_tree_host_impl.cc ('k') | cc/trees/layer_tree_host_in_process.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/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>
11 #include <utility> 11 #include <utility>
12 12
13 #include "base/bind.h" 13 #include "base/bind.h"
14 #include "base/command_line.h" 14 #include "base/command_line.h"
15 #include "base/location.h" 15 #include "base/location.h"
16 #include "base/memory/ptr_util.h" 16 #include "base/memory/ptr_util.h"
17 #include "base/threading/thread_task_runner_handle.h" 17 #include "base/threading/thread_task_runner_handle.h"
18 #include "cc/animation/animation_events.h" 18 #include "cc/animation/animation_events.h"
19 #include "cc/animation/animation_host.h" 19 #include "cc/animation/animation_host.h"
20 #include "cc/animation/animation_id_provider.h" 20 #include "cc/animation/animation_id_provider.h"
21 #include "cc/animation/transform_operations.h" 21 #include "cc/animation/transform_operations.h"
22 #include "cc/base/math_util.h" 22 #include "cc/base/math_util.h"
23 #include "cc/input/browser_controls_offset_manager.h"
23 #include "cc/input/main_thread_scrolling_reason.h" 24 #include "cc/input/main_thread_scrolling_reason.h"
24 #include "cc/input/page_scale_animation.h" 25 #include "cc/input/page_scale_animation.h"
25 #include "cc/input/scrollbar_animation_controller_thinning.h" 26 #include "cc/input/scrollbar_animation_controller_thinning.h"
26 #include "cc/input/top_controls_manager.h"
27 #include "cc/layers/append_quads_data.h" 27 #include "cc/layers/append_quads_data.h"
28 #include "cc/layers/heads_up_display_layer_impl.h" 28 #include "cc/layers/heads_up_display_layer_impl.h"
29 #include "cc/layers/layer_impl.h" 29 #include "cc/layers/layer_impl.h"
30 #include "cc/layers/painted_scrollbar_layer_impl.h" 30 #include "cc/layers/painted_scrollbar_layer_impl.h"
31 #include "cc/layers/render_surface_impl.h" 31 #include "cc/layers/render_surface_impl.h"
32 #include "cc/layers/solid_color_layer_impl.h" 32 #include "cc/layers/solid_color_layer_impl.h"
33 #include "cc/layers/solid_color_scrollbar_layer_impl.h" 33 #include "cc/layers/solid_color_scrollbar_layer_impl.h"
34 #include "cc/layers/texture_layer_impl.h" 34 #include "cc/layers/texture_layer_impl.h"
35 #include "cc/layers/video_layer_impl.h" 35 #include "cc/layers/video_layer_impl.h"
36 #include "cc/layers/viewport.h" 36 #include "cc/layers/viewport.h"
(...skipping 3860 matching lines...) Expand 10 before | Expand all | Expand 10 after
3897 pending_outer_layer->layer_tree_impl() 3897 pending_outer_layer->layer_tree_impl()
3898 ->property_trees() 3898 ->property_trees()
3899 ->scroll_tree.UpdateScrollOffsetBaseForTesting(pending_outer_layer->id(), 3899 ->scroll_tree.UpdateScrollOffsetBaseForTesting(pending_outer_layer->id(),
3900 pending_scroll); 3900 pending_scroll);
3901 3901
3902 host_impl_->ActivateSyncTree(); 3902 host_impl_->ActivateSyncTree();
3903 // Scrolloffsets on the active tree will be clamped after activation. 3903 // Scrolloffsets on the active tree will be clamped after activation.
3904 EXPECT_EQ(active_outer_layer->CurrentScrollOffset(), gfx::ScrollOffset(0, 0)); 3904 EXPECT_EQ(active_outer_layer->CurrentScrollOffset(), gfx::ScrollOffset(0, 0));
3905 } 3905 }
3906 3906
3907 class LayerTreeHostImplTopControlsTest : public LayerTreeHostImplTest { 3907 class LayerTreeHostImplBrowserControlsTest : public LayerTreeHostImplTest {
3908 public: 3908 public:
3909 LayerTreeHostImplTopControlsTest() 3909 LayerTreeHostImplBrowserControlsTest()
3910 // Make the clip size the same as the layer (content) size so the layer is 3910 // Make the clip size the same as the layer (content) size so the layer is
3911 // non-scrollable. 3911 // non-scrollable.
3912 : layer_size_(10, 10), 3912 : layer_size_(10, 10),
3913 clip_size_(layer_size_), 3913 clip_size_(layer_size_),
3914 top_controls_height_(50) { 3914 top_controls_height_(50) {
3915 viewport_size_ = gfx::Size(clip_size_.width(), 3915 viewport_size_ = gfx::Size(clip_size_.width(),
3916 clip_size_.height() + top_controls_height_); 3916 clip_size_.height() + top_controls_height_);
3917 } 3917 }
3918 3918
3919 bool CreateHostImpl( 3919 bool CreateHostImpl(
3920 const LayerTreeSettings& settings, 3920 const LayerTreeSettings& settings,
3921 std::unique_ptr<CompositorFrameSink> compositor_frame_sink) override { 3921 std::unique_ptr<CompositorFrameSink> compositor_frame_sink) override {
3922 bool init = LayerTreeHostImplTest::CreateHostImpl( 3922 bool init = LayerTreeHostImplTest::CreateHostImpl(
3923 settings, std::move(compositor_frame_sink)); 3923 settings, std::move(compositor_frame_sink));
3924 if (init) { 3924 if (init) {
3925 host_impl_->active_tree()->set_top_controls_height(top_controls_height_); 3925 host_impl_->active_tree()->set_top_controls_height(top_controls_height_);
3926 host_impl_->active_tree()->SetCurrentTopControlsShownRatio(1.f); 3926 host_impl_->active_tree()->SetCurrentBrowserControlsShownRatio(1.f);
3927 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, 1.f, 1.f); 3927 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, 1.f, 1.f);
3928 } 3928 }
3929 return init; 3929 return init;
3930 } 3930 }
3931 3931
3932 void SetupTopControlsAndScrollLayerWithVirtualViewport( 3932 void SetupBrowserControlsAndScrollLayerWithVirtualViewport(
3933 const gfx::Size& inner_viewport_size, 3933 const gfx::Size& inner_viewport_size,
3934 const gfx::Size& outer_viewport_size, 3934 const gfx::Size& outer_viewport_size,
3935 const gfx::Size& scroll_layer_size) { 3935 const gfx::Size& scroll_layer_size) {
3936 settings_ = DefaultSettings(); 3936 settings_ = DefaultSettings();
3937 CreateHostImpl(settings_, CreateCompositorFrameSink()); 3937 CreateHostImpl(settings_, CreateCompositorFrameSink());
3938 SetupTopControlsAndScrollLayerWithVirtualViewport( 3938 SetupBrowserControlsAndScrollLayerWithVirtualViewport(
3939 host_impl_->active_tree(), inner_viewport_size, outer_viewport_size, 3939 host_impl_->active_tree(), inner_viewport_size, outer_viewport_size,
3940 scroll_layer_size); 3940 scroll_layer_size);
3941 } 3941 }
3942 3942
3943 void SetupTopControlsAndScrollLayerWithVirtualViewport( 3943 void SetupBrowserControlsAndScrollLayerWithVirtualViewport(
3944 LayerTreeImpl* tree_impl, 3944 LayerTreeImpl* tree_impl,
3945 const gfx::Size& inner_viewport_size, 3945 const gfx::Size& inner_viewport_size,
3946 const gfx::Size& outer_viewport_size, 3946 const gfx::Size& outer_viewport_size,
3947 const gfx::Size& scroll_layer_size) { 3947 const gfx::Size& scroll_layer_size) {
3948 tree_impl->set_top_controls_shrink_blink_size(true); 3948 tree_impl->set_browser_controls_shrink_blink_size(true);
3949 tree_impl->set_top_controls_height(top_controls_height_); 3949 tree_impl->set_top_controls_height(top_controls_height_);
3950 tree_impl->SetCurrentTopControlsShownRatio(1.f); 3950 tree_impl->SetCurrentBrowserControlsShownRatio(1.f);
3951 tree_impl->PushPageScaleFromMainThread(1.f, 1.f, 1.f); 3951 tree_impl->PushPageScaleFromMainThread(1.f, 1.f, 1.f);
3952 host_impl_->DidChangeTopControlsPosition(); 3952 host_impl_->DidChangeBrowserControlsPosition();
3953 3953
3954 std::unique_ptr<LayerImpl> root = LayerImpl::Create(tree_impl, 1); 3954 std::unique_ptr<LayerImpl> root = LayerImpl::Create(tree_impl, 1);
3955 std::unique_ptr<LayerImpl> root_clip = LayerImpl::Create(tree_impl, 2); 3955 std::unique_ptr<LayerImpl> root_clip = LayerImpl::Create(tree_impl, 2);
3956 std::unique_ptr<LayerImpl> page_scale = LayerImpl::Create(tree_impl, 3); 3956 std::unique_ptr<LayerImpl> page_scale = LayerImpl::Create(tree_impl, 3);
3957 3957
3958 std::unique_ptr<LayerImpl> outer_scroll = LayerImpl::Create(tree_impl, 4); 3958 std::unique_ptr<LayerImpl> outer_scroll = LayerImpl::Create(tree_impl, 4);
3959 std::unique_ptr<LayerImpl> outer_clip = LayerImpl::Create(tree_impl, 5); 3959 std::unique_ptr<LayerImpl> outer_clip = LayerImpl::Create(tree_impl, 5);
3960 3960
3961 root_clip->SetBounds(inner_viewport_size); 3961 root_clip->SetBounds(inner_viewport_size);
3962 root->SetScrollClipLayer(root_clip->id()); 3962 root->SetScrollClipLayer(root_clip->id());
(...skipping 30 matching lines...) Expand all
3993 EXPECT_EQ(inner_viewport_size, root_clip_ptr->bounds()); 3993 EXPECT_EQ(inner_viewport_size, root_clip_ptr->bounds());
3994 } 3994 }
3995 3995
3996 protected: 3996 protected:
3997 gfx::Size layer_size_; 3997 gfx::Size layer_size_;
3998 gfx::Size clip_size_; 3998 gfx::Size clip_size_;
3999 gfx::Size viewport_size_; 3999 gfx::Size viewport_size_;
4000 float top_controls_height_; 4000 float top_controls_height_;
4001 4001
4002 LayerTreeSettings settings_; 4002 LayerTreeSettings settings_;
4003 }; // class LayerTreeHostImplTopControlsTest 4003 }; // class LayerTreeHostImplBrowserControlsTest
4004 4004
4005 // Tests that, on a page with content the same size as the viewport, hiding 4005 // Tests that, on a page with content the same size as the viewport, hiding
4006 // the top controls also increases the ScrollableSize (i.e. the content size). 4006 // the browser controls also increases the ScrollableSize (i.e. the content
4007 // Since the viewport got larger, the effective scrollable "content" also did. 4007 // size). Since the viewport got larger, the effective scrollable "content" also
4008 // This ensures, for one thing, that the overscroll glow is shown in the right 4008 // did. This ensures, for one thing, that the overscroll glow is shown in the
4009 // place. 4009 // right place.
4010 TEST_F(LayerTreeHostImplTopControlsTest, 4010 TEST_F(LayerTreeHostImplBrowserControlsTest,
4011 HidingTopControlsExpandsScrollableSize) { 4011 HidingBrowserControlsExpandsScrollableSize) {
4012 SetupTopControlsAndScrollLayerWithVirtualViewport( 4012 SetupBrowserControlsAndScrollLayerWithVirtualViewport(
4013 gfx::Size(50, 50), gfx::Size(50, 50), gfx::Size(50, 50)); 4013 gfx::Size(50, 50), gfx::Size(50, 50), gfx::Size(50, 50));
4014 4014
4015 LayerTreeImpl* active_tree = host_impl_->active_tree(); 4015 LayerTreeImpl* active_tree = host_impl_->active_tree();
4016 4016
4017 // Create a content layer beneath the outer viewport scroll layer. 4017 // Create a content layer beneath the outer viewport scroll layer.
4018 int id = host_impl_->OuterViewportScrollLayer()->id(); 4018 int id = host_impl_->OuterViewportScrollLayer()->id();
4019 host_impl_->OuterViewportScrollLayer()->test_properties()->AddChild( 4019 host_impl_->OuterViewportScrollLayer()->test_properties()->AddChild(
4020 LayerImpl::Create(host_impl_->active_tree(), id + 2)); 4020 LayerImpl::Create(host_impl_->active_tree(), id + 2));
4021 LayerImpl* content = 4021 LayerImpl* content =
4022 active_tree->OuterViewportScrollLayer()->test_properties()->children[0]; 4022 active_tree->OuterViewportScrollLayer()->test_properties()->children[0];
4023 content->SetBounds(gfx::Size(50, 50)); 4023 content->SetBounds(gfx::Size(50, 50));
4024 host_impl_->active_tree()->BuildPropertyTreesForTesting(); 4024 host_impl_->active_tree()->BuildPropertyTreesForTesting();
4025 4025
4026 DrawFrame(); 4026 DrawFrame();
4027 4027
4028 LayerImpl* inner_container = active_tree->InnerViewportContainerLayer(); 4028 LayerImpl* inner_container = active_tree->InnerViewportContainerLayer();
4029 LayerImpl* outer_container = active_tree->OuterViewportContainerLayer(); 4029 LayerImpl* outer_container = active_tree->OuterViewportContainerLayer();
4030 4030
4031 // The top controls should start off showing so the viewport should be shrunk. 4031 // The browser controls should start off showing so the viewport should be
4032 // shrunk.
4032 ASSERT_EQ(gfx::Size(50, 50), inner_container->bounds()); 4033 ASSERT_EQ(gfx::Size(50, 50), inner_container->bounds());
4033 ASSERT_EQ(gfx::Size(50, 50), outer_container->bounds()); 4034 ASSERT_EQ(gfx::Size(50, 50), outer_container->bounds());
4034 4035
4035 EXPECT_EQ(gfx::SizeF(50, 50), active_tree->ScrollableSize()); 4036 EXPECT_EQ(gfx::SizeF(50, 50), active_tree->ScrollableSize());
4036 4037
4037 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, 4038 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD,
4038 host_impl_ 4039 host_impl_
4039 ->ScrollBegin(BeginState(gfx::Point()).get(), 4040 ->ScrollBegin(BeginState(gfx::Point()).get(),
4040 InputHandler::TOUCHSCREEN) 4041 InputHandler::TOUCHSCREEN)
4041 .thread); 4042 .thread);
4042 4043
4043 host_impl_->top_controls_manager()->ScrollBegin(); 4044 host_impl_->browser_controls_manager()->ScrollBegin();
4044 4045
4045 // Hide the top controls by a bit, the scrollable size should increase but the 4046 // Hide the browser controls by a bit, the scrollable size should increase but
4046 // actual content bounds shouldn't. 4047 // the actual content bounds shouldn't.
4047 { 4048 {
4048 host_impl_->top_controls_manager()->ScrollBy(gfx::Vector2dF(0.f, 25.f)); 4049 host_impl_->browser_controls_manager()->ScrollBy(gfx::Vector2dF(0.f, 25.f));
4049 ASSERT_EQ(gfx::Size(50, 75), inner_container->bounds()); 4050 ASSERT_EQ(gfx::Size(50, 75), inner_container->bounds());
4050 ASSERT_EQ(gfx::Size(50, 75), outer_container->bounds()); 4051 ASSERT_EQ(gfx::Size(50, 75), outer_container->bounds());
4051 EXPECT_EQ(gfx::SizeF(50, 75), active_tree->ScrollableSize()); 4052 EXPECT_EQ(gfx::SizeF(50, 75), active_tree->ScrollableSize());
4052 EXPECT_EQ(gfx::SizeF(50, 50), content->BoundsForScrolling()); 4053 EXPECT_EQ(gfx::SizeF(50, 50), content->BoundsForScrolling());
4053 } 4054 }
4054 4055
4055 // Fully hide the top controls. 4056 // Fully hide the browser controls.
4056 { 4057 {
4057 host_impl_->top_controls_manager()->ScrollBy(gfx::Vector2dF(0.f, 25.f)); 4058 host_impl_->browser_controls_manager()->ScrollBy(gfx::Vector2dF(0.f, 25.f));
4058 ASSERT_EQ(gfx::Size(50, 100), inner_container->bounds()); 4059 ASSERT_EQ(gfx::Size(50, 100), inner_container->bounds());
4059 ASSERT_EQ(gfx::Size(50, 100), outer_container->bounds()); 4060 ASSERT_EQ(gfx::Size(50, 100), outer_container->bounds());
4060 EXPECT_EQ(gfx::SizeF(50, 100), active_tree->ScrollableSize()); 4061 EXPECT_EQ(gfx::SizeF(50, 100), active_tree->ScrollableSize());
4061 EXPECT_EQ(gfx::SizeF(50, 50), content->BoundsForScrolling()); 4062 EXPECT_EQ(gfx::SizeF(50, 50), content->BoundsForScrolling());
4062 } 4063 }
4063 4064
4064 // Scrolling additionally shouldn't have any effect. 4065 // Scrolling additionally shouldn't have any effect.
4065 { 4066 {
4066 host_impl_->top_controls_manager()->ScrollBy(gfx::Vector2dF(0.f, 25.f)); 4067 host_impl_->browser_controls_manager()->ScrollBy(gfx::Vector2dF(0.f, 25.f));
4067 ASSERT_EQ(gfx::Size(50, 100), inner_container->bounds()); 4068 ASSERT_EQ(gfx::Size(50, 100), inner_container->bounds());
4068 ASSERT_EQ(gfx::Size(50, 100), outer_container->bounds()); 4069 ASSERT_EQ(gfx::Size(50, 100), outer_container->bounds());
4069 EXPECT_EQ(gfx::SizeF(50, 100), active_tree->ScrollableSize()); 4070 EXPECT_EQ(gfx::SizeF(50, 100), active_tree->ScrollableSize());
4070 EXPECT_EQ(gfx::SizeF(50, 50), content->BoundsForScrolling()); 4071 EXPECT_EQ(gfx::SizeF(50, 50), content->BoundsForScrolling());
4071 } 4072 }
4072 4073
4073 host_impl_->top_controls_manager()->ScrollEnd(); 4074 host_impl_->browser_controls_manager()->ScrollEnd();
4074 host_impl_->ScrollEnd(EndState().get()); 4075 host_impl_->ScrollEnd(EndState().get());
4075 } 4076 }
4076 4077
4077 TEST_F(LayerTreeHostImplTopControlsTest, ScrollTopControlsByFractionalAmount) { 4078 TEST_F(LayerTreeHostImplBrowserControlsTest,
4078 SetupTopControlsAndScrollLayerWithVirtualViewport( 4079 ScrollBrowserControlsByFractionalAmount) {
4080 SetupBrowserControlsAndScrollLayerWithVirtualViewport(
4079 gfx::Size(10, 10), gfx::Size(10, 10), gfx::Size(10, 10)); 4081 gfx::Size(10, 10), gfx::Size(10, 10), gfx::Size(10, 10));
4080 DrawFrame(); 4082 DrawFrame();
4081 4083
4082 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, 4084 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD,
4083 host_impl_ 4085 host_impl_
4084 ->ScrollBegin(BeginState(gfx::Point()).get(), 4086 ->ScrollBegin(BeginState(gfx::Point()).get(),
4085 InputHandler::TOUCHSCREEN) 4087 InputHandler::TOUCHSCREEN)
4086 .thread); 4088 .thread);
4087 4089
4088 // Make the test scroll delta a fractional amount, to verify that the 4090 // Make the test scroll delta a fractional amount, to verify that the
4089 // fixed container size delta is (1) non-zero, and (2) fractional, and 4091 // fixed container size delta is (1) non-zero, and (2) fractional, and
4090 // (3) matches the movement of the top controls. 4092 // (3) matches the movement of the browser controls.
4091 gfx::Vector2dF top_controls_scroll_delta(0.f, 5.25f); 4093 gfx::Vector2dF top_controls_scroll_delta(0.f, 5.25f);
4092 host_impl_->top_controls_manager()->ScrollBegin(); 4094 host_impl_->browser_controls_manager()->ScrollBegin();
4093 host_impl_->top_controls_manager()->ScrollBy(top_controls_scroll_delta); 4095 host_impl_->browser_controls_manager()->ScrollBy(top_controls_scroll_delta);
4094 host_impl_->top_controls_manager()->ScrollEnd(); 4096 host_impl_->browser_controls_manager()->ScrollEnd();
4095 4097
4096 LayerImpl* inner_viewport_scroll_layer = 4098 LayerImpl* inner_viewport_scroll_layer =
4097 host_impl_->active_tree()->InnerViewportScrollLayer(); 4099 host_impl_->active_tree()->InnerViewportScrollLayer();
4098 DCHECK(inner_viewport_scroll_layer); 4100 DCHECK(inner_viewport_scroll_layer);
4099 host_impl_->ScrollEnd(EndState().get()); 4101 host_impl_->ScrollEnd(EndState().get());
4100 EXPECT_FLOAT_EQ(top_controls_scroll_delta.y(), 4102 EXPECT_FLOAT_EQ(top_controls_scroll_delta.y(),
4101 inner_viewport_scroll_layer->FixedContainerSizeDelta().y()); 4103 inner_viewport_scroll_layer->FixedContainerSizeDelta().y());
4102 } 4104 }
4103 4105
4104 // In this test, the outer viewport is initially unscrollable. We test that a 4106 // In this test, the outer viewport is initially unscrollable. We test that a
4105 // scroll initiated on the inner viewport, causing the top controls to show and 4107 // scroll initiated on the inner viewport, causing the browser controls to show
4106 // thus making the outer viewport scrollable, still scrolls the outer viewport. 4108 // and thus making the outer viewport scrollable, still scrolls the outer
4107 TEST_F(LayerTreeHostImplTopControlsTest, 4109 // viewport.
4108 TopControlsOuterViewportBecomesScrollable) { 4110 TEST_F(LayerTreeHostImplBrowserControlsTest,
4109 SetupTopControlsAndScrollLayerWithVirtualViewport( 4111 BrowserControlsOuterViewportBecomesScrollable) {
4112 SetupBrowserControlsAndScrollLayerWithVirtualViewport(
4110 gfx::Size(10, 50), gfx::Size(10, 50), gfx::Size(10, 100)); 4113 gfx::Size(10, 50), gfx::Size(10, 50), gfx::Size(10, 100));
4111 DrawFrame(); 4114 DrawFrame();
4112 4115
4113 LayerImpl* inner_scroll = 4116 LayerImpl* inner_scroll =
4114 host_impl_->active_tree()->InnerViewportScrollLayer(); 4117 host_impl_->active_tree()->InnerViewportScrollLayer();
4115 inner_scroll->SetDrawsContent(true); 4118 inner_scroll->SetDrawsContent(true);
4116 LayerImpl* inner_container = 4119 LayerImpl* inner_container =
4117 host_impl_->active_tree()->InnerViewportContainerLayer(); 4120 host_impl_->active_tree()->InnerViewportContainerLayer();
4118 LayerImpl* outer_scroll = 4121 LayerImpl* outer_scroll =
4119 host_impl_->active_tree()->OuterViewportScrollLayer(); 4122 host_impl_->active_tree()->OuterViewportScrollLayer();
4120 outer_scroll->SetDrawsContent(true); 4123 outer_scroll->SetDrawsContent(true);
4121 LayerImpl* outer_container = 4124 LayerImpl* outer_container =
4122 host_impl_->active_tree()->OuterViewportContainerLayer(); 4125 host_impl_->active_tree()->OuterViewportContainerLayer();
4123 4126
4124 // Need SetDrawsContent so ScrollBegin's hit test finds an actual layer. 4127 // Need SetDrawsContent so ScrollBegin's hit test finds an actual layer.
4125 outer_scroll->SetDrawsContent(true); 4128 outer_scroll->SetDrawsContent(true);
4126 host_impl_->active_tree()->PushPageScaleFromMainThread(2.f, 1.f, 2.f); 4129 host_impl_->active_tree()->PushPageScaleFromMainThread(2.f, 1.f, 2.f);
4127 4130
4128 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, 4131 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD,
4129 host_impl_ 4132 host_impl_
4130 ->ScrollBegin(BeginState(gfx::Point()).get(), 4133 ->ScrollBegin(BeginState(gfx::Point()).get(),
4131 InputHandler::TOUCHSCREEN) 4134 InputHandler::TOUCHSCREEN)
4132 .thread); 4135 .thread);
4133 host_impl_->ScrollBy( 4136 host_impl_->ScrollBy(
4134 UpdateState(gfx::Point(), gfx::Vector2dF(0.f, 50.f)).get()); 4137 UpdateState(gfx::Point(), gfx::Vector2dF(0.f, 50.f)).get());
4135 4138
4136 // The entire scroll delta should have been used to hide the top controls. 4139 // The entire scroll delta should have been used to hide the browser controls.
4137 // The viewport layers should be resized back to their full sizes. 4140 // The viewport layers should be resized back to their full sizes.
4138 EXPECT_EQ(0.f, host_impl_->active_tree()->CurrentTopControlsShownRatio()); 4141 EXPECT_EQ(0.f, host_impl_->active_tree()->CurrentBrowserControlsShownRatio());
4139 EXPECT_EQ(0.f, inner_scroll->CurrentScrollOffset().y()); 4142 EXPECT_EQ(0.f, inner_scroll->CurrentScrollOffset().y());
4140 EXPECT_EQ(100.f, inner_container->BoundsForScrolling().height()); 4143 EXPECT_EQ(100.f, inner_container->BoundsForScrolling().height());
4141 EXPECT_EQ(100.f, outer_container->BoundsForScrolling().height()); 4144 EXPECT_EQ(100.f, outer_container->BoundsForScrolling().height());
4142 4145
4143 // The inner viewport should be scrollable by 50px * page_scale. 4146 // The inner viewport should be scrollable by 50px * page_scale.
4144 host_impl_->ScrollBy( 4147 host_impl_->ScrollBy(
4145 UpdateState(gfx::Point(), gfx::Vector2dF(0.f, 100.f)).get()); 4148 UpdateState(gfx::Point(), gfx::Vector2dF(0.f, 100.f)).get());
4146 EXPECT_EQ(50.f, inner_scroll->CurrentScrollOffset().y()); 4149 EXPECT_EQ(50.f, inner_scroll->CurrentScrollOffset().y());
4147 EXPECT_EQ(0.f, outer_scroll->CurrentScrollOffset().y()); 4150 EXPECT_EQ(0.f, outer_scroll->CurrentScrollOffset().y());
4148 EXPECT_EQ(gfx::ScrollOffset(), outer_scroll->MaxScrollOffset()); 4151 EXPECT_EQ(gfx::ScrollOffset(), outer_scroll->MaxScrollOffset());
4149 4152
4150 host_impl_->ScrollEnd(EndState().get()); 4153 host_impl_->ScrollEnd(EndState().get());
4151 4154
4152 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, 4155 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD,
4153 host_impl_ 4156 host_impl_
4154 ->ScrollBegin(BeginState(gfx::Point()).get(), 4157 ->ScrollBegin(BeginState(gfx::Point()).get(),
4155 InputHandler::TOUCHSCREEN) 4158 InputHandler::TOUCHSCREEN)
4156 .thread); 4159 .thread);
4157 EXPECT_EQ(host_impl_->CurrentlyScrollingLayer(), outer_scroll); 4160 EXPECT_EQ(host_impl_->CurrentlyScrollingLayer(), outer_scroll);
4158 4161
4159 host_impl_->ScrollBy( 4162 host_impl_->ScrollBy(
4160 UpdateState(gfx::Point(), gfx::Vector2dF(0.f, -50.f)).get()); 4163 UpdateState(gfx::Point(), gfx::Vector2dF(0.f, -50.f)).get());
4161 4164
4162 // The entire scroll delta should have been used to show the top controls. 4165 // The entire scroll delta should have been used to show the browser controls.
4163 // The outer viewport should be resized to accomodate and scrolled to the 4166 // The outer viewport should be resized to accomodate and scrolled to the
4164 // bottom of the document to keep the viewport in place. 4167 // bottom of the document to keep the viewport in place.
4165 EXPECT_EQ(1.f, host_impl_->active_tree()->CurrentTopControlsShownRatio()); 4168 EXPECT_EQ(1.f, host_impl_->active_tree()->CurrentBrowserControlsShownRatio());
4166 EXPECT_EQ(50.f, outer_container->BoundsForScrolling().height()); 4169 EXPECT_EQ(50.f, outer_container->BoundsForScrolling().height());
4167 EXPECT_EQ(50.f, inner_container->BoundsForScrolling().height()); 4170 EXPECT_EQ(50.f, inner_container->BoundsForScrolling().height());
4168 EXPECT_EQ(25.f, outer_scroll->CurrentScrollOffset().y()); 4171 EXPECT_EQ(25.f, outer_scroll->CurrentScrollOffset().y());
4169 EXPECT_EQ(25.f, inner_scroll->CurrentScrollOffset().y()); 4172 EXPECT_EQ(25.f, inner_scroll->CurrentScrollOffset().y());
4170 4173
4171 // Now when we continue scrolling, make sure the outer viewport gets scrolled 4174 // Now when we continue scrolling, make sure the outer viewport gets scrolled
4172 // since it wasn't scrollable when the scroll began. 4175 // since it wasn't scrollable when the scroll began.
4173 host_impl_->ScrollBy( 4176 host_impl_->ScrollBy(
4174 UpdateState(gfx::Point(), gfx::Vector2dF(0.f, -20.f)).get()); 4177 UpdateState(gfx::Point(), gfx::Vector2dF(0.f, -20.f)).get());
4175 EXPECT_EQ(25.f, outer_scroll->CurrentScrollOffset().y()); 4178 EXPECT_EQ(25.f, outer_scroll->CurrentScrollOffset().y());
4176 EXPECT_EQ(15.f, inner_scroll->CurrentScrollOffset().y()); 4179 EXPECT_EQ(15.f, inner_scroll->CurrentScrollOffset().y());
4177 4180
4178 host_impl_->ScrollBy( 4181 host_impl_->ScrollBy(
4179 UpdateState(gfx::Point(), gfx::Vector2dF(0.f, -30.f)).get()); 4182 UpdateState(gfx::Point(), gfx::Vector2dF(0.f, -30.f)).get());
4180 EXPECT_EQ(25.f, outer_scroll->CurrentScrollOffset().y()); 4183 EXPECT_EQ(25.f, outer_scroll->CurrentScrollOffset().y());
4181 EXPECT_EQ(0.f, inner_scroll->CurrentScrollOffset().y()); 4184 EXPECT_EQ(0.f, inner_scroll->CurrentScrollOffset().y());
4182 4185
4183 host_impl_->ScrollBy( 4186 host_impl_->ScrollBy(
4184 UpdateState(gfx::Point(), gfx::Vector2dF(0.f, -50.f)).get()); 4187 UpdateState(gfx::Point(), gfx::Vector2dF(0.f, -50.f)).get());
4185 host_impl_->ScrollEnd(EndState().get()); 4188 host_impl_->ScrollEnd(EndState().get());
4186 4189
4187 EXPECT_EQ(0.f, outer_scroll->CurrentScrollOffset().y()); 4190 EXPECT_EQ(0.f, outer_scroll->CurrentScrollOffset().y());
4188 EXPECT_EQ(0.f, inner_scroll->CurrentScrollOffset().y()); 4191 EXPECT_EQ(0.f, inner_scroll->CurrentScrollOffset().y());
4189 } 4192 }
4190 4193
4191 // Test that the fixed position container delta is appropriately adjusted 4194 // Test that the fixed position container delta is appropriately adjusted
4192 // by the top controls showing/hiding and page scale doesn't affect it. 4195 // by the browser controls showing/hiding and page scale doesn't affect it.
4193 TEST_F(LayerTreeHostImplTopControlsTest, FixedContainerDelta) { 4196 TEST_F(LayerTreeHostImplBrowserControlsTest, FixedContainerDelta) {
4194 SetupTopControlsAndScrollLayerWithVirtualViewport( 4197 SetupBrowserControlsAndScrollLayerWithVirtualViewport(
4195 gfx::Size(100, 100), gfx::Size(100, 100), gfx::Size(100, 100)); 4198 gfx::Size(100, 100), gfx::Size(100, 100), gfx::Size(100, 100));
4196 DrawFrame(); 4199 DrawFrame();
4197 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, 1.f, 2.f); 4200 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, 1.f, 2.f);
4198 4201
4199 float page_scale = 1.5f; 4202 float page_scale = 1.5f;
4200 LayerImpl* outer_viewport_scroll_layer = 4203 LayerImpl* outer_viewport_scroll_layer =
4201 host_impl_->active_tree()->OuterViewportScrollLayer(); 4204 host_impl_->active_tree()->OuterViewportScrollLayer();
4202 4205
4203 // Zoom in, since the fixed container is the outer viewport, the delta should 4206 // Zoom in, since the fixed container is the outer viewport, the delta should
4204 // not be scaled. 4207 // not be scaled.
4205 host_impl_->active_tree()->PushPageScaleFromMainThread(page_scale, 1.f, 2.f); 4208 host_impl_->active_tree()->PushPageScaleFromMainThread(page_scale, 1.f, 2.f);
4206 4209
4207 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, 4210 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD,
4208 host_impl_ 4211 host_impl_
4209 ->ScrollBegin(BeginState(gfx::Point()).get(), 4212 ->ScrollBegin(BeginState(gfx::Point()).get(),
4210 InputHandler::TOUCHSCREEN) 4213 InputHandler::TOUCHSCREEN)
4211 .thread); 4214 .thread);
4212 4215
4213 // Scroll down, the top controls hiding should expand the viewport size so 4216 // Scroll down, the browser controls hiding should expand the viewport size so
4214 // the delta should be equal to the scroll distance. 4217 // the delta should be equal to the scroll distance.
4215 gfx::Vector2dF top_controls_scroll_delta(0.f, 20.f); 4218 gfx::Vector2dF top_controls_scroll_delta(0.f, 20.f);
4216 host_impl_->top_controls_manager()->ScrollBegin(); 4219 host_impl_->browser_controls_manager()->ScrollBegin();
4217 host_impl_->top_controls_manager()->ScrollBy(top_controls_scroll_delta); 4220 host_impl_->browser_controls_manager()->ScrollBy(top_controls_scroll_delta);
4218 EXPECT_FLOAT_EQ(top_controls_height_ - top_controls_scroll_delta.y(), 4221 EXPECT_FLOAT_EQ(top_controls_height_ - top_controls_scroll_delta.y(),
4219 host_impl_->top_controls_manager()->ContentTopOffset()); 4222 host_impl_->browser_controls_manager()->ContentTopOffset());
4220 EXPECT_FLOAT_EQ(top_controls_scroll_delta.y(), 4223 EXPECT_FLOAT_EQ(top_controls_scroll_delta.y(),
4221 outer_viewport_scroll_layer->FixedContainerSizeDelta().y()); 4224 outer_viewport_scroll_layer->FixedContainerSizeDelta().y());
4222 host_impl_->ScrollEnd(EndState().get()); 4225 host_impl_->ScrollEnd(EndState().get());
4223 4226
4224 // Scroll past the maximum extent. The delta shouldn't be greater than the 4227 // Scroll past the maximum extent. The delta shouldn't be greater than the
4225 // top controls height. 4228 // browser controls height.
4226 host_impl_->top_controls_manager()->ScrollBegin(); 4229 host_impl_->browser_controls_manager()->ScrollBegin();
4227 host_impl_->top_controls_manager()->ScrollBy(top_controls_scroll_delta); 4230 host_impl_->browser_controls_manager()->ScrollBy(top_controls_scroll_delta);
4228 host_impl_->top_controls_manager()->ScrollBy(top_controls_scroll_delta); 4231 host_impl_->browser_controls_manager()->ScrollBy(top_controls_scroll_delta);
4229 host_impl_->top_controls_manager()->ScrollBy(top_controls_scroll_delta); 4232 host_impl_->browser_controls_manager()->ScrollBy(top_controls_scroll_delta);
4230 EXPECT_EQ(0.f, host_impl_->top_controls_manager()->ContentTopOffset()); 4233 EXPECT_EQ(0.f, host_impl_->browser_controls_manager()->ContentTopOffset());
4231 EXPECT_VECTOR_EQ(gfx::Vector2dF(0, top_controls_height_), 4234 EXPECT_VECTOR_EQ(gfx::Vector2dF(0, top_controls_height_),
4232 outer_viewport_scroll_layer->FixedContainerSizeDelta()); 4235 outer_viewport_scroll_layer->FixedContainerSizeDelta());
4233 host_impl_->ScrollEnd(EndState().get()); 4236 host_impl_->ScrollEnd(EndState().get());
4234 4237
4235 // Scroll in the direction to make the top controls show. 4238 // Scroll in the direction to make the browser controls show.
4236 host_impl_->top_controls_manager()->ScrollBegin(); 4239 host_impl_->browser_controls_manager()->ScrollBegin();
4237 host_impl_->top_controls_manager()->ScrollBy(-top_controls_scroll_delta); 4240 host_impl_->browser_controls_manager()->ScrollBy(-top_controls_scroll_delta);
4238 EXPECT_EQ(top_controls_scroll_delta.y(), 4241 EXPECT_EQ(top_controls_scroll_delta.y(),
4239 host_impl_->top_controls_manager()->ContentTopOffset()); 4242 host_impl_->browser_controls_manager()->ContentTopOffset());
4240 EXPECT_VECTOR_EQ( 4243 EXPECT_VECTOR_EQ(
4241 gfx::Vector2dF(0, top_controls_height_ - top_controls_scroll_delta.y()), 4244 gfx::Vector2dF(0, top_controls_height_ - top_controls_scroll_delta.y()),
4242 outer_viewport_scroll_layer->FixedContainerSizeDelta()); 4245 outer_viewport_scroll_layer->FixedContainerSizeDelta());
4243 host_impl_->top_controls_manager()->ScrollEnd(); 4246 host_impl_->browser_controls_manager()->ScrollEnd();
4244 } 4247 }
4245 4248
4246 // Push a top controls ratio from the main thread that we didn't send as a delta 4249 // Push a browser controls ratio from the main thread that we didn't send as a
4247 // and make sure that the ratio is clamped to the [0, 1] range. 4250 // delta and make sure that the ratio is clamped to the [0, 1] range.
4248 TEST_F(LayerTreeHostImplTopControlsTest, TopControlsPushUnsentRatio) { 4251 TEST_F(LayerTreeHostImplBrowserControlsTest, BrowserControlsPushUnsentRatio) {
4249 SetupTopControlsAndScrollLayerWithVirtualViewport( 4252 SetupBrowserControlsAndScrollLayerWithVirtualViewport(
4250 gfx::Size(10, 50), gfx::Size(10, 50), gfx::Size(10, 100)); 4253 gfx::Size(10, 50), gfx::Size(10, 50), gfx::Size(10, 100));
4251 DrawFrame(); 4254 DrawFrame();
4252 4255
4253 // Need SetDrawsContent so ScrollBegin's hit test finds an actual layer. 4256 // Need SetDrawsContent so ScrollBegin's hit test finds an actual layer.
4254 LayerImpl* inner_scroll = 4257 LayerImpl* inner_scroll =
4255 host_impl_->active_tree()->InnerViewportScrollLayer(); 4258 host_impl_->active_tree()->InnerViewportScrollLayer();
4256 inner_scroll->SetDrawsContent(true); 4259 inner_scroll->SetDrawsContent(true);
4257 LayerImpl* outer_scroll = 4260 LayerImpl* outer_scroll =
4258 host_impl_->active_tree()->OuterViewportScrollLayer(); 4261 host_impl_->active_tree()->OuterViewportScrollLayer();
4259 outer_scroll->SetDrawsContent(true); 4262 outer_scroll->SetDrawsContent(true);
4260 4263
4261 host_impl_->active_tree()->PushTopControlsFromMainThread(1); 4264 host_impl_->active_tree()->PushBrowserControlsFromMainThread(1);
4262 ASSERT_EQ(1.0f, host_impl_->active_tree()->CurrentTopControlsShownRatio()); 4265 ASSERT_EQ(1.0f,
4266 host_impl_->active_tree()->CurrentBrowserControlsShownRatio());
4263 4267
4264 host_impl_->active_tree()->SetCurrentTopControlsShownRatio(0.5f); 4268 host_impl_->active_tree()->SetCurrentBrowserControlsShownRatio(0.5f);
4265 ASSERT_EQ(0.5f, host_impl_->active_tree()->CurrentTopControlsShownRatio()); 4269 ASSERT_EQ(0.5f,
4270 host_impl_->active_tree()->CurrentBrowserControlsShownRatio());
4266 4271
4267 host_impl_->active_tree()->PushTopControlsFromMainThread(0); 4272 host_impl_->active_tree()->PushBrowserControlsFromMainThread(0);
4268 4273
4269 ASSERT_EQ(0, host_impl_->active_tree()->CurrentTopControlsShownRatio()); 4274 ASSERT_EQ(0, host_impl_->active_tree()->CurrentBrowserControlsShownRatio());
4270 } 4275 }
4271 4276
4272 // Test that if only the top controls are scrolled, we shouldn't request a 4277 // Test that if only the browser controls are scrolled, we shouldn't request a
4273 // commit. 4278 // commit.
4274 TEST_F(LayerTreeHostImplTopControlsTest, TopControlsDontTriggerCommit) { 4279 TEST_F(LayerTreeHostImplBrowserControlsTest, BrowserControlsDontTriggerCommit) {
4275 SetupTopControlsAndScrollLayerWithVirtualViewport( 4280 SetupBrowserControlsAndScrollLayerWithVirtualViewport(
4276 gfx::Size(100, 50), gfx::Size(100, 100), gfx::Size(100, 100)); 4281 gfx::Size(100, 50), gfx::Size(100, 100), gfx::Size(100, 100));
4277 DrawFrame(); 4282 DrawFrame();
4278 4283
4279 // Show top controls 4284 // Show browser controls
4280 EXPECT_EQ(1.f, host_impl_->active_tree()->CurrentTopControlsShownRatio()); 4285 EXPECT_EQ(1.f, host_impl_->active_tree()->CurrentBrowserControlsShownRatio());
4281 4286
4282 // Scroll 25px to hide top controls 4287 // Scroll 25px to hide browser controls
4283 gfx::Vector2dF scroll_delta(0.f, 25.f); 4288 gfx::Vector2dF scroll_delta(0.f, 25.f);
4284 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, 4289 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD,
4285 host_impl_ 4290 host_impl_
4286 ->ScrollBegin(BeginState(gfx::Point()).get(), 4291 ->ScrollBegin(BeginState(gfx::Point()).get(),
4287 InputHandler::TOUCHSCREEN) 4292 InputHandler::TOUCHSCREEN)
4288 .thread); 4293 .thread);
4289 host_impl_->ScrollBy(UpdateState(gfx::Point(), scroll_delta).get()); 4294 host_impl_->ScrollBy(UpdateState(gfx::Point(), scroll_delta).get());
4290 EXPECT_FALSE(did_request_commit_); 4295 EXPECT_FALSE(did_request_commit_);
4291 } 4296 }
4292 4297
4293 // Test that if a scrollable sublayer doesn't consume the scroll, 4298 // Test that if a scrollable sublayer doesn't consume the scroll,
4294 // top controls should hide when scrolling down. 4299 // browser controls should hide when scrolling down.
4295 TEST_F(LayerTreeHostImplTopControlsTest, TopControlsScrollableSublayer) { 4300 TEST_F(LayerTreeHostImplBrowserControlsTest,
4301 BrowserControlsScrollableSublayer) {
4296 gfx::Size sub_content_size(100, 400); 4302 gfx::Size sub_content_size(100, 400);
4297 gfx::Size sub_content_layer_size(100, 300); 4303 gfx::Size sub_content_layer_size(100, 300);
4298 SetupTopControlsAndScrollLayerWithVirtualViewport( 4304 SetupBrowserControlsAndScrollLayerWithVirtualViewport(
4299 gfx::Size(100, 50), gfx::Size(100, 100), gfx::Size(100, 100)); 4305 gfx::Size(100, 50), gfx::Size(100, 100), gfx::Size(100, 100));
4300 DrawFrame(); 4306 DrawFrame();
4301 4307
4302 // Show top controls 4308 // Show browser controls
4303 EXPECT_EQ(1.f, host_impl_->active_tree()->CurrentTopControlsShownRatio()); 4309 EXPECT_EQ(1.f, host_impl_->active_tree()->CurrentBrowserControlsShownRatio());
4304 4310
4305 LayerImpl* outer_viewport_scroll_layer = 4311 LayerImpl* outer_viewport_scroll_layer =
4306 host_impl_->active_tree()->OuterViewportScrollLayer(); 4312 host_impl_->active_tree()->OuterViewportScrollLayer();
4307 int id = outer_viewport_scroll_layer->id(); 4313 int id = outer_viewport_scroll_layer->id();
4308 4314
4309 std::unique_ptr<LayerImpl> child = 4315 std::unique_ptr<LayerImpl> child =
4310 LayerImpl::Create(host_impl_->active_tree(), id + 2); 4316 LayerImpl::Create(host_impl_->active_tree(), id + 2);
4311 std::unique_ptr<LayerImpl> child_clip = 4317 std::unique_ptr<LayerImpl> child_clip =
4312 LayerImpl::Create(host_impl_->active_tree(), id + 3); 4318 LayerImpl::Create(host_impl_->active_tree(), id + 3);
4313 4319
4314 child_clip->SetBounds(sub_content_layer_size); 4320 child_clip->SetBounds(sub_content_layer_size);
4315 child->SetScrollClipLayer(child_clip->id()); 4321 child->SetScrollClipLayer(child_clip->id());
4316 child->SetBounds(sub_content_size); 4322 child->SetBounds(sub_content_size);
4317 child->SetPosition(gfx::PointF()); 4323 child->SetPosition(gfx::PointF());
4318 child->SetDrawsContent(true); 4324 child->SetDrawsContent(true);
4319 child->test_properties()->is_container_for_fixed_position_layers = true; 4325 child->test_properties()->is_container_for_fixed_position_layers = true;
4320 4326
4321 // scroll child to limit 4327 // scroll child to limit
4322 SetScrollOffsetDelta(child.get(), gfx::Vector2dF(0, 100.f)); 4328 SetScrollOffsetDelta(child.get(), gfx::Vector2dF(0, 100.f));
4323 child_clip->test_properties()->AddChild(std::move(child)); 4329 child_clip->test_properties()->AddChild(std::move(child));
4324 outer_viewport_scroll_layer->test_properties()->AddChild( 4330 outer_viewport_scroll_layer->test_properties()->AddChild(
4325 std::move(child_clip)); 4331 std::move(child_clip));
4326 host_impl_->active_tree()->BuildPropertyTreesForTesting(); 4332 host_impl_->active_tree()->BuildPropertyTreesForTesting();
4327 4333
4328 // Scroll 25px to hide top controls 4334 // Scroll 25px to hide browser controls
4329 gfx::Vector2dF scroll_delta(0.f, 25.f); 4335 gfx::Vector2dF scroll_delta(0.f, 25.f);
4330 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, 4336 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD,
4331 host_impl_ 4337 host_impl_
4332 ->ScrollBegin(BeginState(gfx::Point()).get(), 4338 ->ScrollBegin(BeginState(gfx::Point()).get(),
4333 InputHandler::TOUCHSCREEN) 4339 InputHandler::TOUCHSCREEN)
4334 .thread); 4340 .thread);
4335 host_impl_->ScrollBy(UpdateState(gfx::Point(), scroll_delta).get()); 4341 host_impl_->ScrollBy(UpdateState(gfx::Point(), scroll_delta).get());
4336 host_impl_->ScrollEnd(EndState().get()); 4342 host_impl_->ScrollEnd(EndState().get());
4337 4343
4338 // Top controls should be hidden 4344 // Browser controls should be hidden
4339 EXPECT_EQ(scroll_delta.y(), 4345 EXPECT_EQ(scroll_delta.y(),
4340 top_controls_height_ - 4346 top_controls_height_ -
4341 host_impl_->top_controls_manager()->ContentTopOffset()); 4347 host_impl_->browser_controls_manager()->ContentTopOffset());
4342 } 4348 }
4343 4349
4344 // Ensure setting the top controls position explicitly using the setters on the 4350 // Ensure setting the browser controls position explicitly using the setters on
4345 // TreeImpl correctly affects the top controls manager and viewport bounds. 4351 // the TreeImpl correctly affects the browser controls manager and viewport
4346 TEST_F(LayerTreeHostImplTopControlsTest, PositionTopControlsExplicitly) { 4352 // bounds.
4353 TEST_F(LayerTreeHostImplBrowserControlsTest,
4354 PositionBrowserControlsExplicitly) {
4347 settings_ = DefaultSettings(); 4355 settings_ = DefaultSettings();
4348 CreateHostImpl(settings_, CreateCompositorFrameSink()); 4356 CreateHostImpl(settings_, CreateCompositorFrameSink());
4349 SetupTopControlsAndScrollLayerWithVirtualViewport( 4357 SetupBrowserControlsAndScrollLayerWithVirtualViewport(
4350 layer_size_, layer_size_, layer_size_); 4358 layer_size_, layer_size_, layer_size_);
4351 DrawFrame(); 4359 DrawFrame();
4352 4360
4353 host_impl_->active_tree()->SetCurrentTopControlsShownRatio(0.f); 4361 host_impl_->active_tree()->SetCurrentBrowserControlsShownRatio(0.f);
4354 host_impl_->active_tree()->top_controls_shown_ratio()->PushFromMainThread( 4362 host_impl_->active_tree()->top_controls_shown_ratio()->PushFromMainThread(
4355 30.f / top_controls_height_); 4363 30.f / top_controls_height_);
4356 host_impl_->active_tree()->top_controls_shown_ratio()->PushPendingToActive(); 4364 host_impl_->active_tree()->top_controls_shown_ratio()->PushPendingToActive();
4357 EXPECT_FLOAT_EQ(30.f, host_impl_->top_controls_manager()->ContentTopOffset()); 4365 EXPECT_FLOAT_EQ(30.f,
4366 host_impl_->browser_controls_manager()->ContentTopOffset());
4358 EXPECT_FLOAT_EQ(-20.f, 4367 EXPECT_FLOAT_EQ(-20.f,
4359 host_impl_->top_controls_manager()->ControlsTopOffset()); 4368 host_impl_->browser_controls_manager()->ControlsTopOffset());
4360 4369
4361 host_impl_->active_tree()->SetCurrentTopControlsShownRatio(0.f); 4370 host_impl_->active_tree()->SetCurrentBrowserControlsShownRatio(0.f);
4362 EXPECT_FLOAT_EQ(0.f, host_impl_->top_controls_manager()->ContentTopOffset()); 4371 EXPECT_FLOAT_EQ(0.f,
4372 host_impl_->browser_controls_manager()->ContentTopOffset());
4363 EXPECT_FLOAT_EQ(-50.f, 4373 EXPECT_FLOAT_EQ(-50.f,
4364 host_impl_->top_controls_manager()->ControlsTopOffset()); 4374 host_impl_->browser_controls_manager()->ControlsTopOffset());
4365 4375
4366 host_impl_->DidChangeTopControlsPosition(); 4376 host_impl_->DidChangeBrowserControlsPosition();
4367 4377
4368 // Now that top controls have moved, expect the clip to resize. 4378 // Now that browser controls have moved, expect the clip to resize.
4369 LayerImpl* inner_clip_ptr = host_impl_->InnerViewportScrollLayer() 4379 LayerImpl* inner_clip_ptr = host_impl_->InnerViewportScrollLayer()
4370 ->test_properties() 4380 ->test_properties()
4371 ->parent->test_properties() 4381 ->parent->test_properties()
4372 ->parent; 4382 ->parent;
4373 EXPECT_EQ(viewport_size_, inner_clip_ptr->bounds()); 4383 EXPECT_EQ(viewport_size_, inner_clip_ptr->bounds());
4374 } 4384 }
4375 4385
4376 // Test that the top_controls delta and sent delta are appropriately 4386 // Test that the top_controls delta and sent delta are appropriately
4377 // applied on sync tree activation. The total top controls offset shouldn't 4387 // applied on sync tree activation. The total browser controls offset shouldn't
4378 // change after the activation. 4388 // change after the activation.
4379 TEST_F(LayerTreeHostImplTopControlsTest, ApplyDeltaOnTreeActivation) { 4389 TEST_F(LayerTreeHostImplBrowserControlsTest, ApplyDeltaOnTreeActivation) {
4380 settings_ = DefaultSettings(); 4390 settings_ = DefaultSettings();
4381 CreateHostImpl(settings_, CreateCompositorFrameSink()); 4391 CreateHostImpl(settings_, CreateCompositorFrameSink());
4382 SetupTopControlsAndScrollLayerWithVirtualViewport( 4392 SetupBrowserControlsAndScrollLayerWithVirtualViewport(
4383 layer_size_, layer_size_, layer_size_); 4393 layer_size_, layer_size_, layer_size_);
4384 DrawFrame(); 4394 DrawFrame();
4385 4395
4386 host_impl_->active_tree()->top_controls_shown_ratio()->PushFromMainThread( 4396 host_impl_->active_tree()->top_controls_shown_ratio()->PushFromMainThread(
4387 20.f / top_controls_height_); 4397 20.f / top_controls_height_);
4388 host_impl_->active_tree()->top_controls_shown_ratio()->PushPendingToActive(); 4398 host_impl_->active_tree()->top_controls_shown_ratio()->PushPendingToActive();
4389 host_impl_->active_tree()->SetCurrentTopControlsShownRatio( 4399 host_impl_->active_tree()->SetCurrentBrowserControlsShownRatio(
4390 15.f / top_controls_height_); 4400 15.f / top_controls_height_);
4391 host_impl_->active_tree() 4401 host_impl_->active_tree()
4392 ->top_controls_shown_ratio() 4402 ->top_controls_shown_ratio()
4393 ->PullDeltaForMainThread(); 4403 ->PullDeltaForMainThread();
4394 host_impl_->active_tree()->SetCurrentTopControlsShownRatio(0.f); 4404 host_impl_->active_tree()->SetCurrentBrowserControlsShownRatio(0.f);
4395 host_impl_->sync_tree()->PushTopControlsFromMainThread(15.f / 4405 host_impl_->sync_tree()->PushBrowserControlsFromMainThread(
4396 top_controls_height_); 4406 15.f / top_controls_height_);
4397 4407
4398 host_impl_->DidChangeTopControlsPosition(); 4408 host_impl_->DidChangeBrowserControlsPosition();
4399 LayerImpl* inner_clip_ptr = host_impl_->InnerViewportScrollLayer() 4409 LayerImpl* inner_clip_ptr = host_impl_->InnerViewportScrollLayer()
4400 ->test_properties() 4410 ->test_properties()
4401 ->parent->test_properties() 4411 ->parent->test_properties()
4402 ->parent; 4412 ->parent;
4403 EXPECT_EQ(viewport_size_, inner_clip_ptr->bounds()); 4413 EXPECT_EQ(viewport_size_, inner_clip_ptr->bounds());
4404 EXPECT_EQ(0.f, host_impl_->top_controls_manager()->ContentTopOffset()); 4414 EXPECT_EQ(0.f, host_impl_->browser_controls_manager()->ContentTopOffset());
4405 4415
4406 host_impl_->ActivateSyncTree(); 4416 host_impl_->ActivateSyncTree();
4407 4417
4408 inner_clip_ptr = host_impl_->InnerViewportScrollLayer() 4418 inner_clip_ptr = host_impl_->InnerViewportScrollLayer()
4409 ->test_properties() 4419 ->test_properties()
4410 ->parent->test_properties() 4420 ->parent->test_properties()
4411 ->parent; 4421 ->parent;
4412 EXPECT_EQ(0.f, host_impl_->top_controls_manager()->ContentTopOffset()); 4422 EXPECT_EQ(0.f, host_impl_->browser_controls_manager()->ContentTopOffset());
4413 EXPECT_EQ(viewport_size_, inner_clip_ptr->bounds()); 4423 EXPECT_EQ(viewport_size_, inner_clip_ptr->bounds());
4414 4424
4415 EXPECT_FLOAT_EQ( 4425 EXPECT_FLOAT_EQ(
4416 -15.f, host_impl_->active_tree()->top_controls_shown_ratio()->Delta() * 4426 -15.f, host_impl_->active_tree()->top_controls_shown_ratio()->Delta() *
4417 top_controls_height_); 4427 top_controls_height_);
4418 EXPECT_FLOAT_EQ( 4428 EXPECT_FLOAT_EQ(
4419 15.f, 4429 15.f,
4420 host_impl_->active_tree()->top_controls_shown_ratio()->ActiveBase() * 4430 host_impl_->active_tree()->top_controls_shown_ratio()->ActiveBase() *
4421 top_controls_height_); 4431 top_controls_height_);
4422 } 4432 }
4423 4433
4424 // Test that changing the top controls layout height is correctly applied to 4434 // Test that changing the browser controls layout height is correctly applied to
4425 // the inner viewport container bounds. That is, the top controls layout 4435 // the inner viewport container bounds. That is, the browser controls layout
4426 // height is the amount that the inner viewport container was shrunk outside 4436 // height is the amount that the inner viewport container was shrunk outside
4427 // the compositor to accommodate the top controls. 4437 // the compositor to accommodate the browser controls.
4428 TEST_F(LayerTreeHostImplTopControlsTest, TopControlsLayoutHeightChanged) { 4438 TEST_F(LayerTreeHostImplBrowserControlsTest,
4439 BrowserControlsLayoutHeightChanged) {
4429 settings_ = DefaultSettings(); 4440 settings_ = DefaultSettings();
4430 CreateHostImpl(settings_, CreateCompositorFrameSink()); 4441 CreateHostImpl(settings_, CreateCompositorFrameSink());
4431 SetupTopControlsAndScrollLayerWithVirtualViewport( 4442 SetupBrowserControlsAndScrollLayerWithVirtualViewport(
4432 layer_size_, layer_size_, layer_size_); 4443 layer_size_, layer_size_, layer_size_);
4433 DrawFrame(); 4444 DrawFrame();
4434 4445
4435 host_impl_->sync_tree()->PushTopControlsFromMainThread(1.f); 4446 host_impl_->sync_tree()->PushBrowserControlsFromMainThread(1.f);
4436 host_impl_->sync_tree()->set_top_controls_shrink_blink_size(true); 4447 host_impl_->sync_tree()->set_browser_controls_shrink_blink_size(true);
4437 4448
4438 host_impl_->active_tree()->top_controls_shown_ratio()->PushFromMainThread( 4449 host_impl_->active_tree()->top_controls_shown_ratio()->PushFromMainThread(
4439 1.f); 4450 1.f);
4440 host_impl_->active_tree()->top_controls_shown_ratio()->PushPendingToActive(); 4451 host_impl_->active_tree()->top_controls_shown_ratio()->PushPendingToActive();
4441 host_impl_->active_tree()->SetCurrentTopControlsShownRatio(0.f); 4452 host_impl_->active_tree()->SetCurrentBrowserControlsShownRatio(0.f);
4442 4453
4443 host_impl_->DidChangeTopControlsPosition(); 4454 host_impl_->DidChangeBrowserControlsPosition();
4444 LayerImpl* inner_clip_ptr = host_impl_->InnerViewportScrollLayer() 4455 LayerImpl* inner_clip_ptr = host_impl_->InnerViewportScrollLayer()
4445 ->test_properties() 4456 ->test_properties()
4446 ->parent->test_properties() 4457 ->parent->test_properties()
4447 ->parent; 4458 ->parent;
4448 EXPECT_EQ(viewport_size_, inner_clip_ptr->bounds()); 4459 EXPECT_EQ(viewport_size_, inner_clip_ptr->bounds());
4449 EXPECT_EQ(0.f, host_impl_->top_controls_manager()->ContentTopOffset()); 4460 EXPECT_EQ(0.f, host_impl_->browser_controls_manager()->ContentTopOffset());
4450 4461
4451 host_impl_->sync_tree()->root_layer_for_testing()->SetBounds( 4462 host_impl_->sync_tree()->root_layer_for_testing()->SetBounds(
4452 gfx::Size(inner_clip_ptr->bounds().width(), 4463 gfx::Size(inner_clip_ptr->bounds().width(),
4453 inner_clip_ptr->bounds().height() - 50.f)); 4464 inner_clip_ptr->bounds().height() - 50.f));
4454 4465
4455 host_impl_->ActivateSyncTree(); 4466 host_impl_->ActivateSyncTree();
4456 4467
4457 inner_clip_ptr = host_impl_->InnerViewportScrollLayer() 4468 inner_clip_ptr = host_impl_->InnerViewportScrollLayer()
4458 ->test_properties() 4469 ->test_properties()
4459 ->parent->test_properties() 4470 ->parent->test_properties()
4460 ->parent; 4471 ->parent;
4461 EXPECT_EQ(0.f, host_impl_->top_controls_manager()->ContentTopOffset()); 4472 EXPECT_EQ(0.f, host_impl_->browser_controls_manager()->ContentTopOffset());
4462 4473
4463 // The total bounds should remain unchanged since the bounds delta should 4474 // The total bounds should remain unchanged since the bounds delta should
4464 // account for the difference between the layout height and the current 4475 // account for the difference between the layout height and the current
4465 // top controls offset. 4476 // browser controls offset.
4466 EXPECT_EQ(viewport_size_, inner_clip_ptr->bounds()); 4477 EXPECT_EQ(viewport_size_, inner_clip_ptr->bounds());
4467 EXPECT_VECTOR_EQ(gfx::Vector2dF(0.f, 50.f), inner_clip_ptr->bounds_delta()); 4478 EXPECT_VECTOR_EQ(gfx::Vector2dF(0.f, 50.f), inner_clip_ptr->bounds_delta());
4468 4479
4469 host_impl_->active_tree()->SetCurrentTopControlsShownRatio(1.f); 4480 host_impl_->active_tree()->SetCurrentBrowserControlsShownRatio(1.f);
4470 host_impl_->DidChangeTopControlsPosition(); 4481 host_impl_->DidChangeBrowserControlsPosition();
4471 4482
4472 EXPECT_EQ(1.f, host_impl_->top_controls_manager()->TopControlsShownRatio()); 4483 EXPECT_EQ(1.f,
4473 EXPECT_EQ(50.f, host_impl_->top_controls_manager()->TopControlsHeight()); 4484 host_impl_->browser_controls_manager()->TopControlsShownRatio());
4474 EXPECT_EQ(50.f, host_impl_->top_controls_manager()->ContentTopOffset()); 4485 EXPECT_EQ(50.f, host_impl_->browser_controls_manager()->TopControlsHeight());
4486 EXPECT_EQ(50.f, host_impl_->browser_controls_manager()->ContentTopOffset());
4475 EXPECT_VECTOR_EQ(gfx::Vector2dF(0.f, 0.f), inner_clip_ptr->bounds_delta()); 4487 EXPECT_VECTOR_EQ(gfx::Vector2dF(0.f, 0.f), inner_clip_ptr->bounds_delta());
4476 EXPECT_EQ(gfx::Size(viewport_size_.width(), viewport_size_.height() - 50.f), 4488 EXPECT_EQ(gfx::Size(viewport_size_.width(), viewport_size_.height() - 50.f),
4477 inner_clip_ptr->bounds()); 4489 inner_clip_ptr->bounds());
4478 } 4490 }
4479 4491
4480 // Test that showing/hiding the top controls when the viewport is fully scrolled 4492 // Test that showing/hiding the browser controls when the viewport is fully
4481 // doesn't incorrectly change the viewport offset due to clamping from changing 4493 // scrolled doesn't incorrectly change the viewport offset due to clamping from
4482 // viewport bounds. 4494 // changing viewport bounds.
4483 TEST_F(LayerTreeHostImplTopControlsTest, TopControlsViewportOffsetClamping) { 4495 TEST_F(LayerTreeHostImplBrowserControlsTest,
4484 SetupTopControlsAndScrollLayerWithVirtualViewport( 4496 BrowserControlsViewportOffsetClamping) {
4497 SetupBrowserControlsAndScrollLayerWithVirtualViewport(
4485 gfx::Size(100, 100), gfx::Size(200, 200), gfx::Size(200, 400)); 4498 gfx::Size(100, 100), gfx::Size(200, 200), gfx::Size(200, 400));
4486 DrawFrame(); 4499 DrawFrame();
4487 4500
4488 EXPECT_EQ(1.f, host_impl_->active_tree()->CurrentTopControlsShownRatio()); 4501 EXPECT_EQ(1.f, host_impl_->active_tree()->CurrentBrowserControlsShownRatio());
4489 4502
4490 LayerImpl* outer_scroll = host_impl_->OuterViewportScrollLayer(); 4503 LayerImpl* outer_scroll = host_impl_->OuterViewportScrollLayer();
4491 LayerImpl* inner_scroll = host_impl_->InnerViewportScrollLayer(); 4504 LayerImpl* inner_scroll = host_impl_->InnerViewportScrollLayer();
4492 4505
4493 // Scroll the viewports to max scroll offset. 4506 // Scroll the viewports to max scroll offset.
4494 SetScrollOffsetDelta(outer_scroll, gfx::Vector2dF(0, 200.f)); 4507 SetScrollOffsetDelta(outer_scroll, gfx::Vector2dF(0, 200.f));
4495 SetScrollOffsetDelta(inner_scroll, gfx::Vector2dF(100, 100.f)); 4508 SetScrollOffsetDelta(inner_scroll, gfx::Vector2dF(100, 100.f));
4496 4509
4497 gfx::ScrollOffset viewport_offset = 4510 gfx::ScrollOffset viewport_offset =
4498 host_impl_->active_tree()->TotalScrollOffset(); 4511 host_impl_->active_tree()->TotalScrollOffset();
4499 EXPECT_EQ(host_impl_->active_tree()->TotalMaxScrollOffset(), viewport_offset); 4512 EXPECT_EQ(host_impl_->active_tree()->TotalMaxScrollOffset(), viewport_offset);
4500 4513
4501 // Hide the top controls by 25px. 4514 // Hide the browser controls by 25px.
4502 gfx::Vector2dF scroll_delta(0.f, 25.f); 4515 gfx::Vector2dF scroll_delta(0.f, 25.f);
4503 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, 4516 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD,
4504 host_impl_ 4517 host_impl_
4505 ->ScrollBegin(BeginState(gfx::Point()).get(), 4518 ->ScrollBegin(BeginState(gfx::Point()).get(),
4506 InputHandler::TOUCHSCREEN) 4519 InputHandler::TOUCHSCREEN)
4507 .thread); 4520 .thread);
4508 host_impl_->ScrollBy(UpdateState(gfx::Point(), scroll_delta).get()); 4521 host_impl_->ScrollBy(UpdateState(gfx::Point(), scroll_delta).get());
4509 4522
4510 // scrolling down at the max extents no longer hides the top controls 4523 // scrolling down at the max extents no longer hides the browser controls
4511 EXPECT_EQ(1.f, host_impl_->active_tree()->CurrentTopControlsShownRatio()); 4524 EXPECT_EQ(1.f, host_impl_->active_tree()->CurrentBrowserControlsShownRatio());
4512 4525
4513 // forcefully hide the top controls by 25px 4526 // forcefully hide the browser controls by 25px
4514 host_impl_->top_controls_manager()->ScrollBy(scroll_delta); 4527 host_impl_->browser_controls_manager()->ScrollBy(scroll_delta);
4515 host_impl_->ScrollEnd(EndState().get()); 4528 host_impl_->ScrollEnd(EndState().get());
4516 4529
4517 EXPECT_FLOAT_EQ(scroll_delta.y(), 4530 EXPECT_FLOAT_EQ(
4518 top_controls_height_ - 4531 scroll_delta.y(),
4519 host_impl_->top_controls_manager()->ContentTopOffset()); 4532 top_controls_height_ -
4533 host_impl_->browser_controls_manager()->ContentTopOffset());
4520 4534
4521 inner_scroll->ClampScrollToMaxScrollOffset(); 4535 inner_scroll->ClampScrollToMaxScrollOffset();
4522 outer_scroll->ClampScrollToMaxScrollOffset(); 4536 outer_scroll->ClampScrollToMaxScrollOffset();
4523 4537
4524 // We should still be fully scrolled. 4538 // We should still be fully scrolled.
4525 EXPECT_EQ(host_impl_->active_tree()->TotalMaxScrollOffset(), 4539 EXPECT_EQ(host_impl_->active_tree()->TotalMaxScrollOffset(),
4526 host_impl_->active_tree()->TotalScrollOffset()); 4540 host_impl_->active_tree()->TotalScrollOffset());
4527 4541
4528 viewport_offset = host_impl_->active_tree()->TotalScrollOffset(); 4542 viewport_offset = host_impl_->active_tree()->TotalScrollOffset();
4529 4543
4530 // Bring the top controls down by 25px. 4544 // Bring the browser controls down by 25px.
4531 scroll_delta = gfx::Vector2dF(0.f, -25.f); 4545 scroll_delta = gfx::Vector2dF(0.f, -25.f);
4532 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, 4546 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD,
4533 host_impl_ 4547 host_impl_
4534 ->ScrollBegin(BeginState(gfx::Point()).get(), 4548 ->ScrollBegin(BeginState(gfx::Point()).get(),
4535 InputHandler::TOUCHSCREEN) 4549 InputHandler::TOUCHSCREEN)
4536 .thread); 4550 .thread);
4537 host_impl_->ScrollBy(UpdateState(gfx::Point(), scroll_delta).get()); 4551 host_impl_->ScrollBy(UpdateState(gfx::Point(), scroll_delta).get());
4538 host_impl_->ScrollEnd(EndState().get()); 4552 host_impl_->ScrollEnd(EndState().get());
4539 4553
4540 // The viewport offset shouldn't have changed. 4554 // The viewport offset shouldn't have changed.
4541 EXPECT_EQ(viewport_offset, 4555 EXPECT_EQ(viewport_offset,
4542 host_impl_->active_tree()->TotalScrollOffset()); 4556 host_impl_->active_tree()->TotalScrollOffset());
4543 4557
4544 // Scroll the viewports to max scroll offset. 4558 // Scroll the viewports to max scroll offset.
4545 SetScrollOffsetDelta(outer_scroll, gfx::Vector2dF(0, 200.f)); 4559 SetScrollOffsetDelta(outer_scroll, gfx::Vector2dF(0, 200.f));
4546 SetScrollOffsetDelta(inner_scroll, gfx::Vector2dF(100, 100.f)); 4560 SetScrollOffsetDelta(inner_scroll, gfx::Vector2dF(100, 100.f));
4547 EXPECT_EQ(host_impl_->active_tree()->TotalMaxScrollOffset(), 4561 EXPECT_EQ(host_impl_->active_tree()->TotalMaxScrollOffset(),
4548 host_impl_->active_tree()->TotalScrollOffset()); 4562 host_impl_->active_tree()->TotalScrollOffset());
4549 } 4563 }
4550 4564
4551 // Test that the top controls coming in and out maintains the same aspect ratio 4565 // Test that the browser controls coming in and out maintains the same aspect
4552 // between the inner and outer viewports. 4566 // ratio between the inner and outer viewports.
4553 TEST_F(LayerTreeHostImplTopControlsTest, TopControlsAspectRatio) { 4567 TEST_F(LayerTreeHostImplBrowserControlsTest, BrowserControlsAspectRatio) {
4554 SetupTopControlsAndScrollLayerWithVirtualViewport( 4568 SetupBrowserControlsAndScrollLayerWithVirtualViewport(
4555 gfx::Size(100, 100), gfx::Size(200, 200), gfx::Size(200, 400)); 4569 gfx::Size(100, 100), gfx::Size(200, 200), gfx::Size(200, 400));
4556 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, 0.5f, 2.f); 4570 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, 0.5f, 2.f);
4557 DrawFrame(); 4571 DrawFrame();
4558 4572
4559 EXPECT_FLOAT_EQ(top_controls_height_, 4573 EXPECT_FLOAT_EQ(top_controls_height_,
4560 host_impl_->top_controls_manager()->ContentTopOffset()); 4574 host_impl_->browser_controls_manager()->ContentTopOffset());
4561 4575
4562 gfx::Vector2dF scroll_delta(0.f, 25.f); 4576 gfx::Vector2dF scroll_delta(0.f, 25.f);
4563 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, 4577 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD,
4564 host_impl_ 4578 host_impl_
4565 ->ScrollBegin(BeginState(gfx::Point()).get(), 4579 ->ScrollBegin(BeginState(gfx::Point()).get(),
4566 InputHandler::TOUCHSCREEN) 4580 InputHandler::TOUCHSCREEN)
4567 .thread); 4581 .thread);
4568 host_impl_->ScrollBy(UpdateState(gfx::Point(), scroll_delta).get()); 4582 host_impl_->ScrollBy(UpdateState(gfx::Point(), scroll_delta).get());
4569 host_impl_->ScrollEnd(EndState().get()); 4583 host_impl_->ScrollEnd(EndState().get());
4570 4584
4571 EXPECT_FLOAT_EQ(scroll_delta.y(), 4585 EXPECT_FLOAT_EQ(
4572 top_controls_height_ - 4586 scroll_delta.y(),
4573 host_impl_->top_controls_manager()->ContentTopOffset()); 4587 top_controls_height_ -
4588 host_impl_->browser_controls_manager()->ContentTopOffset());
4574 4589
4575 // Top controls were hidden by 25px so the inner viewport should have expanded 4590 // Browser controls were hidden by 25px so the inner viewport should have
4576 // by that much. 4591 // expanded by that much.
4577 LayerImpl* outer_container = 4592 LayerImpl* outer_container =
4578 host_impl_->active_tree()->OuterViewportContainerLayer(); 4593 host_impl_->active_tree()->OuterViewportContainerLayer();
4579 LayerImpl* inner_container = 4594 LayerImpl* inner_container =
4580 host_impl_->active_tree()->InnerViewportContainerLayer(); 4595 host_impl_->active_tree()->InnerViewportContainerLayer();
4581 EXPECT_EQ(gfx::SizeF(100.f, 100.f + 25.f), 4596 EXPECT_EQ(gfx::SizeF(100.f, 100.f + 25.f),
4582 inner_container->BoundsForScrolling()); 4597 inner_container->BoundsForScrolling());
4583 4598
4584 // Outer viewport should match inner's aspect ratio. The bounds are ceiled. 4599 // Outer viewport should match inner's aspect ratio. The bounds are ceiled.
4585 float aspect_ratio = inner_container->BoundsForScrolling().width() / 4600 float aspect_ratio = inner_container->BoundsForScrolling().width() /
4586 inner_container->BoundsForScrolling().height(); 4601 inner_container->BoundsForScrolling().height();
4587 gfx::SizeF expected = 4602 gfx::SizeF expected =
4588 gfx::SizeF(gfx::ToCeiledSize(gfx::SizeF(200, 200 / aspect_ratio))); 4603 gfx::SizeF(gfx::ToCeiledSize(gfx::SizeF(200, 200 / aspect_ratio)));
4589 EXPECT_EQ(expected, outer_container->BoundsForScrolling()); 4604 EXPECT_EQ(expected, outer_container->BoundsForScrolling());
4590 EXPECT_EQ(expected, 4605 EXPECT_EQ(expected,
4591 host_impl_->InnerViewportScrollLayer()->BoundsForScrolling()); 4606 host_impl_->InnerViewportScrollLayer()->BoundsForScrolling());
4592 } 4607 }
4593 4608
4594 // Test that scrolling the outer viewport affects the top controls. 4609 // Test that scrolling the outer viewport affects the browser controls.
4595 TEST_F(LayerTreeHostImplTopControlsTest, TopControlsScrollOuterViewport) { 4610 TEST_F(LayerTreeHostImplBrowserControlsTest,
4596 SetupTopControlsAndScrollLayerWithVirtualViewport( 4611 BrowserControlsScrollOuterViewport) {
4612 SetupBrowserControlsAndScrollLayerWithVirtualViewport(
4597 gfx::Size(100, 100), gfx::Size(200, 200), gfx::Size(200, 400)); 4613 gfx::Size(100, 100), gfx::Size(200, 200), gfx::Size(200, 400));
4598 DrawFrame(); 4614 DrawFrame();
4599 4615
4600 EXPECT_EQ(top_controls_height_, 4616 EXPECT_EQ(top_controls_height_,
4601 host_impl_->top_controls_manager()->ContentTopOffset()); 4617 host_impl_->browser_controls_manager()->ContentTopOffset());
4602 4618
4603 // Send a gesture scroll that will scroll the outer viewport, make sure the 4619 // Send a gesture scroll that will scroll the outer viewport, make sure the
4604 // top controls get scrolled. 4620 // browser controls get scrolled.
4605 gfx::Vector2dF scroll_delta(0.f, 15.f); 4621 gfx::Vector2dF scroll_delta(0.f, 15.f);
4606 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, 4622 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD,
4607 host_impl_ 4623 host_impl_
4608 ->ScrollBegin(BeginState(gfx::Point()).get(), 4624 ->ScrollBegin(BeginState(gfx::Point()).get(),
4609 InputHandler::TOUCHSCREEN) 4625 InputHandler::TOUCHSCREEN)
4610 .thread); 4626 .thread);
4611 host_impl_->ScrollBy(UpdateState(gfx::Point(), scroll_delta).get()); 4627 host_impl_->ScrollBy(UpdateState(gfx::Point(), scroll_delta).get());
4612 4628
4613 EXPECT_EQ(host_impl_->OuterViewportScrollLayer(), 4629 EXPECT_EQ(host_impl_->OuterViewportScrollLayer(),
4614 host_impl_->CurrentlyScrollingLayer()); 4630 host_impl_->CurrentlyScrollingLayer());
4615 host_impl_->ScrollEnd(EndState().get()); 4631 host_impl_->ScrollEnd(EndState().get());
4616 4632
4617 EXPECT_FLOAT_EQ(scroll_delta.y(), 4633 EXPECT_FLOAT_EQ(
4618 top_controls_height_ - 4634 scroll_delta.y(),
4619 host_impl_->top_controls_manager()->ContentTopOffset()); 4635 top_controls_height_ -
4636 host_impl_->browser_controls_manager()->ContentTopOffset());
4620 4637
4621 scroll_delta = gfx::Vector2dF(0.f, 50.f); 4638 scroll_delta = gfx::Vector2dF(0.f, 50.f);
4622 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, 4639 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD,
4623 host_impl_ 4640 host_impl_
4624 ->ScrollBegin(BeginState(gfx::Point()).get(), 4641 ->ScrollBegin(BeginState(gfx::Point()).get(),
4625 InputHandler::TOUCHSCREEN) 4642 InputHandler::TOUCHSCREEN)
4626 .thread); 4643 .thread);
4627 host_impl_->ScrollBy(UpdateState(gfx::Point(), scroll_delta).get()); 4644 host_impl_->ScrollBy(UpdateState(gfx::Point(), scroll_delta).get());
4628 4645
4629 EXPECT_EQ(0, host_impl_->top_controls_manager()->ContentTopOffset()); 4646 EXPECT_EQ(0, host_impl_->browser_controls_manager()->ContentTopOffset());
4630 EXPECT_EQ(host_impl_->OuterViewportScrollLayer(), 4647 EXPECT_EQ(host_impl_->OuterViewportScrollLayer(),
4631 host_impl_->CurrentlyScrollingLayer()); 4648 host_impl_->CurrentlyScrollingLayer());
4632 4649
4633 host_impl_->ScrollEnd(EndState().get()); 4650 host_impl_->ScrollEnd(EndState().get());
4634 4651
4635 // Position the viewports such that the inner viewport will be scrolled. 4652 // Position the viewports such that the inner viewport will be scrolled.
4636 gfx::Vector2dF inner_viewport_offset(0.f, 25.f); 4653 gfx::Vector2dF inner_viewport_offset(0.f, 25.f);
4637 SetScrollOffsetDelta(host_impl_->OuterViewportScrollLayer(), 4654 SetScrollOffsetDelta(host_impl_->OuterViewportScrollLayer(),
4638 gfx::Vector2dF()); 4655 gfx::Vector2dF());
4639 SetScrollOffsetDelta(host_impl_->InnerViewportScrollLayer(), 4656 SetScrollOffsetDelta(host_impl_->InnerViewportScrollLayer(),
4640 inner_viewport_offset); 4657 inner_viewport_offset);
4641 4658
4642 scroll_delta = gfx::Vector2dF(0.f, -65.f); 4659 scroll_delta = gfx::Vector2dF(0.f, -65.f);
4643 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, 4660 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD,
4644 host_impl_ 4661 host_impl_
4645 ->ScrollBegin(BeginState(gfx::Point()).get(), 4662 ->ScrollBegin(BeginState(gfx::Point()).get(),
4646 InputHandler::TOUCHSCREEN) 4663 InputHandler::TOUCHSCREEN)
4647 .thread); 4664 .thread);
4648 host_impl_->ScrollBy(UpdateState(gfx::Point(), scroll_delta).get()); 4665 host_impl_->ScrollBy(UpdateState(gfx::Point(), scroll_delta).get());
4649 4666
4650 EXPECT_EQ(top_controls_height_, 4667 EXPECT_EQ(top_controls_height_,
4651 host_impl_->top_controls_manager()->ContentTopOffset()); 4668 host_impl_->browser_controls_manager()->ContentTopOffset());
4652 EXPECT_FLOAT_EQ( 4669 EXPECT_FLOAT_EQ(
4653 inner_viewport_offset.y() + (scroll_delta.y() + top_controls_height_), 4670 inner_viewport_offset.y() + (scroll_delta.y() + top_controls_height_),
4654 ScrollDelta(host_impl_->InnerViewportScrollLayer()).y()); 4671 ScrollDelta(host_impl_->InnerViewportScrollLayer()).y());
4655 4672
4656 host_impl_->ScrollEnd(EndState().get()); 4673 host_impl_->ScrollEnd(EndState().get());
4657 } 4674 }
4658 4675
4659 TEST_F(LayerTreeHostImplTopControlsTest, 4676 TEST_F(LayerTreeHostImplBrowserControlsTest,
4660 ScrollNonScrollableRootWithTopControls) { 4677 ScrollNonScrollableRootWithBrowserControls) {
4661 settings_ = DefaultSettings(); 4678 settings_ = DefaultSettings();
4662 CreateHostImpl(settings_, CreateCompositorFrameSink()); 4679 CreateHostImpl(settings_, CreateCompositorFrameSink());
4663 SetupTopControlsAndScrollLayerWithVirtualViewport( 4680 SetupBrowserControlsAndScrollLayerWithVirtualViewport(
4664 layer_size_, layer_size_, layer_size_); 4681 layer_size_, layer_size_, layer_size_);
4665 DrawFrame(); 4682 DrawFrame();
4666 4683
4667 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, 4684 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD,
4668 host_impl_ 4685 host_impl_
4669 ->ScrollBegin(BeginState(gfx::Point()).get(), 4686 ->ScrollBegin(BeginState(gfx::Point()).get(),
4670 InputHandler::TOUCHSCREEN) 4687 InputHandler::TOUCHSCREEN)
4671 .thread); 4688 .thread);
4672 4689
4673 host_impl_->top_controls_manager()->ScrollBegin(); 4690 host_impl_->browser_controls_manager()->ScrollBegin();
4674 host_impl_->top_controls_manager()->ScrollBy(gfx::Vector2dF(0.f, 50.f)); 4691 host_impl_->browser_controls_manager()->ScrollBy(gfx::Vector2dF(0.f, 50.f));
4675 host_impl_->top_controls_manager()->ScrollEnd(); 4692 host_impl_->browser_controls_manager()->ScrollEnd();
4676 EXPECT_EQ(0.f, host_impl_->top_controls_manager()->ContentTopOffset()); 4693 EXPECT_EQ(0.f, host_impl_->browser_controls_manager()->ContentTopOffset());
4677 // Now that top controls have moved, expect the clip to resize. 4694 // Now that browser controls have moved, expect the clip to resize.
4678 LayerImpl* inner_clip_ptr = host_impl_->InnerViewportScrollLayer() 4695 LayerImpl* inner_clip_ptr = host_impl_->InnerViewportScrollLayer()
4679 ->test_properties() 4696 ->test_properties()
4680 ->parent->test_properties() 4697 ->parent->test_properties()
4681 ->parent; 4698 ->parent;
4682 EXPECT_EQ(viewport_size_, inner_clip_ptr->bounds()); 4699 EXPECT_EQ(viewport_size_, inner_clip_ptr->bounds());
4683 4700
4684 host_impl_->ScrollEnd(EndState().get()); 4701 host_impl_->ScrollEnd(EndState().get());
4685 4702
4686 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, 4703 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD,
4687 host_impl_ 4704 host_impl_
4688 ->ScrollBegin(BeginState(gfx::Point()).get(), 4705 ->ScrollBegin(BeginState(gfx::Point()).get(),
4689 InputHandler::TOUCHSCREEN) 4706 InputHandler::TOUCHSCREEN)
4690 .thread); 4707 .thread);
4691 4708
4692 float scroll_increment_y = -25.f; 4709 float scroll_increment_y = -25.f;
4693 host_impl_->top_controls_manager()->ScrollBegin(); 4710 host_impl_->browser_controls_manager()->ScrollBegin();
4694 host_impl_->top_controls_manager()->ScrollBy( 4711 host_impl_->browser_controls_manager()->ScrollBy(
4695 gfx::Vector2dF(0.f, scroll_increment_y)); 4712 gfx::Vector2dF(0.f, scroll_increment_y));
4696 EXPECT_FLOAT_EQ(-scroll_increment_y, 4713 EXPECT_FLOAT_EQ(-scroll_increment_y,
4697 host_impl_->top_controls_manager()->ContentTopOffset()); 4714 host_impl_->browser_controls_manager()->ContentTopOffset());
4698 // Now that top controls have moved, expect the clip to resize. 4715 // Now that browser controls have moved, expect the clip to resize.
4699 EXPECT_EQ(gfx::Size(viewport_size_.width(), 4716 EXPECT_EQ(gfx::Size(viewport_size_.width(),
4700 viewport_size_.height() + scroll_increment_y), 4717 viewport_size_.height() + scroll_increment_y),
4701 inner_clip_ptr->bounds()); 4718 inner_clip_ptr->bounds());
4702 4719
4703 host_impl_->top_controls_manager()->ScrollBy( 4720 host_impl_->browser_controls_manager()->ScrollBy(
4704 gfx::Vector2dF(0.f, scroll_increment_y)); 4721 gfx::Vector2dF(0.f, scroll_increment_y));
4705 host_impl_->top_controls_manager()->ScrollEnd(); 4722 host_impl_->browser_controls_manager()->ScrollEnd();
4706 EXPECT_FLOAT_EQ(-2 * scroll_increment_y, 4723 EXPECT_FLOAT_EQ(-2 * scroll_increment_y,
4707 host_impl_->top_controls_manager()->ContentTopOffset()); 4724 host_impl_->browser_controls_manager()->ContentTopOffset());
4708 // Now that top controls have moved, expect the clip to resize. 4725 // Now that browser controls have moved, expect the clip to resize.
4709 EXPECT_EQ(clip_size_, inner_clip_ptr->bounds()); 4726 EXPECT_EQ(clip_size_, inner_clip_ptr->bounds());
4710 4727
4711 host_impl_->ScrollEnd(EndState().get()); 4728 host_impl_->ScrollEnd(EndState().get());
4712 4729
4713 // Verify the layer is once-again non-scrollable. 4730 // Verify the layer is once-again non-scrollable.
4714 EXPECT_EQ( 4731 EXPECT_EQ(
4715 gfx::ScrollOffset(), 4732 gfx::ScrollOffset(),
4716 host_impl_->active_tree()->InnerViewportScrollLayer()->MaxScrollOffset()); 4733 host_impl_->active_tree()->InnerViewportScrollLayer()->MaxScrollOffset());
4717 4734
4718 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, 4735 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD,
4719 host_impl_ 4736 host_impl_
4720 ->ScrollBegin(BeginState(gfx::Point()).get(), 4737 ->ScrollBegin(BeginState(gfx::Point()).get(),
4721 InputHandler::TOUCHSCREEN) 4738 InputHandler::TOUCHSCREEN)
4722 .thread); 4739 .thread);
4723 } 4740 }
4724 4741
4725 // Tests that activating a pending tree while there's a bounds_delta on the 4742 // Tests that activating a pending tree while there's a bounds_delta on the
4726 // viewport layers from top controls doesn't cause a scroll jump. This bug was 4743 // viewport layers from browser controls doesn't cause a scroll jump. This bug
4727 // occurring because the UpdateViewportContainerSizes was being called before 4744 // was occurring because the UpdateViewportContainerSizes was being called
4728 // the property trees were updated with the bounds_delta. crbug.com/597266. 4745 // before the property trees were updated with the bounds_delta.
4729 TEST_F(LayerTreeHostImplTopControlsTest, ViewportBoundsDeltaOnTreeActivation) { 4746 // crbug.com/597266.
4747 TEST_F(LayerTreeHostImplBrowserControlsTest,
4748 ViewportBoundsDeltaOnTreeActivation) {
4730 const gfx::Size inner_viewport_size(1000, 1000); 4749 const gfx::Size inner_viewport_size(1000, 1000);
4731 const gfx::Size outer_viewport_size(1000, 1000); 4750 const gfx::Size outer_viewport_size(1000, 1000);
4732 const gfx::Size content_size(2000, 2000); 4751 const gfx::Size content_size(2000, 2000);
4733 4752
4734 // Initialization 4753 // Initialization
4735 { 4754 {
4736 SetupTopControlsAndScrollLayerWithVirtualViewport( 4755 SetupBrowserControlsAndScrollLayerWithVirtualViewport(
4737 inner_viewport_size, outer_viewport_size, content_size); 4756 inner_viewport_size, outer_viewport_size, content_size);
4738 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, 1.f, 1.f); 4757 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, 1.f, 1.f);
4739 4758
4740 // Start off with the top controls hidden on both main and impl. 4759 // Start off with the browser controls hidden on both main and impl.
4741 host_impl_->active_tree()->set_top_controls_shrink_blink_size(false); 4760 host_impl_->active_tree()->set_browser_controls_shrink_blink_size(false);
4742 host_impl_->active_tree()->PushTopControlsFromMainThread(0); 4761 host_impl_->active_tree()->PushBrowserControlsFromMainThread(0);
4743 4762
4744 host_impl_->CreatePendingTree(); 4763 host_impl_->CreatePendingTree();
4745 SetupTopControlsAndScrollLayerWithVirtualViewport( 4764 SetupBrowserControlsAndScrollLayerWithVirtualViewport(
4746 host_impl_->pending_tree(), inner_viewport_size, outer_viewport_size, 4765 host_impl_->pending_tree(), inner_viewport_size, outer_viewport_size,
4747 content_size); 4766 content_size);
4748 host_impl_->pending_tree()->set_top_controls_shrink_blink_size(false); 4767 host_impl_->pending_tree()->set_browser_controls_shrink_blink_size(false);
4749 4768
4750 // Fully scroll the viewport. 4769 // Fully scroll the viewport.
4751 host_impl_->ScrollBegin(BeginState(gfx::Point(75, 75)).get(), 4770 host_impl_->ScrollBegin(BeginState(gfx::Point(75, 75)).get(),
4752 InputHandler::TOUCHSCREEN); 4771 InputHandler::TOUCHSCREEN);
4753 host_impl_->ScrollBy( 4772 host_impl_->ScrollBy(
4754 UpdateState(gfx::Point(), gfx::Vector2d(0, 2000)).get()); 4773 UpdateState(gfx::Point(), gfx::Vector2d(0, 2000)).get());
4755 host_impl_->ScrollEnd(EndState().get()); 4774 host_impl_->ScrollEnd(EndState().get());
4756 } 4775 }
4757 4776
4758 LayerImpl* outer_scroll = 4777 LayerImpl* outer_scroll =
4759 host_impl_->active_tree()->OuterViewportScrollLayer(); 4778 host_impl_->active_tree()->OuterViewportScrollLayer();
4760 4779
4761 ASSERT_FLOAT_EQ(0, host_impl_->top_controls_manager()->ContentTopOffset()); 4780 ASSERT_FLOAT_EQ(0,
4781 host_impl_->browser_controls_manager()->ContentTopOffset());
4762 ASSERT_EQ(1000, outer_scroll->MaxScrollOffset().y()); 4782 ASSERT_EQ(1000, outer_scroll->MaxScrollOffset().y());
4763 ASSERT_EQ(1000, outer_scroll->CurrentScrollOffset().y()); 4783 ASSERT_EQ(1000, outer_scroll->CurrentScrollOffset().y());
4764 4784
4765 // Kick off an animation to show the top controls. 4785 // Kick off an animation to show the browser controls.
4766 host_impl_->top_controls_manager()->UpdateTopControlsState(BOTH, SHOWN, true); 4786 host_impl_->browser_controls_manager()->UpdateBrowserControlsState(
4787 BOTH, SHOWN, true);
4767 base::TimeTicks start_time = base::TimeTicks::Now(); 4788 base::TimeTicks start_time = base::TimeTicks::Now();
4768 BeginFrameArgs begin_frame_args = 4789 BeginFrameArgs begin_frame_args =
4769 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE); 4790 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE);
4770 4791
4771 // Pump an animation frame to put some delta in the top controls. 4792 // Pump an animation frame to put some delta in the browser controls.
4772 { 4793 {
4773 begin_frame_args.frame_time = 4794 begin_frame_args.frame_time =
4774 start_time + base::TimeDelta::FromMilliseconds(50); 4795 start_time + base::TimeDelta::FromMilliseconds(50);
4775 host_impl_->WillBeginImplFrame(begin_frame_args); 4796 host_impl_->WillBeginImplFrame(begin_frame_args);
4776 host_impl_->Animate(); 4797 host_impl_->Animate();
4777 host_impl_->UpdateAnimationState(true); 4798 host_impl_->UpdateAnimationState(true);
4778 host_impl_->DidFinishImplFrame(); 4799 host_impl_->DidFinishImplFrame();
4779 } 4800 }
4780 4801
4781 // Pull the top controls delta and get it back to the pending tree so that 4802 // Pull the browser controls delta and get it back to the pending tree so that
4782 // when we go to activate the pending tree we cause a change to top controls. 4803 // when we go to activate the pending tree we cause a change to browser
4804 // controls.
4783 { 4805 {
4784 float delta = 4806 float delta =
4785 host_impl_->active_tree()->top_controls_shown_ratio()->Delta(); 4807 host_impl_->active_tree()->top_controls_shown_ratio()->Delta();
4786 ASSERT_GT(delta, 0); 4808 ASSERT_GT(delta, 0);
4787 ASSERT_LT(delta, 1); 4809 ASSERT_LT(delta, 1);
4788 host_impl_->active_tree() 4810 host_impl_->active_tree()
4789 ->top_controls_shown_ratio() 4811 ->top_controls_shown_ratio()
4790 ->PullDeltaForMainThread(); 4812 ->PullDeltaForMainThread();
4791 host_impl_->active_tree()->top_controls_shown_ratio()->PushFromMainThread( 4813 host_impl_->active_tree()->top_controls_shown_ratio()->PushFromMainThread(
4792 delta); 4814 delta);
4793 } 4815 }
4794 4816
4795 // 200 is the kShowHideMaxDurationMs value from top_controls_manager.cc so the 4817 // 200 is the kShowHideMaxDurationMs value from browser_controls_manager.cc so
4796 // top controls should be fully animated in this frame. 4818 // the browser controls should be fully animated in this frame.
4797 { 4819 {
4798 begin_frame_args.frame_time = 4820 begin_frame_args.frame_time =
4799 start_time + base::TimeDelta::FromMilliseconds(200); 4821 start_time + base::TimeDelta::FromMilliseconds(200);
4800 host_impl_->WillBeginImplFrame(begin_frame_args); 4822 host_impl_->WillBeginImplFrame(begin_frame_args);
4801 host_impl_->Animate(); 4823 host_impl_->Animate();
4802 host_impl_->UpdateAnimationState(true); 4824 host_impl_->UpdateAnimationState(true);
4803 host_impl_->DidFinishImplFrame(); 4825 host_impl_->DidFinishImplFrame();
4804 4826
4805 ASSERT_EQ(50, host_impl_->top_controls_manager()->ContentTopOffset()); 4827 ASSERT_EQ(50, host_impl_->browser_controls_manager()->ContentTopOffset());
4806 ASSERT_EQ(1050, outer_scroll->MaxScrollOffset().y()); 4828 ASSERT_EQ(1050, outer_scroll->MaxScrollOffset().y());
4807 // NEAR because clip layer bounds are truncated in MaxScrollOffset so we 4829 // NEAR because clip layer bounds are truncated in MaxScrollOffset so we
4808 // lose some precision in the intermediate animation steps. 4830 // lose some precision in the intermediate animation steps.
4809 ASSERT_NEAR(1050, outer_scroll->CurrentScrollOffset().y(), 1.f); 4831 ASSERT_NEAR(1050, outer_scroll->CurrentScrollOffset().y(), 1.f);
4810 } 4832 }
4811 4833
4812 // Activate the pending tree which should have the same scroll value as the 4834 // Activate the pending tree which should have the same scroll value as the
4813 // active tree. 4835 // active tree.
4814 { 4836 {
4815 host_impl_->pending_tree() 4837 host_impl_->pending_tree()
(...skipping 4064 matching lines...) Expand 10 before | Expand all | Expand 10 after
8880 UpdateState(gfx::Point(), gfx::Vector2d(0, 10)).get()) 8902 UpdateState(gfx::Point(), gfx::Vector2d(0, 10)).get())
8881 .did_scroll); 8903 .did_scroll);
8882 host_impl_->ScrollEnd(EndState().get()); 8904 host_impl_->ScrollEnd(EndState().get());
8883 8905
8884 EXPECT_EQ(0, set_needs_commit_count); 8906 EXPECT_EQ(0, set_needs_commit_count);
8885 EXPECT_EQ(2, set_needs_redraw_count); 8907 EXPECT_EQ(2, set_needs_redraw_count);
8886 EXPECT_EQ(1, forward_to_main_count); 8908 EXPECT_EQ(1, forward_to_main_count);
8887 } 8909 }
8888 } 8910 }
8889 8911
8890 class LayerTreeHostImplWithTopControlsTest : public LayerTreeHostImplTest { 8912 class LayerTreeHostImplWithBrowserControlsTest : public LayerTreeHostImplTest {
8891 public: 8913 public:
8892 void SetUp() override { 8914 void SetUp() override {
8893 LayerTreeSettings settings = DefaultSettings(); 8915 LayerTreeSettings settings = DefaultSettings();
8894 CreateHostImpl(settings, CreateCompositorFrameSink()); 8916 CreateHostImpl(settings, CreateCompositorFrameSink());
8895 host_impl_->active_tree()->set_top_controls_height(top_controls_height_); 8917 host_impl_->active_tree()->set_top_controls_height(top_controls_height_);
8896 host_impl_->sync_tree()->set_top_controls_height(top_controls_height_); 8918 host_impl_->sync_tree()->set_top_controls_height(top_controls_height_);
8897 host_impl_->active_tree()->SetCurrentTopControlsShownRatio(1.f); 8919 host_impl_->active_tree()->SetCurrentBrowserControlsShownRatio(1.f);
8898 } 8920 }
8899 8921
8900 protected: 8922 protected:
8901 static const int top_controls_height_; 8923 static const int top_controls_height_;
8902 }; 8924 };
8903 8925
8904 const int LayerTreeHostImplWithTopControlsTest::top_controls_height_ = 50; 8926 const int LayerTreeHostImplWithBrowserControlsTest::top_controls_height_ = 50;
8905 8927
8906 TEST_F(LayerTreeHostImplWithTopControlsTest, NoIdleAnimations) { 8928 TEST_F(LayerTreeHostImplWithBrowserControlsTest, NoIdleAnimations) {
8907 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 100)); 8929 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 100));
8908 scroll_layer->layer_tree_impl() 8930 scroll_layer->layer_tree_impl()
8909 ->property_trees() 8931 ->property_trees()
8910 ->scroll_tree.UpdateScrollOffsetBaseForTesting(scroll_layer->id(), 8932 ->scroll_tree.UpdateScrollOffsetBaseForTesting(scroll_layer->id(),
8911 gfx::ScrollOffset(0, 10)); 8933 gfx::ScrollOffset(0, 10));
8912 BeginFrameArgs begin_frame_args = 8934 BeginFrameArgs begin_frame_args =
8913 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE); 8935 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE);
8914 host_impl_->WillBeginImplFrame(begin_frame_args); 8936 host_impl_->WillBeginImplFrame(begin_frame_args);
8915 host_impl_->Animate(); 8937 host_impl_->Animate();
8916 EXPECT_FALSE(did_request_redraw_); 8938 EXPECT_FALSE(did_request_redraw_);
8917 host_impl_->DidFinishImplFrame(); 8939 host_impl_->DidFinishImplFrame();
8918 } 8940 }
8919 8941
8920 TEST_F(LayerTreeHostImplWithTopControlsTest, TopControlsHeightIsCommitted) { 8942 TEST_F(LayerTreeHostImplWithBrowserControlsTest,
8943 BrowserControlsHeightIsCommitted) {
8921 SetupScrollAndContentsLayers(gfx::Size(100, 100)); 8944 SetupScrollAndContentsLayers(gfx::Size(100, 100));
8922 EXPECT_FALSE(did_request_redraw_); 8945 EXPECT_FALSE(did_request_redraw_);
8923 host_impl_->CreatePendingTree(); 8946 host_impl_->CreatePendingTree();
8924 host_impl_->sync_tree()->set_top_controls_height(100); 8947 host_impl_->sync_tree()->set_top_controls_height(100);
8925 host_impl_->ActivateSyncTree(); 8948 host_impl_->ActivateSyncTree();
8926 EXPECT_EQ(100, host_impl_->top_controls_manager()->TopControlsHeight()); 8949 EXPECT_EQ(100, host_impl_->browser_controls_manager()->TopControlsHeight());
8927 } 8950 }
8928 8951
8929 TEST_F(LayerTreeHostImplWithTopControlsTest, 8952 TEST_F(LayerTreeHostImplWithBrowserControlsTest,
8930 TopControlsStayFullyVisibleOnHeightChange) { 8953 BrowserControlsStayFullyVisibleOnHeightChange) {
8931 SetupScrollAndContentsLayers(gfx::Size(100, 100)); 8954 SetupScrollAndContentsLayers(gfx::Size(100, 100));
8932 EXPECT_EQ(0.f, host_impl_->top_controls_manager()->ControlsTopOffset()); 8955 EXPECT_EQ(0.f, host_impl_->browser_controls_manager()->ControlsTopOffset());
8933 8956
8934 host_impl_->CreatePendingTree(); 8957 host_impl_->CreatePendingTree();
8935 host_impl_->sync_tree()->set_top_controls_height(0); 8958 host_impl_->sync_tree()->set_top_controls_height(0);
8936 host_impl_->ActivateSyncTree(); 8959 host_impl_->ActivateSyncTree();
8937 EXPECT_EQ(0.f, host_impl_->top_controls_manager()->ControlsTopOffset()); 8960 EXPECT_EQ(0.f, host_impl_->browser_controls_manager()->ControlsTopOffset());
8938 8961
8939 host_impl_->CreatePendingTree(); 8962 host_impl_->CreatePendingTree();
8940 host_impl_->sync_tree()->set_top_controls_height(50); 8963 host_impl_->sync_tree()->set_top_controls_height(50);
8941 host_impl_->ActivateSyncTree(); 8964 host_impl_->ActivateSyncTree();
8942 EXPECT_EQ(0.f, host_impl_->top_controls_manager()->ControlsTopOffset()); 8965 EXPECT_EQ(0.f, host_impl_->browser_controls_manager()->ControlsTopOffset());
8943 } 8966 }
8944 8967
8945 TEST_F(LayerTreeHostImplWithTopControlsTest, TopControlsAnimationScheduling) { 8968 TEST_F(LayerTreeHostImplWithBrowserControlsTest,
8969 BrowserControlsAnimationScheduling) {
8946 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 100)); 8970 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 100));
8947 scroll_layer->layer_tree_impl() 8971 scroll_layer->layer_tree_impl()
8948 ->property_trees() 8972 ->property_trees()
8949 ->scroll_tree.UpdateScrollOffsetBaseForTesting(scroll_layer->id(), 8973 ->scroll_tree.UpdateScrollOffsetBaseForTesting(scroll_layer->id(),
8950 gfx::ScrollOffset(0, 10)); 8974 gfx::ScrollOffset(0, 10));
8951 host_impl_->DidChangeTopControlsPosition(); 8975 host_impl_->DidChangeBrowserControlsPosition();
8952 EXPECT_TRUE(did_request_next_frame_); 8976 EXPECT_TRUE(did_request_next_frame_);
8953 EXPECT_TRUE(did_request_redraw_); 8977 EXPECT_TRUE(did_request_redraw_);
8954 } 8978 }
8955 8979
8956 TEST_F(LayerTreeHostImplWithTopControlsTest, ScrollHandledByTopControls) { 8980 TEST_F(LayerTreeHostImplWithBrowserControlsTest,
8981 ScrollHandledByBrowserControls) {
8957 InputHandlerScrollResult result; 8982 InputHandlerScrollResult result;
8958 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 200)); 8983 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 200));
8959 host_impl_->active_tree()->BuildPropertyTreesForTesting(); 8984 host_impl_->active_tree()->BuildPropertyTreesForTesting();
8960 8985
8961 host_impl_->SetViewportSize(gfx::Size(100, 100)); 8986 host_impl_->SetViewportSize(gfx::Size(100, 100));
8962 host_impl_->top_controls_manager()->UpdateTopControlsState( 8987 host_impl_->browser_controls_manager()->UpdateBrowserControlsState(
8963 BOTH, SHOWN, false); 8988 BOTH, SHOWN, false);
8964 DrawFrame(); 8989 DrawFrame();
8965 8990
8966 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, 8991 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD,
8967 host_impl_ 8992 host_impl_
8968 ->ScrollBegin(BeginState(gfx::Point()).get(), 8993 ->ScrollBegin(BeginState(gfx::Point()).get(),
8969 InputHandler::TOUCHSCREEN) 8994 InputHandler::TOUCHSCREEN)
8970 .thread); 8995 .thread);
8971 EXPECT_EQ(0, host_impl_->top_controls_manager()->ControlsTopOffset()); 8996 EXPECT_EQ(0, host_impl_->browser_controls_manager()->ControlsTopOffset());
8972 EXPECT_EQ(gfx::Vector2dF().ToString(), 8997 EXPECT_EQ(gfx::Vector2dF().ToString(),
8973 scroll_layer->CurrentScrollOffset().ToString()); 8998 scroll_layer->CurrentScrollOffset().ToString());
8974 8999
8975 // Scroll just the top controls and verify that the scroll succeeds. 9000 // Scroll just the browser controls and verify that the scroll succeeds.
8976 const float residue = 10; 9001 const float residue = 10;
8977 float offset = top_controls_height_ - residue; 9002 float offset = top_controls_height_ - residue;
8978 result = host_impl_->ScrollBy( 9003 result = host_impl_->ScrollBy(
8979 UpdateState(gfx::Point(), gfx::Vector2d(0, offset)).get()); 9004 UpdateState(gfx::Point(), gfx::Vector2d(0, offset)).get());
8980 EXPECT_EQ(result.unused_scroll_delta, gfx::Vector2d(0, 0)); 9005 EXPECT_EQ(result.unused_scroll_delta, gfx::Vector2d(0, 0));
8981 EXPECT_TRUE(result.did_scroll); 9006 EXPECT_TRUE(result.did_scroll);
8982 EXPECT_FLOAT_EQ(-offset, 9007 EXPECT_FLOAT_EQ(-offset,
8983 host_impl_->top_controls_manager()->ControlsTopOffset()); 9008 host_impl_->browser_controls_manager()->ControlsTopOffset());
8984 EXPECT_EQ(gfx::Vector2dF().ToString(), 9009 EXPECT_EQ(gfx::Vector2dF().ToString(),
8985 scroll_layer->CurrentScrollOffset().ToString()); 9010 scroll_layer->CurrentScrollOffset().ToString());
8986 9011
8987 // Scroll across the boundary 9012 // Scroll across the boundary
8988 const float content_scroll = 20; 9013 const float content_scroll = 20;
8989 offset = residue + content_scroll; 9014 offset = residue + content_scroll;
8990 result = host_impl_->ScrollBy( 9015 result = host_impl_->ScrollBy(
8991 UpdateState(gfx::Point(), gfx::Vector2d(0, offset)).get()); 9016 UpdateState(gfx::Point(), gfx::Vector2d(0, offset)).get());
8992 EXPECT_TRUE(result.did_scroll); 9017 EXPECT_TRUE(result.did_scroll);
8993 EXPECT_EQ(result.unused_scroll_delta, gfx::Vector2d(0, 0)); 9018 EXPECT_EQ(result.unused_scroll_delta, gfx::Vector2d(0, 0));
8994 EXPECT_EQ(-top_controls_height_, 9019 EXPECT_EQ(-top_controls_height_,
8995 host_impl_->top_controls_manager()->ControlsTopOffset()); 9020 host_impl_->browser_controls_manager()->ControlsTopOffset());
8996 EXPECT_EQ(gfx::Vector2dF(0, content_scroll).ToString(), 9021 EXPECT_EQ(gfx::Vector2dF(0, content_scroll).ToString(),
8997 scroll_layer->CurrentScrollOffset().ToString()); 9022 scroll_layer->CurrentScrollOffset().ToString());
8998 9023
8999 // Now scroll back to the top of the content 9024 // Now scroll back to the top of the content
9000 offset = -content_scroll; 9025 offset = -content_scroll;
9001 result = host_impl_->ScrollBy( 9026 result = host_impl_->ScrollBy(
9002 UpdateState(gfx::Point(), gfx::Vector2d(0, offset)).get()); 9027 UpdateState(gfx::Point(), gfx::Vector2d(0, offset)).get());
9003 EXPECT_TRUE(result.did_scroll); 9028 EXPECT_TRUE(result.did_scroll);
9004 EXPECT_EQ(result.unused_scroll_delta, gfx::Vector2d(0, 0)); 9029 EXPECT_EQ(result.unused_scroll_delta, gfx::Vector2d(0, 0));
9005 EXPECT_EQ(-top_controls_height_, 9030 EXPECT_EQ(-top_controls_height_,
9006 host_impl_->top_controls_manager()->ControlsTopOffset()); 9031 host_impl_->browser_controls_manager()->ControlsTopOffset());
9007 EXPECT_EQ(gfx::Vector2dF().ToString(), 9032 EXPECT_EQ(gfx::Vector2dF().ToString(),
9008 scroll_layer->CurrentScrollOffset().ToString()); 9033 scroll_layer->CurrentScrollOffset().ToString());
9009 9034
9010 // And scroll the top controls completely into view 9035 // And scroll the browser controls completely into view
9011 offset = -top_controls_height_; 9036 offset = -top_controls_height_;
9012 result = host_impl_->ScrollBy( 9037 result = host_impl_->ScrollBy(
9013 UpdateState(gfx::Point(), gfx::Vector2d(0, offset)).get()); 9038 UpdateState(gfx::Point(), gfx::Vector2d(0, offset)).get());
9014 EXPECT_TRUE(result.did_scroll); 9039 EXPECT_TRUE(result.did_scroll);
9015 EXPECT_EQ(result.unused_scroll_delta, gfx::Vector2d(0, 0)); 9040 EXPECT_EQ(result.unused_scroll_delta, gfx::Vector2d(0, 0));
9016 EXPECT_EQ(0, host_impl_->top_controls_manager()->ControlsTopOffset()); 9041 EXPECT_EQ(0, host_impl_->browser_controls_manager()->ControlsTopOffset());
9017 EXPECT_EQ(gfx::Vector2dF().ToString(), 9042 EXPECT_EQ(gfx::Vector2dF().ToString(),
9018 scroll_layer->CurrentScrollOffset().ToString()); 9043 scroll_layer->CurrentScrollOffset().ToString());
9019 9044
9020 // And attempt to scroll past the end 9045 // And attempt to scroll past the end
9021 result = host_impl_->ScrollBy( 9046 result = host_impl_->ScrollBy(
9022 UpdateState(gfx::Point(), gfx::Vector2d(0, offset)).get()); 9047 UpdateState(gfx::Point(), gfx::Vector2d(0, offset)).get());
9023 EXPECT_FALSE(result.did_scroll); 9048 EXPECT_FALSE(result.did_scroll);
9024 EXPECT_EQ(result.unused_scroll_delta, gfx::Vector2d(0, -50)); 9049 EXPECT_EQ(result.unused_scroll_delta, gfx::Vector2d(0, -50));
9025 EXPECT_EQ(0, host_impl_->top_controls_manager()->ControlsTopOffset()); 9050 EXPECT_EQ(0, host_impl_->browser_controls_manager()->ControlsTopOffset());
9026 EXPECT_EQ(gfx::Vector2dF().ToString(), 9051 EXPECT_EQ(gfx::Vector2dF().ToString(),
9027 scroll_layer->CurrentScrollOffset().ToString()); 9052 scroll_layer->CurrentScrollOffset().ToString());
9028 9053
9029 host_impl_->ScrollEnd(EndState().get()); 9054 host_impl_->ScrollEnd(EndState().get());
9030 } 9055 }
9031 9056
9032 TEST_F(LayerTreeHostImplWithTopControlsTest, WheelUnhandledByTopControls) { 9057 TEST_F(LayerTreeHostImplWithBrowserControlsTest,
9058 WheelUnhandledByBrowserControls) {
9033 SetupScrollAndContentsLayers(gfx::Size(100, 200)); 9059 SetupScrollAndContentsLayers(gfx::Size(100, 200));
9034 host_impl_->SetViewportSize(gfx::Size(50, 100)); 9060 host_impl_->SetViewportSize(gfx::Size(50, 100));
9035 host_impl_->active_tree()->set_top_controls_shrink_blink_size(true); 9061 host_impl_->active_tree()->set_browser_controls_shrink_blink_size(true);
9036 host_impl_->top_controls_manager()->UpdateTopControlsState(BOTH, SHOWN, 9062 host_impl_->browser_controls_manager()->UpdateBrowserControlsState(
9037 false); 9063 BOTH, SHOWN, false);
9038 DrawFrame(); 9064 DrawFrame();
9039 9065
9040 LayerImpl* viewport_layer = host_impl_->InnerViewportScrollLayer(); 9066 LayerImpl* viewport_layer = host_impl_->InnerViewportScrollLayer();
9041 9067
9042 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, 9068 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD,
9043 host_impl_->ScrollBegin(BeginState(gfx::Point()).get(), 9069 host_impl_->ScrollBegin(BeginState(gfx::Point()).get(),
9044 InputHandler::WHEEL) 9070 InputHandler::WHEEL)
9045 .thread); 9071 .thread);
9046 EXPECT_EQ(0, host_impl_->top_controls_manager()->ControlsTopOffset()); 9072 EXPECT_EQ(0, host_impl_->browser_controls_manager()->ControlsTopOffset());
9047 EXPECT_VECTOR_EQ(gfx::Vector2dF(), viewport_layer->CurrentScrollOffset()); 9073 EXPECT_VECTOR_EQ(gfx::Vector2dF(), viewport_layer->CurrentScrollOffset());
9048 9074
9049 // Wheel scrolls should not affect the top controls, and should pass 9075 // Wheel scrolls should not affect the browser controls, and should pass
9050 // directly through to the viewport. 9076 // directly through to the viewport.
9051 const float delta = top_controls_height_; 9077 const float delta = top_controls_height_;
9052 EXPECT_TRUE( 9078 EXPECT_TRUE(
9053 host_impl_->ScrollBy( 9079 host_impl_->ScrollBy(
9054 UpdateState(gfx::Point(), gfx::Vector2d(0, delta)).get()) 9080 UpdateState(gfx::Point(), gfx::Vector2d(0, delta)).get())
9055 .did_scroll); 9081 .did_scroll);
9056 EXPECT_FLOAT_EQ(0, host_impl_->top_controls_manager()->ControlsTopOffset()); 9082 EXPECT_FLOAT_EQ(0,
9083 host_impl_->browser_controls_manager()->ControlsTopOffset());
9057 EXPECT_VECTOR_EQ(gfx::Vector2dF(0, delta), 9084 EXPECT_VECTOR_EQ(gfx::Vector2dF(0, delta),
9058 viewport_layer->CurrentScrollOffset()); 9085 viewport_layer->CurrentScrollOffset());
9059 9086
9060 EXPECT_TRUE( 9087 EXPECT_TRUE(
9061 host_impl_->ScrollBy( 9088 host_impl_->ScrollBy(
9062 UpdateState(gfx::Point(), gfx::Vector2d(0, delta)).get()) 9089 UpdateState(gfx::Point(), gfx::Vector2d(0, delta)).get())
9063 .did_scroll); 9090 .did_scroll);
9064 EXPECT_FLOAT_EQ(0, host_impl_->top_controls_manager()->ControlsTopOffset()); 9091 EXPECT_FLOAT_EQ(0,
9092 host_impl_->browser_controls_manager()->ControlsTopOffset());
9065 EXPECT_VECTOR_EQ(gfx::Vector2dF(0, delta * 2), 9093 EXPECT_VECTOR_EQ(gfx::Vector2dF(0, delta * 2),
9066 viewport_layer->CurrentScrollOffset()); 9094 viewport_layer->CurrentScrollOffset());
9067 } 9095 }
9068 9096
9069 TEST_F(LayerTreeHostImplWithTopControlsTest, TopControlsAnimationAtOrigin) { 9097 TEST_F(LayerTreeHostImplWithBrowserControlsTest,
9098 BrowserControlsAnimationAtOrigin) {
9070 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 200)); 9099 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 200));
9071 host_impl_->active_tree()->BuildPropertyTreesForTesting(); 9100 host_impl_->active_tree()->BuildPropertyTreesForTesting();
9072 9101
9073 host_impl_->SetViewportSize(gfx::Size(100, 200)); 9102 host_impl_->SetViewportSize(gfx::Size(100, 200));
9074 host_impl_->top_controls_manager()->UpdateTopControlsState( 9103 host_impl_->browser_controls_manager()->UpdateBrowserControlsState(
9075 BOTH, SHOWN, false); 9104 BOTH, SHOWN, false);
9076 DrawFrame(); 9105 DrawFrame();
9077 9106
9078 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, 9107 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD,
9079 host_impl_ 9108 host_impl_
9080 ->ScrollBegin(BeginState(gfx::Point()).get(), 9109 ->ScrollBegin(BeginState(gfx::Point()).get(),
9081 InputHandler::TOUCHSCREEN) 9110 InputHandler::TOUCHSCREEN)
9082 .thread); 9111 .thread);
9083 EXPECT_EQ(0, host_impl_->top_controls_manager()->ControlsTopOffset()); 9112 EXPECT_EQ(0, host_impl_->browser_controls_manager()->ControlsTopOffset());
9084 EXPECT_EQ(gfx::Vector2dF().ToString(), 9113 EXPECT_EQ(gfx::Vector2dF().ToString(),
9085 scroll_layer->CurrentScrollOffset().ToString()); 9114 scroll_layer->CurrentScrollOffset().ToString());
9086 9115
9087 // Scroll the top controls partially. 9116 // Scroll the browser controls partially.
9088 const float residue = 35; 9117 const float residue = 35;
9089 float offset = top_controls_height_ - residue; 9118 float offset = top_controls_height_ - residue;
9090 EXPECT_TRUE( 9119 EXPECT_TRUE(
9091 host_impl_->ScrollBy( 9120 host_impl_->ScrollBy(
9092 UpdateState(gfx::Point(), gfx::Vector2d(0, offset)).get()) 9121 UpdateState(gfx::Point(), gfx::Vector2d(0, offset)).get())
9093 .did_scroll); 9122 .did_scroll);
9094 EXPECT_FLOAT_EQ(-offset, 9123 EXPECT_FLOAT_EQ(-offset,
9095 host_impl_->top_controls_manager()->ControlsTopOffset()); 9124 host_impl_->browser_controls_manager()->ControlsTopOffset());
9096 EXPECT_EQ(gfx::Vector2dF().ToString(), 9125 EXPECT_EQ(gfx::Vector2dF().ToString(),
9097 scroll_layer->CurrentScrollOffset().ToString()); 9126 scroll_layer->CurrentScrollOffset().ToString());
9098 9127
9099 did_request_redraw_ = false; 9128 did_request_redraw_ = false;
9100 did_request_next_frame_ = false; 9129 did_request_next_frame_ = false;
9101 did_request_commit_ = false; 9130 did_request_commit_ = false;
9102 9131
9103 // End the scroll while the controls are still offset from their limit. 9132 // End the scroll while the controls are still offset from their limit.
9104 host_impl_->ScrollEnd(EndState().get()); 9133 host_impl_->ScrollEnd(EndState().get());
9105 ASSERT_TRUE(host_impl_->top_controls_manager()->has_animation()); 9134 ASSERT_TRUE(host_impl_->browser_controls_manager()->has_animation());
9106 EXPECT_TRUE(did_request_next_frame_); 9135 EXPECT_TRUE(did_request_next_frame_);
9107 EXPECT_TRUE(did_request_redraw_); 9136 EXPECT_TRUE(did_request_redraw_);
9108 EXPECT_FALSE(did_request_commit_); 9137 EXPECT_FALSE(did_request_commit_);
9109 9138
9110 // The top controls should properly animate until finished, despite the scroll 9139 // The browser controls should properly animate until finished, despite the
9111 // offset being at the origin. 9140 // scroll offset being at the origin.
9112 BeginFrameArgs begin_frame_args = CreateBeginFrameArgsForTesting( 9141 BeginFrameArgs begin_frame_args = CreateBeginFrameArgsForTesting(
9113 BEGINFRAME_FROM_HERE, base::TimeTicks::Now()); 9142 BEGINFRAME_FROM_HERE, base::TimeTicks::Now());
9114 while (did_request_next_frame_) { 9143 while (did_request_next_frame_) {
9115 did_request_redraw_ = false; 9144 did_request_redraw_ = false;
9116 did_request_next_frame_ = false; 9145 did_request_next_frame_ = false;
9117 did_request_commit_ = false; 9146 did_request_commit_ = false;
9118 9147
9119 float old_offset = 9148 float old_offset =
9120 host_impl_->top_controls_manager()->ControlsTopOffset(); 9149 host_impl_->browser_controls_manager()->ControlsTopOffset();
9121 9150
9122 begin_frame_args.frame_time += base::TimeDelta::FromMilliseconds(5); 9151 begin_frame_args.frame_time += base::TimeDelta::FromMilliseconds(5);
9123 host_impl_->WillBeginImplFrame(begin_frame_args); 9152 host_impl_->WillBeginImplFrame(begin_frame_args);
9124 host_impl_->Animate(); 9153 host_impl_->Animate();
9125 EXPECT_EQ(gfx::Vector2dF().ToString(), 9154 EXPECT_EQ(gfx::Vector2dF().ToString(),
9126 scroll_layer->CurrentScrollOffset().ToString()); 9155 scroll_layer->CurrentScrollOffset().ToString());
9127 9156
9128 float new_offset = 9157 float new_offset =
9129 host_impl_->top_controls_manager()->ControlsTopOffset(); 9158 host_impl_->browser_controls_manager()->ControlsTopOffset();
9130 9159
9131 // No commit is needed as the controls are animating the content offset, 9160 // No commit is needed as the controls are animating the content offset,
9132 // not the scroll offset. 9161 // not the scroll offset.
9133 EXPECT_FALSE(did_request_commit_); 9162 EXPECT_FALSE(did_request_commit_);
9134 9163
9135 if (new_offset != old_offset) 9164 if (new_offset != old_offset)
9136 EXPECT_TRUE(did_request_redraw_); 9165 EXPECT_TRUE(did_request_redraw_);
9137 9166
9138 if (new_offset != 0) { 9167 if (new_offset != 0) {
9139 EXPECT_TRUE(host_impl_->top_controls_manager()->has_animation()); 9168 EXPECT_TRUE(host_impl_->browser_controls_manager()->has_animation());
9140 EXPECT_TRUE(did_request_next_frame_); 9169 EXPECT_TRUE(did_request_next_frame_);
9141 } 9170 }
9142 host_impl_->DidFinishImplFrame(); 9171 host_impl_->DidFinishImplFrame();
9143 } 9172 }
9144 EXPECT_FALSE(host_impl_->top_controls_manager()->has_animation()); 9173 EXPECT_FALSE(host_impl_->browser_controls_manager()->has_animation());
9145 } 9174 }
9146 9175
9147 TEST_F(LayerTreeHostImplWithTopControlsTest, TopControlsAnimationAfterScroll) { 9176 TEST_F(LayerTreeHostImplWithBrowserControlsTest,
9177 BrowserControlsAnimationAfterScroll) {
9148 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 200)); 9178 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 200));
9149 host_impl_->active_tree()->BuildPropertyTreesForTesting(); 9179 host_impl_->active_tree()->BuildPropertyTreesForTesting();
9150 9180
9151 host_impl_->SetViewportSize(gfx::Size(100, 100)); 9181 host_impl_->SetViewportSize(gfx::Size(100, 100));
9152 host_impl_->top_controls_manager()->UpdateTopControlsState( 9182 host_impl_->browser_controls_manager()->UpdateBrowserControlsState(
9153 BOTH, SHOWN, false); 9183 BOTH, SHOWN, false);
9154 float initial_scroll_offset = 50; 9184 float initial_scroll_offset = 50;
9155 scroll_layer->layer_tree_impl() 9185 scroll_layer->layer_tree_impl()
9156 ->property_trees() 9186 ->property_trees()
9157 ->scroll_tree.UpdateScrollOffsetBaseForTesting( 9187 ->scroll_tree.UpdateScrollOffsetBaseForTesting(
9158 scroll_layer->id(), gfx::ScrollOffset(0, initial_scroll_offset)); 9188 scroll_layer->id(), gfx::ScrollOffset(0, initial_scroll_offset));
9159 DrawFrame(); 9189 DrawFrame();
9160 9190
9161 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, 9191 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD,
9162 host_impl_ 9192 host_impl_
9163 ->ScrollBegin(BeginState(gfx::Point()).get(), 9193 ->ScrollBegin(BeginState(gfx::Point()).get(),
9164 InputHandler::TOUCHSCREEN) 9194 InputHandler::TOUCHSCREEN)
9165 .thread); 9195 .thread);
9166 EXPECT_EQ(0, host_impl_->top_controls_manager()->ControlsTopOffset()); 9196 EXPECT_EQ(0, host_impl_->browser_controls_manager()->ControlsTopOffset());
9167 EXPECT_EQ(gfx::Vector2dF(0, initial_scroll_offset).ToString(), 9197 EXPECT_EQ(gfx::Vector2dF(0, initial_scroll_offset).ToString(),
9168 scroll_layer->CurrentScrollOffset().ToString()); 9198 scroll_layer->CurrentScrollOffset().ToString());
9169 9199
9170 // Scroll the top controls partially. 9200 // Scroll the browser controls partially.
9171 const float residue = 15; 9201 const float residue = 15;
9172 float offset = top_controls_height_ - residue; 9202 float offset = top_controls_height_ - residue;
9173 EXPECT_TRUE( 9203 EXPECT_TRUE(
9174 host_impl_->ScrollBy( 9204 host_impl_->ScrollBy(
9175 UpdateState(gfx::Point(), gfx::Vector2d(0, offset)).get()) 9205 UpdateState(gfx::Point(), gfx::Vector2d(0, offset)).get())
9176 .did_scroll); 9206 .did_scroll);
9177 EXPECT_FLOAT_EQ(-offset, 9207 EXPECT_FLOAT_EQ(-offset,
9178 host_impl_->top_controls_manager()->ControlsTopOffset()); 9208 host_impl_->browser_controls_manager()->ControlsTopOffset());
9179 EXPECT_EQ(gfx::Vector2dF(0, initial_scroll_offset).ToString(), 9209 EXPECT_EQ(gfx::Vector2dF(0, initial_scroll_offset).ToString(),
9180 scroll_layer->CurrentScrollOffset().ToString()); 9210 scroll_layer->CurrentScrollOffset().ToString());
9181 9211
9182 did_request_redraw_ = false; 9212 did_request_redraw_ = false;
9183 did_request_next_frame_ = false; 9213 did_request_next_frame_ = false;
9184 did_request_commit_ = false; 9214 did_request_commit_ = false;
9185 9215
9186 // End the scroll while the controls are still offset from the limit. 9216 // End the scroll while the controls are still offset from the limit.
9187 host_impl_->ScrollEnd(EndState().get()); 9217 host_impl_->ScrollEnd(EndState().get());
9188 ASSERT_TRUE(host_impl_->top_controls_manager()->has_animation()); 9218 ASSERT_TRUE(host_impl_->browser_controls_manager()->has_animation());
9189 EXPECT_TRUE(did_request_next_frame_); 9219 EXPECT_TRUE(did_request_next_frame_);
9190 EXPECT_TRUE(did_request_redraw_); 9220 EXPECT_TRUE(did_request_redraw_);
9191 EXPECT_FALSE(did_request_commit_); 9221 EXPECT_FALSE(did_request_commit_);
9192 9222
9193 // Animate the top controls to the limit. 9223 // Animate the browser controls to the limit.
9194 BeginFrameArgs begin_frame_args = CreateBeginFrameArgsForTesting( 9224 BeginFrameArgs begin_frame_args = CreateBeginFrameArgsForTesting(
9195 BEGINFRAME_FROM_HERE, base::TimeTicks::Now()); 9225 BEGINFRAME_FROM_HERE, base::TimeTicks::Now());
9196 while (did_request_next_frame_) { 9226 while (did_request_next_frame_) {
9197 did_request_redraw_ = false; 9227 did_request_redraw_ = false;
9198 did_request_next_frame_ = false; 9228 did_request_next_frame_ = false;
9199 did_request_commit_ = false; 9229 did_request_commit_ = false;
9200 9230
9201 float old_offset = 9231 float old_offset =
9202 host_impl_->top_controls_manager()->ControlsTopOffset(); 9232 host_impl_->browser_controls_manager()->ControlsTopOffset();
9203 9233
9204 begin_frame_args.frame_time += base::TimeDelta::FromMilliseconds(5); 9234 begin_frame_args.frame_time += base::TimeDelta::FromMilliseconds(5);
9205 host_impl_->WillBeginImplFrame(begin_frame_args); 9235 host_impl_->WillBeginImplFrame(begin_frame_args);
9206 host_impl_->Animate(); 9236 host_impl_->Animate();
9207 9237
9208 float new_offset = 9238 float new_offset =
9209 host_impl_->top_controls_manager()->ControlsTopOffset(); 9239 host_impl_->browser_controls_manager()->ControlsTopOffset();
9210 9240
9211 if (new_offset != old_offset) { 9241 if (new_offset != old_offset) {
9212 EXPECT_TRUE(did_request_redraw_); 9242 EXPECT_TRUE(did_request_redraw_);
9213 EXPECT_TRUE(did_request_commit_); 9243 EXPECT_TRUE(did_request_commit_);
9214 } 9244 }
9215 host_impl_->DidFinishImplFrame(); 9245 host_impl_->DidFinishImplFrame();
9216 } 9246 }
9217 EXPECT_FALSE(host_impl_->top_controls_manager()->has_animation()); 9247 EXPECT_FALSE(host_impl_->browser_controls_manager()->has_animation());
9218 EXPECT_EQ(-top_controls_height_, 9248 EXPECT_EQ(-top_controls_height_,
9219 host_impl_->top_controls_manager()->ControlsTopOffset()); 9249 host_impl_->browser_controls_manager()->ControlsTopOffset());
9220 } 9250 }
9221 9251
9222 TEST_F(LayerTreeHostImplWithTopControlsTest, 9252 TEST_F(LayerTreeHostImplWithBrowserControlsTest,
9223 TopControlsAnimationAfterMainThreadFlingStopped) { 9253 BrowserControlsAnimationAfterMainThreadFlingStopped) {
9224 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 200)); 9254 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 200));
9225 host_impl_->active_tree()->BuildPropertyTreesForTesting(); 9255 host_impl_->active_tree()->BuildPropertyTreesForTesting();
9226 9256
9227 host_impl_->SetViewportSize(gfx::Size(100, 100)); 9257 host_impl_->SetViewportSize(gfx::Size(100, 100));
9228 host_impl_->top_controls_manager()->UpdateTopControlsState(BOTH, SHOWN, 9258 host_impl_->browser_controls_manager()->UpdateBrowserControlsState(
9229 false); 9259 BOTH, SHOWN, false);
9230 float initial_scroll_offset = 50; 9260 float initial_scroll_offset = 50;
9231 scroll_layer->layer_tree_impl() 9261 scroll_layer->layer_tree_impl()
9232 ->property_trees() 9262 ->property_trees()
9233 ->scroll_tree.UpdateScrollOffsetBaseForTesting( 9263 ->scroll_tree.UpdateScrollOffsetBaseForTesting(
9234 scroll_layer->id(), gfx::ScrollOffset(0, initial_scroll_offset)); 9264 scroll_layer->id(), gfx::ScrollOffset(0, initial_scroll_offset));
9235 DrawFrame(); 9265 DrawFrame();
9236 9266
9237 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, 9267 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD,
9238 host_impl_ 9268 host_impl_
9239 ->ScrollBegin(BeginState(gfx::Point()).get(), 9269 ->ScrollBegin(BeginState(gfx::Point()).get(),
9240 InputHandler::TOUCHSCREEN) 9270 InputHandler::TOUCHSCREEN)
9241 .thread); 9271 .thread);
9242 EXPECT_EQ(0, host_impl_->top_controls_manager()->ControlsTopOffset()); 9272 EXPECT_EQ(0, host_impl_->browser_controls_manager()->ControlsTopOffset());
9243 EXPECT_EQ(gfx::Vector2dF(0, initial_scroll_offset).ToString(), 9273 EXPECT_EQ(gfx::Vector2dF(0, initial_scroll_offset).ToString(),
9244 scroll_layer->CurrentScrollOffset().ToString()); 9274 scroll_layer->CurrentScrollOffset().ToString());
9245 9275
9246 // Scroll the top controls partially. 9276 // Scroll the browser controls partially.
9247 const float residue = 15; 9277 const float residue = 15;
9248 float offset = top_controls_height_ - residue; 9278 float offset = top_controls_height_ - residue;
9249 EXPECT_TRUE( 9279 EXPECT_TRUE(
9250 host_impl_->ScrollBy( 9280 host_impl_->ScrollBy(
9251 UpdateState(gfx::Point(), gfx::Vector2d(0, offset)).get()) 9281 UpdateState(gfx::Point(), gfx::Vector2d(0, offset)).get())
9252 .did_scroll); 9282 .did_scroll);
9253 EXPECT_FLOAT_EQ(-offset, 9283 EXPECT_FLOAT_EQ(-offset,
9254 host_impl_->top_controls_manager()->ControlsTopOffset()); 9284 host_impl_->browser_controls_manager()->ControlsTopOffset());
9255 EXPECT_EQ(gfx::Vector2dF(0, initial_scroll_offset).ToString(), 9285 EXPECT_EQ(gfx::Vector2dF(0, initial_scroll_offset).ToString(),
9256 scroll_layer->CurrentScrollOffset().ToString()); 9286 scroll_layer->CurrentScrollOffset().ToString());
9257 9287
9258 did_request_redraw_ = false; 9288 did_request_redraw_ = false;
9259 did_request_next_frame_ = false; 9289 did_request_next_frame_ = false;
9260 did_request_commit_ = false; 9290 did_request_commit_ = false;
9261 9291
9262 // End the fling while the controls are still offset from the limit. 9292 // End the fling while the controls are still offset from the limit.
9263 host_impl_->MainThreadHasStoppedFlinging(); 9293 host_impl_->MainThreadHasStoppedFlinging();
9264 ASSERT_TRUE(host_impl_->top_controls_manager()->has_animation()); 9294 ASSERT_TRUE(host_impl_->browser_controls_manager()->has_animation());
9265 EXPECT_TRUE(did_request_next_frame_); 9295 EXPECT_TRUE(did_request_next_frame_);
9266 EXPECT_TRUE(did_request_redraw_); 9296 EXPECT_TRUE(did_request_redraw_);
9267 EXPECT_FALSE(did_request_commit_); 9297 EXPECT_FALSE(did_request_commit_);
9268 9298
9269 // Animate the top controls to the limit. 9299 // Animate the browser controls to the limit.
9270 BeginFrameArgs begin_frame_args = CreateBeginFrameArgsForTesting( 9300 BeginFrameArgs begin_frame_args = CreateBeginFrameArgsForTesting(
9271 BEGINFRAME_FROM_HERE, base::TimeTicks::Now()); 9301 BEGINFRAME_FROM_HERE, base::TimeTicks::Now());
9272 while (did_request_next_frame_) { 9302 while (did_request_next_frame_) {
9273 did_request_redraw_ = false; 9303 did_request_redraw_ = false;
9274 did_request_next_frame_ = false; 9304 did_request_next_frame_ = false;
9275 did_request_commit_ = false; 9305 did_request_commit_ = false;
9276 9306
9277 float old_offset = host_impl_->top_controls_manager()->ControlsTopOffset(); 9307 float old_offset =
9308 host_impl_->browser_controls_manager()->ControlsTopOffset();
9278 9309
9279 begin_frame_args.frame_time += base::TimeDelta::FromMilliseconds(5); 9310 begin_frame_args.frame_time += base::TimeDelta::FromMilliseconds(5);
9280 host_impl_->WillBeginImplFrame(begin_frame_args); 9311 host_impl_->WillBeginImplFrame(begin_frame_args);
9281 host_impl_->Animate(); 9312 host_impl_->Animate();
9282 9313
9283 float new_offset = host_impl_->top_controls_manager()->ControlsTopOffset(); 9314 float new_offset =
9315 host_impl_->browser_controls_manager()->ControlsTopOffset();
9284 9316
9285 if (new_offset != old_offset) { 9317 if (new_offset != old_offset) {
9286 EXPECT_TRUE(did_request_redraw_); 9318 EXPECT_TRUE(did_request_redraw_);
9287 EXPECT_TRUE(did_request_commit_); 9319 EXPECT_TRUE(did_request_commit_);
9288 } 9320 }
9289 host_impl_->DidFinishImplFrame(); 9321 host_impl_->DidFinishImplFrame();
9290 } 9322 }
9291 EXPECT_FALSE(host_impl_->top_controls_manager()->has_animation()); 9323 EXPECT_FALSE(host_impl_->browser_controls_manager()->has_animation());
9292 EXPECT_EQ(-top_controls_height_, 9324 EXPECT_EQ(-top_controls_height_,
9293 host_impl_->top_controls_manager()->ControlsTopOffset()); 9325 host_impl_->browser_controls_manager()->ControlsTopOffset());
9294 } 9326 }
9295 9327
9296 TEST_F(LayerTreeHostImplWithTopControlsTest, 9328 TEST_F(LayerTreeHostImplWithBrowserControlsTest,
9297 TopControlsScrollDeltaInOverScroll) { 9329 BrowserControlsScrollDeltaInOverScroll) {
9298 // Verifies that the overscroll delta should not have accumulated in 9330 // Verifies that the overscroll delta should not have accumulated in
9299 // the top controls if we do a hide and show without releasing finger. 9331 // the browser controls if we do a hide and show without releasing finger.
9300 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 200)); 9332 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 200));
9301 host_impl_->active_tree()->BuildPropertyTreesForTesting(); 9333 host_impl_->active_tree()->BuildPropertyTreesForTesting();
9302 9334
9303 host_impl_->SetViewportSize(gfx::Size(100, 100)); 9335 host_impl_->SetViewportSize(gfx::Size(100, 100));
9304 host_impl_->top_controls_manager()->UpdateTopControlsState(BOTH, SHOWN, 9336 host_impl_->browser_controls_manager()->UpdateBrowserControlsState(
9305 false); 9337 BOTH, SHOWN, false);
9306 DrawFrame(); 9338 DrawFrame();
9307 9339
9308 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, 9340 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD,
9309 host_impl_ 9341 host_impl_
9310 ->ScrollBegin(BeginState(gfx::Point()).get(), 9342 ->ScrollBegin(BeginState(gfx::Point()).get(),
9311 InputHandler::TOUCHSCREEN) 9343 InputHandler::TOUCHSCREEN)
9312 .thread); 9344 .thread);
9313 EXPECT_EQ(0, host_impl_->top_controls_manager()->ControlsTopOffset()); 9345 EXPECT_EQ(0, host_impl_->browser_controls_manager()->ControlsTopOffset());
9314 9346
9315 float offset = 50; 9347 float offset = 50;
9316 EXPECT_TRUE( 9348 EXPECT_TRUE(
9317 host_impl_->ScrollBy( 9349 host_impl_->ScrollBy(
9318 UpdateState(gfx::Point(), gfx::Vector2d(0, offset)).get()) 9350 UpdateState(gfx::Point(), gfx::Vector2d(0, offset)).get())
9319 .did_scroll); 9351 .did_scroll);
9320 EXPECT_EQ(-offset, host_impl_->top_controls_manager()->ControlsTopOffset()); 9352 EXPECT_EQ(-offset,
9353 host_impl_->browser_controls_manager()->ControlsTopOffset());
9321 EXPECT_EQ(gfx::Vector2dF().ToString(), 9354 EXPECT_EQ(gfx::Vector2dF().ToString(),
9322 scroll_layer->CurrentScrollOffset().ToString()); 9355 scroll_layer->CurrentScrollOffset().ToString());
9323 9356
9324 EXPECT_TRUE( 9357 EXPECT_TRUE(
9325 host_impl_->ScrollBy( 9358 host_impl_->ScrollBy(
9326 UpdateState(gfx::Point(), gfx::Vector2d(0, offset)).get()) 9359 UpdateState(gfx::Point(), gfx::Vector2d(0, offset)).get())
9327 .did_scroll); 9360 .did_scroll);
9328 EXPECT_EQ(gfx::Vector2dF(0, offset).ToString(), 9361 EXPECT_EQ(gfx::Vector2dF(0, offset).ToString(),
9329 scroll_layer->CurrentScrollOffset().ToString()); 9362 scroll_layer->CurrentScrollOffset().ToString());
9330 9363
(...skipping 18 matching lines...) Expand all
9349 scroll_layer->CurrentScrollOffset().ToString()); 9382 scroll_layer->CurrentScrollOffset().ToString());
9350 EXPECT_EQ(gfx::Vector2dF(0, overscrollamount).ToString(), 9383 EXPECT_EQ(gfx::Vector2dF(0, overscrollamount).ToString(),
9351 host_impl_->accumulated_root_overscroll().ToString()); 9384 host_impl_->accumulated_root_overscroll().ToString());
9352 9385
9353 EXPECT_TRUE(host_impl_->ScrollBy(UpdateState(gfx::Point(), 9386 EXPECT_TRUE(host_impl_->ScrollBy(UpdateState(gfx::Point(),
9354 gfx::Vector2d(0, -2 * offset)) 9387 gfx::Vector2d(0, -2 * offset))
9355 .get()) 9388 .get())
9356 .did_scroll); 9389 .did_scroll);
9357 EXPECT_EQ(gfx::Vector2dF(0, 0).ToString(), 9390 EXPECT_EQ(gfx::Vector2dF(0, 0).ToString(),
9358 scroll_layer->CurrentScrollOffset().ToString()); 9391 scroll_layer->CurrentScrollOffset().ToString());
9359 EXPECT_EQ(-offset, host_impl_->top_controls_manager()->ControlsTopOffset()); 9392 EXPECT_EQ(-offset,
9393 host_impl_->browser_controls_manager()->ControlsTopOffset());
9360 9394
9361 EXPECT_TRUE( 9395 EXPECT_TRUE(
9362 host_impl_->ScrollBy( 9396 host_impl_->ScrollBy(
9363 UpdateState(gfx::Point(), gfx::Vector2d(0, -offset)).get()) 9397 UpdateState(gfx::Point(), gfx::Vector2d(0, -offset)).get())
9364 .did_scroll); 9398 .did_scroll);
9365 EXPECT_EQ(gfx::Vector2dF(0, 0).ToString(), 9399 EXPECT_EQ(gfx::Vector2dF(0, 0).ToString(),
9366 scroll_layer->CurrentScrollOffset().ToString()); 9400 scroll_layer->CurrentScrollOffset().ToString());
9367 9401
9368 // Top controls should be fully visible 9402 // Browser controls should be fully visible
9369 EXPECT_EQ(0, host_impl_->top_controls_manager()->ControlsTopOffset()); 9403 EXPECT_EQ(0, host_impl_->browser_controls_manager()->ControlsTopOffset());
9370 9404
9371 host_impl_->ScrollEnd(EndState().get()); 9405 host_impl_->ScrollEnd(EndState().get());
9372 } 9406 }
9373 9407
9374 // Tests that when we set a child scroller (e.g. a scrolling div) as the outer 9408 // Tests that when we set a child scroller (e.g. a scrolling div) as the outer
9375 // viewport, scrolling it controls the top controls. 9409 // viewport, scrolling it controls the browser controls.
9376 TEST_F(LayerTreeHostImplTopControlsTest, 9410 TEST_F(LayerTreeHostImplBrowserControlsTest,
9377 ReplacedOuterViewportScrollsTopControls) { 9411 ReplacedOuterViewportScrollsBrowserControls) {
9378 const gfx::Size scroll_content_size(400, 400); 9412 const gfx::Size scroll_content_size(400, 400);
9379 const gfx::Size root_layer_size(200, 200); 9413 const gfx::Size root_layer_size(200, 200);
9380 const gfx::Size viewport_size(100, 100); 9414 const gfx::Size viewport_size(100, 100);
9381 9415
9382 SetupTopControlsAndScrollLayerWithVirtualViewport( 9416 SetupBrowserControlsAndScrollLayerWithVirtualViewport(
9383 viewport_size, viewport_size, root_layer_size); 9417 viewport_size, viewport_size, root_layer_size);
9384 9418
9385 LayerImpl* outer_scroll = host_impl_->OuterViewportScrollLayer(); 9419 LayerImpl* outer_scroll = host_impl_->OuterViewportScrollLayer();
9386 LayerImpl* inner_scroll = host_impl_->InnerViewportScrollLayer(); 9420 LayerImpl* inner_scroll = host_impl_->InnerViewportScrollLayer();
9387 LayerTreeImpl* layer_tree_impl = host_impl_->active_tree(); 9421 LayerTreeImpl* layer_tree_impl = host_impl_->active_tree();
9388 LayerImpl* scroll_layer = nullptr; 9422 LayerImpl* scroll_layer = nullptr;
9389 9423
9390 // Initialization: Add a child scrolling layer to the outer scroll layer and 9424 // Initialization: Add a child scrolling layer to the outer scroll layer and
9391 // set its scroll layer as the outer viewport. This simulates setting a 9425 // set its scroll layer as the outer viewport. This simulates setting a
9392 // scrolling element as the root scroller on the page. 9426 // scrolling element as the root scroller on the page.
(...skipping 11 matching lines...) Expand all
9404 9438
9405 clip->test_properties()->AddChild(std::move(scroll)); 9439 clip->test_properties()->AddChild(std::move(scroll));
9406 outer_scroll->test_properties()->AddChild(std::move(clip)); 9440 outer_scroll->test_properties()->AddChild(std::move(clip));
9407 layer_tree_impl->SetViewportLayersFromIds( 9441 layer_tree_impl->SetViewportLayersFromIds(
9408 Layer::INVALID_ID, layer_tree_impl->PageScaleLayer()->id(), 9442 Layer::INVALID_ID, layer_tree_impl->PageScaleLayer()->id(),
9409 inner_scroll->id(), scroll_layer->id()); 9443 inner_scroll->id(), scroll_layer->id());
9410 layer_tree_impl->BuildPropertyTreesForTesting(); 9444 layer_tree_impl->BuildPropertyTreesForTesting();
9411 DrawFrame(); 9445 DrawFrame();
9412 } 9446 }
9413 9447
9414 ASSERT_EQ(1.f, host_impl_->active_tree()->CurrentTopControlsShownRatio()); 9448 ASSERT_EQ(1.f, host_impl_->active_tree()->CurrentBrowserControlsShownRatio());
9415 9449
9416 // Scrolling should scroll the child content and the top controls. The 9450 // Scrolling should scroll the child content and the browser controls. The
9417 // original outer viewport should get no scroll. 9451 // original outer viewport should get no scroll.
9418 { 9452 {
9419 host_impl_->ScrollBegin(BeginState(gfx::Point(0, 0)).get(), 9453 host_impl_->ScrollBegin(BeginState(gfx::Point(0, 0)).get(),
9420 InputHandler::TOUCHSCREEN); 9454 InputHandler::TOUCHSCREEN);
9421 host_impl_->ScrollBy( 9455 host_impl_->ScrollBy(
9422 UpdateState(gfx::Point(0, 0), gfx::Vector2dF(100.f, 100.f)).get()); 9456 UpdateState(gfx::Point(0, 0), gfx::Vector2dF(100.f, 100.f)).get());
9423 host_impl_->ScrollEnd(EndState().get()); 9457 host_impl_->ScrollEnd(EndState().get());
9424 9458
9425 EXPECT_VECTOR_EQ(gfx::Vector2dF(), outer_scroll->CurrentScrollOffset()); 9459 EXPECT_VECTOR_EQ(gfx::Vector2dF(), outer_scroll->CurrentScrollOffset());
9426 EXPECT_VECTOR_EQ(gfx::Vector2dF(100.f, 50.f), 9460 EXPECT_VECTOR_EQ(gfx::Vector2dF(100.f, 50.f),
9427 scroll_layer->CurrentScrollOffset()); 9461 scroll_layer->CurrentScrollOffset());
9428 EXPECT_EQ(0.f, host_impl_->active_tree()->CurrentTopControlsShownRatio()); 9462 EXPECT_EQ(0.f,
9463 host_impl_->active_tree()->CurrentBrowserControlsShownRatio());
9429 } 9464 }
9430 } 9465 }
9431 9466
9432 class LayerTreeHostImplVirtualViewportTest : public LayerTreeHostImplTest { 9467 class LayerTreeHostImplVirtualViewportTest : public LayerTreeHostImplTest {
9433 public: 9468 public:
9434 void SetupVirtualViewportLayers(const gfx::Size& content_size, 9469 void SetupVirtualViewportLayers(const gfx::Size& content_size,
9435 const gfx::Size& outer_viewport, 9470 const gfx::Size& outer_viewport,
9436 const gfx::Size& inner_viewport) { 9471 const gfx::Size& inner_viewport) {
9437 LayerTreeImpl* layer_tree_impl = host_impl_->active_tree(); 9472 LayerTreeImpl* layer_tree_impl = host_impl_->active_tree();
9438 const int kOuterViewportClipLayerId = 6; 9473 const int kOuterViewportClipLayerId = 6;
(...skipping 2034 matching lines...) Expand 10 before | Expand all | Expand 10 after
11473 EXPECT_TRUE(host_impl_->use_gpu_rasterization()); 11508 EXPECT_TRUE(host_impl_->use_gpu_rasterization());
11474 11509
11475 // Re-initialize with a software output surface. 11510 // Re-initialize with a software output surface.
11476 compositor_frame_sink_ = FakeCompositorFrameSink::CreateSoftware(); 11511 compositor_frame_sink_ = FakeCompositorFrameSink::CreateSoftware();
11477 host_impl_->InitializeRenderer(compositor_frame_sink_.get()); 11512 host_impl_->InitializeRenderer(compositor_frame_sink_.get());
11478 EXPECT_FALSE(host_impl_->use_gpu_rasterization()); 11513 EXPECT_FALSE(host_impl_->use_gpu_rasterization());
11479 } 11514 }
11480 11515
11481 } // namespace 11516 } // namespace
11482 } // namespace cc 11517 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_host_impl.cc ('k') | cc/trees/layer_tree_host_in_process.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698