| <!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; |
| |
| if (window.internals) |
| internals.settings.setVisualViewportEnabled(true); |
| |
| 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> |