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

Side by Side Diff: third_party/WebKit/Source/web/tests/BrowserControlsTest.cpp

Issue 2571703002: RootLayerScrolling: Fix scroll-related tests in BrowserControlsTest (Closed)
Patch Set: Created 4 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 | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2015 Google Inc. All rights reserved. 2 * Copyright (C) 2015 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
162 webView->resizeWithBrowserControls(webView->size(), 50.f, true); 162 webView->resizeWithBrowserControls(webView->size(), 50.f, true);
163 webView->browserControls().setShownRatio(1); 163 webView->browserControls().setShownRatio(1);
164 164
165 webView->handleInputEvent(generateEvent(WebInputEvent::GestureScrollBegin)); 165 webView->handleInputEvent(generateEvent(WebInputEvent::GestureScrollBegin));
166 EXPECT_FLOAT_EQ(50.f, webView->browserControls().contentOffset()); 166 EXPECT_FLOAT_EQ(50.f, webView->browserControls().contentOffset());
167 167
168 // Browser controls should be scrolled partially and page should not scroll. 168 // Browser controls should be scrolled partially and page should not scroll.
169 webView->handleInputEvent( 169 webView->handleInputEvent(
170 generateEvent(WebInputEvent::GestureScrollUpdate, 0, -25.f)); 170 generateEvent(WebInputEvent::GestureScrollUpdate, 0, -25.f));
171 EXPECT_FLOAT_EQ(25.f, webView->browserControls().contentOffset()); 171 EXPECT_FLOAT_EQ(25.f, webView->browserControls().contentOffset());
172 EXPECT_SIZE_EQ(ScrollOffset(0, 0), frame()->view()->getScrollOffset()); 172 EXPECT_SIZE_EQ(
173 ScrollOffset(0, 0),
174 frame()->view()->layoutViewportScrollableArea()->getScrollOffset());
173 175
174 // Browser controls should consume 25px and become hidden. Excess scroll 176 // Browser controls should consume 25px and become hidden. Excess scroll
175 // should be 177 // should be
176 // consumed by the page. 178 // consumed by the page.
177 webView->handleInputEvent( 179 webView->handleInputEvent(
178 generateEvent(WebInputEvent::GestureScrollUpdate, 0, -40.f)); 180 generateEvent(WebInputEvent::GestureScrollUpdate, 0, -40.f));
179 EXPECT_FLOAT_EQ(0.f, webView->browserControls().contentOffset()); 181 EXPECT_FLOAT_EQ(0.f, webView->browserControls().contentOffset());
180 EXPECT_SIZE_EQ(ScrollOffset(0, 15), frame()->view()->getScrollOffset()); 182 EXPECT_SIZE_EQ(
183 ScrollOffset(0, 15),
184 frame()->view()->layoutViewportScrollableArea()->getScrollOffset());
181 185
182 // Only page should consume scroll 186 // Only page should consume scroll
183 webView->handleInputEvent( 187 webView->handleInputEvent(
184 generateEvent(WebInputEvent::GestureScrollUpdate, 0, -20.f)); 188 generateEvent(WebInputEvent::GestureScrollUpdate, 0, -20.f));
185 EXPECT_FLOAT_EQ(0.f, webView->browserControls().contentOffset()); 189 EXPECT_FLOAT_EQ(0.f, webView->browserControls().contentOffset());
186 EXPECT_SIZE_EQ(ScrollOffset(0, 35), frame()->view()->getScrollOffset()); 190 EXPECT_SIZE_EQ(
191 ScrollOffset(0, 35),
192 frame()->view()->layoutViewportScrollableArea()->getScrollOffset());
187 } 193 }
188 194
189 // Scrolling up should show browser controls. 195 // Scrolling up should show browser controls.
190 TEST_F(BrowserControlsTest, MAYBE(ShowOnScrollUp)) { 196 TEST_F(BrowserControlsTest, MAYBE(ShowOnScrollUp)) {
191 WebViewImpl* webView = initialize(); 197 WebViewImpl* webView = initialize();
192 // initialize browser controls to be hidden. 198 // initialize browser controls to be hidden.
193 webView->resizeWithBrowserControls(webView->size(), 50.f, false); 199 webView->resizeWithBrowserControls(webView->size(), 50.f, false);
194 webView->browserControls().setShownRatio(0); 200 webView->browserControls().setShownRatio(0);
195 201
196 webView->handleInputEvent(generateEvent(WebInputEvent::GestureScrollBegin)); 202 webView->handleInputEvent(generateEvent(WebInputEvent::GestureScrollBegin));
197 EXPECT_FLOAT_EQ(0.f, webView->browserControls().contentOffset()); 203 EXPECT_FLOAT_EQ(0.f, webView->browserControls().contentOffset());
198 204
199 webView->handleInputEvent( 205 webView->handleInputEvent(
200 generateEvent(WebInputEvent::GestureScrollUpdate, 0, 10.f)); 206 generateEvent(WebInputEvent::GestureScrollUpdate, 0, 10.f));
201 EXPECT_FLOAT_EQ(10.f, webView->browserControls().contentOffset()); 207 EXPECT_FLOAT_EQ(10.f, webView->browserControls().contentOffset());
202 EXPECT_SIZE_EQ(ScrollOffset(0, 0), frame()->view()->getScrollOffset()); 208 EXPECT_SIZE_EQ(
209 ScrollOffset(0, 0),
210 frame()->view()->layoutViewportScrollableArea()->getScrollOffset());
203 211
204 webView->handleInputEvent( 212 webView->handleInputEvent(
205 generateEvent(WebInputEvent::GestureScrollUpdate, 0, 50.f)); 213 generateEvent(WebInputEvent::GestureScrollUpdate, 0, 50.f));
206 EXPECT_FLOAT_EQ(50.f, webView->browserControls().contentOffset()); 214 EXPECT_FLOAT_EQ(50.f, webView->browserControls().contentOffset());
207 EXPECT_SIZE_EQ(ScrollOffset(0, 0), frame()->view()->getScrollOffset()); 215 EXPECT_SIZE_EQ(
216 ScrollOffset(0, 0),
217 frame()->view()->layoutViewportScrollableArea()->getScrollOffset());
208 } 218 }
209 219
210 // Scrolling up after previous scroll downs should cause browser controls to be 220 // Scrolling up after previous scroll downs should cause browser controls to be
211 // shown only after all previously scrolled down amount is compensated. 221 // shown only after all previously scrolled down amount is compensated.
212 TEST_F(BrowserControlsTest, MAYBE(ScrollDownThenUp)) { 222 TEST_F(BrowserControlsTest, MAYBE(ScrollDownThenUp)) {
213 WebViewImpl* webView = initialize(); 223 WebViewImpl* webView = initialize();
214 // initialize browser controls to be shown and position page at 100px. 224 // initialize browser controls to be shown and position page at 100px.
215 webView->resizeWithBrowserControls(webView->size(), 50.f, true); 225 webView->resizeWithBrowserControls(webView->size(), 50.f, true);
216 webView->browserControls().setShownRatio(1); 226 webView->browserControls().setShownRatio(1);
217 frame()->view()->getScrollableArea()->setScrollOffset(ScrollOffset(0, 100), 227 frame()->view()->getScrollableArea()->setScrollOffset(ScrollOffset(0, 100),
218 ProgrammaticScroll); 228 ProgrammaticScroll);
219 229
220 webView->handleInputEvent(generateEvent(WebInputEvent::GestureScrollBegin)); 230 webView->handleInputEvent(generateEvent(WebInputEvent::GestureScrollBegin));
221 EXPECT_FLOAT_EQ(50.f, webView->browserControls().contentOffset()); 231 EXPECT_FLOAT_EQ(50.f, webView->browserControls().contentOffset());
222 232
223 // Scroll down to completely hide browser controls. Excess deltaY (100px) 233 // Scroll down to completely hide browser controls. Excess deltaY (100px)
224 // should be consumed by the page. 234 // should be consumed by the page.
225 webView->handleInputEvent( 235 webView->handleInputEvent(
226 generateEvent(WebInputEvent::GestureScrollUpdate, 0, -150.f)); 236 generateEvent(WebInputEvent::GestureScrollUpdate, 0, -150.f));
227 EXPECT_FLOAT_EQ(0.f, webView->browserControls().contentOffset()); 237 EXPECT_FLOAT_EQ(0.f, webView->browserControls().contentOffset());
228 EXPECT_SIZE_EQ(ScrollOffset(0, 200), frame()->view()->getScrollOffset()); 238 EXPECT_SIZE_EQ(
239 ScrollOffset(0, 200),
240 frame()->view()->layoutViewportScrollableArea()->getScrollOffset());
229 241
230 // Scroll up and ensure the browser controls does not move until we recover 242 // Scroll up and ensure the browser controls does not move until we recover
231 // 100px previously scrolled. 243 // 100px previously scrolled.
232 webView->handleInputEvent( 244 webView->handleInputEvent(
233 generateEvent(WebInputEvent::GestureScrollUpdate, 0, 40.f)); 245 generateEvent(WebInputEvent::GestureScrollUpdate, 0, 40.f));
234 EXPECT_FLOAT_EQ(0.f, webView->browserControls().contentOffset()); 246 EXPECT_FLOAT_EQ(0.f, webView->browserControls().contentOffset());
235 EXPECT_SIZE_EQ(ScrollOffset(0, 160), frame()->view()->getScrollOffset()); 247 EXPECT_SIZE_EQ(
248 ScrollOffset(0, 160),
249 frame()->view()->layoutViewportScrollableArea()->getScrollOffset());
236 250
237 webView->handleInputEvent( 251 webView->handleInputEvent(
238 generateEvent(WebInputEvent::GestureScrollUpdate, 0, 60.f)); 252 generateEvent(WebInputEvent::GestureScrollUpdate, 0, 60.f));
239 EXPECT_FLOAT_EQ(0.f, webView->browserControls().contentOffset()); 253 EXPECT_FLOAT_EQ(0.f, webView->browserControls().contentOffset());
240 EXPECT_SIZE_EQ(ScrollOffset(0, 100), frame()->view()->getScrollOffset()); 254 EXPECT_SIZE_EQ(
255 ScrollOffset(0, 100),
256 frame()->view()->layoutViewportScrollableArea()->getScrollOffset());
241 257
242 // Now we have hit the threshold so further scroll up should be consumed by 258 // Now we have hit the threshold so further scroll up should be consumed by
243 // browser controls. 259 // browser controls.
244 webView->handleInputEvent( 260 webView->handleInputEvent(
245 generateEvent(WebInputEvent::GestureScrollUpdate, 0, 30.f)); 261 generateEvent(WebInputEvent::GestureScrollUpdate, 0, 30.f));
246 EXPECT_FLOAT_EQ(30.f, webView->browserControls().contentOffset()); 262 EXPECT_FLOAT_EQ(30.f, webView->browserControls().contentOffset());
247 EXPECT_SIZE_EQ(ScrollOffset(0, 100), frame()->view()->getScrollOffset()); 263 EXPECT_SIZE_EQ(
264 ScrollOffset(0, 100),
265 frame()->view()->layoutViewportScrollableArea()->getScrollOffset());
248 266
249 // Once top control is fully shown then page should consume any excess scroll. 267 // Once top control is fully shown then page should consume any excess scroll.
250 webView->handleInputEvent( 268 webView->handleInputEvent(
251 generateEvent(WebInputEvent::GestureScrollUpdate, 0, 70.f)); 269 generateEvent(WebInputEvent::GestureScrollUpdate, 0, 70.f));
252 EXPECT_FLOAT_EQ(50.f, webView->browserControls().contentOffset()); 270 EXPECT_FLOAT_EQ(50.f, webView->browserControls().contentOffset());
253 EXPECT_SIZE_EQ(ScrollOffset(0, 50), frame()->view()->getScrollOffset()); 271 EXPECT_SIZE_EQ(
272 ScrollOffset(0, 50),
273 frame()->view()->layoutViewportScrollableArea()->getScrollOffset());
254 } 274 }
255 275
256 // Scrolling down should always cause visible browser controls to start hiding 276 // Scrolling down should always cause visible browser controls to start hiding
257 // even if we have been scrolling up previously. 277 // even if we have been scrolling up previously.
258 TEST_F(BrowserControlsTest, MAYBE(ScrollUpThenDown)) { 278 TEST_F(BrowserControlsTest, MAYBE(ScrollUpThenDown)) {
259 WebViewImpl* webView = initialize(); 279 WebViewImpl* webView = initialize();
260 // initialize browser controls to be hidden and position page at 100px. 280 // initialize browser controls to be hidden and position page at 100px.
261 webView->resizeWithBrowserControls(webView->size(), 50.f, false); 281 webView->resizeWithBrowserControls(webView->size(), 50.f, false);
262 webView->browserControls().setShownRatio(0); 282 webView->browserControls().setShownRatio(0);
263 frame()->view()->getScrollableArea()->setScrollOffset(ScrollOffset(0, 100), 283 frame()->view()->getScrollableArea()->setScrollOffset(ScrollOffset(0, 100),
264 ProgrammaticScroll); 284 ProgrammaticScroll);
265 285
266 webView->handleInputEvent(generateEvent(WebInputEvent::GestureScrollBegin)); 286 webView->handleInputEvent(generateEvent(WebInputEvent::GestureScrollBegin));
267 EXPECT_FLOAT_EQ(0.f, webView->browserControls().contentOffset()); 287 EXPECT_FLOAT_EQ(0.f, webView->browserControls().contentOffset());
268 288
269 // Scroll up to completely show browser controls. Excess deltaY (50px) should 289 // Scroll up to completely show browser controls. Excess deltaY (50px) should
270 // be consumed by the page. 290 // be consumed by the page.
271 webView->handleInputEvent( 291 webView->handleInputEvent(
272 generateEvent(WebInputEvent::GestureScrollUpdate, 0, 100.f)); 292 generateEvent(WebInputEvent::GestureScrollUpdate, 0, 100.f));
273 EXPECT_FLOAT_EQ(50.f, webView->browserControls().contentOffset()); 293 EXPECT_FLOAT_EQ(50.f, webView->browserControls().contentOffset());
274 EXPECT_SIZE_EQ(ScrollOffset(0, 50), frame()->view()->getScrollOffset()); 294 EXPECT_SIZE_EQ(
295 ScrollOffset(0, 50),
296 frame()->view()->layoutViewportScrollableArea()->getScrollOffset());
275 297
276 // Scroll down and ensure only browser controls is scrolled 298 // Scroll down and ensure only browser controls is scrolled
277 webView->handleInputEvent( 299 webView->handleInputEvent(
278 generateEvent(WebInputEvent::GestureScrollUpdate, 0, -40.f)); 300 generateEvent(WebInputEvent::GestureScrollUpdate, 0, -40.f));
279 EXPECT_FLOAT_EQ(10.f, webView->browserControls().contentOffset()); 301 EXPECT_FLOAT_EQ(10.f, webView->browserControls().contentOffset());
280 EXPECT_SIZE_EQ(ScrollOffset(0, 50), frame()->view()->getScrollOffset()); 302 EXPECT_SIZE_EQ(
303 ScrollOffset(0, 50),
304 frame()->view()->layoutViewportScrollableArea()->getScrollOffset());
281 305
282 webView->handleInputEvent( 306 webView->handleInputEvent(
283 generateEvent(WebInputEvent::GestureScrollUpdate, 0, -60.f)); 307 generateEvent(WebInputEvent::GestureScrollUpdate, 0, -60.f));
284 EXPECT_FLOAT_EQ(0.f, webView->browserControls().contentOffset()); 308 EXPECT_FLOAT_EQ(0.f, webView->browserControls().contentOffset());
285 EXPECT_SIZE_EQ(ScrollOffset(0, 100), frame()->view()->getScrollOffset()); 309 EXPECT_SIZE_EQ(
310 ScrollOffset(0, 100),
311 frame()->view()->layoutViewportScrollableArea()->getScrollOffset());
286 } 312 }
287 313
288 // Browser controls should not consume horizontal scroll. 314 // Browser controls should not consume horizontal scroll.
289 TEST_F(BrowserControlsTest, MAYBE(HorizontalScroll)) { 315 TEST_F(BrowserControlsTest, MAYBE(HorizontalScroll)) {
290 WebViewImpl* webView = initialize(); 316 WebViewImpl* webView = initialize();
291 // initialize browser controls to be shown. 317 // initialize browser controls to be shown.
292 webView->resizeWithBrowserControls(webView->size(), 50.f, true); 318 webView->resizeWithBrowserControls(webView->size(), 50.f, true);
293 webView->browserControls().setShownRatio(1); 319 webView->browserControls().setShownRatio(1);
294 320
295 webView->handleInputEvent(generateEvent(WebInputEvent::GestureScrollBegin)); 321 webView->handleInputEvent(generateEvent(WebInputEvent::GestureScrollBegin));
296 EXPECT_FLOAT_EQ(50.f, webView->browserControls().contentOffset()); 322 EXPECT_FLOAT_EQ(50.f, webView->browserControls().contentOffset());
297 323
298 // Browser controls should not consume horizontal scroll. 324 // Browser controls should not consume horizontal scroll.
299 webView->handleInputEvent( 325 webView->handleInputEvent(
300 generateEvent(WebInputEvent::GestureScrollUpdate, -110.f, -100.f)); 326 generateEvent(WebInputEvent::GestureScrollUpdate, -110.f, -100.f));
301 EXPECT_FLOAT_EQ(0.f, webView->browserControls().contentOffset()); 327 EXPECT_FLOAT_EQ(0.f, webView->browserControls().contentOffset());
302 EXPECT_SIZE_EQ(ScrollOffset(110, 50), frame()->view()->getScrollOffset()); 328 EXPECT_SIZE_EQ(
329 ScrollOffset(110, 50),
330 frame()->view()->layoutViewportScrollableArea()->getScrollOffset());
303 331
304 webView->handleInputEvent( 332 webView->handleInputEvent(
305 generateEvent(WebInputEvent::GestureScrollUpdate, -40.f, 0)); 333 generateEvent(WebInputEvent::GestureScrollUpdate, -40.f, 0));
306 EXPECT_FLOAT_EQ(0.f, webView->browserControls().contentOffset()); 334 EXPECT_FLOAT_EQ(0.f, webView->browserControls().contentOffset());
307 EXPECT_SIZE_EQ(ScrollOffset(150, 50), frame()->view()->getScrollOffset()); 335 EXPECT_SIZE_EQ(
336 ScrollOffset(150, 50),
337 frame()->view()->layoutViewportScrollableArea()->getScrollOffset());
308 } 338 }
309 339
310 // Page scale should not impact browser controls scrolling 340 // Page scale should not impact browser controls scrolling
311 TEST_F(BrowserControlsTest, MAYBE(PageScaleHasNoImpact)) { 341 TEST_F(BrowserControlsTest, MAYBE(PageScaleHasNoImpact)) {
312 WebViewImpl* webView = initialize(); 342 WebViewImpl* webView = initialize();
313 webViewImpl()->setDefaultPageScaleLimits(0.25f, 5); 343 webViewImpl()->setDefaultPageScaleLimits(0.25f, 5);
314 webView->setPageScaleFactor(2.0); 344 webView->setPageScaleFactor(2.0);
315 345
316 // Initialize browser controls to be shown. 346 // Initialize browser controls to be shown.
317 webView->resizeWithBrowserControls(webView->size(), 50.f, true); 347 webView->resizeWithBrowserControls(webView->size(), 50.f, true);
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
389 webView->resizeWithBrowserControls(webView->size(), 50.f, true); 419 webView->resizeWithBrowserControls(webView->size(), 50.f, true);
390 webView->browserControls().setShownRatio(1); 420 webView->browserControls().setShownRatio(1);
391 frame()->view()->getScrollableArea()->setScrollOffset(ScrollOffset(0, 50), 421 frame()->view()->getScrollableArea()->setScrollOffset(ScrollOffset(0, 50),
392 ProgrammaticScroll); 422 ProgrammaticScroll);
393 423
394 // Test scroll down 424 // Test scroll down
395 // Scroll down should scroll the overflow div first but browser controls and 425 // Scroll down should scroll the overflow div first but browser controls and
396 // main frame should not scroll. 426 // main frame should not scroll.
397 verticalScroll(-800.f); 427 verticalScroll(-800.f);
398 EXPECT_FLOAT_EQ(50.f, webView->browserControls().contentOffset()); 428 EXPECT_FLOAT_EQ(50.f, webView->browserControls().contentOffset());
399 EXPECT_SIZE_EQ(ScrollOffset(0, 50), frame()->view()->getScrollOffset()); 429 EXPECT_SIZE_EQ(
430 ScrollOffset(0, 50),
431 frame()->view()->layoutViewportScrollableArea()->getScrollOffset());
400 432
401 // Continued scroll down should start hiding browser controls but main frame 433 // Continued scroll down should start hiding browser controls but main frame
402 // should not scroll. 434 // should not scroll.
403 verticalScroll(-40.f); 435 verticalScroll(-40.f);
404 EXPECT_FLOAT_EQ(10.f, webView->browserControls().contentOffset()); 436 EXPECT_FLOAT_EQ(10.f, webView->browserControls().contentOffset());
405 EXPECT_SIZE_EQ(ScrollOffset(0, 50), frame()->view()->getScrollOffset()); 437 EXPECT_SIZE_EQ(
438 ScrollOffset(0, 50),
439 frame()->view()->layoutViewportScrollableArea()->getScrollOffset());
406 440
407 // Continued scroll down should scroll down the main frame 441 // Continued scroll down should scroll down the main frame
408 verticalScroll(-40.f); 442 verticalScroll(-40.f);
409 EXPECT_FLOAT_EQ(0.f, webView->browserControls().contentOffset()); 443 EXPECT_FLOAT_EQ(0.f, webView->browserControls().contentOffset());
410 EXPECT_SIZE_EQ(ScrollOffset(0, 80), frame()->view()->getScrollOffset()); 444 EXPECT_SIZE_EQ(
445 ScrollOffset(0, 80),
446 frame()->view()->layoutViewportScrollableArea()->getScrollOffset());
411 447
412 // Test scroll up 448 // Test scroll up
413 // scroll up should scroll overflow div first 449 // scroll up should scroll overflow div first
414 verticalScroll(800.f); 450 verticalScroll(800.f);
415 EXPECT_FLOAT_EQ(0.f, webView->browserControls().contentOffset()); 451 EXPECT_FLOAT_EQ(0.f, webView->browserControls().contentOffset());
416 EXPECT_SIZE_EQ(ScrollOffset(0, 80), frame()->view()->getScrollOffset()); 452 EXPECT_SIZE_EQ(
453 ScrollOffset(0, 80),
454 frame()->view()->layoutViewportScrollableArea()->getScrollOffset());
417 455
418 // Continued scroll up should start showing browser controls but main frame 456 // Continued scroll up should start showing browser controls but main frame
419 // should not scroll. 457 // should not scroll.
420 verticalScroll(40.f); 458 verticalScroll(40.f);
421 EXPECT_FLOAT_EQ(40.f, webView->browserControls().contentOffset()); 459 EXPECT_FLOAT_EQ(40.f, webView->browserControls().contentOffset());
422 EXPECT_SIZE_EQ(ScrollOffset(0, 80), frame()->view()->getScrollOffset()); 460 EXPECT_SIZE_EQ(
461 ScrollOffset(0, 80),
462 frame()->view()->layoutViewportScrollableArea()->getScrollOffset());
423 463
424 // Continued scroll down up scroll up the main frame 464 // Continued scroll down up scroll up the main frame
425 verticalScroll(40.f); 465 verticalScroll(40.f);
426 EXPECT_FLOAT_EQ(50.f, webView->browserControls().contentOffset()); 466 EXPECT_FLOAT_EQ(50.f, webView->browserControls().contentOffset());
427 EXPECT_SIZE_EQ(ScrollOffset(0, 50), frame()->view()->getScrollOffset()); 467 EXPECT_SIZE_EQ(
468 ScrollOffset(0, 50),
469 frame()->view()->layoutViewportScrollableArea()->getScrollOffset());
428 } 470 }
429 471
430 // Scrollable iframes should scroll before browser controls 472 // Scrollable iframes should scroll before browser controls
431 TEST_F(BrowserControlsTest, MAYBE(ScrollableIframeScrollFirst)) { 473 TEST_F(BrowserControlsTest, MAYBE(ScrollableIframeScrollFirst)) {
432 WebViewImpl* webView = initialize("iframe-scrolling.html"); 474 WebViewImpl* webView = initialize("iframe-scrolling.html");
433 webView->resizeWithBrowserControls(webView->size(), 50.f, true); 475 webView->resizeWithBrowserControls(webView->size(), 50.f, true);
434 webView->browserControls().setShownRatio(1); 476 webView->browserControls().setShownRatio(1);
435 frame()->view()->getScrollableArea()->setScrollOffset(ScrollOffset(0, 50), 477 frame()->view()->getScrollableArea()->setScrollOffset(ScrollOffset(0, 50),
436 ProgrammaticScroll); 478 ProgrammaticScroll);
437 479
438 // Test scroll down 480 // Test scroll down
439 // Scroll down should scroll the iframe first but browser controls and main 481 // Scroll down should scroll the iframe first but browser controls and main
440 // frame should not scroll. 482 // frame should not scroll.
441 verticalScroll(-800.f); 483 verticalScroll(-800.f);
442 EXPECT_FLOAT_EQ(50.f, webView->browserControls().contentOffset()); 484 EXPECT_FLOAT_EQ(50.f, webView->browserControls().contentOffset());
443 EXPECT_SIZE_EQ(ScrollOffset(0, 50), frame()->view()->getScrollOffset()); 485 EXPECT_SIZE_EQ(
486 ScrollOffset(0, 50),
487 frame()->view()->layoutViewportScrollableArea()->getScrollOffset());
444 488
445 // Continued scroll down should start hiding browser controls but main frame 489 // Continued scroll down should start hiding browser controls but main frame
446 // should not scroll. 490 // should not scroll.
447 verticalScroll(-40.f); 491 verticalScroll(-40.f);
448 EXPECT_FLOAT_EQ(10.f, webView->browserControls().contentOffset()); 492 EXPECT_FLOAT_EQ(10.f, webView->browserControls().contentOffset());
449 EXPECT_SIZE_EQ(ScrollOffset(0, 50), frame()->view()->getScrollOffset()); 493 EXPECT_SIZE_EQ(
494 ScrollOffset(0, 50),
495 frame()->view()->layoutViewportScrollableArea()->getScrollOffset());
450 496
451 // Continued scroll down should scroll down the main frame 497 // Continued scroll down should scroll down the main frame
452 verticalScroll(-40.f); 498 verticalScroll(-40.f);
453 EXPECT_FLOAT_EQ(0.f, webView->browserControls().contentOffset()); 499 EXPECT_FLOAT_EQ(0.f, webView->browserControls().contentOffset());
454 EXPECT_SIZE_EQ(ScrollOffset(0, 80), frame()->view()->getScrollOffset()); 500 EXPECT_SIZE_EQ(
501 ScrollOffset(0, 80),
502 frame()->view()->layoutViewportScrollableArea()->getScrollOffset());
455 503
456 // Test scroll up 504 // Test scroll up
457 // scroll up should scroll iframe first 505 // scroll up should scroll iframe first
458 verticalScroll(800.f); 506 verticalScroll(800.f);
459 EXPECT_FLOAT_EQ(0.f, webView->browserControls().contentOffset()); 507 EXPECT_FLOAT_EQ(0.f, webView->browserControls().contentOffset());
460 EXPECT_SIZE_EQ(ScrollOffset(0, 80), frame()->view()->getScrollOffset()); 508 EXPECT_SIZE_EQ(
509 ScrollOffset(0, 80),
510 frame()->view()->layoutViewportScrollableArea()->getScrollOffset());
461 511
462 // Continued scroll up should start showing browser controls but main frame 512 // Continued scroll up should start showing browser controls but main frame
463 // should not scroll. 513 // should not scroll.
464 verticalScroll(40.f); 514 verticalScroll(40.f);
465 EXPECT_FLOAT_EQ(40.f, webView->browserControls().contentOffset()); 515 EXPECT_FLOAT_EQ(40.f, webView->browserControls().contentOffset());
466 EXPECT_SIZE_EQ(ScrollOffset(0, 80), frame()->view()->getScrollOffset()); 516 EXPECT_SIZE_EQ(
517 ScrollOffset(0, 80),
518 frame()->view()->layoutViewportScrollableArea()->getScrollOffset());
467 519
468 // Continued scroll down up scroll up the main frame 520 // Continued scroll down up scroll up the main frame
469 verticalScroll(40.f); 521 verticalScroll(40.f);
470 EXPECT_FLOAT_EQ(50.f, webView->browserControls().contentOffset()); 522 EXPECT_FLOAT_EQ(50.f, webView->browserControls().contentOffset());
471 EXPECT_SIZE_EQ(ScrollOffset(0, 50), frame()->view()->getScrollOffset()); 523 EXPECT_SIZE_EQ(
524 ScrollOffset(0, 50),
525 frame()->view()->layoutViewportScrollableArea()->getScrollOffset());
472 } 526 }
473 527
474 // Browser controls visibility should remain consistent when height is changed. 528 // Browser controls visibility should remain consistent when height is changed.
475 TEST_F(BrowserControlsTest, MAYBE(HeightChangeMaintainsVisibility)) { 529 TEST_F(BrowserControlsTest, MAYBE(HeightChangeMaintainsVisibility)) {
476 WebViewImpl* webView = initialize(); 530 WebViewImpl* webView = initialize();
477 webView->resizeWithBrowserControls(webView->size(), 20.f, false); 531 webView->resizeWithBrowserControls(webView->size(), 20.f, false);
478 webView->browserControls().setShownRatio(0); 532 webView->browserControls().setShownRatio(0);
479 533
480 webView->resizeWithBrowserControls(webView->size(), 20.f, false); 534 webView->resizeWithBrowserControls(webView->size(), 20.f, false);
481 EXPECT_FLOAT_EQ(0.f, webView->browserControls().contentOffset()); 535 EXPECT_FLOAT_EQ(0.f, webView->browserControls().contentOffset());
(...skipping 16 matching lines...) Expand all
498 WebViewImpl* webView = initialize(); 552 WebViewImpl* webView = initialize();
499 webView->resizeWithBrowserControls(webView->size(), 0, false); 553 webView->resizeWithBrowserControls(webView->size(), 0, false);
500 webView->browserControls().setShownRatio(0); 554 webView->browserControls().setShownRatio(0);
501 frame()->view()->getScrollableArea()->setScrollOffset(ScrollOffset(0, 100), 555 frame()->view()->getScrollableArea()->setScrollOffset(ScrollOffset(0, 100),
502 ProgrammaticScroll); 556 ProgrammaticScroll);
503 557
504 EXPECT_FLOAT_EQ(0.f, webView->browserControls().contentOffset()); 558 EXPECT_FLOAT_EQ(0.f, webView->browserControls().contentOffset());
505 559
506 verticalScroll(20.f); 560 verticalScroll(20.f);
507 EXPECT_FLOAT_EQ(0.f, webView->browserControls().contentOffset()); 561 EXPECT_FLOAT_EQ(0.f, webView->browserControls().contentOffset());
508 EXPECT_SIZE_EQ(ScrollOffset(0, 80), frame()->view()->getScrollOffset()); 562 EXPECT_SIZE_EQ(
563 ScrollOffset(0, 80),
564 frame()->view()->layoutViewportScrollableArea()->getScrollOffset());
509 565
510 verticalScroll(-30.f); 566 verticalScroll(-30.f);
511 EXPECT_FLOAT_EQ(0.f, webView->browserControls().contentOffset()); 567 EXPECT_FLOAT_EQ(0.f, webView->browserControls().contentOffset());
512 EXPECT_SIZE_EQ(ScrollOffset(0, 110), frame()->view()->getScrollOffset()); 568 EXPECT_SIZE_EQ(
569 ScrollOffset(0, 110),
570 frame()->view()->layoutViewportScrollableArea()->getScrollOffset());
513 571
514 webView->browserControls().setShownRatio(1); 572 webView->browserControls().setShownRatio(1);
515 EXPECT_FLOAT_EQ(0.f, webView->browserControls().contentOffset()); 573 EXPECT_FLOAT_EQ(0.f, webView->browserControls().contentOffset());
516 } 574 }
517 575
518 // Browser controls should not hide when scrolling up past limit 576 // Browser controls should not hide when scrolling up past limit
519 TEST_F(BrowserControlsTest, MAYBE(ScrollUpPastLimitDoesNotHide)) { 577 TEST_F(BrowserControlsTest, MAYBE(ScrollUpPastLimitDoesNotHide)) {
520 WebViewImpl* webView = initialize(); 578 WebViewImpl* webView = initialize();
521 // Initialize browser controls to be shown 579 // Initialize browser controls to be shown
522 webView->resizeWithBrowserControls(webView->size(), 50.f, true); 580 webView->resizeWithBrowserControls(webView->size(), 50.f, true);
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
557 615
558 // Setting permitted state should change the content offset to match the 616 // Setting permitted state should change the content offset to match the
559 // constraint. 617 // constraint.
560 webView->updateBrowserControlsState(WebBrowserControlsShown, 618 webView->updateBrowserControlsState(WebBrowserControlsShown,
561 WebBrowserControlsShown, false); 619 WebBrowserControlsShown, false);
562 EXPECT_FLOAT_EQ(50.f, webView->browserControls().contentOffset()); 620 EXPECT_FLOAT_EQ(50.f, webView->browserControls().contentOffset());
563 621
564 // Only shown state is permitted so controls cannot hide 622 // Only shown state is permitted so controls cannot hide
565 verticalScroll(-20.f); 623 verticalScroll(-20.f);
566 EXPECT_FLOAT_EQ(50, webView->browserControls().contentOffset()); 624 EXPECT_FLOAT_EQ(50, webView->browserControls().contentOffset());
567 EXPECT_SIZE_EQ(ScrollOffset(0, 120), frame()->view()->getScrollOffset()); 625 EXPECT_SIZE_EQ(
626 ScrollOffset(0, 120),
627 frame()->view()->layoutViewportScrollableArea()->getScrollOffset());
568 628
569 // Setting permitted state should change content offset to match the 629 // Setting permitted state should change content offset to match the
570 // constraint. 630 // constraint.
571 webView->updateBrowserControlsState(WebBrowserControlsHidden, 631 webView->updateBrowserControlsState(WebBrowserControlsHidden,
572 WebBrowserControlsHidden, false); 632 WebBrowserControlsHidden, false);
573 EXPECT_FLOAT_EQ(0, webView->browserControls().contentOffset()); 633 EXPECT_FLOAT_EQ(0, webView->browserControls().contentOffset());
574 634
575 // Only hidden state is permitted so controls cannot show 635 // Only hidden state is permitted so controls cannot show
576 verticalScroll(30.f); 636 verticalScroll(30.f);
577 EXPECT_FLOAT_EQ(0, webView->browserControls().contentOffset()); 637 EXPECT_FLOAT_EQ(0, webView->browserControls().contentOffset());
578 EXPECT_SIZE_EQ(ScrollOffset(0, 90), frame()->view()->getScrollOffset()); 638 EXPECT_SIZE_EQ(
639 ScrollOffset(0, 90),
640 frame()->view()->layoutViewportScrollableArea()->getScrollOffset());
579 641
580 // Setting permitted state to "both" should not change content offset. 642 // Setting permitted state to "both" should not change content offset.
581 webView->updateBrowserControlsState(WebBrowserControlsBoth, 643 webView->updateBrowserControlsState(WebBrowserControlsBoth,
582 WebBrowserControlsBoth, false); 644 WebBrowserControlsBoth, false);
583 EXPECT_FLOAT_EQ(0, webView->browserControls().contentOffset()); 645 EXPECT_FLOAT_EQ(0, webView->browserControls().contentOffset());
584 646
585 // Both states are permitted so controls can either show or hide 647 // Both states are permitted so controls can either show or hide
586 verticalScroll(50.f); 648 verticalScroll(50.f);
587 EXPECT_FLOAT_EQ(50, webView->browserControls().contentOffset()); 649 EXPECT_FLOAT_EQ(50, webView->browserControls().contentOffset());
588 EXPECT_SIZE_EQ(ScrollOffset(0, 90), frame()->view()->getScrollOffset()); 650 EXPECT_SIZE_EQ(
651 ScrollOffset(0, 90),
652 frame()->view()->layoutViewportScrollableArea()->getScrollOffset());
589 653
590 verticalScroll(-50.f); 654 verticalScroll(-50.f);
591 EXPECT_FLOAT_EQ(0, webView->browserControls().contentOffset()); 655 EXPECT_FLOAT_EQ(0, webView->browserControls().contentOffset());
592 EXPECT_SIZE_EQ(ScrollOffset(0, 90), frame()->view()->getScrollOffset()); 656 EXPECT_SIZE_EQ(
657 ScrollOffset(0, 90),
658 frame()->view()->layoutViewportScrollableArea()->getScrollOffset());
593 659
594 // Setting permitted state to "both" should not change an in-flight offset. 660 // Setting permitted state to "both" should not change an in-flight offset.
595 verticalScroll(20.f); 661 verticalScroll(20.f);
596 EXPECT_FLOAT_EQ(20, webView->browserControls().contentOffset()); 662 EXPECT_FLOAT_EQ(20, webView->browserControls().contentOffset());
597 webView->updateBrowserControlsState(WebBrowserControlsBoth, 663 webView->updateBrowserControlsState(WebBrowserControlsBoth,
598 WebBrowserControlsBoth, false); 664 WebBrowserControlsBoth, false);
599 EXPECT_FLOAT_EQ(20, webView->browserControls().contentOffset()); 665 EXPECT_FLOAT_EQ(20, webView->browserControls().contentOffset());
600 666
601 // An animated state change shouldn't cause a change to the content offset 667 // An animated state change shouldn't cause a change to the content offset
602 // since it'll be driven from the compositor. 668 // since it'll be driven from the compositor.
(...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after
853 view->setScrollOffset(view->getScrollOffset(), ProgrammaticScroll); 919 view->setScrollOffset(view->getScrollOffset(), ProgrammaticScroll);
854 920
855 ASSERT_EQ(80.f, webView->browserControls().contentOffset()); 921 ASSERT_EQ(80.f, webView->browserControls().contentOffset());
856 EXPECT_EQ(expectedRootOffset, rootViewport->getScrollOffset().height()); 922 EXPECT_EQ(expectedRootOffset, rootViewport->getScrollOffset().height());
857 923
858 webView->handleInputEvent(generateEvent(WebInputEvent::GestureScrollEnd)); 924 webView->handleInputEvent(generateEvent(WebInputEvent::GestureScrollEnd));
859 } 925 }
860 } 926 }
861 927
862 } // namespace blink 928 } // namespace blink
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698