78 lines
3.0 KiB
HTML
78 lines
3.0 KiB
HTML
<!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>
|