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

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

Issue 2443613002: Rename classes related to top controls (Closed)
Patch Set: fix test Created 4 years, 1 month 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "core/frame/VisualViewport.h" 5 #include "core/frame/VisualViewport.h"
6 6
7 #include "core/dom/Document.h" 7 #include "core/dom/Document.h"
8 #include "core/frame/BrowserControls.h"
8 #include "core/frame/FrameHost.h" 9 #include "core/frame/FrameHost.h"
9 #include "core/frame/FrameView.h" 10 #include "core/frame/FrameView.h"
10 #include "core/frame/LocalFrame.h" 11 #include "core/frame/LocalFrame.h"
11 #include "core/frame/TopControls.h"
12 #include "core/html/HTMLBodyElement.h" 12 #include "core/html/HTMLBodyElement.h"
13 #include "core/html/HTMLElement.h" 13 #include "core/html/HTMLElement.h"
14 #include "core/input/EventHandler.h" 14 #include "core/input/EventHandler.h"
15 #include "core/layout/LayoutObject.h" 15 #include "core/layout/LayoutObject.h"
16 #include "core/layout/api/LayoutViewItem.h" 16 #include "core/layout/api/LayoutViewItem.h"
17 #include "core/layout/compositing/PaintLayerCompositor.h" 17 #include "core/layout/compositing/PaintLayerCompositor.h"
18 #include "core/page/Page.h" 18 #include "core/page/Page.h"
19 #include "platform/PlatformGestureEvent.h" 19 #include "platform/PlatformGestureEvent.h"
20 #include "platform/geometry/DoublePoint.h" 20 #include "platform/geometry/DoublePoint.h"
21 #include "platform/geometry/DoubleRect.h" 21 #include "platform/geometry/DoubleRect.h"
(...skipping 1260 matching lines...) Expand 10 before | Expand all | Expand 10 after
1282 VisualViewport& visualViewport, 1282 VisualViewport& visualViewport,
1283 FrameView& frameView) { 1283 FrameView& frameView) {
1284 float aspectRatio = visualViewport.visibleRect().width() / 1284 float aspectRatio = visualViewport.visibleRect().width() /
1285 visualViewport.visibleRect().height(); 1285 visualViewport.visibleRect().height();
1286 float newHeight = frameView.frameRect().width() / aspectRatio; 1286 float newHeight = frameView.frameRect().width() / aspectRatio;
1287 return ScrollOffset( 1287 return ScrollOffset(
1288 frameView.contentsSize().width() - frameView.frameRect().width(), 1288 frameView.contentsSize().width() - frameView.frameRect().width(),
1289 frameView.contentsSize().height() - newHeight); 1289 frameView.contentsSize().height() - newHeight);
1290 } 1290 }
1291 1291
1292 TEST_F(VisualViewportTest, TestTopControlsAdjustment) { 1292 TEST_F(VisualViewportTest, TestBrowserControlsAdjustment) {
1293 initializeWithAndroidSettings(); 1293 initializeWithAndroidSettings();
1294 webViewImpl()->resizeWithTopControls(IntSize(500, 450), 20, false); 1294 webViewImpl()->resizeWithBrowserControls(IntSize(500, 450), 20, false);
1295 1295
1296 registerMockedHttpURLLoad("content-width-1000.html"); 1296 registerMockedHttpURLLoad("content-width-1000.html");
1297 navigateTo(m_baseURL + "content-width-1000.html"); 1297 navigateTo(m_baseURL + "content-width-1000.html");
1298 1298
1299 VisualViewport& visualViewport = 1299 VisualViewport& visualViewport =
1300 frame()->page()->frameHost().visualViewport(); 1300 frame()->page()->frameHost().visualViewport();
1301 FrameView& frameView = *webViewImpl()->mainFrameImpl()->frameView(); 1301 FrameView& frameView = *webViewImpl()->mainFrameImpl()->frameView();
1302 1302
1303 visualViewport.setScale(1); 1303 visualViewport.setScale(1);
1304 EXPECT_SIZE_EQ(IntSize(500, 450), visualViewport.visibleRect().size()); 1304 EXPECT_SIZE_EQ(IntSize(500, 450), visualViewport.visibleRect().size());
1305 EXPECT_SIZE_EQ(IntSize(1000, 900), frameView.frameRect().size()); 1305 EXPECT_SIZE_EQ(IntSize(1000, 900), frameView.frameRect().size());
1306 1306
1307 // Simulate bringing down the top controls by 20px. 1307 // Simulate bringing down the browser controls by 20px.
1308 webViewImpl()->applyViewportDeltas(WebFloatSize(), WebFloatSize(), 1308 webViewImpl()->applyViewportDeltas(WebFloatSize(), WebFloatSize(),
1309 WebFloatSize(), 1, 1); 1309 WebFloatSize(), 1, 1);
1310 EXPECT_SIZE_EQ(IntSize(500, 430), visualViewport.visibleRect().size()); 1310 EXPECT_SIZE_EQ(IntSize(500, 430), visualViewport.visibleRect().size());
1311 1311
1312 // Test that the scroll bounds are adjusted appropriately: the visual viewport 1312 // Test that the scroll bounds are adjusted appropriately: the visual viewport
1313 // should be shrunk by 20px to 430px. The outer viewport was shrunk to 1313 // should be shrunk by 20px to 430px. The outer viewport was shrunk to
1314 // maintain the 1314 // maintain the
1315 // aspect ratio so it's height is 860px. 1315 // aspect ratio so it's height is 860px.
1316 visualViewport.move(ScrollOffset(10000, 10000)); 1316 visualViewport.move(ScrollOffset(10000, 10000));
1317 EXPECT_SIZE_EQ(FloatSize(500, 860 - 430), visualViewport.scrollOffset()); 1317 EXPECT_SIZE_EQ(FloatSize(500, 860 - 430), visualViewport.scrollOffset());
1318 1318
1319 // The outer viewport (FrameView) should be affected as well. 1319 // The outer viewport (FrameView) should be affected as well.
1320 frameView.scrollBy(ScrollOffset(10000, 10000), UserScroll); 1320 frameView.scrollBy(ScrollOffset(10000, 10000), UserScroll);
1321 EXPECT_SIZE_EQ(expectedMaxFrameViewScrollOffset(visualViewport, frameView), 1321 EXPECT_SIZE_EQ(expectedMaxFrameViewScrollOffset(visualViewport, frameView),
1322 frameView.scrollOffset()); 1322 frameView.scrollOffset());
1323 1323
1324 // Simulate bringing up the top controls by 10.5px. 1324 // Simulate bringing up the browser controls by 10.5px.
1325 webViewImpl()->applyViewportDeltas(WebFloatSize(), WebFloatSize(), 1325 webViewImpl()->applyViewportDeltas(WebFloatSize(), WebFloatSize(),
1326 WebFloatSize(), 1, -10.5f / 20); 1326 WebFloatSize(), 1, -10.5f / 20);
1327 EXPECT_FLOAT_SIZE_EQ(FloatSize(500, 440.5f), 1327 EXPECT_FLOAT_SIZE_EQ(FloatSize(500, 440.5f),
1328 visualViewport.visibleRect().size()); 1328 visualViewport.visibleRect().size());
1329 1329
1330 // maximumScrollPosition |ceil|s the top controls adjustment. 1330 // maximumScrollPosition |ceil|s the browser controls adjustment.
1331 visualViewport.move(ScrollOffset(10000, 10000)); 1331 visualViewport.move(ScrollOffset(10000, 10000));
1332 EXPECT_FLOAT_SIZE_EQ(FloatSize(500, 881 - 441), 1332 EXPECT_FLOAT_SIZE_EQ(FloatSize(500, 881 - 441),
1333 visualViewport.scrollOffset()); 1333 visualViewport.scrollOffset());
1334 1334
1335 // The outer viewport (FrameView) should be affected as well. 1335 // The outer viewport (FrameView) should be affected as well.
1336 frameView.scrollBy(ScrollOffset(10000, 10000), UserScroll); 1336 frameView.scrollBy(ScrollOffset(10000, 10000), UserScroll);
1337 EXPECT_SIZE_EQ(expectedMaxFrameViewScrollOffset(visualViewport, frameView), 1337 EXPECT_SIZE_EQ(expectedMaxFrameViewScrollOffset(visualViewport, frameView),
1338 frameView.scrollOffset()); 1338 frameView.scrollOffset());
1339 } 1339 }
1340 1340
1341 TEST_F(VisualViewportTest, TestTopControlsAdjustmentWithScale) { 1341 TEST_F(VisualViewportTest, TestBrowserControlsAdjustmentWithScale) {
1342 initializeWithAndroidSettings(); 1342 initializeWithAndroidSettings();
1343 webViewImpl()->resizeWithTopControls(IntSize(500, 450), 20, false); 1343 webViewImpl()->resizeWithBrowserControls(IntSize(500, 450), 20, false);
1344 1344
1345 registerMockedHttpURLLoad("content-width-1000.html"); 1345 registerMockedHttpURLLoad("content-width-1000.html");
1346 navigateTo(m_baseURL + "content-width-1000.html"); 1346 navigateTo(m_baseURL + "content-width-1000.html");
1347 1347
1348 VisualViewport& visualViewport = 1348 VisualViewport& visualViewport =
1349 frame()->page()->frameHost().visualViewport(); 1349 frame()->page()->frameHost().visualViewport();
1350 FrameView& frameView = *webViewImpl()->mainFrameImpl()->frameView(); 1350 FrameView& frameView = *webViewImpl()->mainFrameImpl()->frameView();
1351 1351
1352 visualViewport.setScale(2); 1352 visualViewport.setScale(2);
1353 EXPECT_SIZE_EQ(IntSize(250, 225), visualViewport.visibleRect().size()); 1353 EXPECT_SIZE_EQ(IntSize(250, 225), visualViewport.visibleRect().size());
1354 EXPECT_SIZE_EQ(IntSize(1000, 900), frameView.frameRect().size()); 1354 EXPECT_SIZE_EQ(IntSize(1000, 900), frameView.frameRect().size());
1355 1355
1356 // Simulate bringing down the top controls by 20px. Since we're zoomed in, the 1356 // Simulate bringing down the browser controls by 20px. Since we're zoomed in,
1357 // top controls take up half as much space (in document-space) than they do at 1357 // the browser controls take up half as much space (in document-space) than
1358 // an unzoomed level. 1358 // they do at an unzoomed level.
1359 webViewImpl()->applyViewportDeltas(WebFloatSize(), WebFloatSize(), 1359 webViewImpl()->applyViewportDeltas(WebFloatSize(), WebFloatSize(),
1360 WebFloatSize(), 1, 1); 1360 WebFloatSize(), 1, 1);
1361 EXPECT_SIZE_EQ(IntSize(250, 215), visualViewport.visibleRect().size()); 1361 EXPECT_SIZE_EQ(IntSize(250, 215), visualViewport.visibleRect().size());
1362 1362
1363 // Test that the scroll bounds are adjusted appropriately. 1363 // Test that the scroll bounds are adjusted appropriately.
1364 visualViewport.move(ScrollOffset(10000, 10000)); 1364 visualViewport.move(ScrollOffset(10000, 10000));
1365 EXPECT_SIZE_EQ(FloatSize(750, 860 - 215), visualViewport.scrollOffset()); 1365 EXPECT_SIZE_EQ(FloatSize(750, 860 - 215), visualViewport.scrollOffset());
1366 1366
1367 // The outer viewport (FrameView) should be affected as well. 1367 // The outer viewport (FrameView) should be affected as well.
1368 frameView.scrollBy(ScrollOffset(10000, 10000), UserScroll); 1368 frameView.scrollBy(ScrollOffset(10000, 10000), UserScroll);
(...skipping 12 matching lines...) Expand all
1381 1381
1382 EXPECT_SIZE_EQ(FloatSize(500, 860 - 430), visualViewport.scrollOffset()); 1382 EXPECT_SIZE_EQ(FloatSize(500, 860 - 430), visualViewport.scrollOffset());
1383 visualViewport.move(ScrollOffset(10000, 10000)); 1383 visualViewport.move(ScrollOffset(10000, 10000));
1384 EXPECT_SIZE_EQ(FloatSize(500, 860 - 430), visualViewport.scrollOffset()); 1384 EXPECT_SIZE_EQ(FloatSize(500, 860 - 430), visualViewport.scrollOffset());
1385 1385
1386 // Scale out, use a scale that causes fractional rects. 1386 // Scale out, use a scale that causes fractional rects.
1387 webViewImpl()->applyViewportDeltas(WebFloatSize(), WebFloatSize(), 1387 webViewImpl()->applyViewportDeltas(WebFloatSize(), WebFloatSize(),
1388 WebFloatSize(), 0.8f, -1); 1388 WebFloatSize(), 0.8f, -1);
1389 EXPECT_SIZE_EQ(FloatSize(625, 562.5), visualViewport.visibleRect().size()); 1389 EXPECT_SIZE_EQ(FloatSize(625, 562.5), visualViewport.visibleRect().size());
1390 1390
1391 // Bring out the top controls by 11 1391 // Bring out the browser controls by 11
1392 webViewImpl()->applyViewportDeltas(WebFloatSize(), WebFloatSize(), 1392 webViewImpl()->applyViewportDeltas(WebFloatSize(), WebFloatSize(),
1393 WebFloatSize(), 1, 11 / 20.f); 1393 WebFloatSize(), 1, 11 / 20.f);
1394 EXPECT_SIZE_EQ(FloatSize(625, 548.75), visualViewport.visibleRect().size()); 1394 EXPECT_SIZE_EQ(FloatSize(625, 548.75), visualViewport.visibleRect().size());
1395 1395
1396 // Ensure max scroll offsets are updated properly. 1396 // Ensure max scroll offsets are updated properly.
1397 visualViewport.move(ScrollOffset(10000, 10000)); 1397 visualViewport.move(ScrollOffset(10000, 10000));
1398 EXPECT_FLOAT_SIZE_EQ(FloatSize(375, 877.5 - 548.75), 1398 EXPECT_FLOAT_SIZE_EQ(FloatSize(375, 877.5 - 548.75),
1399 visualViewport.scrollOffset()); 1399 visualViewport.scrollOffset());
1400 1400
1401 frameView.scrollBy(ScrollOffset(10000, 10000), UserScroll); 1401 frameView.scrollBy(ScrollOffset(10000, 10000), UserScroll);
1402 EXPECT_SIZE_EQ(expectedMaxFrameViewScrollOffset(visualViewport, frameView), 1402 EXPECT_SIZE_EQ(expectedMaxFrameViewScrollOffset(visualViewport, frameView),
1403 frameView.scrollOffset()); 1403 frameView.scrollOffset());
1404 } 1404 }
1405 1405
1406 // Tests that a scroll all the way to the bottom of the page, while hiding the 1406 // Tests that a scroll all the way to the bottom of the page, while hiding the
1407 // top controls doesn't cause a clamp in the viewport scroll offset when the top 1407 // browser controls doesn't cause a clamp in the viewport scroll offset when the
1408 // controls initiated resize occurs. 1408 // top controls initiated resize occurs.
1409 TEST_F(VisualViewportTest, TestTopControlsAdjustmentAndResize) { 1409 TEST_F(VisualViewportTest, TestBrowserControlsAdjustmentAndResize) {
1410 int topControlsHeight = 20; 1410 int browserControlsHeight = 20;
1411 int visualViewportHeight = 450; 1411 int visualViewportHeight = 450;
1412 int layoutViewportHeight = 900; 1412 int layoutViewportHeight = 900;
1413 float pageScale = 2; 1413 float pageScale = 2;
1414 float minPageScale = 0.5; 1414 float minPageScale = 0.5;
1415 1415
1416 initializeWithAndroidSettings(); 1416 initializeWithAndroidSettings();
1417 1417
1418 // Initialize with top controls showing and shrinking the Blink size. 1418 // Initialize with browser controls showing and shrinking the Blink size.
1419 webViewImpl()->resizeWithTopControls( 1419 webViewImpl()->resizeWithBrowserControls(
1420 WebSize(500, visualViewportHeight - topControlsHeight), 20, true); 1420 WebSize(500, visualViewportHeight - browserControlsHeight), 20, true);
1421 webViewImpl()->topControls().setShownRatio(1); 1421 webViewImpl()->browserControls().setShownRatio(1);
1422 1422
1423 registerMockedHttpURLLoad("content-width-1000.html"); 1423 registerMockedHttpURLLoad("content-width-1000.html");
1424 navigateTo(m_baseURL + "content-width-1000.html"); 1424 navigateTo(m_baseURL + "content-width-1000.html");
1425 1425
1426 VisualViewport& visualViewport = 1426 VisualViewport& visualViewport =
1427 frame()->page()->frameHost().visualViewport(); 1427 frame()->page()->frameHost().visualViewport();
1428 FrameView& frameView = *webViewImpl()->mainFrameImpl()->frameView(); 1428 FrameView& frameView = *webViewImpl()->mainFrameImpl()->frameView();
1429 1429
1430 visualViewport.setScale(pageScale); 1430 visualViewport.setScale(pageScale);
1431 EXPECT_SIZE_EQ( 1431 EXPECT_SIZE_EQ(
1432 IntSize(250, (visualViewportHeight - topControlsHeight) / pageScale), 1432 IntSize(250, (visualViewportHeight - browserControlsHeight) / pageScale),
1433 visualViewport.visibleRect().size()); 1433 visualViewport.visibleRect().size());
1434 EXPECT_SIZE_EQ( 1434 EXPECT_SIZE_EQ(IntSize(1000, layoutViewportHeight -
1435 IntSize(1000, layoutViewportHeight - topControlsHeight / minPageScale), 1435 browserControlsHeight / minPageScale),
1436 frameView.frameRect().size()); 1436 frameView.frameRect().size());
1437 EXPECT_SIZE_EQ(IntSize(500, visualViewportHeight - topControlsHeight), 1437 EXPECT_SIZE_EQ(IntSize(500, visualViewportHeight - browserControlsHeight),
1438 visualViewport.size()); 1438 visualViewport.size());
1439 1439
1440 // Scroll all the way to the bottom, hiding the top controls in the process. 1440 // Scroll all the way to the bottom, hiding the browser controls in the
1441 // process.
1441 visualViewport.move(ScrollOffset(10000, 10000)); 1442 visualViewport.move(ScrollOffset(10000, 10000));
1442 frameView.scrollBy(ScrollOffset(10000, 10000), UserScroll); 1443 frameView.scrollBy(ScrollOffset(10000, 10000), UserScroll);
1443 webViewImpl()->topControls().setShownRatio(0); 1444 webViewImpl()->browserControls().setShownRatio(0);
1444 1445
1445 EXPECT_SIZE_EQ(IntSize(250, visualViewportHeight / pageScale), 1446 EXPECT_SIZE_EQ(IntSize(250, visualViewportHeight / pageScale),
1446 visualViewport.visibleRect().size()); 1447 visualViewport.visibleRect().size());
1447 1448
1448 ScrollOffset frameViewExpected = 1449 ScrollOffset frameViewExpected =
1449 expectedMaxFrameViewScrollOffset(visualViewport, frameView); 1450 expectedMaxFrameViewScrollOffset(visualViewport, frameView);
1450 ScrollOffset visualViewportExpected = ScrollOffset( 1451 ScrollOffset visualViewportExpected = ScrollOffset(
1451 750, layoutViewportHeight - visualViewportHeight / pageScale); 1452 750, layoutViewportHeight - visualViewportHeight / pageScale);
1452 1453
1453 EXPECT_SIZE_EQ(visualViewportExpected, visualViewport.scrollOffset()); 1454 EXPECT_SIZE_EQ(visualViewportExpected, visualViewport.scrollOffset());
1454 EXPECT_SIZE_EQ(frameViewExpected, frameView.scrollOffset()); 1455 EXPECT_SIZE_EQ(frameViewExpected, frameView.scrollOffset());
1455 1456
1456 ScrollOffset totalExpected = visualViewportExpected + frameViewExpected; 1457 ScrollOffset totalExpected = visualViewportExpected + frameViewExpected;
1457 1458
1458 // Resize the widget to match the top controls adjustment. Ensure that the 1459 // Resize the widget to match the browser controls adjustment. Ensure that the
1459 // total offset (i.e. what the user sees) doesn't change because of clamping 1460 // total offset (i.e. what the user sees) doesn't change because of clamping
1460 // the offsets to valid values. 1461 // the offsets to valid values.
1461 webViewImpl()->resizeWithTopControls(WebSize(500, visualViewportHeight), 20, 1462 webViewImpl()->resizeWithBrowserControls(WebSize(500, visualViewportHeight),
1462 false); 1463 20, false);
1463 1464
1464 EXPECT_SIZE_EQ(IntSize(500, visualViewportHeight), visualViewport.size()); 1465 EXPECT_SIZE_EQ(IntSize(500, visualViewportHeight), visualViewport.size());
1465 EXPECT_SIZE_EQ(IntSize(250, visualViewportHeight / pageScale), 1466 EXPECT_SIZE_EQ(IntSize(250, visualViewportHeight / pageScale),
1466 visualViewport.visibleRect().size()); 1467 visualViewport.visibleRect().size());
1467 EXPECT_SIZE_EQ(IntSize(1000, layoutViewportHeight), 1468 EXPECT_SIZE_EQ(IntSize(1000, layoutViewportHeight),
1468 frameView.frameRect().size()); 1469 frameView.frameRect().size());
1469 EXPECT_SIZE_EQ(totalExpected, 1470 EXPECT_SIZE_EQ(totalExpected,
1470 visualViewport.scrollOffset() + frameView.scrollOffset()); 1471 visualViewport.scrollOffset() + frameView.scrollOffset());
1471 } 1472 }
1472 1473
1473 // Tests that a scroll all the way to the bottom while showing the top controls 1474 // Tests that a scroll all the way to the bottom while showing the browser
1474 // doesn't cause a clamp to the viewport scroll offset when the top controls 1475 // controls doesn't cause a clamp to the viewport scroll offset when the browser
1475 // initiated resize occurs. 1476 // controls initiated resize occurs.
1476 TEST_F(VisualViewportTest, TestTopControlsShrinkAdjustmentAndResize) { 1477 TEST_F(VisualViewportTest, TestBrowserControlsShrinkAdjustmentAndResize) {
1477 int topControlsHeight = 20; 1478 int browserControlsHeight = 20;
1478 int visualViewportHeight = 500; 1479 int visualViewportHeight = 500;
1479 int layoutViewportHeight = 1000; 1480 int layoutViewportHeight = 1000;
1480 int contentHeight = 2000; 1481 int contentHeight = 2000;
1481 float pageScale = 2; 1482 float pageScale = 2;
1482 float minPageScale = 0.5; 1483 float minPageScale = 0.5;
1483 1484
1484 initializeWithAndroidSettings(); 1485 initializeWithAndroidSettings();
1485 1486
1486 // Initialize with top controls hidden and not shrinking the Blink size. 1487 // Initialize with browser controls hidden and not shrinking the Blink size.
1487 webViewImpl()->resizeWithTopControls(IntSize(500, visualViewportHeight), 20, 1488 webViewImpl()->resizeWithBrowserControls(IntSize(500, visualViewportHeight),
1488 false); 1489 20, false);
1489 webViewImpl()->topControls().setShownRatio(0); 1490 webViewImpl()->browserControls().setShownRatio(0);
1490 1491
1491 registerMockedHttpURLLoad("content-width-1000.html"); 1492 registerMockedHttpURLLoad("content-width-1000.html");
1492 navigateTo(m_baseURL + "content-width-1000.html"); 1493 navigateTo(m_baseURL + "content-width-1000.html");
1493 1494
1494 VisualViewport& visualViewport = 1495 VisualViewport& visualViewport =
1495 frame()->page()->frameHost().visualViewport(); 1496 frame()->page()->frameHost().visualViewport();
1496 FrameView& frameView = *webViewImpl()->mainFrameImpl()->frameView(); 1497 FrameView& frameView = *webViewImpl()->mainFrameImpl()->frameView();
1497 1498
1498 visualViewport.setScale(pageScale); 1499 visualViewport.setScale(pageScale);
1499 EXPECT_SIZE_EQ(IntSize(250, visualViewportHeight / pageScale), 1500 EXPECT_SIZE_EQ(IntSize(250, visualViewportHeight / pageScale),
1500 visualViewport.visibleRect().size()); 1501 visualViewport.visibleRect().size());
1501 EXPECT_SIZE_EQ(IntSize(1000, layoutViewportHeight), 1502 EXPECT_SIZE_EQ(IntSize(1000, layoutViewportHeight),
1502 frameView.frameRect().size()); 1503 frameView.frameRect().size());
1503 EXPECT_SIZE_EQ(IntSize(500, visualViewportHeight), visualViewport.size()); 1504 EXPECT_SIZE_EQ(IntSize(500, visualViewportHeight), visualViewport.size());
1504 1505
1505 // Scroll all the way to the bottom, showing the the top controls in the 1506 // Scroll all the way to the bottom, showing the the browser controls in the
1506 // process. (This could happen via window.scrollTo during a scroll, for 1507 // process. (This could happen via window.scrollTo during a scroll, for
1507 // example). 1508 // example).
1508 webViewImpl()->topControls().setShownRatio(1); 1509 webViewImpl()->browserControls().setShownRatio(1);
1509 visualViewport.move(ScrollOffset(10000, 10000)); 1510 visualViewport.move(ScrollOffset(10000, 10000));
1510 frameView.scrollBy(ScrollOffset(10000, 10000), UserScroll); 1511 frameView.scrollBy(ScrollOffset(10000, 10000), UserScroll);
1511 1512
1512 EXPECT_SIZE_EQ( 1513 EXPECT_SIZE_EQ(
1513 IntSize(250, (visualViewportHeight - topControlsHeight) / pageScale), 1514 IntSize(250, (visualViewportHeight - browserControlsHeight) / pageScale),
1514 visualViewport.visibleRect().size()); 1515 visualViewport.visibleRect().size());
1515 1516
1516 ScrollOffset frameViewExpected( 1517 ScrollOffset frameViewExpected(
1517 0, contentHeight - 1518 0, contentHeight -
1518 (layoutViewportHeight - topControlsHeight / minPageScale)); 1519 (layoutViewportHeight - browserControlsHeight / minPageScale));
1519 ScrollOffset visualViewportExpected = ScrollOffset( 1520 ScrollOffset visualViewportExpected = ScrollOffset(
1520 750, (layoutViewportHeight - topControlsHeight / minPageScale - 1521 750, (layoutViewportHeight - browserControlsHeight / minPageScale -
1521 visualViewport.visibleRect().height())); 1522 visualViewport.visibleRect().height()));
1522 1523
1523 EXPECT_SIZE_EQ(visualViewportExpected, visualViewport.scrollOffset()); 1524 EXPECT_SIZE_EQ(visualViewportExpected, visualViewport.scrollOffset());
1524 EXPECT_SIZE_EQ(frameViewExpected, frameView.scrollOffset()); 1525 EXPECT_SIZE_EQ(frameViewExpected, frameView.scrollOffset());
1525 1526
1526 ScrollOffset totalExpected = visualViewportExpected + frameViewExpected; 1527 ScrollOffset totalExpected = visualViewportExpected + frameViewExpected;
1527 1528
1528 // Resize the widget to match the top controls adjustment. Ensure that the 1529 // Resize the widget to match the browser controls adjustment. Ensure that the
1529 // total offset (i.e. what the user sees) doesn't change because of clamping 1530 // total offset (i.e. what the user sees) doesn't change because of clamping
1530 // the offsets to valid values. 1531 // the offsets to valid values.
1531 webViewImpl()->resizeWithTopControls( 1532 webViewImpl()->resizeWithBrowserControls(
1532 WebSize(500, visualViewportHeight - topControlsHeight), 20, true); 1533 WebSize(500, visualViewportHeight - browserControlsHeight), 20, true);
1533 1534
1534 EXPECT_SIZE_EQ(IntSize(500, visualViewportHeight - topControlsHeight), 1535 EXPECT_SIZE_EQ(IntSize(500, visualViewportHeight - browserControlsHeight),
1535 visualViewport.size()); 1536 visualViewport.size());
1536 EXPECT_SIZE_EQ( 1537 EXPECT_SIZE_EQ(
1537 IntSize(250, (visualViewportHeight - topControlsHeight) / pageScale), 1538 IntSize(250, (visualViewportHeight - browserControlsHeight) / pageScale),
1538 visualViewport.visibleRect().size()); 1539 visualViewport.visibleRect().size());
1539 EXPECT_SIZE_EQ( 1540 EXPECT_SIZE_EQ(IntSize(1000, layoutViewportHeight -
1540 IntSize(1000, layoutViewportHeight - topControlsHeight / minPageScale), 1541 browserControlsHeight / minPageScale),
1541 frameView.frameRect().size()); 1542 frameView.frameRect().size());
1542 EXPECT_SIZE_EQ(totalExpected, 1543 EXPECT_SIZE_EQ(totalExpected,
1543 visualViewport.scrollOffset() + frameView.scrollOffset()); 1544 visualViewport.scrollOffset() + frameView.scrollOffset());
1544 } 1545 }
1545 1546
1546 // Tests that a resize due to top controls hiding doesn't incorrectly clamp the 1547 // Tests that a resize due to browser controls hiding doesn't incorrectly clamp
1547 // main frame's scroll offset. crbug.com/428193. 1548 // the main frame's scroll offset. crbug.com/428193.
1548 TEST_F(VisualViewportTest, TestTopControlHidingResizeDoesntClampMainFrame) { 1549 TEST_F(VisualViewportTest, TestTopControlHidingResizeDoesntClampMainFrame) {
1549 initializeWithAndroidSettings(); 1550 initializeWithAndroidSettings();
1550 webViewImpl()->resizeWithTopControls(webViewImpl()->size(), 500, false); 1551 webViewImpl()->resizeWithBrowserControls(webViewImpl()->size(), 500, false);
1551 webViewImpl()->applyViewportDeltas(WebFloatSize(), WebFloatSize(), 1552 webViewImpl()->applyViewportDeltas(WebFloatSize(), WebFloatSize(),
1552 WebFloatSize(), 1, 1); 1553 WebFloatSize(), 1, 1);
1553 webViewImpl()->resizeWithTopControls(WebSize(1000, 1000), 500, true); 1554 webViewImpl()->resizeWithBrowserControls(WebSize(1000, 1000), 500, true);
1554 1555
1555 registerMockedHttpURLLoad("content-width-1000.html"); 1556 registerMockedHttpURLLoad("content-width-1000.html");
1556 navigateTo(m_baseURL + "content-width-1000.html"); 1557 navigateTo(m_baseURL + "content-width-1000.html");
1557 1558
1558 // Scroll the FrameView to the bottom of the page but "hide" the top controls 1559 // Scroll the FrameView to the bottom of the page but "hide" the browser
1559 // on the compositor side so the max scroll position should account for the 1560 // controls on the compositor side so the max scroll position should account
1560 // full viewport height. 1561 // for the full viewport height.
1561 webViewImpl()->applyViewportDeltas(WebFloatSize(), WebFloatSize(), 1562 webViewImpl()->applyViewportDeltas(WebFloatSize(), WebFloatSize(),
1562 WebFloatSize(), 1, -1); 1563 WebFloatSize(), 1, -1);
1563 FrameView& frameView = *webViewImpl()->mainFrameImpl()->frameView(); 1564 FrameView& frameView = *webViewImpl()->mainFrameImpl()->frameView();
1564 frameView.setScrollOffset(ScrollOffset(0, 10000), ProgrammaticScroll); 1565 frameView.setScrollOffset(ScrollOffset(0, 10000), ProgrammaticScroll);
1565 EXPECT_EQ(500, frameView.scrollOffset().height()); 1566 EXPECT_EQ(500, frameView.scrollOffset().height());
1566 1567
1567 // Now send the resize, make sure the scroll offset doesn't change. 1568 // Now send the resize, make sure the scroll offset doesn't change.
1568 webViewImpl()->resizeWithTopControls(WebSize(1000, 1500), 500, false); 1569 webViewImpl()->resizeWithBrowserControls(WebSize(1000, 1500), 500, false);
1569 EXPECT_EQ(500, frameView.scrollOffset().height()); 1570 EXPECT_EQ(500, frameView.scrollOffset().height());
1570 } 1571 }
1571 1572
1572 static void configureHiddenScrollbarsSettings(WebSettings* settings) { 1573 static void configureHiddenScrollbarsSettings(WebSettings* settings) {
1573 VisualViewportTest::configureAndroidSettings(settings); 1574 VisualViewportTest::configureAndroidSettings(settings);
1574 settings->setHideScrollbars(true); 1575 settings->setHideScrollbars(true);
1575 } 1576 }
1576 1577
1577 // Tests that scrollbar layers are not attached to the inner viewport container 1578 // Tests that scrollbar layers are not attached to the inner viewport container
1578 // layer when hideScrollbars WebSetting is true. 1579 // layer when hideScrollbars WebSetting is true.
(...skipping 423 matching lines...) Expand 10 before | Expand all | Expand 10 after
2002 frameView.layoutViewportScrollableArea()->setScrollOffset( 2003 frameView.layoutViewportScrollableArea()->setScrollOffset(
2003 ScrollOffset(700, 500), ProgrammaticScroll); 2004 ScrollOffset(700, 500), ProgrammaticScroll);
2004 2005
2005 webViewImpl()->resize(IntSize(800, 300)); 2006 webViewImpl()->resize(IntSize(800, 300));
2006 EXPECT_SIZE_EQ(ScrollOffset(700, 200), 2007 EXPECT_SIZE_EQ(ScrollOffset(700, 200),
2007 frameView.layoutViewportScrollableArea()->scrollOffset()); 2008 frameView.layoutViewportScrollableArea()->scrollOffset());
2008 2009
2009 RuntimeEnabledFeatures::setScrollAnchoringEnabled(wasScrollAnchoringEnabled); 2010 RuntimeEnabledFeatures::setScrollAnchoringEnabled(wasScrollAnchoringEnabled);
2010 } 2011 }
2011 2012
2012 // Ensure that resize anchoring as happens when top controls hide/show affects 2013 // Ensure that resize anchoring as happens when browser controls hide/show
2013 // the scrollable area that's currently set as the root scroller. 2014 // affects the scrollable area that's currently set as the root scroller.
2014 TEST_P(ParameterizedVisualViewportTest, ResizeAnchoringWithRootScroller) { 2015 TEST_P(ParameterizedVisualViewportTest, ResizeAnchoringWithRootScroller) {
2015 bool wasRootScrollerEnabled = 2016 bool wasRootScrollerEnabled =
2016 RuntimeEnabledFeatures::setRootScrollerEnabled(); 2017 RuntimeEnabledFeatures::setRootScrollerEnabled();
2017 RuntimeEnabledFeatures::setSetRootScrollerEnabled(true); 2018 RuntimeEnabledFeatures::setSetRootScrollerEnabled(true);
2018 2019
2019 initializeWithAndroidSettings(); 2020 initializeWithAndroidSettings();
2020 webViewImpl()->resize(IntSize(800, 600)); 2021 webViewImpl()->resize(IntSize(800, 600));
2021 2022
2022 registerMockedHttpURLLoad("root-scroller-div.html"); 2023 registerMockedHttpURLLoad("root-scroller-div.html");
2023 navigateTo(m_baseURL + "root-scroller-div.html"); 2024 navigateTo(m_baseURL + "root-scroller-div.html");
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
2069 webViewImpl()->resize(IntSize(600, 800)); 2070 webViewImpl()->resize(IntSize(600, 800));
2070 2071
2071 EXPECT_SIZE_EQ(ScrollOffset(), 2072 EXPECT_SIZE_EQ(ScrollOffset(),
2072 frameView.layoutViewportScrollableArea()->scrollOffset()); 2073 frameView.layoutViewportScrollableArea()->scrollOffset());
2073 EXPECT_EQ(600, scroller->scrollTop()); 2074 EXPECT_EQ(600, scroller->scrollTop());
2074 2075
2075 RuntimeEnabledFeatures::setSetRootScrollerEnabled(wasRootScrollerEnabled); 2076 RuntimeEnabledFeatures::setSetRootScrollerEnabled(wasRootScrollerEnabled);
2076 } 2077 }
2077 2078
2078 } // namespace 2079 } // namespace
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/web/tests/TopControlsTest.cpp ('k') | third_party/WebKit/Source/web/tests/WebFrameTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698