blob: f5333302de09695bc565aef8ab19ec5ac17f61e4 [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 scrollbarThicknessInCSSPixels;
if (window.internals)
internals.settings.setVisualViewportEnabled(true);
function viewport() {
return window.visualViewport;
}
var test = async_test('Verify viewport dimensions');
var doBeforeZooming = test.step_func(function() {
scrollbarThicknessInCSSPixels = window.innerWidth - document.documentElement.clientWidth;
window.scrollTo(100, 100);
// Initial viewport dimensions.
assert_equals(viewport().width, 800 - scrollbarThicknessInCSSPixels, "initial width");
assert_equals(viewport().height, 600 - scrollbarThicknessInCSSPixels, "initial height");
assert_equals(viewport().offsetLeft, 0, "initial offsetLeft");
assert_equals(viewport().offsetTop, 0, "initial offsetTop");
assert_equals(viewport().pageLeft, 100, "initial pageLeft");
assert_equals(viewport().pageTop, 100, "initial pageTop");
assert_equals(viewport().scale, 1, "initial scale");
});
var doAfterZooming = test.step_func(function() {
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().width, 800 / pageScaleFactor - scrollbarThicknessInCSSPixels, "scaled width");
assert_equals(viewport().height, 600 / pageScaleFactor - scrollbarThicknessInCSSPixels, "scaled height");
assert_equals(viewport().offsetLeft, 10, "scrolled left viewport");
assert_equals(viewport().offsetTop, 10, "scrolled top viewport");
assert_equals(viewport().pageLeft, 110, "scrolled pageLeft");
assert_equals(viewport().pageTop, 110, "scrolled pageTop");
assert_equals(viewport().scale, 2, "scale");
// Scroll the visual viewport.
window.scrollTo(100, 120);
assert_equals(viewport().offsetTop, 20, "set offsetTop");
assert_equals(viewport().offsetLeft, 0, "set offsetLeft");
test.done();
});
function getUIScript() {
return `(function() {
uiController.zoomToScale(${pageScaleFactor}, function() {
uiController.uiScriptComplete(uiController.zoomScale);
});
})();`;
}
window.onload = function() {
doBeforeZooming();
testRunner.runUIScript(getUIScript(), function(zoomScale) {
doAfterZooming();
});
};
</script>