blob: 0aa4b97febba8409550964d1b26e23a1f904c786 [file] [log] [blame]
<!DOCTYPE html>
<style>
body {
width: 1000px;
height: 1000px;
/* Overflow hidden so that the size of the scrollbar is not added to
the innerHeight/Width properties. */
overflow: hidden;
}
</style>
<script src="../../resources/js-test.js"></script>
<script type="text/javascript">
var testScrolls = [];
var currentTest = -1;
setPrintTestResultsLazily();
jsTestIsAsync = true;
description("Test that when the scrollLayoutViewport setting is on, the scroll " +
"from window.scrollTo is applied to the layout viewport. Note that this test is " +
"pertaining to crbug.com/489206, where we want all APIs to reflect the layout viewport.");
function finishTest() {
var testCase = testScrolls[currentTest];
if(window.scrollX == testCase.expectedX && window.scrollY == testCase.expectedY) {
testPassed("Scroll destination reached.");
startNextTestCase();
} else {
testFailed("Scroll destination not reached.");
startNextTestCase();
}
}
function startNextTestCase() {
currentTest++;
if (currentTest >= testScrolls.length) {
finishJSTest();
return;
}
var testCase = testScrolls[currentTest];
internals.settings.setInertVisualViewport(testScrolls[currentTest].scrollLayoutViewport);
window.scrollTo(testCase.x, testCase.y);
window.requestAnimationFrame(finishTest);
}
window.onload = function () {
if (!window.internals) {
testFailed('This test requires window.internals');
finishJSTest();
return;
}
internals.settings.setInertVisualViewport(false);
// The height/width of the layout viewport is innerHeight/Width of the window
// when no pinch-zoom is applied.
var layoutInnerHeight = window.innerHeight;
var layoutInnerWidth = window.innerWidth;
// The height/width of the visual viewport is innerHeight/Width of the window
// when pinch-zoom is applied.
internals.setPageScaleFactor(2.0);
var visualInnerHeight = window.innerHeight;
var visualInnerWidth = window.innerWidth;
// The maximum scroll offsets when the visual viewport is scrolled.
var maxScrollHeightScrollVisual = document.scrollingElement.scrollHeight - visualInnerHeight;
var maxScrollWidthScrollVisual = document.scrollingElement.scrollWidth - visualInnerWidth;
// The maximum scroll offsets when the layout viewport is scrolled.
var maxScrollHeightScrollLayout = document.scrollingElement.scrollHeight - layoutInnerHeight;
var maxScrollWidthScrollLayout = document.scrollingElement.scrollWidth - layoutInnerWidth;
// First scrollTo is called with the scrollLayoutViewport setting off, in which
// case, window.scrollY should return the position of the visual viewport. Then
// the setting is turned on, and this time, window.scrollY should return the
// position of the layoutViewport.
testScrolls = [
{x: 2000, y: 2000, expectedX: maxScrollWidthScrollVisual, expectedY:maxScrollHeightScrollVisual, scrollLayoutViewport:false},
{x: 2000, y: 2000, expectedX: maxScrollWidthScrollLayout, expectedY:maxScrollHeightScrollLayout, scrollLayoutViewport:true},
];
startNextTestCase();
}
</script>