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 |