| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/input/top_controls_manager.h" | 5 #include "cc/input/browser_controls_offset_manager.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <cmath> | 8 #include <cmath> |
| 9 #include <memory> | 9 #include <memory> |
| 10 | 10 |
| 11 #include "base/logging.h" | 11 #include "base/logging.h" |
| 12 #include "base/time/time.h" | 12 #include "base/time/time.h" |
| 13 #include "cc/input/top_controls_manager_client.h" | 13 #include "cc/input/browser_controls_offset_manager_client.h" |
| 14 #include "cc/layers/layer_impl.h" | 14 #include "cc/layers/layer_impl.h" |
| 15 #include "cc/test/fake_impl_task_runner_provider.h" | 15 #include "cc/test/fake_impl_task_runner_provider.h" |
| 16 #include "cc/test/fake_layer_tree_host_impl.h" | 16 #include "cc/test/fake_layer_tree_host_impl.h" |
| 17 #include "cc/test/test_shared_bitmap_manager.h" | 17 #include "cc/test/test_shared_bitmap_manager.h" |
| 18 #include "cc/test/test_task_graph_runner.h" | 18 #include "cc/test/test_task_graph_runner.h" |
| 19 #include "cc/trees/layer_tree_impl.h" | 19 #include "cc/trees/layer_tree_impl.h" |
| 20 #include "testing/gtest/include/gtest/gtest.h" | 20 #include "testing/gtest/include/gtest/gtest.h" |
| 21 #include "ui/gfx/geometry/vector2d_f.h" | 21 #include "ui/gfx/geometry/vector2d_f.h" |
| 22 | 22 |
| 23 namespace cc { | 23 namespace cc { |
| 24 namespace { | 24 namespace { |
| 25 | 25 |
| 26 class MockTopControlsManagerClient : public TopControlsManagerClient { | 26 class MockBrowserControlsOffsetManagerClient |
| 27 : public BrowserControlsOffsetManagerClient { |
| 27 public: | 28 public: |
| 28 MockTopControlsManagerClient(float top_controls_height, | 29 MockBrowserControlsOffsetManagerClient(float top_controls_height, |
| 29 float top_controls_show_threshold, | 30 float browser_controls_show_threshold, |
| 30 float top_controls_hide_threshold) | 31 float browser_controls_hide_threshold) |
| 31 : host_impl_(&task_runner_provider_, | 32 : host_impl_(&task_runner_provider_, |
| 32 &shared_bitmap_manager_, | 33 &shared_bitmap_manager_, |
| 33 &task_graph_runner_), | 34 &task_graph_runner_), |
| 34 redraw_needed_(false), | 35 redraw_needed_(false), |
| 35 update_draw_properties_needed_(false), | 36 update_draw_properties_needed_(false), |
| 36 bottom_controls_height_(0.f), | 37 bottom_controls_height_(0.f), |
| 37 top_controls_shown_ratio_(1.f), | 38 top_controls_shown_ratio_(1.f), |
| 38 top_controls_height_(top_controls_height), | 39 top_controls_height_(top_controls_height), |
| 39 top_controls_show_threshold_(top_controls_show_threshold), | 40 browser_controls_show_threshold_(browser_controls_show_threshold), |
| 40 top_controls_hide_threshold_(top_controls_hide_threshold) { | 41 browser_controls_hide_threshold_(browser_controls_hide_threshold) { |
| 41 active_tree_ = base::MakeUnique<LayerTreeImpl>( | 42 active_tree_ = base::MakeUnique<LayerTreeImpl>( |
| 42 &host_impl_, new SyncedProperty<ScaleGroup>, new SyncedTopControls, | 43 &host_impl_, new SyncedProperty<ScaleGroup>, new SyncedBrowserControls, |
| 43 new SyncedElasticOverscroll); | 44 new SyncedElasticOverscroll); |
| 44 root_scroll_layer_ = LayerImpl::Create(active_tree_.get(), 1); | 45 root_scroll_layer_ = LayerImpl::Create(active_tree_.get(), 1); |
| 45 } | 46 } |
| 46 | 47 |
| 47 ~MockTopControlsManagerClient() override {} | 48 ~MockBrowserControlsOffsetManagerClient() override {} |
| 48 | 49 |
| 49 void DidChangeTopControlsPosition() override { | 50 void DidChangeBrowserControlsPosition() override { |
| 50 redraw_needed_ = true; | 51 redraw_needed_ = true; |
| 51 update_draw_properties_needed_ = true; | 52 update_draw_properties_needed_ = true; |
| 52 } | 53 } |
| 53 | 54 |
| 54 bool HaveRootScrollLayer() const override { return true; } | 55 bool HaveRootScrollLayer() const override { return true; } |
| 55 | 56 |
| 56 float BottomControlsHeight() const override { | 57 float BottomControlsHeight() const override { |
| 57 return bottom_controls_height_; | 58 return bottom_controls_height_; |
| 58 } | 59 } |
| 59 | 60 |
| 60 float TopControlsHeight() const override { return top_controls_height_; } | 61 float TopControlsHeight() const override { return top_controls_height_; } |
| 61 | 62 |
| 62 void SetCurrentTopControlsShownRatio(float ratio) override { | 63 void SetCurrentBrowserControlsShownRatio(float ratio) override { |
| 63 ASSERT_FALSE(std::isnan(ratio)); | 64 ASSERT_FALSE(std::isnan(ratio)); |
| 64 ASSERT_FALSE(ratio == std::numeric_limits<float>::infinity()); | 65 ASSERT_FALSE(ratio == std::numeric_limits<float>::infinity()); |
| 65 ASSERT_FALSE(ratio == -std::numeric_limits<float>::infinity()); | 66 ASSERT_FALSE(ratio == -std::numeric_limits<float>::infinity()); |
| 66 ratio = std::max(ratio, 0.f); | 67 ratio = std::max(ratio, 0.f); |
| 67 ratio = std::min(ratio, 1.f); | 68 ratio = std::min(ratio, 1.f); |
| 68 top_controls_shown_ratio_ = ratio; | 69 top_controls_shown_ratio_ = ratio; |
| 69 } | 70 } |
| 70 | 71 |
| 71 float CurrentTopControlsShownRatio() const override { | 72 float CurrentBrowserControlsShownRatio() const override { |
| 72 return top_controls_shown_ratio_; | 73 return top_controls_shown_ratio_; |
| 73 } | 74 } |
| 74 | 75 |
| 75 LayerImpl* rootScrollLayer() { | 76 LayerImpl* rootScrollLayer() { return root_scroll_layer_.get(); } |
| 76 return root_scroll_layer_.get(); | |
| 77 } | |
| 78 | 77 |
| 79 TopControlsManager* manager() { | 78 BrowserControlsOffsetManager* manager() { |
| 80 if (!manager_) { | 79 if (!manager_) { |
| 81 manager_ = TopControlsManager::Create(this, | 80 manager_ = BrowserControlsOffsetManager::Create( |
| 82 top_controls_show_threshold_, | 81 this, browser_controls_show_threshold_, |
| 83 top_controls_hide_threshold_); | 82 browser_controls_hide_threshold_); |
| 84 } | 83 } |
| 85 return manager_.get(); | 84 return manager_.get(); |
| 86 } | 85 } |
| 87 | 86 |
| 88 void SetTopControlsHeight(float height) { top_controls_height_ = height; } | 87 void SetBrowserControlsHeight(float height) { top_controls_height_ = height; } |
| 89 | 88 |
| 90 void SetBottomControlsHeight(float height) { | 89 void SetBottomControlsHeight(float height) { |
| 91 bottom_controls_height_ = height; | 90 bottom_controls_height_ = height; |
| 92 } | 91 } |
| 93 | 92 |
| 94 private: | 93 private: |
| 95 FakeImplTaskRunnerProvider task_runner_provider_; | 94 FakeImplTaskRunnerProvider task_runner_provider_; |
| 96 TestSharedBitmapManager shared_bitmap_manager_; | 95 TestSharedBitmapManager shared_bitmap_manager_; |
| 97 TestTaskGraphRunner task_graph_runner_; | 96 TestTaskGraphRunner task_graph_runner_; |
| 98 FakeLayerTreeHostImpl host_impl_; | 97 FakeLayerTreeHostImpl host_impl_; |
| 99 std::unique_ptr<LayerTreeImpl> active_tree_; | 98 std::unique_ptr<LayerTreeImpl> active_tree_; |
| 100 std::unique_ptr<LayerImpl> root_scroll_layer_; | 99 std::unique_ptr<LayerImpl> root_scroll_layer_; |
| 101 std::unique_ptr<TopControlsManager> manager_; | 100 std::unique_ptr<BrowserControlsOffsetManager> manager_; |
| 102 bool redraw_needed_; | 101 bool redraw_needed_; |
| 103 bool update_draw_properties_needed_; | 102 bool update_draw_properties_needed_; |
| 104 | 103 |
| 105 float bottom_controls_height_; | 104 float bottom_controls_height_; |
| 106 float top_controls_shown_ratio_; | 105 float top_controls_shown_ratio_; |
| 107 float top_controls_height_; | 106 float top_controls_height_; |
| 108 float top_controls_show_threshold_; | 107 float browser_controls_show_threshold_; |
| 109 float top_controls_hide_threshold_; | 108 float browser_controls_hide_threshold_; |
| 110 }; | 109 }; |
| 111 | 110 |
| 112 TEST(TopControlsManagerTest, EnsureScrollThresholdApplied) { | 111 TEST(BrowserControlsOffsetManagerTest, EnsureScrollThresholdApplied) { |
| 113 MockTopControlsManagerClient client(100.f, 0.5f, 0.5f); | 112 MockBrowserControlsOffsetManagerClient client(100.f, 0.5f, 0.5f); |
| 114 TopControlsManager* manager = client.manager(); | 113 BrowserControlsOffsetManager* manager = client.manager(); |
| 115 | 114 |
| 116 manager->ScrollBegin(); | 115 manager->ScrollBegin(); |
| 117 | 116 |
| 118 // Scroll down to hide the controls entirely. | 117 // Scroll down to hide the controls entirely. |
| 119 manager->ScrollBy(gfx::Vector2dF(0.f, 30.f)); | 118 manager->ScrollBy(gfx::Vector2dF(0.f, 30.f)); |
| 120 EXPECT_FLOAT_EQ(-30.f, manager->ControlsTopOffset()); | 119 EXPECT_FLOAT_EQ(-30.f, manager->ControlsTopOffset()); |
| 121 | 120 |
| 122 manager->ScrollBy(gfx::Vector2dF(0.f, 30.f)); | 121 manager->ScrollBy(gfx::Vector2dF(0.f, 30.f)); |
| 123 EXPECT_FLOAT_EQ(-60.f, manager->ControlsTopOffset()); | 122 EXPECT_FLOAT_EQ(-60.f, manager->ControlsTopOffset()); |
| 124 | 123 |
| (...skipping 21 matching lines...) Expand all Loading... |
| 146 manager->ScrollBy(gfx::Vector2dF(0.f, -100.f)); | 145 manager->ScrollBy(gfx::Vector2dF(0.f, -100.f)); |
| 147 EXPECT_FLOAT_EQ(0.f, manager->ControlsTopOffset()); | 146 EXPECT_FLOAT_EQ(0.f, manager->ControlsTopOffset()); |
| 148 | 147 |
| 149 // See that scrolling down the page now will result in the controls hiding. | 148 // See that scrolling down the page now will result in the controls hiding. |
| 150 manager->ScrollBy(gfx::Vector2dF(0.f, 20.f)); | 149 manager->ScrollBy(gfx::Vector2dF(0.f, 20.f)); |
| 151 EXPECT_FLOAT_EQ(-20.f, manager->ControlsTopOffset()); | 150 EXPECT_FLOAT_EQ(-20.f, manager->ControlsTopOffset()); |
| 152 | 151 |
| 153 manager->ScrollEnd(); | 152 manager->ScrollEnd(); |
| 154 } | 153 } |
| 155 | 154 |
| 156 TEST(TopControlsManagerTest, PartialShownHideAnimation) { | 155 TEST(BrowserControlsOffsetManagerTest, PartialShownHideAnimation) { |
| 157 MockTopControlsManagerClient client(100.f, 0.5f, 0.5f); | 156 MockBrowserControlsOffsetManagerClient client(100.f, 0.5f, 0.5f); |
| 158 TopControlsManager* manager = client.manager(); | 157 BrowserControlsOffsetManager* manager = client.manager(); |
| 159 manager->ScrollBegin(); | 158 manager->ScrollBegin(); |
| 160 manager->ScrollBy(gfx::Vector2dF(0.f, 300.f)); | 159 manager->ScrollBy(gfx::Vector2dF(0.f, 300.f)); |
| 161 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset()); | 160 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset()); |
| 162 EXPECT_FLOAT_EQ(0.f, manager->ContentTopOffset()); | 161 EXPECT_FLOAT_EQ(0.f, manager->ContentTopOffset()); |
| 163 manager->ScrollEnd(); | 162 manager->ScrollEnd(); |
| 164 | 163 |
| 165 manager->ScrollBegin(); | 164 manager->ScrollBegin(); |
| 166 manager->ScrollBy(gfx::Vector2dF(0.f, -15.f)); | 165 manager->ScrollBy(gfx::Vector2dF(0.f, -15.f)); |
| 167 EXPECT_FLOAT_EQ(-85.f, manager->ControlsTopOffset()); | 166 EXPECT_FLOAT_EQ(-85.f, manager->ControlsTopOffset()); |
| 168 EXPECT_FLOAT_EQ(15.f, manager->ContentTopOffset()); | 167 EXPECT_FLOAT_EQ(15.f, manager->ContentTopOffset()); |
| 169 manager->ScrollEnd(); | 168 manager->ScrollEnd(); |
| 170 | 169 |
| 171 EXPECT_TRUE(manager->has_animation()); | 170 EXPECT_TRUE(manager->has_animation()); |
| 172 | 171 |
| 173 base::TimeTicks time = base::TimeTicks::Now(); | 172 base::TimeTicks time = base::TimeTicks::Now(); |
| 174 float previous; | 173 float previous; |
| 175 while (manager->has_animation()) { | 174 while (manager->has_animation()) { |
| 176 previous = manager->TopControlsShownRatio(); | 175 previous = manager->TopControlsShownRatio(); |
| 177 time = base::TimeDelta::FromMicroseconds(100) + time; | 176 time = base::TimeDelta::FromMicroseconds(100) + time; |
| 178 manager->Animate(time); | 177 manager->Animate(time); |
| 179 EXPECT_LT(manager->TopControlsShownRatio(), previous); | 178 EXPECT_LT(manager->TopControlsShownRatio(), previous); |
| 180 } | 179 } |
| 181 EXPECT_FALSE(manager->has_animation()); | 180 EXPECT_FALSE(manager->has_animation()); |
| 182 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset()); | 181 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset()); |
| 183 EXPECT_FLOAT_EQ(0.f, manager->ContentTopOffset()); | 182 EXPECT_FLOAT_EQ(0.f, manager->ContentTopOffset()); |
| 184 } | 183 } |
| 185 | 184 |
| 186 TEST(TopControlsManagerTest, PartialShownShowAnimation) { | 185 TEST(BrowserControlsOffsetManagerTest, PartialShownShowAnimation) { |
| 187 MockTopControlsManagerClient client(100.f, 0.5f, 0.5f); | 186 MockBrowserControlsOffsetManagerClient client(100.f, 0.5f, 0.5f); |
| 188 TopControlsManager* manager = client.manager(); | 187 BrowserControlsOffsetManager* manager = client.manager(); |
| 189 manager->ScrollBegin(); | 188 manager->ScrollBegin(); |
| 190 manager->ScrollBy(gfx::Vector2dF(0.f, 300.f)); | 189 manager->ScrollBy(gfx::Vector2dF(0.f, 300.f)); |
| 191 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset()); | 190 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset()); |
| 192 EXPECT_FLOAT_EQ(0.f, manager->ContentTopOffset()); | 191 EXPECT_FLOAT_EQ(0.f, manager->ContentTopOffset()); |
| 193 manager->ScrollEnd(); | 192 manager->ScrollEnd(); |
| 194 | 193 |
| 195 manager->ScrollBegin(); | 194 manager->ScrollBegin(); |
| 196 manager->ScrollBy(gfx::Vector2dF(0.f, -70.f)); | 195 manager->ScrollBy(gfx::Vector2dF(0.f, -70.f)); |
| 197 EXPECT_FLOAT_EQ(-30.f, manager->ControlsTopOffset()); | 196 EXPECT_FLOAT_EQ(-30.f, manager->ControlsTopOffset()); |
| 198 EXPECT_FLOAT_EQ(70.f, manager->ContentTopOffset()); | 197 EXPECT_FLOAT_EQ(70.f, manager->ContentTopOffset()); |
| 199 manager->ScrollEnd(); | 198 manager->ScrollEnd(); |
| 200 | 199 |
| 201 EXPECT_TRUE(manager->has_animation()); | 200 EXPECT_TRUE(manager->has_animation()); |
| 202 | 201 |
| 203 base::TimeTicks time = base::TimeTicks::Now(); | 202 base::TimeTicks time = base::TimeTicks::Now(); |
| 204 float previous; | 203 float previous; |
| 205 while (manager->has_animation()) { | 204 while (manager->has_animation()) { |
| 206 previous = manager->TopControlsShownRatio(); | 205 previous = manager->TopControlsShownRatio(); |
| 207 time = base::TimeDelta::FromMicroseconds(100) + time; | 206 time = base::TimeDelta::FromMicroseconds(100) + time; |
| 208 manager->Animate(time); | 207 manager->Animate(time); |
| 209 EXPECT_GT(manager->TopControlsShownRatio(), previous); | 208 EXPECT_GT(manager->TopControlsShownRatio(), previous); |
| 210 } | 209 } |
| 211 EXPECT_FALSE(manager->has_animation()); | 210 EXPECT_FALSE(manager->has_animation()); |
| 212 EXPECT_FLOAT_EQ(0.f, manager->ControlsTopOffset()); | 211 EXPECT_FLOAT_EQ(0.f, manager->ControlsTopOffset()); |
| 213 EXPECT_FLOAT_EQ(100.f, manager->ContentTopOffset()); | 212 EXPECT_FLOAT_EQ(100.f, manager->ContentTopOffset()); |
| 214 } | 213 } |
| 215 | 214 |
| 216 TEST(TopControlsManagerTest, PartialHiddenWithAmbiguousThresholdShows) { | 215 TEST(BrowserControlsOffsetManagerTest, |
| 217 MockTopControlsManagerClient client(100.f, 0.25f, 0.25f); | 216 PartialHiddenWithAmbiguousThresholdShows) { |
| 218 TopControlsManager* manager = client.manager(); | 217 MockBrowserControlsOffsetManagerClient client(100.f, 0.25f, 0.25f); |
| 218 BrowserControlsOffsetManager* manager = client.manager(); |
| 219 | 219 |
| 220 manager->ScrollBegin(); | 220 manager->ScrollBegin(); |
| 221 | 221 |
| 222 manager->ScrollBy(gfx::Vector2dF(0.f, 20.f)); | 222 manager->ScrollBy(gfx::Vector2dF(0.f, 20.f)); |
| 223 EXPECT_FLOAT_EQ(-20.f, manager->ControlsTopOffset()); | 223 EXPECT_FLOAT_EQ(-20.f, manager->ControlsTopOffset()); |
| 224 EXPECT_FLOAT_EQ(80.f, manager->ContentTopOffset()); | 224 EXPECT_FLOAT_EQ(80.f, manager->ContentTopOffset()); |
| 225 | 225 |
| 226 manager->ScrollEnd(); | 226 manager->ScrollEnd(); |
| 227 EXPECT_TRUE(manager->has_animation()); | 227 EXPECT_TRUE(manager->has_animation()); |
| 228 | 228 |
| 229 base::TimeTicks time = base::TimeTicks::Now(); | 229 base::TimeTicks time = base::TimeTicks::Now(); |
| 230 float previous; | 230 float previous; |
| 231 while (manager->has_animation()) { | 231 while (manager->has_animation()) { |
| 232 previous = manager->TopControlsShownRatio(); | 232 previous = manager->TopControlsShownRatio(); |
| 233 time = base::TimeDelta::FromMicroseconds(100) + time; | 233 time = base::TimeDelta::FromMicroseconds(100) + time; |
| 234 manager->Animate(time); | 234 manager->Animate(time); |
| 235 EXPECT_GT(manager->TopControlsShownRatio(), previous); | 235 EXPECT_GT(manager->TopControlsShownRatio(), previous); |
| 236 } | 236 } |
| 237 EXPECT_FALSE(manager->has_animation()); | 237 EXPECT_FALSE(manager->has_animation()); |
| 238 EXPECT_FLOAT_EQ(0.f, manager->ControlsTopOffset()); | 238 EXPECT_FLOAT_EQ(0.f, manager->ControlsTopOffset()); |
| 239 EXPECT_FLOAT_EQ(100.f, manager->ContentTopOffset()); | 239 EXPECT_FLOAT_EQ(100.f, manager->ContentTopOffset()); |
| 240 } | 240 } |
| 241 | 241 |
| 242 TEST(TopControlsManagerTest, PartialHiddenWithAmbiguousThresholdHides) { | 242 TEST(BrowserControlsOffsetManagerTest, |
| 243 MockTopControlsManagerClient client(100.f, 0.25f, 0.25f); | 243 PartialHiddenWithAmbiguousThresholdHides) { |
| 244 TopControlsManager* manager = client.manager(); | 244 MockBrowserControlsOffsetManagerClient client(100.f, 0.25f, 0.25f); |
| 245 BrowserControlsOffsetManager* manager = client.manager(); |
| 245 | 246 |
| 246 manager->ScrollBegin(); | 247 manager->ScrollBegin(); |
| 247 | 248 |
| 248 manager->ScrollBy(gfx::Vector2dF(0.f, 30.f)); | 249 manager->ScrollBy(gfx::Vector2dF(0.f, 30.f)); |
| 249 EXPECT_FLOAT_EQ(-30.f, manager->ControlsTopOffset()); | 250 EXPECT_FLOAT_EQ(-30.f, manager->ControlsTopOffset()); |
| 250 EXPECT_FLOAT_EQ(70.f, manager->ContentTopOffset()); | 251 EXPECT_FLOAT_EQ(70.f, manager->ContentTopOffset()); |
| 251 | 252 |
| 252 manager->ScrollEnd(); | 253 manager->ScrollEnd(); |
| 253 EXPECT_TRUE(manager->has_animation()); | 254 EXPECT_TRUE(manager->has_animation()); |
| 254 | 255 |
| 255 base::TimeTicks time = base::TimeTicks::Now(); | 256 base::TimeTicks time = base::TimeTicks::Now(); |
| 256 float previous; | 257 float previous; |
| 257 while (manager->has_animation()) { | 258 while (manager->has_animation()) { |
| 258 previous = manager->TopControlsShownRatio(); | 259 previous = manager->TopControlsShownRatio(); |
| 259 time = base::TimeDelta::FromMicroseconds(100) + time; | 260 time = base::TimeDelta::FromMicroseconds(100) + time; |
| 260 manager->Animate(time); | 261 manager->Animate(time); |
| 261 EXPECT_LT(manager->TopControlsShownRatio(), previous); | 262 EXPECT_LT(manager->TopControlsShownRatio(), previous); |
| 262 } | 263 } |
| 263 EXPECT_FALSE(manager->has_animation()); | 264 EXPECT_FALSE(manager->has_animation()); |
| 264 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset()); | 265 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset()); |
| 265 EXPECT_FLOAT_EQ(0.f, manager->ContentTopOffset()); | 266 EXPECT_FLOAT_EQ(0.f, manager->ContentTopOffset()); |
| 266 } | 267 } |
| 267 | 268 |
| 268 TEST(TopControlsManagerTest, PartialShownWithAmbiguousThresholdHides) { | 269 TEST(BrowserControlsOffsetManagerTest, |
| 269 MockTopControlsManagerClient client(100.f, 0.25f, 0.25f); | 270 PartialShownWithAmbiguousThresholdHides) { |
| 270 TopControlsManager* manager = client.manager(); | 271 MockBrowserControlsOffsetManagerClient client(100.f, 0.25f, 0.25f); |
| 272 BrowserControlsOffsetManager* manager = client.manager(); |
| 271 | 273 |
| 272 manager->ScrollBy(gfx::Vector2dF(0.f, 200.f)); | 274 manager->ScrollBy(gfx::Vector2dF(0.f, 200.f)); |
| 273 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset()); | 275 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset()); |
| 274 EXPECT_FLOAT_EQ(0.f, manager->ContentTopOffset()); | 276 EXPECT_FLOAT_EQ(0.f, manager->ContentTopOffset()); |
| 275 | 277 |
| 276 manager->ScrollBegin(); | 278 manager->ScrollBegin(); |
| 277 | 279 |
| 278 manager->ScrollBy(gfx::Vector2dF(0.f, -20.f)); | 280 manager->ScrollBy(gfx::Vector2dF(0.f, -20.f)); |
| 279 EXPECT_FLOAT_EQ(-80.f, manager->ControlsTopOffset()); | 281 EXPECT_FLOAT_EQ(-80.f, manager->ControlsTopOffset()); |
| 280 EXPECT_FLOAT_EQ(20.f, manager->ContentTopOffset()); | 282 EXPECT_FLOAT_EQ(20.f, manager->ContentTopOffset()); |
| 281 | 283 |
| 282 manager->ScrollEnd(); | 284 manager->ScrollEnd(); |
| 283 EXPECT_TRUE(manager->has_animation()); | 285 EXPECT_TRUE(manager->has_animation()); |
| 284 | 286 |
| 285 base::TimeTicks time = base::TimeTicks::Now(); | 287 base::TimeTicks time = base::TimeTicks::Now(); |
| 286 float previous; | 288 float previous; |
| 287 while (manager->has_animation()) { | 289 while (manager->has_animation()) { |
| 288 previous = manager->TopControlsShownRatio(); | 290 previous = manager->TopControlsShownRatio(); |
| 289 time = base::TimeDelta::FromMicroseconds(100) + time; | 291 time = base::TimeDelta::FromMicroseconds(100) + time; |
| 290 manager->Animate(time); | 292 manager->Animate(time); |
| 291 EXPECT_LT(manager->TopControlsShownRatio(), previous); | 293 EXPECT_LT(manager->TopControlsShownRatio(), previous); |
| 292 } | 294 } |
| 293 EXPECT_FALSE(manager->has_animation()); | 295 EXPECT_FALSE(manager->has_animation()); |
| 294 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset()); | 296 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset()); |
| 295 EXPECT_FLOAT_EQ(0.f, manager->ContentTopOffset()); | 297 EXPECT_FLOAT_EQ(0.f, manager->ContentTopOffset()); |
| 296 } | 298 } |
| 297 | 299 |
| 298 TEST(TopControlsManagerTest, PartialShownWithAmbiguousThresholdShows) { | 300 TEST(BrowserControlsOffsetManagerTest, |
| 299 MockTopControlsManagerClient client(100.f, 0.25f, 0.25f); | 301 PartialShownWithAmbiguousThresholdShows) { |
| 300 TopControlsManager* manager = client.manager(); | 302 MockBrowserControlsOffsetManagerClient client(100.f, 0.25f, 0.25f); |
| 303 BrowserControlsOffsetManager* manager = client.manager(); |
| 301 | 304 |
| 302 manager->ScrollBy(gfx::Vector2dF(0.f, 200.f)); | 305 manager->ScrollBy(gfx::Vector2dF(0.f, 200.f)); |
| 303 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset()); | 306 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset()); |
| 304 EXPECT_FLOAT_EQ(0.f, manager->ContentTopOffset()); | 307 EXPECT_FLOAT_EQ(0.f, manager->ContentTopOffset()); |
| 305 | 308 |
| 306 manager->ScrollBegin(); | 309 manager->ScrollBegin(); |
| 307 | 310 |
| 308 manager->ScrollBy(gfx::Vector2dF(0.f, -30.f)); | 311 manager->ScrollBy(gfx::Vector2dF(0.f, -30.f)); |
| 309 EXPECT_FLOAT_EQ(-70.f, manager->ControlsTopOffset()); | 312 EXPECT_FLOAT_EQ(-70.f, manager->ControlsTopOffset()); |
| 310 EXPECT_FLOAT_EQ(30.f, manager->ContentTopOffset()); | 313 EXPECT_FLOAT_EQ(30.f, manager->ContentTopOffset()); |
| 311 | 314 |
| 312 manager->ScrollEnd(); | 315 manager->ScrollEnd(); |
| 313 EXPECT_TRUE(manager->has_animation()); | 316 EXPECT_TRUE(manager->has_animation()); |
| 314 | 317 |
| 315 base::TimeTicks time = base::TimeTicks::Now(); | 318 base::TimeTicks time = base::TimeTicks::Now(); |
| 316 float previous; | 319 float previous; |
| 317 while (manager->has_animation()) { | 320 while (manager->has_animation()) { |
| 318 previous = manager->TopControlsShownRatio(); | 321 previous = manager->TopControlsShownRatio(); |
| 319 time = base::TimeDelta::FromMicroseconds(100) + time; | 322 time = base::TimeDelta::FromMicroseconds(100) + time; |
| 320 manager->Animate(time); | 323 manager->Animate(time); |
| 321 EXPECT_GT(manager->TopControlsShownRatio(), previous); | 324 EXPECT_GT(manager->TopControlsShownRatio(), previous); |
| 322 } | 325 } |
| 323 EXPECT_FALSE(manager->has_animation()); | 326 EXPECT_FALSE(manager->has_animation()); |
| 324 EXPECT_FLOAT_EQ(0.f, manager->ControlsTopOffset()); | 327 EXPECT_FLOAT_EQ(0.f, manager->ControlsTopOffset()); |
| 325 EXPECT_FLOAT_EQ(100.f, manager->ContentTopOffset()); | 328 EXPECT_FLOAT_EQ(100.f, manager->ContentTopOffset()); |
| 326 } | 329 } |
| 327 | 330 |
| 328 TEST(TopControlsManagerTest, PinchIgnoresScroll) { | 331 TEST(BrowserControlsOffsetManagerTest, PinchIgnoresScroll) { |
| 329 MockTopControlsManagerClient client(100.f, 0.5f, 0.5f); | 332 MockBrowserControlsOffsetManagerClient client(100.f, 0.5f, 0.5f); |
| 330 TopControlsManager* manager = client.manager(); | 333 BrowserControlsOffsetManager* manager = client.manager(); |
| 331 | 334 |
| 332 // Hide the controls. | 335 // Hide the controls. |
| 333 manager->ScrollBegin(); | 336 manager->ScrollBegin(); |
| 334 EXPECT_FLOAT_EQ(0.f, manager->ControlsTopOffset()); | 337 EXPECT_FLOAT_EQ(0.f, manager->ControlsTopOffset()); |
| 335 | 338 |
| 336 manager->ScrollBy(gfx::Vector2dF(0.f, 300.f)); | 339 manager->ScrollBy(gfx::Vector2dF(0.f, 300.f)); |
| 337 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset()); | 340 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset()); |
| 338 | 341 |
| 339 manager->PinchBegin(); | 342 manager->PinchBegin(); |
| 340 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset()); | 343 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset()); |
| 341 | 344 |
| 342 // Scrolls are ignored during pinch. | 345 // Scrolls are ignored during pinch. |
| 343 manager->ScrollBy(gfx::Vector2dF(0.f, -15.f)); | 346 manager->ScrollBy(gfx::Vector2dF(0.f, -15.f)); |
| 344 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset()); | 347 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset()); |
| 345 manager->PinchEnd(); | 348 manager->PinchEnd(); |
| 346 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset()); | 349 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset()); |
| 347 | 350 |
| 348 // Scrolls should no long be ignored. | 351 // Scrolls should no long be ignored. |
| 349 manager->ScrollBy(gfx::Vector2dF(0.f, -15.f)); | 352 manager->ScrollBy(gfx::Vector2dF(0.f, -15.f)); |
| 350 EXPECT_FLOAT_EQ(-85.f, manager->ControlsTopOffset()); | 353 EXPECT_FLOAT_EQ(-85.f, manager->ControlsTopOffset()); |
| 351 EXPECT_FLOAT_EQ(15.f, manager->ContentTopOffset()); | 354 EXPECT_FLOAT_EQ(15.f, manager->ContentTopOffset()); |
| 352 manager->ScrollEnd(); | 355 manager->ScrollEnd(); |
| 353 | 356 |
| 354 EXPECT_TRUE(manager->has_animation()); | 357 EXPECT_TRUE(manager->has_animation()); |
| 355 } | 358 } |
| 356 | 359 |
| 357 TEST(TopControlsManagerTest, PinchBeginStartsAnimationIfNecessary) { | 360 TEST(BrowserControlsOffsetManagerTest, PinchBeginStartsAnimationIfNecessary) { |
| 358 MockTopControlsManagerClient client(100.f, 0.5f, 0.5f); | 361 MockBrowserControlsOffsetManagerClient client(100.f, 0.5f, 0.5f); |
| 359 TopControlsManager* manager = client.manager(); | 362 BrowserControlsOffsetManager* manager = client.manager(); |
| 360 | 363 |
| 361 manager->ScrollBegin(); | 364 manager->ScrollBegin(); |
| 362 manager->ScrollBy(gfx::Vector2dF(0.f, 300.f)); | 365 manager->ScrollBy(gfx::Vector2dF(0.f, 300.f)); |
| 363 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset()); | 366 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset()); |
| 364 | 367 |
| 365 manager->PinchBegin(); | 368 manager->PinchBegin(); |
| 366 EXPECT_FALSE(manager->has_animation()); | 369 EXPECT_FALSE(manager->has_animation()); |
| 367 | 370 |
| 368 manager->PinchEnd(); | 371 manager->PinchEnd(); |
| 369 EXPECT_FALSE(manager->has_animation()); | 372 EXPECT_FALSE(manager->has_animation()); |
| (...skipping 30 matching lines...) Expand all Loading... |
| 400 while (manager->has_animation()) { | 403 while (manager->has_animation()) { |
| 401 previous = manager->TopControlsShownRatio(); | 404 previous = manager->TopControlsShownRatio(); |
| 402 time = base::TimeDelta::FromMicroseconds(100) + time; | 405 time = base::TimeDelta::FromMicroseconds(100) + time; |
| 403 manager->Animate(time); | 406 manager->Animate(time); |
| 404 EXPECT_GT(manager->TopControlsShownRatio(), previous); | 407 EXPECT_GT(manager->TopControlsShownRatio(), previous); |
| 405 } | 408 } |
| 406 EXPECT_FALSE(manager->has_animation()); | 409 EXPECT_FALSE(manager->has_animation()); |
| 407 EXPECT_FLOAT_EQ(0.f, manager->ControlsTopOffset()); | 410 EXPECT_FLOAT_EQ(0.f, manager->ControlsTopOffset()); |
| 408 } | 411 } |
| 409 | 412 |
| 410 TEST(TopControlsManagerTest, HeightChangeMaintainsFullyVisibleControls) { | 413 TEST(BrowserControlsOffsetManagerTest, |
| 411 MockTopControlsManagerClient client(0.f, 0.5f, 0.5f); | 414 HeightChangeMaintainsFullyVisibleControls) { |
| 412 TopControlsManager* manager = client.manager(); | 415 MockBrowserControlsOffsetManagerClient client(0.f, 0.5f, 0.5f); |
| 416 BrowserControlsOffsetManager* manager = client.manager(); |
| 413 | 417 |
| 414 EXPECT_FLOAT_EQ(0.f, manager->ControlsTopOffset()); | 418 EXPECT_FLOAT_EQ(0.f, manager->ControlsTopOffset()); |
| 415 | 419 |
| 416 client.SetTopControlsHeight(100.f); | 420 client.SetBrowserControlsHeight(100.f); |
| 417 EXPECT_FALSE(manager->has_animation()); | 421 EXPECT_FALSE(manager->has_animation()); |
| 418 EXPECT_FLOAT_EQ(100.f, manager->TopControlsHeight()); | 422 EXPECT_FLOAT_EQ(100.f, manager->TopControlsHeight()); |
| 419 EXPECT_FLOAT_EQ(0, manager->ControlsTopOffset()); | 423 EXPECT_FLOAT_EQ(0, manager->ControlsTopOffset()); |
| 420 | 424 |
| 421 client.SetTopControlsHeight(50.f); | 425 client.SetBrowserControlsHeight(50.f); |
| 422 EXPECT_FALSE(manager->has_animation()); | 426 EXPECT_FALSE(manager->has_animation()); |
| 423 EXPECT_FLOAT_EQ(50.f, manager->TopControlsHeight()); | 427 EXPECT_FLOAT_EQ(50.f, manager->TopControlsHeight()); |
| 424 EXPECT_FLOAT_EQ(0.f, manager->ControlsTopOffset()); | 428 EXPECT_FLOAT_EQ(0.f, manager->ControlsTopOffset()); |
| 425 } | 429 } |
| 426 | 430 |
| 427 TEST(TopControlsManagerTest, GrowingHeightKeepsTopControlsHidden) { | 431 TEST(BrowserControlsOffsetManagerTest, |
| 428 MockTopControlsManagerClient client(0.f, 0.5f, 0.5f); | 432 GrowingHeightKeepsBrowserControlsHidden) { |
| 429 TopControlsManager* manager = client.manager(); | 433 MockBrowserControlsOffsetManagerClient client(0.f, 0.5f, 0.5f); |
| 430 client.SetTopControlsHeight(1.f); | 434 BrowserControlsOffsetManager* manager = client.manager(); |
| 431 manager->UpdateTopControlsState(HIDDEN, HIDDEN, false); | 435 client.SetBrowserControlsHeight(1.f); |
| 436 manager->UpdateBrowserControlsState(HIDDEN, HIDDEN, false); |
| 432 EXPECT_EQ(-1.f, manager->ControlsTopOffset()); | 437 EXPECT_EQ(-1.f, manager->ControlsTopOffset()); |
| 433 EXPECT_EQ(0.f, manager->ContentTopOffset()); | 438 EXPECT_EQ(0.f, manager->ContentTopOffset()); |
| 434 | 439 |
| 435 client.SetTopControlsHeight(50.f); | 440 client.SetBrowserControlsHeight(50.f); |
| 436 EXPECT_FALSE(manager->has_animation()); | 441 EXPECT_FALSE(manager->has_animation()); |
| 437 EXPECT_EQ(-50.f, manager->ControlsTopOffset()); | 442 EXPECT_EQ(-50.f, manager->ControlsTopOffset()); |
| 438 EXPECT_EQ(0.f, manager->ContentTopOffset()); | 443 EXPECT_EQ(0.f, manager->ContentTopOffset()); |
| 439 | 444 |
| 440 client.SetTopControlsHeight(100.f); | 445 client.SetBrowserControlsHeight(100.f); |
| 441 EXPECT_FALSE(manager->has_animation()); | 446 EXPECT_FALSE(manager->has_animation()); |
| 442 EXPECT_EQ(-100.f, manager->ControlsTopOffset()); | 447 EXPECT_EQ(-100.f, manager->ControlsTopOffset()); |
| 443 EXPECT_EQ(0.f, manager->ContentTopOffset()); | 448 EXPECT_EQ(0.f, manager->ContentTopOffset()); |
| 444 } | 449 } |
| 445 | 450 |
| 446 TEST(TopControlsManagerTest, ShrinkingHeightKeepsTopControlsHidden) { | 451 TEST(BrowserControlsOffsetManagerTest, |
| 447 MockTopControlsManagerClient client(100.f, 0.5f, 0.5f); | 452 ShrinkingHeightKeepsBrowserControlsHidden) { |
| 448 TopControlsManager* manager = client.manager(); | 453 MockBrowserControlsOffsetManagerClient client(100.f, 0.5f, 0.5f); |
| 454 BrowserControlsOffsetManager* manager = client.manager(); |
| 449 | 455 |
| 450 manager->ScrollBegin(); | 456 manager->ScrollBegin(); |
| 451 manager->ScrollBy(gfx::Vector2dF(0.f, 300.f)); | 457 manager->ScrollBy(gfx::Vector2dF(0.f, 300.f)); |
| 452 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset()); | 458 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset()); |
| 453 EXPECT_FLOAT_EQ(0.f, manager->ContentTopOffset()); | 459 EXPECT_FLOAT_EQ(0.f, manager->ContentTopOffset()); |
| 454 manager->ScrollEnd(); | 460 manager->ScrollEnd(); |
| 455 | 461 |
| 456 client.SetTopControlsHeight(50.f); | 462 client.SetBrowserControlsHeight(50.f); |
| 457 EXPECT_FALSE(manager->has_animation()); | 463 EXPECT_FALSE(manager->has_animation()); |
| 458 EXPECT_FLOAT_EQ(-50.f, manager->ControlsTopOffset()); | 464 EXPECT_FLOAT_EQ(-50.f, manager->ControlsTopOffset()); |
| 459 EXPECT_FLOAT_EQ(0.f, manager->ContentTopOffset()); | 465 EXPECT_FLOAT_EQ(0.f, manager->ContentTopOffset()); |
| 460 | 466 |
| 461 client.SetTopControlsHeight(0.f); | 467 client.SetBrowserControlsHeight(0.f); |
| 462 EXPECT_FALSE(manager->has_animation()); | 468 EXPECT_FALSE(manager->has_animation()); |
| 463 EXPECT_FLOAT_EQ(0.f, manager->ControlsTopOffset()); | 469 EXPECT_FLOAT_EQ(0.f, manager->ControlsTopOffset()); |
| 464 EXPECT_FLOAT_EQ(0.f, manager->ContentTopOffset()); | 470 EXPECT_FLOAT_EQ(0.f, manager->ContentTopOffset()); |
| 465 } | 471 } |
| 466 | 472 |
| 467 TEST(TopControlsManagerTest, ScrollByWithZeroHeightControlsIsNoop) { | 473 TEST(BrowserControlsOffsetManagerTest, ScrollByWithZeroHeightControlsIsNoop) { |
| 468 MockTopControlsManagerClient client(0.f, 0.5f, 0.5f); | 474 MockBrowserControlsOffsetManagerClient client(0.f, 0.5f, 0.5f); |
| 469 TopControlsManager* manager = client.manager(); | 475 BrowserControlsOffsetManager* manager = client.manager(); |
| 470 manager->UpdateTopControlsState(BOTH, BOTH, false); | 476 manager->UpdateBrowserControlsState(BOTH, BOTH, false); |
| 471 | 477 |
| 472 manager->ScrollBegin(); | 478 manager->ScrollBegin(); |
| 473 gfx::Vector2dF pending = manager->ScrollBy(gfx::Vector2dF(0.f, 20.f)); | 479 gfx::Vector2dF pending = manager->ScrollBy(gfx::Vector2dF(0.f, 20.f)); |
| 474 EXPECT_FLOAT_EQ(20.f, pending.y()); | 480 EXPECT_FLOAT_EQ(20.f, pending.y()); |
| 475 EXPECT_FLOAT_EQ(0.f, manager->ControlsTopOffset()); | 481 EXPECT_FLOAT_EQ(0.f, manager->ControlsTopOffset()); |
| 476 EXPECT_FLOAT_EQ(0.f, manager->ContentTopOffset()); | 482 EXPECT_FLOAT_EQ(0.f, manager->ContentTopOffset()); |
| 477 EXPECT_FLOAT_EQ(1.f, client.CurrentTopControlsShownRatio()); | 483 EXPECT_FLOAT_EQ(1.f, client.CurrentBrowserControlsShownRatio()); |
| 478 manager->ScrollEnd(); | 484 manager->ScrollEnd(); |
| 479 } | 485 } |
| 480 | 486 |
| 481 TEST(TopControlsManagerTest, ScrollThenRestoreBottomControls) { | 487 TEST(BrowserControlsOffsetManagerTest, ScrollThenRestoreBottomControls) { |
| 482 MockTopControlsManagerClient client(100.f, 0.5f, 0.5f); | 488 MockBrowserControlsOffsetManagerClient client(100.f, 0.5f, 0.5f); |
| 483 client.SetBottomControlsHeight(100.f); | 489 client.SetBottomControlsHeight(100.f); |
| 484 TopControlsManager* manager = client.manager(); | 490 BrowserControlsOffsetManager* manager = client.manager(); |
| 485 manager->ScrollBegin(); | 491 manager->ScrollBegin(); |
| 486 manager->ScrollBy(gfx::Vector2dF(0.f, 20.f)); | 492 manager->ScrollBy(gfx::Vector2dF(0.f, 20.f)); |
| 487 EXPECT_FLOAT_EQ(80.f, manager->ContentBottomOffset()); | 493 EXPECT_FLOAT_EQ(80.f, manager->ContentBottomOffset()); |
| 494 EXPECT_FLOAT_EQ(0.8f, manager->BottomControlsShownRatio()); |
| 495 manager->ScrollEnd(); |
| 496 |
| 497 manager->ScrollBegin(); |
| 498 manager->ScrollBy(gfx::Vector2dF(0.f, -200.f)); |
| 499 EXPECT_FLOAT_EQ(100.f, manager->ContentBottomOffset()); |
| 500 EXPECT_FLOAT_EQ(1.f, manager->BottomControlsShownRatio()); |
| 501 manager->ScrollEnd(); |
| 502 } |
| 503 |
| 504 TEST(BrowserControlsOffsetManagerTest, |
| 505 ScrollThenRestoreBottomControlsNoBrowserControls) { |
| 506 MockBrowserControlsOffsetManagerClient client(0.f, 0.5f, 0.5f); |
| 507 client.SetBottomControlsHeight(100.f); |
| 508 BrowserControlsOffsetManager* manager = client.manager(); |
| 509 manager->ScrollBegin(); |
| 510 manager->ScrollBy(gfx::Vector2dF(0.f, 20.f)); |
| 511 EXPECT_FLOAT_EQ(80.f, manager->ContentBottomOffset()); |
| 488 EXPECT_FLOAT_EQ(0.8f, manager->BottomControlsShownRatio()); | 512 EXPECT_FLOAT_EQ(0.8f, manager->BottomControlsShownRatio()); |
| 489 manager->ScrollEnd(); | 513 manager->ScrollEnd(); |
| 490 | 514 |
| 491 manager->ScrollBegin(); | 515 manager->ScrollBegin(); |
| 492 manager->ScrollBy(gfx::Vector2dF(0.f, -200.f)); | 516 manager->ScrollBy(gfx::Vector2dF(0.f, -200.f)); |
| 493 EXPECT_FLOAT_EQ(100.f, manager->ContentBottomOffset()); | 517 EXPECT_FLOAT_EQ(100.f, manager->ContentBottomOffset()); |
| 494 EXPECT_FLOAT_EQ(1.f, manager->BottomControlsShownRatio()); | 518 EXPECT_FLOAT_EQ(1.f, manager->BottomControlsShownRatio()); |
| 495 manager->ScrollEnd(); | 519 manager->ScrollEnd(); |
| 496 } | 520 } |
| 497 | 521 |
| 498 TEST(TopControlsManagerTest, HideAndPeekBottomControls) { | 522 TEST(BrowserControlsOffsetManagerTest, HideAndPeekBottomControls) { |
| 499 MockTopControlsManagerClient client(100.f, 0.5f, 0.5f); | 523 MockBrowserControlsOffsetManagerClient client(100.f, 0.5f, 0.5f); |
| 500 client.SetBottomControlsHeight(100.f); | 524 client.SetBottomControlsHeight(100.f); |
| 501 TopControlsManager* manager = client.manager(); | 525 BrowserControlsOffsetManager* manager = client.manager(); |
| 502 manager->ScrollBegin(); | 526 manager->ScrollBegin(); |
| 503 manager->ScrollBy(gfx::Vector2dF(0.f, 300.f)); | 527 manager->ScrollBy(gfx::Vector2dF(0.f, 300.f)); |
| 504 EXPECT_FLOAT_EQ(0.f, manager->ContentBottomOffset()); | 528 EXPECT_FLOAT_EQ(0.f, manager->ContentBottomOffset()); |
| 505 EXPECT_FLOAT_EQ(0.f, manager->BottomControlsShownRatio()); | 529 EXPECT_FLOAT_EQ(0.f, manager->BottomControlsShownRatio()); |
| 506 manager->ScrollEnd(); | 530 manager->ScrollEnd(); |
| 507 | 531 |
| 508 manager->ScrollBegin(); | 532 manager->ScrollBegin(); |
| 509 manager->ScrollBy(gfx::Vector2dF(0.f, -15.f)); | 533 manager->ScrollBy(gfx::Vector2dF(0.f, -15.f)); |
| 510 EXPECT_FLOAT_EQ(15.f, manager->ContentBottomOffset()); | 534 EXPECT_FLOAT_EQ(15.f, manager->ContentBottomOffset()); |
| 511 EXPECT_FLOAT_EQ(0.15f, manager->BottomControlsShownRatio()); | 535 EXPECT_FLOAT_EQ(0.15f, manager->BottomControlsShownRatio()); |
| 512 manager->ScrollEnd(); | 536 manager->ScrollEnd(); |
| 513 } | 537 } |
| 514 | 538 |
| 515 TEST(TopControlsManagerTest, HideAndImmediateShowKeepsControlsVisible) { | 539 TEST(BrowserControlsOffsetManagerTest, |
| 516 MockTopControlsManagerClient client(100.f, 0.5f, 0.5f); | 540 HideAndImmediateShowKeepsControlsVisible) { |
| 541 MockBrowserControlsOffsetManagerClient client(100.f, 0.5f, 0.5f); |
| 517 client.SetBottomControlsHeight(100.f); | 542 client.SetBottomControlsHeight(100.f); |
| 518 TopControlsManager* manager = client.manager(); | 543 BrowserControlsOffsetManager* manager = client.manager(); |
| 519 EXPECT_FLOAT_EQ(1.f, client.CurrentTopControlsShownRatio()); | 544 EXPECT_FLOAT_EQ(1.f, client.CurrentBrowserControlsShownRatio()); |
| 520 | 545 |
| 521 manager->UpdateTopControlsState(BOTH, HIDDEN, true); | 546 manager->UpdateBrowserControlsState(BOTH, HIDDEN, true); |
| 522 EXPECT_TRUE(manager->has_animation()); | 547 EXPECT_TRUE(manager->has_animation()); |
| 523 EXPECT_FLOAT_EQ(1.f, client.CurrentTopControlsShownRatio()); | 548 EXPECT_FLOAT_EQ(1.f, client.CurrentBrowserControlsShownRatio()); |
| 524 | 549 |
| 525 manager->UpdateTopControlsState(BOTH, SHOWN, true); | 550 manager->UpdateBrowserControlsState(BOTH, SHOWN, true); |
| 526 EXPECT_FALSE(manager->has_animation()); | 551 EXPECT_FALSE(manager->has_animation()); |
| 527 EXPECT_FLOAT_EQ(1.f, client.CurrentTopControlsShownRatio()); | 552 EXPECT_FLOAT_EQ(1.f, client.CurrentBrowserControlsShownRatio()); |
| 528 } | 553 } |
| 529 | 554 |
| 530 } // namespace | 555 } // namespace |
| 531 } // namespace cc | 556 } // namespace cc |
| OLD | NEW |