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

Side by Side Diff: cc/input/top_controls_manager_unittest.cc

Issue 714003002: Allow changing top controls height (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « cc/input/top_controls_manager.cc ('k') | cc/trees/layer_tree_host.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 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"
11 #include "cc/test/fake_impl_proxy.h" 11 #include "cc/test/fake_impl_proxy.h"
12 #include "cc/test/fake_layer_tree_host_impl.h" 12 #include "cc/test/fake_layer_tree_host_impl.h"
13 #include "cc/test/test_shared_bitmap_manager.h" 13 #include "cc/test/test_shared_bitmap_manager.h"
14 #include "cc/trees/layer_tree_impl.h" 14 #include "cc/trees/layer_tree_impl.h"
15 #include "testing/gtest/include/gtest/gtest.h" 15 #include "testing/gtest/include/gtest/gtest.h"
16 #include "ui/gfx/frame_time.h" 16 #include "ui/gfx/frame_time.h"
17 #include "ui/gfx/geometry/vector2d_f.h" 17 #include "ui/gfx/geometry/vector2d_f.h"
18 18
19 namespace cc { 19 namespace cc {
20 namespace { 20 namespace {
21 21
22 static const float kTopControlsHeight = 100;
23
24 class MockTopControlsManagerClient : public TopControlsManagerClient { 22 class MockTopControlsManagerClient : public TopControlsManagerClient {
25 public: 23 public:
26 MockTopControlsManagerClient(float top_controls_show_threshold, 24 MockTopControlsManagerClient(float top_controls_height,
25 float top_controls_show_threshold,
27 float top_controls_hide_threshold) 26 float top_controls_hide_threshold)
28 : host_impl_(&proxy_, &shared_bitmap_manager_), 27 : host_impl_(&proxy_, &shared_bitmap_manager_),
29 redraw_needed_(false), 28 redraw_needed_(false),
30 update_draw_properties_needed_(false), 29 update_draw_properties_needed_(false),
31 top_controls_top_offset_(0.f), 30 top_controls_top_offset_(0.f),
31 top_controls_height_(top_controls_height),
32 top_controls_show_threshold_(top_controls_show_threshold), 32 top_controls_show_threshold_(top_controls_show_threshold),
33 top_controls_hide_threshold_(top_controls_hide_threshold) { 33 top_controls_hide_threshold_(top_controls_hide_threshold) {
34 active_tree_ = LayerTreeImpl::create(&host_impl_); 34 active_tree_ = LayerTreeImpl::create(&host_impl_);
35 root_scroll_layer_ = LayerImpl::Create(active_tree_.get(), 1); 35 root_scroll_layer_ = LayerImpl::Create(active_tree_.get(), 1);
36 } 36 }
37 37
38 ~MockTopControlsManagerClient() override {} 38 ~MockTopControlsManagerClient() override {}
39 39
40 void DidChangeTopControlsPosition() override { 40 void DidChangeTopControlsPosition() override {
41 redraw_needed_ = true; 41 redraw_needed_ = true;
42 update_draw_properties_needed_ = true; 42 update_draw_properties_needed_ = true;
43 } 43 }
44 44
45 bool HaveRootScrollLayer() const override { return true; } 45 bool HaveRootScrollLayer() const override { return true; }
46 46
47 void SetControlsTopOffset(float offset) override { 47 void SetControlsTopOffset(float offset) override {
48 top_controls_top_offset_ = offset; 48 top_controls_top_offset_ = offset;
49 } 49 }
50 50
51 float ControlsTopOffset() const override { return top_controls_top_offset_; } 51 float ControlsTopOffset() const override { return top_controls_top_offset_; }
52 52
53 LayerImpl* rootScrollLayer() { 53 LayerImpl* rootScrollLayer() {
54 return root_scroll_layer_.get(); 54 return root_scroll_layer_.get();
55 } 55 }
56 56
57 TopControlsManager* manager() { 57 TopControlsManager* manager() {
58 if (!manager_) { 58 if (!manager_) {
59 manager_ = TopControlsManager::Create(this, 59 manager_ = TopControlsManager::Create(this,
60 kTopControlsHeight,
61 top_controls_show_threshold_, 60 top_controls_show_threshold_,
62 top_controls_hide_threshold_); 61 top_controls_hide_threshold_);
62 manager_->SetTopControlsHeight(top_controls_height_);
63 } 63 }
64 return manager_.get(); 64 return manager_.get();
65 } 65 }
66 66
67 private: 67 private:
68 FakeImplProxy proxy_; 68 FakeImplProxy proxy_;
69 TestSharedBitmapManager shared_bitmap_manager_; 69 TestSharedBitmapManager shared_bitmap_manager_;
70 FakeLayerTreeHostImpl host_impl_; 70 FakeLayerTreeHostImpl host_impl_;
71 scoped_ptr<LayerTreeImpl> active_tree_; 71 scoped_ptr<LayerTreeImpl> active_tree_;
72 scoped_ptr<LayerImpl> root_scroll_layer_; 72 scoped_ptr<LayerImpl> root_scroll_layer_;
73 scoped_ptr<TopControlsManager> manager_; 73 scoped_ptr<TopControlsManager> manager_;
74 bool redraw_needed_; 74 bool redraw_needed_;
75 bool update_draw_properties_needed_; 75 bool update_draw_properties_needed_;
76 76
77 float top_controls_top_offset_; 77 float top_controls_top_offset_;
78 float top_controls_height_;
78 float top_controls_show_threshold_; 79 float top_controls_show_threshold_;
79 float top_controls_hide_threshold_; 80 float top_controls_hide_threshold_;
80 }; 81 };
81 82
82 TEST(TopControlsManagerTest, EnsureScrollThresholdApplied) { 83 TEST(TopControlsManagerTest, EnsureScrollThresholdApplied) {
83 MockTopControlsManagerClient client(0.5f, 0.5f); 84 MockTopControlsManagerClient client(100.f, 0.5f, 0.5f);
84 TopControlsManager* manager = client.manager(); 85 TopControlsManager* manager = client.manager();
85 86
86 manager->ScrollBegin(); 87 manager->ScrollBegin();
87 88
88 // Scroll down to hide the controls entirely. 89 // Scroll down to hide the controls entirely.
89 manager->ScrollBy(gfx::Vector2dF(0.f, 30.f)); 90 manager->ScrollBy(gfx::Vector2dF(0.f, 30.f));
90 EXPECT_EQ(-30.f, manager->ControlsTopOffset()); 91 EXPECT_EQ(-30.f, manager->ControlsTopOffset());
91 92
92 manager->ScrollBy(gfx::Vector2dF(0.f, 30.f)); 93 manager->ScrollBy(gfx::Vector2dF(0.f, 30.f));
93 EXPECT_EQ(-60.f, manager->ControlsTopOffset()); 94 EXPECT_EQ(-60.f, manager->ControlsTopOffset());
(...skipping 23 matching lines...) Expand all
117 EXPECT_EQ(0.f, manager->ControlsTopOffset()); 118 EXPECT_EQ(0.f, manager->ControlsTopOffset());
118 119
119 // See that scrolling down the page now will result in the controls hiding. 120 // See that scrolling down the page now will result in the controls hiding.
120 manager->ScrollBy(gfx::Vector2dF(0.f, 20.f)); 121 manager->ScrollBy(gfx::Vector2dF(0.f, 20.f));
121 EXPECT_EQ(-20.f, manager->ControlsTopOffset()); 122 EXPECT_EQ(-20.f, manager->ControlsTopOffset());
122 123
123 manager->ScrollEnd(); 124 manager->ScrollEnd();
124 } 125 }
125 126
126 TEST(TopControlsManagerTest, PartialShownHideAnimation) { 127 TEST(TopControlsManagerTest, PartialShownHideAnimation) {
127 MockTopControlsManagerClient client(0.5f, 0.5f); 128 MockTopControlsManagerClient client(100.f, 0.5f, 0.5f);
128 TopControlsManager* manager = client.manager(); 129 TopControlsManager* manager = client.manager();
129 manager->ScrollBegin(); 130 manager->ScrollBegin();
130 manager->ScrollBy(gfx::Vector2dF(0.f, 300.f)); 131 manager->ScrollBy(gfx::Vector2dF(0.f, 300.f));
131 EXPECT_EQ(-100.f, manager->ControlsTopOffset()); 132 EXPECT_EQ(-100.f, manager->ControlsTopOffset());
132 EXPECT_EQ(0.f, manager->ContentTopOffset()); 133 EXPECT_EQ(0.f, manager->ContentTopOffset());
133 manager->ScrollEnd(); 134 manager->ScrollEnd();
134 135
135 manager->ScrollBegin(); 136 manager->ScrollBegin();
136 manager->ScrollBy(gfx::Vector2dF(0.f, -15.f)); 137 manager->ScrollBy(gfx::Vector2dF(0.f, -15.f));
137 EXPECT_EQ(-85.f, manager->ControlsTopOffset()); 138 EXPECT_EQ(-85.f, manager->ControlsTopOffset());
138 EXPECT_EQ(15.f, manager->ContentTopOffset()); 139 EXPECT_EQ(15.f, manager->ContentTopOffset());
139 manager->ScrollEnd(); 140 manager->ScrollEnd();
140 141
141 EXPECT_TRUE(manager->animation()); 142 EXPECT_TRUE(manager->animation());
142 143
143 base::TimeTicks time = gfx::FrameTime::Now(); 144 base::TimeTicks time = gfx::FrameTime::Now();
144 float previous_offset = manager->ControlsTopOffset(); 145 float previous_offset = manager->ControlsTopOffset();
145 while (manager->animation()) { 146 while (manager->animation()) {
146 time = base::TimeDelta::FromMicroseconds(100) + time; 147 time = base::TimeDelta::FromMicroseconds(100) + time;
147 manager->Animate(time); 148 manager->Animate(time);
148 EXPECT_LT(manager->ControlsTopOffset(), previous_offset); 149 EXPECT_LT(manager->ControlsTopOffset(), previous_offset);
149 previous_offset = manager->ControlsTopOffset(); 150 previous_offset = manager->ControlsTopOffset();
150 } 151 }
151 EXPECT_FALSE(manager->animation()); 152 EXPECT_FALSE(manager->animation());
152 EXPECT_EQ(-100.f, manager->ControlsTopOffset()); 153 EXPECT_EQ(-100.f, manager->ControlsTopOffset());
153 EXPECT_EQ(0.f, manager->ContentTopOffset()); 154 EXPECT_EQ(0.f, manager->ContentTopOffset());
154 } 155 }
155 156
156 TEST(TopControlsManagerTest, PartialShownShowAnimation) { 157 TEST(TopControlsManagerTest, PartialShownShowAnimation) {
157 MockTopControlsManagerClient client(0.5f, 0.5f); 158 MockTopControlsManagerClient client(100.f, 0.5f, 0.5f);
158 TopControlsManager* manager = client.manager(); 159 TopControlsManager* manager = client.manager();
159 manager->ScrollBegin(); 160 manager->ScrollBegin();
160 manager->ScrollBy(gfx::Vector2dF(0.f, 300.f)); 161 manager->ScrollBy(gfx::Vector2dF(0.f, 300.f));
161 EXPECT_EQ(-100.f, manager->ControlsTopOffset()); 162 EXPECT_EQ(-100.f, manager->ControlsTopOffset());
162 EXPECT_EQ(0.f, manager->ContentTopOffset()); 163 EXPECT_EQ(0.f, manager->ContentTopOffset());
163 manager->ScrollEnd(); 164 manager->ScrollEnd();
164 165
165 manager->ScrollBegin(); 166 manager->ScrollBegin();
166 manager->ScrollBy(gfx::Vector2dF(0.f, -70.f)); 167 manager->ScrollBy(gfx::Vector2dF(0.f, -70.f));
167 EXPECT_EQ(-30.f, manager->ControlsTopOffset()); 168 EXPECT_EQ(-30.f, manager->ControlsTopOffset());
168 EXPECT_EQ(70.f, manager->ContentTopOffset()); 169 EXPECT_EQ(70.f, manager->ContentTopOffset());
169 manager->ScrollEnd(); 170 manager->ScrollEnd();
170 171
171 EXPECT_TRUE(manager->animation()); 172 EXPECT_TRUE(manager->animation());
172 173
173 base::TimeTicks time = gfx::FrameTime::Now(); 174 base::TimeTicks time = gfx::FrameTime::Now();
174 float previous_offset = manager->ControlsTopOffset(); 175 float previous_offset = manager->ControlsTopOffset();
175 while (manager->animation()) { 176 while (manager->animation()) {
176 time = base::TimeDelta::FromMicroseconds(100) + time; 177 time = base::TimeDelta::FromMicroseconds(100) + time;
177 manager->Animate(time); 178 manager->Animate(time);
178 EXPECT_GT(manager->ControlsTopOffset(), previous_offset); 179 EXPECT_GT(manager->ControlsTopOffset(), previous_offset);
179 previous_offset = manager->ControlsTopOffset(); 180 previous_offset = manager->ControlsTopOffset();
180 } 181 }
181 EXPECT_FALSE(manager->animation()); 182 EXPECT_FALSE(manager->animation());
182 EXPECT_EQ(0.f, manager->ControlsTopOffset()); 183 EXPECT_EQ(0.f, manager->ControlsTopOffset());
183 EXPECT_EQ(100.f, manager->ContentTopOffset()); 184 EXPECT_EQ(100.f, manager->ContentTopOffset());
184 } 185 }
185 186
186 TEST(TopControlsManagerTest, PartialHiddenWithAmbiguousThresholdShows) { 187 TEST(TopControlsManagerTest, PartialHiddenWithAmbiguousThresholdShows) {
187 MockTopControlsManagerClient client(0.25f, 0.25f); 188 MockTopControlsManagerClient client(100.f, 0.25f, 0.25f);
188 TopControlsManager* manager = client.manager(); 189 TopControlsManager* manager = client.manager();
189 190
190 manager->ScrollBegin(); 191 manager->ScrollBegin();
191 192
192 manager->ScrollBy(gfx::Vector2dF(0.f, 20.f)); 193 manager->ScrollBy(gfx::Vector2dF(0.f, 20.f));
193 EXPECT_EQ(-20.f, manager->ControlsTopOffset()); 194 EXPECT_EQ(-20.f, manager->ControlsTopOffset());
194 EXPECT_EQ(80.f, manager->ContentTopOffset()); 195 EXPECT_EQ(80.f, manager->ContentTopOffset());
195 196
196 manager->ScrollEnd(); 197 manager->ScrollEnd();
197 EXPECT_TRUE(manager->animation()); 198 EXPECT_TRUE(manager->animation());
198 199
199 base::TimeTicks time = gfx::FrameTime::Now(); 200 base::TimeTicks time = gfx::FrameTime::Now();
200 float previous_offset = manager->ControlsTopOffset(); 201 float previous_offset = manager->ControlsTopOffset();
201 while (manager->animation()) { 202 while (manager->animation()) {
202 time = base::TimeDelta::FromMicroseconds(100) + time; 203 time = base::TimeDelta::FromMicroseconds(100) + time;
203 manager->Animate(time); 204 manager->Animate(time);
204 EXPECT_GT(manager->ControlsTopOffset(), previous_offset); 205 EXPECT_GT(manager->ControlsTopOffset(), previous_offset);
205 previous_offset = manager->ControlsTopOffset(); 206 previous_offset = manager->ControlsTopOffset();
206 } 207 }
207 EXPECT_FALSE(manager->animation()); 208 EXPECT_FALSE(manager->animation());
208 EXPECT_EQ(0.f, manager->ControlsTopOffset()); 209 EXPECT_EQ(0.f, manager->ControlsTopOffset());
209 EXPECT_EQ(100.f, manager->ContentTopOffset()); 210 EXPECT_EQ(100.f, manager->ContentTopOffset());
210 } 211 }
211 212
212 TEST(TopControlsManagerTest, PartialHiddenWithAmbiguousThresholdHides) { 213 TEST(TopControlsManagerTest, PartialHiddenWithAmbiguousThresholdHides) {
213 MockTopControlsManagerClient client(0.25f, 0.25f); 214 MockTopControlsManagerClient client(100.f, 0.25f, 0.25f);
214 TopControlsManager* manager = client.manager(); 215 TopControlsManager* manager = client.manager();
215 216
216 manager->ScrollBegin(); 217 manager->ScrollBegin();
217 218
218 manager->ScrollBy(gfx::Vector2dF(0.f, 30.f)); 219 manager->ScrollBy(gfx::Vector2dF(0.f, 30.f));
219 EXPECT_EQ(-30.f, manager->ControlsTopOffset()); 220 EXPECT_EQ(-30.f, manager->ControlsTopOffset());
220 EXPECT_EQ(70.f, manager->ContentTopOffset()); 221 EXPECT_EQ(70.f, manager->ContentTopOffset());
221 222
222 manager->ScrollEnd(); 223 manager->ScrollEnd();
223 EXPECT_TRUE(manager->animation()); 224 EXPECT_TRUE(manager->animation());
224 225
225 base::TimeTicks time = gfx::FrameTime::Now(); 226 base::TimeTicks time = gfx::FrameTime::Now();
226 float previous_offset = manager->ControlsTopOffset(); 227 float previous_offset = manager->ControlsTopOffset();
227 while (manager->animation()) { 228 while (manager->animation()) {
228 time = base::TimeDelta::FromMicroseconds(100) + time; 229 time = base::TimeDelta::FromMicroseconds(100) + time;
229 manager->Animate(time); 230 manager->Animate(time);
230 EXPECT_LT(manager->ControlsTopOffset(), previous_offset); 231 EXPECT_LT(manager->ControlsTopOffset(), previous_offset);
231 previous_offset = manager->ControlsTopOffset(); 232 previous_offset = manager->ControlsTopOffset();
232 } 233 }
233 EXPECT_FALSE(manager->animation()); 234 EXPECT_FALSE(manager->animation());
234 EXPECT_EQ(-100.f, manager->ControlsTopOffset()); 235 EXPECT_EQ(-100.f, manager->ControlsTopOffset());
235 EXPECT_EQ(0.f, manager->ContentTopOffset()); 236 EXPECT_EQ(0.f, manager->ContentTopOffset());
236 } 237 }
237 238
238 TEST(TopControlsManagerTest, PartialShownWithAmbiguousThresholdHides) { 239 TEST(TopControlsManagerTest, PartialShownWithAmbiguousThresholdHides) {
239 MockTopControlsManagerClient client(0.25f, 0.25f); 240 MockTopControlsManagerClient client(100.f, 0.25f, 0.25f);
240 TopControlsManager* manager = client.manager(); 241 TopControlsManager* manager = client.manager();
241 242
242 manager->ScrollBy(gfx::Vector2dF(0.f, 200.f)); 243 manager->ScrollBy(gfx::Vector2dF(0.f, 200.f));
243 EXPECT_EQ(-100.f, manager->ControlsTopOffset()); 244 EXPECT_EQ(-100.f, manager->ControlsTopOffset());
244 EXPECT_EQ(0.f, manager->ContentTopOffset()); 245 EXPECT_EQ(0.f, manager->ContentTopOffset());
245 246
246 manager->ScrollBegin(); 247 manager->ScrollBegin();
247 248
248 manager->ScrollBy(gfx::Vector2dF(0.f, -20.f)); 249 manager->ScrollBy(gfx::Vector2dF(0.f, -20.f));
249 EXPECT_EQ(-80.f, manager->ControlsTopOffset()); 250 EXPECT_EQ(-80.f, manager->ControlsTopOffset());
250 EXPECT_EQ(20.f, manager->ContentTopOffset()); 251 EXPECT_EQ(20.f, manager->ContentTopOffset());
251 252
252 manager->ScrollEnd(); 253 manager->ScrollEnd();
253 EXPECT_TRUE(manager->animation()); 254 EXPECT_TRUE(manager->animation());
254 255
255 base::TimeTicks time = gfx::FrameTime::Now(); 256 base::TimeTicks time = gfx::FrameTime::Now();
256 float previous_offset = manager->ControlsTopOffset(); 257 float previous_offset = manager->ControlsTopOffset();
257 while (manager->animation()) { 258 while (manager->animation()) {
258 time = base::TimeDelta::FromMicroseconds(100) + time; 259 time = base::TimeDelta::FromMicroseconds(100) + time;
259 manager->Animate(time); 260 manager->Animate(time);
260 EXPECT_LT(manager->ControlsTopOffset(), previous_offset); 261 EXPECT_LT(manager->ControlsTopOffset(), previous_offset);
261 previous_offset = manager->ControlsTopOffset(); 262 previous_offset = manager->ControlsTopOffset();
262 } 263 }
263 EXPECT_FALSE(manager->animation()); 264 EXPECT_FALSE(manager->animation());
264 EXPECT_EQ(-100.f, manager->ControlsTopOffset()); 265 EXPECT_EQ(-100.f, manager->ControlsTopOffset());
265 EXPECT_EQ(0.f, manager->ContentTopOffset()); 266 EXPECT_EQ(0.f, manager->ContentTopOffset());
266 } 267 }
267 268
268 TEST(TopControlsManagerTest, PartialShownWithAmbiguousThresholdShows) { 269 TEST(TopControlsManagerTest, PartialShownWithAmbiguousThresholdShows) {
269 MockTopControlsManagerClient client(0.25f, 0.25f); 270 MockTopControlsManagerClient client(100.f, 0.25f, 0.25f);
270 TopControlsManager* manager = client.manager(); 271 TopControlsManager* manager = client.manager();
271 272
272 manager->ScrollBy(gfx::Vector2dF(0.f, 200.f)); 273 manager->ScrollBy(gfx::Vector2dF(0.f, 200.f));
273 EXPECT_EQ(-100.f, manager->ControlsTopOffset()); 274 EXPECT_EQ(-100.f, manager->ControlsTopOffset());
274 EXPECT_EQ(0.f, manager->ContentTopOffset()); 275 EXPECT_EQ(0.f, manager->ContentTopOffset());
275 276
276 manager->ScrollBegin(); 277 manager->ScrollBegin();
277 278
278 manager->ScrollBy(gfx::Vector2dF(0.f, -30.f)); 279 manager->ScrollBy(gfx::Vector2dF(0.f, -30.f));
279 EXPECT_EQ(-70.f, manager->ControlsTopOffset()); 280 EXPECT_EQ(-70.f, manager->ControlsTopOffset());
280 EXPECT_EQ(30.f, manager->ContentTopOffset()); 281 EXPECT_EQ(30.f, manager->ContentTopOffset());
281 282
282 manager->ScrollEnd(); 283 manager->ScrollEnd();
283 EXPECT_TRUE(manager->animation()); 284 EXPECT_TRUE(manager->animation());
284 285
285 base::TimeTicks time = gfx::FrameTime::Now(); 286 base::TimeTicks time = gfx::FrameTime::Now();
286 float previous_offset = manager->ControlsTopOffset(); 287 float previous_offset = manager->ControlsTopOffset();
287 while (manager->animation()) { 288 while (manager->animation()) {
288 time = base::TimeDelta::FromMicroseconds(100) + time; 289 time = base::TimeDelta::FromMicroseconds(100) + time;
289 manager->Animate(time); 290 manager->Animate(time);
290 EXPECT_GT(manager->ControlsTopOffset(), previous_offset); 291 EXPECT_GT(manager->ControlsTopOffset(), previous_offset);
291 previous_offset = manager->ControlsTopOffset(); 292 previous_offset = manager->ControlsTopOffset();
292 } 293 }
293 EXPECT_FALSE(manager->animation()); 294 EXPECT_FALSE(manager->animation());
294 EXPECT_EQ(0.f, manager->ControlsTopOffset()); 295 EXPECT_EQ(0.f, manager->ControlsTopOffset());
295 EXPECT_EQ(100.f, manager->ContentTopOffset()); 296 EXPECT_EQ(100.f, manager->ContentTopOffset());
296 } 297 }
297 298
298 TEST(TopControlsManagerTest, PinchIgnoresScroll) { 299 TEST(TopControlsManagerTest, PinchIgnoresScroll) {
299 MockTopControlsManagerClient client(0.5f, 0.5f); 300 MockTopControlsManagerClient client(100.f, 0.5f, 0.5f);
300 TopControlsManager* manager = client.manager(); 301 TopControlsManager* manager = client.manager();
301 302
302 // Hide the controls. 303 // Hide the controls.
303 manager->ScrollBegin(); 304 manager->ScrollBegin();
304 EXPECT_EQ(0.f, manager->ControlsTopOffset()); 305 EXPECT_EQ(0.f, manager->ControlsTopOffset());
305 306
306 manager->ScrollBy(gfx::Vector2dF(0.f, 300.f)); 307 manager->ScrollBy(gfx::Vector2dF(0.f, 300.f));
307 EXPECT_EQ(-100.f, manager->ControlsTopOffset()); 308 EXPECT_EQ(-100.f, manager->ControlsTopOffset());
308 309
309 manager->PinchBegin(); 310 manager->PinchBegin();
310 EXPECT_EQ(-100.f, manager->ControlsTopOffset()); 311 EXPECT_EQ(-100.f, manager->ControlsTopOffset());
311 312
312 // Scrolls are ignored during pinch. 313 // Scrolls are ignored during pinch.
313 manager->ScrollBy(gfx::Vector2dF(0.f, -15.f)); 314 manager->ScrollBy(gfx::Vector2dF(0.f, -15.f));
314 EXPECT_EQ(-100.f, manager->ControlsTopOffset()); 315 EXPECT_EQ(-100.f, manager->ControlsTopOffset());
315 manager->PinchEnd(); 316 manager->PinchEnd();
316 EXPECT_EQ(-100.f, manager->ControlsTopOffset()); 317 EXPECT_EQ(-100.f, manager->ControlsTopOffset());
317 318
318 // Scrolls should no long be ignored. 319 // Scrolls should no long be ignored.
319 manager->ScrollBy(gfx::Vector2dF(0.f, -15.f)); 320 manager->ScrollBy(gfx::Vector2dF(0.f, -15.f));
320 EXPECT_EQ(-85.f, manager->ControlsTopOffset()); 321 EXPECT_EQ(-85.f, manager->ControlsTopOffset());
321 EXPECT_EQ(15.f, manager->ContentTopOffset()); 322 EXPECT_EQ(15.f, manager->ContentTopOffset());
322 manager->ScrollEnd(); 323 manager->ScrollEnd();
323 324
324 EXPECT_TRUE(manager->animation()); 325 EXPECT_TRUE(manager->animation());
325 } 326 }
326 327
327 TEST(TopControlsManagerTest, PinchBeginStartsAnimationIfNecessary) { 328 TEST(TopControlsManagerTest, PinchBeginStartsAnimationIfNecessary) {
328 MockTopControlsManagerClient client(0.5f, 0.5f); 329 MockTopControlsManagerClient client(100.f, 0.5f, 0.5f);
329 TopControlsManager* manager = client.manager(); 330 TopControlsManager* manager = client.manager();
330 331
331 manager->ScrollBegin(); 332 manager->ScrollBegin();
332 manager->ScrollBy(gfx::Vector2dF(0.f, 300.f)); 333 manager->ScrollBy(gfx::Vector2dF(0.f, 300.f));
333 EXPECT_EQ(-100.f, manager->ControlsTopOffset()); 334 EXPECT_EQ(-100.f, manager->ControlsTopOffset());
334 335
335 manager->PinchBegin(); 336 manager->PinchBegin();
336 EXPECT_FALSE(manager->animation()); 337 EXPECT_FALSE(manager->animation());
337 338
338 manager->PinchEnd(); 339 manager->PinchEnd();
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
371 while (manager->animation()) { 372 while (manager->animation()) {
372 time = base::TimeDelta::FromMicroseconds(100) + time; 373 time = base::TimeDelta::FromMicroseconds(100) + time;
373 manager->Animate(time); 374 manager->Animate(time);
374 EXPECT_GT(manager->ControlsTopOffset(), previous_offset); 375 EXPECT_GT(manager->ControlsTopOffset(), previous_offset);
375 previous_offset = manager->ControlsTopOffset(); 376 previous_offset = manager->ControlsTopOffset();
376 } 377 }
377 EXPECT_FALSE(manager->animation()); 378 EXPECT_FALSE(manager->animation());
378 EXPECT_EQ(0.f, manager->ControlsTopOffset()); 379 EXPECT_EQ(0.f, manager->ControlsTopOffset());
379 } 380 }
380 381
382 TEST(TopControlsManagerTest, HeightChangeMaintainsFullyVisibleControls) {
383 MockTopControlsManagerClient client(0.f, 0.5f, 0.5f);
384 TopControlsManager* manager = client.manager();
385
386 EXPECT_EQ(0.f, manager->top_controls_height());
387 EXPECT_EQ(0.f, manager->ControlsTopOffset());
388
389 manager->SetTopControlsHeight(100.f);
390 EXPECT_FALSE(manager->animation());
391 EXPECT_EQ(100.f, manager->top_controls_height());
392 EXPECT_EQ(0, manager->ControlsTopOffset());
393
394 manager->SetTopControlsHeight(50.f);
395 EXPECT_FALSE(manager->animation());
396 EXPECT_EQ(50.f, manager->top_controls_height());
397 EXPECT_EQ(0.f, manager->ControlsTopOffset());
398 }
399
400 TEST(TopControlsManagerTest, ShrinkingHeightKeepsTopControlsHidden) {
401 MockTopControlsManagerClient client(100.f, 0.5f, 0.5f);
402 TopControlsManager* manager = client.manager();
403
404 manager->ScrollBegin();
405 manager->ScrollBy(gfx::Vector2dF(0.f, 300.f));
406 EXPECT_EQ(-100.f, manager->ControlsTopOffset());
407 EXPECT_EQ(0.f, manager->ContentTopOffset());
408 manager->ScrollEnd();
409
410 manager->SetTopControlsHeight(50.f);
411 EXPECT_FALSE(manager->animation());
412 EXPECT_EQ(-50.f, manager->ControlsTopOffset());
413 EXPECT_EQ(0.f, manager->ContentTopOffset());
414
415 manager->SetTopControlsHeight(0.f);
416 EXPECT_FALSE(manager->animation());
417 EXPECT_EQ(0.f, manager->ControlsTopOffset());
418 EXPECT_EQ(0.f, manager->ContentTopOffset());
419 }
420
421 TEST(TopControlsManagerTest, HiddenTopControlsReadjustOnIncreasedHeight) {
422 MockTopControlsManagerClient client(10.f, 0.5f, 0.5f);
423 TopControlsManager* manager = client.manager();
424
425 manager->ScrollBegin();
426 manager->ScrollBy(gfx::Vector2dF(0.f, 300.f));
427 EXPECT_EQ(-10.f, manager->ControlsTopOffset());
428 EXPECT_EQ(0.f, manager->ContentTopOffset());
429 manager->ScrollEnd();
430
431 manager->SetTopControlsHeight(15.f);
432 EXPECT_TRUE(manager->animation());
433 base::TimeTicks time = base::TimeTicks::Now();
434 float previous_offset = manager->ControlsTopOffset();
435 while (manager->animation()) {
436 time = base::TimeDelta::FromMicroseconds(100) + time;
437 manager->Animate(time);
438 EXPECT_LT(manager->ControlsTopOffset(), previous_offset);
439 previous_offset = manager->ControlsTopOffset();
440 }
441 EXPECT_FALSE(manager->animation());
442 EXPECT_EQ(-15.f, manager->ControlsTopOffset());
443
444 manager->SetTopControlsHeight(35.f);
445 EXPECT_TRUE(manager->animation());
446 time = base::TimeTicks::Now();
447 previous_offset = manager->ControlsTopOffset();
448 while (manager->animation()) {
449 time = base::TimeDelta::FromMicroseconds(100) + time;
450 manager->Animate(time);
451 EXPECT_GT(manager->ControlsTopOffset(), previous_offset);
452 previous_offset = manager->ControlsTopOffset();
453 }
454 EXPECT_FALSE(manager->animation());
455 EXPECT_EQ(0.f, manager->ControlsTopOffset());
456 }
381 } // namespace 457 } // namespace
382 } // namespace cc 458 } // namespace cc
OLDNEW
« no previous file with comments | « cc/input/top_controls_manager.cc ('k') | cc/trees/layer_tree_host.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698