blob: a266fcb80f81f2ee17f1ee9f067097e1934df5a1 [file] [log] [blame]
<!DOCTYPE html>
<style>
body {
height: 2000px;
width: 2000px;
}
</style>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script>
var pageScaleFactor = 2;
var pageZoomFactor = 2;
var scrollbarThicknessInCSSPixels;
function viewport() {
return window.visualViewport;
}
var test = async_test('Verify viewport dimensions under page zoom.');
var doAfterZooming = test.step_func(function() {
window.scrollTo(0, 0);
scrollbarThicknessInCSSPixels /= pageScaleFactor;
// Make the layout viewport have origin (100, 100).
window.scrollTo(1500, 1500);
window.scrollTo(100, 100);
window.scrollTo(110, 110);
assert_equals(viewport().offsetTop, 10, "offsetTop with page scale");
assert_equals(viewport().offsetLeft, 10, "offsetLeft with page scale");
assert_equals(viewport().pageLeft, 110, "pageLeft with page scale");
assert_equals(viewport().pageTop, 110, "pageTop with page scale");
assert_equals(viewport().width, 400 - scrollbarThicknessInCSSPixels, "width with page scale");
assert_equals(viewport().height, 300 - scrollbarThicknessInCSSPixels, "height with page scale");
assert_equals(viewport().scale, 2, "scale with page scale");
window.internals.setPageZoomFactor(pageZoomFactor);
scrollbarThicknessInCSSPixels /= pageZoomFactor;
testRunner.runUIScript(getUIScript(), function(zoomScale) {
// Make the layout viewport havie origin (100, 100).
window.scrollTo(1500, 1500);
window.scrollTo(100, 100);
window.scrollTo(110, 110);
assert_equals(viewport().offsetTop, 10, "offsetTop with page scale and page zoom");
assert_equals(viewport().offsetLeft, 10, "offsetLeft with page scale and page zoom");
assert_equals(viewport().pageLeft, 110, "pageLeft with page scale and page zoom");
assert_equals(viewport().pageTop, 110, "pageTop with page scale and page zoom");
assert_equals(viewport().width,
400 / pageZoomFactor - scrollbarThicknessInCSSPixels,
"width with page scale and page zoom");
assert_equals(viewport().height,
300 / pageZoomFactor - scrollbarThicknessInCSSPixels,
"height with page scale and page zoom");
assert_equals(viewport().scale, 2, "scale with page scale and page zoom");
test.done();
});
});
function getUIScript() {
return `(function() {
uiController.zoomToScale(${pageScaleFactor}, function() {
uiController.uiScriptComplete(uiController.zoomScale);
});
})();`;
}
window.onload = function() {
scrollbarThicknessInCSSPixels = window.innerWidth - document.documentElement.clientWidth;
testRunner.runUIScript(getUIScript(), function(zoomScale) {
doAfterZooming();
});
};
</script>