blob: 935ec2a2399d9850ae8afc6fb3cb7dd53ebd56f7 [file] [log] [blame]
<!DOCTYPE html>
<style>
body {
height: 2000px;
width: 2000px;
}
::-webkit-scrollbar {
width: 20px;
height: 20px;
}
::-webkit-scrollbar-track {
background-color: #b46868;
}
::-webkit-scrollbar-thumb {
background-color: rgba(0, 0, 0, 0.2);
}
</style>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script>
var pageZoomFactor = 1.25;
var pageScaleFactor = 2;
var scrollbarThicknessInCSSPixels;
function viewport() {
return window.visualViewport;
}
var test = async_test('Verify viewport dimensions exclude custom scrollbars.');
var doAfterZooming = test.step_func(function() {
window.scrollTo(0, 0);
scrollbarThicknessInCSSPixels /= pageScaleFactor;
assert_equals(
viewport().width,
800 / pageScaleFactor - scrollbarThicknessInCSSPixels,
"Width with page scale");
assert_equals(
viewport().height, 600 / pageScaleFactor - scrollbarThicknessInCSSPixels,
"Height with page scale");
window.internals.setPageZoomFactor(pageZoomFactor);
// Verify scrollbar exclusion with page zoom. Custom scrollbars are
// scaled with page zoom, so their size in CSS pixels remains unchanged.
assert_equals(
viewport().width,
800 / pageZoomFactor / pageScaleFactor - scrollbarThicknessInCSSPixels,
"Width with page scale and page zoom");
assert_equals(
viewport().height,
600 / pageZoomFactor / pageScaleFactor - scrollbarThicknessInCSSPixels,
"Height 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>