| 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/top_controls_manager.h" |
| 6 | 6 |
| 7 #include "base/memory/scoped_ptr.h" | 7 #include "base/memory/scoped_ptr.h" |
| 8 #include "base/time/time.h" | 8 #include "base/time/time.h" |
| 9 #include "cc/input/top_controls_manager_client.h" | 9 #include "cc/input/top_controls_manager_client.h" |
| 10 #include "cc/layers/layer_impl.h" | 10 #include "cc/layers/layer_impl.h" |
| (...skipping 10 matching lines...) Expand all Loading... |
| 21 | 21 |
| 22 static const float kTopControlsHeight = 100; | 22 static const float kTopControlsHeight = 100; |
| 23 | 23 |
| 24 class MockTopControlsManagerClient : public TopControlsManagerClient { | 24 class MockTopControlsManagerClient : public TopControlsManagerClient { |
| 25 public: | 25 public: |
| 26 MockTopControlsManagerClient(float top_controls_show_threshold, | 26 MockTopControlsManagerClient(float top_controls_show_threshold, |
| 27 float top_controls_hide_threshold) | 27 float top_controls_hide_threshold) |
| 28 : host_impl_(&proxy_, &shared_bitmap_manager_), | 28 : host_impl_(&proxy_, &shared_bitmap_manager_), |
| 29 redraw_needed_(false), | 29 redraw_needed_(false), |
| 30 update_draw_properties_needed_(false), | 30 update_draw_properties_needed_(false), |
| 31 top_controls_top_offset_(0.f), |
| 31 top_controls_show_threshold_(top_controls_show_threshold), | 32 top_controls_show_threshold_(top_controls_show_threshold), |
| 32 top_controls_hide_threshold_(top_controls_hide_threshold) { | 33 top_controls_hide_threshold_(top_controls_hide_threshold) { |
| 33 active_tree_ = LayerTreeImpl::create(&host_impl_); | 34 active_tree_ = LayerTreeImpl::create(&host_impl_); |
| 34 root_scroll_layer_ = LayerImpl::Create(active_tree_.get(), 1); | 35 root_scroll_layer_ = LayerImpl::Create(active_tree_.get(), 1); |
| 35 } | 36 } |
| 36 | 37 |
| 37 virtual ~MockTopControlsManagerClient() {} | 38 virtual ~MockTopControlsManagerClient() {} |
| 38 | 39 |
| 39 virtual void DidChangeTopControlsPosition() OVERRIDE { | 40 virtual void DidChangeTopControlsPosition() OVERRIDE { |
| 40 redraw_needed_ = true; | 41 redraw_needed_ = true; |
| 41 update_draw_properties_needed_ = true; | 42 update_draw_properties_needed_ = true; |
| 42 } | 43 } |
| 43 | 44 |
| 44 virtual bool HaveRootScrollLayer() const OVERRIDE { | 45 virtual bool HaveRootScrollLayer() const OVERRIDE { |
| 45 return true; | 46 return true; |
| 46 } | 47 } |
| 47 | 48 |
| 49 virtual void SetControlsTopOffset(float offset) OVERRIDE { |
| 50 top_controls_top_offset_ = offset; |
| 51 } |
| 52 |
| 53 virtual float ControlsTopOffset() const OVERRIDE { |
| 54 return top_controls_top_offset_; |
| 55 } |
| 56 |
| 48 LayerImpl* rootScrollLayer() { | 57 LayerImpl* rootScrollLayer() { |
| 49 return root_scroll_layer_.get(); | 58 return root_scroll_layer_.get(); |
| 50 } | 59 } |
| 51 | 60 |
| 52 TopControlsManager* manager() { | 61 TopControlsManager* manager() { |
| 53 if (!manager_) { | 62 if (!manager_) { |
| 54 manager_ = TopControlsManager::Create(this, | 63 manager_ = TopControlsManager::Create(this, |
| 55 kTopControlsHeight, | 64 kTopControlsHeight, |
| 56 top_controls_show_threshold_, | 65 top_controls_show_threshold_, |
| 57 top_controls_hide_threshold_); | 66 top_controls_hide_threshold_); |
| 58 } | 67 } |
| 59 return manager_.get(); | 68 return manager_.get(); |
| 60 } | 69 } |
| 61 | 70 |
| 62 private: | 71 private: |
| 63 FakeImplProxy proxy_; | 72 FakeImplProxy proxy_; |
| 64 TestSharedBitmapManager shared_bitmap_manager_; | 73 TestSharedBitmapManager shared_bitmap_manager_; |
| 65 FakeLayerTreeHostImpl host_impl_; | 74 FakeLayerTreeHostImpl host_impl_; |
| 66 scoped_ptr<LayerTreeImpl> active_tree_; | 75 scoped_ptr<LayerTreeImpl> active_tree_; |
| 67 scoped_ptr<LayerImpl> root_scroll_layer_; | 76 scoped_ptr<LayerImpl> root_scroll_layer_; |
| 68 scoped_ptr<TopControlsManager> manager_; | 77 scoped_ptr<TopControlsManager> manager_; |
| 69 bool redraw_needed_; | 78 bool redraw_needed_; |
| 70 bool update_draw_properties_needed_; | 79 bool update_draw_properties_needed_; |
| 71 | 80 |
| 81 float top_controls_top_offset_; |
| 72 float top_controls_show_threshold_; | 82 float top_controls_show_threshold_; |
| 73 float top_controls_hide_threshold_; | 83 float top_controls_hide_threshold_; |
| 74 }; | 84 }; |
| 75 | 85 |
| 76 TEST(TopControlsManagerTest, EnsureScrollThresholdApplied) { | 86 TEST(TopControlsManagerTest, EnsureScrollThresholdApplied) { |
| 77 MockTopControlsManagerClient client(0.5f, 0.5f); | 87 MockTopControlsManagerClient client(0.5f, 0.5f); |
| 78 TopControlsManager* manager = client.manager(); | 88 TopControlsManager* manager = client.manager(); |
| 79 | 89 |
| 80 manager->ScrollBegin(); | 90 manager->ScrollBegin(); |
| 81 | 91 |
| 82 // Scroll down to hide the controls entirely. | 92 // Scroll down to hide the controls entirely. |
| 83 manager->ScrollBy(gfx::Vector2dF(0.f, 30.f)); | 93 manager->ScrollBy(gfx::Vector2dF(0.f, 30.f)); |
| 84 EXPECT_EQ(-30.f, manager->controls_top_offset()); | 94 EXPECT_EQ(-30.f, manager->ControlsTopOffset()); |
| 85 | 95 |
| 86 manager->ScrollBy(gfx::Vector2dF(0.f, 30.f)); | 96 manager->ScrollBy(gfx::Vector2dF(0.f, 30.f)); |
| 87 EXPECT_EQ(-60.f, manager->controls_top_offset()); | 97 EXPECT_EQ(-60.f, manager->ControlsTopOffset()); |
| 88 | 98 |
| 89 manager->ScrollBy(gfx::Vector2dF(0.f, 100.f)); | 99 manager->ScrollBy(gfx::Vector2dF(0.f, 100.f)); |
| 90 EXPECT_EQ(-100.f, manager->controls_top_offset()); | 100 EXPECT_EQ(-100.f, manager->ControlsTopOffset()); |
| 91 | 101 |
| 92 // Scroll back up a bit and ensure the controls don't move until we cross | 102 // Scroll back up a bit and ensure the controls don't move until we cross |
| 93 // the threshold. | 103 // the threshold. |
| 94 manager->ScrollBy(gfx::Vector2dF(0.f, -10.f)); | 104 manager->ScrollBy(gfx::Vector2dF(0.f, -10.f)); |
| 95 EXPECT_EQ(-100.f, manager->controls_top_offset()); | 105 EXPECT_EQ(-100.f, manager->ControlsTopOffset()); |
| 96 | 106 |
| 97 manager->ScrollBy(gfx::Vector2dF(0.f, -50.f)); | 107 manager->ScrollBy(gfx::Vector2dF(0.f, -50.f)); |
| 98 EXPECT_EQ(-100.f, manager->controls_top_offset()); | 108 EXPECT_EQ(-100.f, manager->ControlsTopOffset()); |
| 99 | 109 |
| 100 // After hitting the threshold, further scrolling up should result in the top | 110 // After hitting the threshold, further scrolling up should result in the top |
| 101 // controls showing. | 111 // controls showing. |
| 102 manager->ScrollBy(gfx::Vector2dF(0.f, -10.f)); | 112 manager->ScrollBy(gfx::Vector2dF(0.f, -10.f)); |
| 103 EXPECT_EQ(-90.f, manager->controls_top_offset()); | 113 EXPECT_EQ(-90.f, manager->ControlsTopOffset()); |
| 104 | 114 |
| 105 manager->ScrollBy(gfx::Vector2dF(0.f, -50.f)); | 115 manager->ScrollBy(gfx::Vector2dF(0.f, -50.f)); |
| 106 EXPECT_EQ(-40.f, manager->controls_top_offset()); | 116 EXPECT_EQ(-40.f, manager->ControlsTopOffset()); |
| 107 | 117 |
| 108 // Reset the scroll threshold by going further up the page than the initial | 118 // Reset the scroll threshold by going further up the page than the initial |
| 109 // threshold. | 119 // threshold. |
| 110 manager->ScrollBy(gfx::Vector2dF(0.f, -100.f)); | 120 manager->ScrollBy(gfx::Vector2dF(0.f, -100.f)); |
| 111 EXPECT_EQ(0.f, manager->controls_top_offset()); | 121 EXPECT_EQ(0.f, manager->ControlsTopOffset()); |
| 112 | 122 |
| 113 // See that scrolling down the page now will result in the controls hiding. | 123 // See that scrolling down the page now will result in the controls hiding. |
| 114 manager->ScrollBy(gfx::Vector2dF(0.f, 20.f)); | 124 manager->ScrollBy(gfx::Vector2dF(0.f, 20.f)); |
| 115 EXPECT_EQ(-20.f, manager->controls_top_offset()); | 125 EXPECT_EQ(-20.f, manager->ControlsTopOffset()); |
| 116 | 126 |
| 117 manager->ScrollEnd(); | 127 manager->ScrollEnd(); |
| 118 } | 128 } |
| 119 | 129 |
| 120 TEST(TopControlsManagerTest, PartialShownHideAnimation) { | 130 TEST(TopControlsManagerTest, PartialShownHideAnimation) { |
| 121 MockTopControlsManagerClient client(0.5f, 0.5f); | 131 MockTopControlsManagerClient client(0.5f, 0.5f); |
| 122 TopControlsManager* manager = client.manager(); | 132 TopControlsManager* manager = client.manager(); |
| 123 manager->ScrollBegin(); | 133 manager->ScrollBegin(); |
| 124 manager->ScrollBy(gfx::Vector2dF(0.f, 300.f)); | 134 manager->ScrollBy(gfx::Vector2dF(0.f, 300.f)); |
| 125 EXPECT_EQ(-100.f, manager->controls_top_offset()); | 135 EXPECT_EQ(-100.f, manager->ControlsTopOffset()); |
| 126 EXPECT_EQ(0.f, manager->content_top_offset()); | 136 EXPECT_EQ(0.f, manager->ContentTopOffset()); |
| 127 manager->ScrollEnd(); | 137 manager->ScrollEnd(); |
| 128 | 138 |
| 129 manager->ScrollBegin(); | 139 manager->ScrollBegin(); |
| 130 manager->ScrollBy(gfx::Vector2dF(0.f, -15.f)); | 140 manager->ScrollBy(gfx::Vector2dF(0.f, -15.f)); |
| 131 EXPECT_EQ(-85.f, manager->controls_top_offset()); | 141 EXPECT_EQ(-85.f, manager->ControlsTopOffset()); |
| 132 EXPECT_EQ(15.f, manager->content_top_offset()); | 142 EXPECT_EQ(15.f, manager->ContentTopOffset()); |
| 133 manager->ScrollEnd(); | 143 manager->ScrollEnd(); |
| 134 | 144 |
| 135 EXPECT_TRUE(manager->animation()); | 145 EXPECT_TRUE(manager->animation()); |
| 136 | 146 |
| 137 base::TimeTicks time = gfx::FrameTime::Now(); | 147 base::TimeTicks time = gfx::FrameTime::Now(); |
| 138 float previous_offset = manager->controls_top_offset(); | 148 float previous_offset = manager->ControlsTopOffset(); |
| 139 while (manager->animation()) { | 149 while (manager->animation()) { |
| 140 time = base::TimeDelta::FromMicroseconds(100) + time; | 150 time = base::TimeDelta::FromMicroseconds(100) + time; |
| 141 manager->Animate(time); | 151 manager->Animate(time); |
| 142 EXPECT_LT(manager->controls_top_offset(), previous_offset); | 152 EXPECT_LT(manager->ControlsTopOffset(), previous_offset); |
| 143 previous_offset = manager->controls_top_offset(); | 153 previous_offset = manager->ControlsTopOffset(); |
| 144 } | 154 } |
| 145 EXPECT_FALSE(manager->animation()); | 155 EXPECT_FALSE(manager->animation()); |
| 146 EXPECT_EQ(-100.f, manager->controls_top_offset()); | 156 EXPECT_EQ(-100.f, manager->ControlsTopOffset()); |
| 147 EXPECT_EQ(0.f, manager->content_top_offset()); | 157 EXPECT_EQ(0.f, manager->ContentTopOffset()); |
| 148 } | 158 } |
| 149 | 159 |
| 150 TEST(TopControlsManagerTest, PartialShownShowAnimation) { | 160 TEST(TopControlsManagerTest, PartialShownShowAnimation) { |
| 151 MockTopControlsManagerClient client(0.5f, 0.5f); | 161 MockTopControlsManagerClient client(0.5f, 0.5f); |
| 152 TopControlsManager* manager = client.manager(); | 162 TopControlsManager* manager = client.manager(); |
| 153 manager->ScrollBegin(); | 163 manager->ScrollBegin(); |
| 154 manager->ScrollBy(gfx::Vector2dF(0.f, 300.f)); | 164 manager->ScrollBy(gfx::Vector2dF(0.f, 300.f)); |
| 155 EXPECT_EQ(-100.f, manager->controls_top_offset()); | 165 EXPECT_EQ(-100.f, manager->ControlsTopOffset()); |
| 156 EXPECT_EQ(0.f, manager->content_top_offset()); | 166 EXPECT_EQ(0.f, manager->ContentTopOffset()); |
| 157 manager->ScrollEnd(); | 167 manager->ScrollEnd(); |
| 158 | 168 |
| 159 manager->ScrollBegin(); | 169 manager->ScrollBegin(); |
| 160 manager->ScrollBy(gfx::Vector2dF(0.f, -70.f)); | 170 manager->ScrollBy(gfx::Vector2dF(0.f, -70.f)); |
| 161 EXPECT_EQ(-30.f, manager->controls_top_offset()); | 171 EXPECT_EQ(-30.f, manager->ControlsTopOffset()); |
| 162 EXPECT_EQ(70.f, manager->content_top_offset()); | 172 EXPECT_EQ(70.f, manager->ContentTopOffset()); |
| 163 manager->ScrollEnd(); | 173 manager->ScrollEnd(); |
| 164 | 174 |
| 165 EXPECT_TRUE(manager->animation()); | 175 EXPECT_TRUE(manager->animation()); |
| 166 | 176 |
| 167 base::TimeTicks time = gfx::FrameTime::Now(); | 177 base::TimeTicks time = gfx::FrameTime::Now(); |
| 168 float previous_offset = manager->controls_top_offset(); | 178 float previous_offset = manager->ControlsTopOffset(); |
| 169 while (manager->animation()) { | 179 while (manager->animation()) { |
| 170 time = base::TimeDelta::FromMicroseconds(100) + time; | 180 time = base::TimeDelta::FromMicroseconds(100) + time; |
| 171 manager->Animate(time); | 181 manager->Animate(time); |
| 172 EXPECT_GT(manager->controls_top_offset(), previous_offset); | 182 EXPECT_GT(manager->ControlsTopOffset(), previous_offset); |
| 173 previous_offset = manager->controls_top_offset(); | 183 previous_offset = manager->ControlsTopOffset(); |
| 174 } | 184 } |
| 175 EXPECT_FALSE(manager->animation()); | 185 EXPECT_FALSE(manager->animation()); |
| 176 EXPECT_EQ(0.f, manager->controls_top_offset()); | 186 EXPECT_EQ(0.f, manager->ControlsTopOffset()); |
| 177 EXPECT_EQ(100.f, manager->content_top_offset()); | 187 EXPECT_EQ(100.f, manager->ContentTopOffset()); |
| 178 } | 188 } |
| 179 | 189 |
| 180 TEST(TopControlsManagerTest, PartialHiddenWithAmbiguousThresholdShows) { | 190 TEST(TopControlsManagerTest, PartialHiddenWithAmbiguousThresholdShows) { |
| 181 MockTopControlsManagerClient client(0.25f, 0.25f); | 191 MockTopControlsManagerClient client(0.25f, 0.25f); |
| 182 TopControlsManager* manager = client.manager(); | 192 TopControlsManager* manager = client.manager(); |
| 183 | 193 |
| 184 manager->ScrollBegin(); | 194 manager->ScrollBegin(); |
| 185 | 195 |
| 186 manager->ScrollBy(gfx::Vector2dF(0.f, 20.f)); | 196 manager->ScrollBy(gfx::Vector2dF(0.f, 20.f)); |
| 187 EXPECT_EQ(-20.f, manager->controls_top_offset()); | 197 EXPECT_EQ(-20.f, manager->ControlsTopOffset()); |
| 188 EXPECT_EQ(80.f, manager->content_top_offset()); | 198 EXPECT_EQ(80.f, manager->ContentTopOffset()); |
| 189 | 199 |
| 190 manager->ScrollEnd(); | 200 manager->ScrollEnd(); |
| 191 EXPECT_TRUE(manager->animation()); | 201 EXPECT_TRUE(manager->animation()); |
| 192 | 202 |
| 193 base::TimeTicks time = gfx::FrameTime::Now(); | 203 base::TimeTicks time = gfx::FrameTime::Now(); |
| 194 float previous_offset = manager->controls_top_offset(); | 204 float previous_offset = manager->ControlsTopOffset(); |
| 195 while (manager->animation()) { | 205 while (manager->animation()) { |
| 196 time = base::TimeDelta::FromMicroseconds(100) + time; | 206 time = base::TimeDelta::FromMicroseconds(100) + time; |
| 197 manager->Animate(time); | 207 manager->Animate(time); |
| 198 EXPECT_GT(manager->controls_top_offset(), previous_offset); | 208 EXPECT_GT(manager->ControlsTopOffset(), previous_offset); |
| 199 previous_offset = manager->controls_top_offset(); | 209 previous_offset = manager->ControlsTopOffset(); |
| 200 } | 210 } |
| 201 EXPECT_FALSE(manager->animation()); | 211 EXPECT_FALSE(manager->animation()); |
| 202 EXPECT_EQ(0.f, manager->controls_top_offset()); | 212 EXPECT_EQ(0.f, manager->ControlsTopOffset()); |
| 203 EXPECT_EQ(100.f, manager->content_top_offset()); | 213 EXPECT_EQ(100.f, manager->ContentTopOffset()); |
| 204 } | 214 } |
| 205 | 215 |
| 206 TEST(TopControlsManagerTest, PartialHiddenWithAmbiguousThresholdHides) { | 216 TEST(TopControlsManagerTest, PartialHiddenWithAmbiguousThresholdHides) { |
| 207 MockTopControlsManagerClient client(0.25f, 0.25f); | 217 MockTopControlsManagerClient client(0.25f, 0.25f); |
| 208 TopControlsManager* manager = client.manager(); | 218 TopControlsManager* manager = client.manager(); |
| 209 | 219 |
| 210 manager->ScrollBegin(); | 220 manager->ScrollBegin(); |
| 211 | 221 |
| 212 manager->ScrollBy(gfx::Vector2dF(0.f, 30.f)); | 222 manager->ScrollBy(gfx::Vector2dF(0.f, 30.f)); |
| 213 EXPECT_EQ(-30.f, manager->controls_top_offset()); | 223 EXPECT_EQ(-30.f, manager->ControlsTopOffset()); |
| 214 EXPECT_EQ(70.f, manager->content_top_offset()); | 224 EXPECT_EQ(70.f, manager->ContentTopOffset()); |
| 215 | 225 |
| 216 manager->ScrollEnd(); | 226 manager->ScrollEnd(); |
| 217 EXPECT_TRUE(manager->animation()); | 227 EXPECT_TRUE(manager->animation()); |
| 218 | 228 |
| 219 base::TimeTicks time = gfx::FrameTime::Now(); | 229 base::TimeTicks time = gfx::FrameTime::Now(); |
| 220 float previous_offset = manager->controls_top_offset(); | 230 float previous_offset = manager->ControlsTopOffset(); |
| 221 while (manager->animation()) { | 231 while (manager->animation()) { |
| 222 time = base::TimeDelta::FromMicroseconds(100) + time; | 232 time = base::TimeDelta::FromMicroseconds(100) + time; |
| 223 manager->Animate(time); | 233 manager->Animate(time); |
| 224 EXPECT_LT(manager->controls_top_offset(), previous_offset); | 234 EXPECT_LT(manager->ControlsTopOffset(), previous_offset); |
| 225 previous_offset = manager->controls_top_offset(); | 235 previous_offset = manager->ControlsTopOffset(); |
| 226 } | 236 } |
| 227 EXPECT_FALSE(manager->animation()); | 237 EXPECT_FALSE(manager->animation()); |
| 228 EXPECT_EQ(-100.f, manager->controls_top_offset()); | 238 EXPECT_EQ(-100.f, manager->ControlsTopOffset()); |
| 229 EXPECT_EQ(0.f, manager->content_top_offset()); | 239 EXPECT_EQ(0.f, manager->ContentTopOffset()); |
| 230 } | 240 } |
| 231 | 241 |
| 232 TEST(TopControlsManagerTest, PartialShownWithAmbiguousThresholdHides) { | 242 TEST(TopControlsManagerTest, PartialShownWithAmbiguousThresholdHides) { |
| 233 MockTopControlsManagerClient client(0.25f, 0.25f); | 243 MockTopControlsManagerClient client(0.25f, 0.25f); |
| 234 TopControlsManager* manager = client.manager(); | 244 TopControlsManager* manager = client.manager(); |
| 235 | 245 |
| 236 manager->ScrollBy(gfx::Vector2dF(0.f, 200.f)); | 246 manager->ScrollBy(gfx::Vector2dF(0.f, 200.f)); |
| 237 EXPECT_EQ(-100.f, manager->controls_top_offset()); | 247 EXPECT_EQ(-100.f, manager->ControlsTopOffset()); |
| 238 EXPECT_EQ(0.f, manager->content_top_offset()); | 248 EXPECT_EQ(0.f, manager->ContentTopOffset()); |
| 239 | 249 |
| 240 manager->ScrollBegin(); | 250 manager->ScrollBegin(); |
| 241 | 251 |
| 242 manager->ScrollBy(gfx::Vector2dF(0.f, -20.f)); | 252 manager->ScrollBy(gfx::Vector2dF(0.f, -20.f)); |
| 243 EXPECT_EQ(-80.f, manager->controls_top_offset()); | 253 EXPECT_EQ(-80.f, manager->ControlsTopOffset()); |
| 244 EXPECT_EQ(20.f, manager->content_top_offset()); | 254 EXPECT_EQ(20.f, manager->ContentTopOffset()); |
| 245 | 255 |
| 246 manager->ScrollEnd(); | 256 manager->ScrollEnd(); |
| 247 EXPECT_TRUE(manager->animation()); | 257 EXPECT_TRUE(manager->animation()); |
| 248 | 258 |
| 249 base::TimeTicks time = gfx::FrameTime::Now(); | 259 base::TimeTicks time = gfx::FrameTime::Now(); |
| 250 float previous_offset = manager->controls_top_offset(); | 260 float previous_offset = manager->ControlsTopOffset(); |
| 251 while (manager->animation()) { | 261 while (manager->animation()) { |
| 252 time = base::TimeDelta::FromMicroseconds(100) + time; | 262 time = base::TimeDelta::FromMicroseconds(100) + time; |
| 253 manager->Animate(time); | 263 manager->Animate(time); |
| 254 EXPECT_LT(manager->controls_top_offset(), previous_offset); | 264 EXPECT_LT(manager->ControlsTopOffset(), previous_offset); |
| 255 previous_offset = manager->controls_top_offset(); | 265 previous_offset = manager->ControlsTopOffset(); |
| 256 } | 266 } |
| 257 EXPECT_FALSE(manager->animation()); | 267 EXPECT_FALSE(manager->animation()); |
| 258 EXPECT_EQ(-100.f, manager->controls_top_offset()); | 268 EXPECT_EQ(-100.f, manager->ControlsTopOffset()); |
| 259 EXPECT_EQ(0.f, manager->content_top_offset()); | 269 EXPECT_EQ(0.f, manager->ContentTopOffset()); |
| 260 } | 270 } |
| 261 | 271 |
| 262 TEST(TopControlsManagerTest, PartialShownWithAmbiguousThresholdShows) { | 272 TEST(TopControlsManagerTest, PartialShownWithAmbiguousThresholdShows) { |
| 263 MockTopControlsManagerClient client(0.25f, 0.25f); | 273 MockTopControlsManagerClient client(0.25f, 0.25f); |
| 264 TopControlsManager* manager = client.manager(); | 274 TopControlsManager* manager = client.manager(); |
| 265 | 275 |
| 266 manager->ScrollBy(gfx::Vector2dF(0.f, 200.f)); | 276 manager->ScrollBy(gfx::Vector2dF(0.f, 200.f)); |
| 267 EXPECT_EQ(-100.f, manager->controls_top_offset()); | 277 EXPECT_EQ(-100.f, manager->ControlsTopOffset()); |
| 268 EXPECT_EQ(0.f, manager->content_top_offset()); | 278 EXPECT_EQ(0.f, manager->ContentTopOffset()); |
| 269 | 279 |
| 270 manager->ScrollBegin(); | 280 manager->ScrollBegin(); |
| 271 | 281 |
| 272 manager->ScrollBy(gfx::Vector2dF(0.f, -30.f)); | 282 manager->ScrollBy(gfx::Vector2dF(0.f, -30.f)); |
| 273 EXPECT_EQ(-70.f, manager->controls_top_offset()); | 283 EXPECT_EQ(-70.f, manager->ControlsTopOffset()); |
| 274 EXPECT_EQ(30.f, manager->content_top_offset()); | 284 EXPECT_EQ(30.f, manager->ContentTopOffset()); |
| 275 | 285 |
| 276 manager->ScrollEnd(); | 286 manager->ScrollEnd(); |
| 277 EXPECT_TRUE(manager->animation()); | 287 EXPECT_TRUE(manager->animation()); |
| 278 | 288 |
| 279 base::TimeTicks time = gfx::FrameTime::Now(); | 289 base::TimeTicks time = gfx::FrameTime::Now(); |
| 280 float previous_offset = manager->controls_top_offset(); | 290 float previous_offset = manager->ControlsTopOffset(); |
| 281 while (manager->animation()) { | 291 while (manager->animation()) { |
| 282 time = base::TimeDelta::FromMicroseconds(100) + time; | 292 time = base::TimeDelta::FromMicroseconds(100) + time; |
| 283 manager->Animate(time); | 293 manager->Animate(time); |
| 284 EXPECT_GT(manager->controls_top_offset(), previous_offset); | 294 EXPECT_GT(manager->ControlsTopOffset(), previous_offset); |
| 285 previous_offset = manager->controls_top_offset(); | 295 previous_offset = manager->ControlsTopOffset(); |
| 286 } | 296 } |
| 287 EXPECT_FALSE(manager->animation()); | 297 EXPECT_FALSE(manager->animation()); |
| 288 EXPECT_EQ(0.f, manager->controls_top_offset()); | 298 EXPECT_EQ(0.f, manager->ControlsTopOffset()); |
| 289 EXPECT_EQ(100.f, manager->content_top_offset()); | 299 EXPECT_EQ(100.f, manager->ContentTopOffset()); |
| 290 } | 300 } |
| 291 | 301 |
| 292 TEST(TopControlsManagerTest, PinchIgnoresScroll) { | 302 TEST(TopControlsManagerTest, PinchIgnoresScroll) { |
| 293 MockTopControlsManagerClient client(0.5f, 0.5f); | 303 MockTopControlsManagerClient client(0.5f, 0.5f); |
| 294 TopControlsManager* manager = client.manager(); | 304 TopControlsManager* manager = client.manager(); |
| 295 | 305 |
| 296 // Hide the controls. | 306 // Hide the controls. |
| 297 manager->ScrollBegin(); | 307 manager->ScrollBegin(); |
| 298 EXPECT_EQ(0.f, manager->controls_top_offset()); | 308 EXPECT_EQ(0.f, manager->ControlsTopOffset()); |
| 299 | 309 |
| 300 manager->ScrollBy(gfx::Vector2dF(0.f, 300.f)); | 310 manager->ScrollBy(gfx::Vector2dF(0.f, 300.f)); |
| 301 EXPECT_EQ(-100.f, manager->controls_top_offset()); | 311 EXPECT_EQ(-100.f, manager->ControlsTopOffset()); |
| 302 | 312 |
| 303 manager->PinchBegin(); | 313 manager->PinchBegin(); |
| 304 EXPECT_EQ(-100.f, manager->controls_top_offset()); | 314 EXPECT_EQ(-100.f, manager->ControlsTopOffset()); |
| 305 | 315 |
| 306 // Scrolls are ignored during pinch. | 316 // Scrolls are ignored during pinch. |
| 307 manager->ScrollBy(gfx::Vector2dF(0.f, -15.f)); | 317 manager->ScrollBy(gfx::Vector2dF(0.f, -15.f)); |
| 308 EXPECT_EQ(-100.f, manager->controls_top_offset()); | 318 EXPECT_EQ(-100.f, manager->ControlsTopOffset()); |
| 309 manager->PinchEnd(); | 319 manager->PinchEnd(); |
| 310 EXPECT_EQ(-100.f, manager->controls_top_offset()); | 320 EXPECT_EQ(-100.f, manager->ControlsTopOffset()); |
| 311 | 321 |
| 312 // Scrolls should no long be ignored. | 322 // Scrolls should no long be ignored. |
| 313 manager->ScrollBy(gfx::Vector2dF(0.f, -15.f)); | 323 manager->ScrollBy(gfx::Vector2dF(0.f, -15.f)); |
| 314 EXPECT_EQ(-85.f, manager->controls_top_offset()); | 324 EXPECT_EQ(-85.f, manager->ControlsTopOffset()); |
| 315 EXPECT_EQ(15.f, manager->content_top_offset()); | 325 EXPECT_EQ(15.f, manager->ContentTopOffset()); |
| 316 manager->ScrollEnd(); | 326 manager->ScrollEnd(); |
| 317 | 327 |
| 318 EXPECT_TRUE(manager->animation()); | 328 EXPECT_TRUE(manager->animation()); |
| 319 } | 329 } |
| 320 | 330 |
| 321 TEST(TopControlsManagerTest, PinchBeginStartsAnimationIfNecessary) { | 331 TEST(TopControlsManagerTest, PinchBeginStartsAnimationIfNecessary) { |
| 322 MockTopControlsManagerClient client(0.5f, 0.5f); | 332 MockTopControlsManagerClient client(0.5f, 0.5f); |
| 323 TopControlsManager* manager = client.manager(); | 333 TopControlsManager* manager = client.manager(); |
| 324 | 334 |
| 325 manager->ScrollBegin(); | 335 manager->ScrollBegin(); |
| 326 manager->ScrollBy(gfx::Vector2dF(0.f, 300.f)); | 336 manager->ScrollBy(gfx::Vector2dF(0.f, 300.f)); |
| 327 EXPECT_EQ(-100.f, manager->controls_top_offset()); | 337 EXPECT_EQ(-100.f, manager->ControlsTopOffset()); |
| 328 | 338 |
| 329 manager->PinchBegin(); | 339 manager->PinchBegin(); |
| 330 EXPECT_FALSE(manager->animation()); | 340 EXPECT_FALSE(manager->animation()); |
| 331 | 341 |
| 332 manager->PinchEnd(); | 342 manager->PinchEnd(); |
| 333 EXPECT_FALSE(manager->animation()); | 343 EXPECT_FALSE(manager->animation()); |
| 334 | 344 |
| 335 manager->ScrollBy(gfx::Vector2dF(0.f, -15.f)); | 345 manager->ScrollBy(gfx::Vector2dF(0.f, -15.f)); |
| 336 EXPECT_EQ(-85.f, manager->controls_top_offset()); | 346 EXPECT_EQ(-85.f, manager->ControlsTopOffset()); |
| 337 EXPECT_EQ(15.f, manager->content_top_offset()); | 347 EXPECT_EQ(15.f, manager->ContentTopOffset()); |
| 338 | 348 |
| 339 manager->PinchBegin(); | 349 manager->PinchBegin(); |
| 340 EXPECT_TRUE(manager->animation()); | 350 EXPECT_TRUE(manager->animation()); |
| 341 | 351 |
| 342 base::TimeTicks time = base::TimeTicks::Now(); | 352 base::TimeTicks time = base::TimeTicks::Now(); |
| 343 float previous_offset = manager->controls_top_offset(); | 353 float previous_offset = manager->ControlsTopOffset(); |
| 344 while (manager->animation()) { | 354 while (manager->animation()) { |
| 345 time = base::TimeDelta::FromMicroseconds(100) + time; | 355 time = base::TimeDelta::FromMicroseconds(100) + time; |
| 346 manager->Animate(time); | 356 manager->Animate(time); |
| 347 EXPECT_LT(manager->controls_top_offset(), previous_offset); | 357 EXPECT_LT(manager->ControlsTopOffset(), previous_offset); |
| 348 previous_offset = manager->controls_top_offset(); | 358 previous_offset = manager->ControlsTopOffset(); |
| 349 } | 359 } |
| 350 EXPECT_FALSE(manager->animation()); | 360 EXPECT_FALSE(manager->animation()); |
| 351 | 361 |
| 352 manager->PinchEnd(); | 362 manager->PinchEnd(); |
| 353 EXPECT_FALSE(manager->animation()); | 363 EXPECT_FALSE(manager->animation()); |
| 354 | 364 |
| 355 manager->ScrollBy(gfx::Vector2dF(0.f, -55.f)); | 365 manager->ScrollBy(gfx::Vector2dF(0.f, -55.f)); |
| 356 EXPECT_EQ(-45.f, manager->controls_top_offset()); | 366 EXPECT_EQ(-45.f, manager->ControlsTopOffset()); |
| 357 EXPECT_EQ(55.f, manager->content_top_offset()); | 367 EXPECT_EQ(55.f, manager->ContentTopOffset()); |
| 358 EXPECT_FALSE(manager->animation()); | 368 EXPECT_FALSE(manager->animation()); |
| 359 | 369 |
| 360 manager->ScrollEnd(); | 370 manager->ScrollEnd(); |
| 361 EXPECT_TRUE(manager->animation()); | 371 EXPECT_TRUE(manager->animation()); |
| 362 | 372 |
| 363 time = base::TimeTicks::Now(); | 373 time = base::TimeTicks::Now(); |
| 364 previous_offset = manager->controls_top_offset(); | 374 previous_offset = manager->ControlsTopOffset(); |
| 365 while (manager->animation()) { | 375 while (manager->animation()) { |
| 366 time = base::TimeDelta::FromMicroseconds(100) + time; | 376 time = base::TimeDelta::FromMicroseconds(100) + time; |
| 367 manager->Animate(time); | 377 manager->Animate(time); |
| 368 EXPECT_GT(manager->controls_top_offset(), previous_offset); | 378 EXPECT_GT(manager->ControlsTopOffset(), previous_offset); |
| 369 previous_offset = manager->controls_top_offset(); | 379 previous_offset = manager->ControlsTopOffset(); |
| 370 } | 380 } |
| 371 EXPECT_FALSE(manager->animation()); | 381 EXPECT_FALSE(manager->animation()); |
| 372 EXPECT_EQ(0.f, manager->controls_top_offset()); | 382 EXPECT_EQ(0.f, manager->ControlsTopOffset()); |
| 373 } | 383 } |
| 374 | 384 |
| 375 } // namespace | 385 } // namespace |
| 376 } // namespace cc | 386 } // namespace cc |
| OLD | NEW |