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

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

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

Powered by Google App Engine
This is Rietveld 408576698