diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 09:22:09 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 09:22:09 +0000 |
commit | 43a97878ce14b72f0981164f87f2e35e14151312 (patch) | |
tree | 620249daf56c0258faa40cbdcf9cfba06de2a846 /layout/base/tests/browser_bug1787079.js | |
parent | Initial commit. (diff) | |
download | firefox-upstream.tar.xz firefox-upstream.zip |
Adding upstream version 110.0.1.upstream/110.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'layout/base/tests/browser_bug1787079.js')
-rw-r--r-- | layout/base/tests/browser_bug1787079.js | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/layout/base/tests/browser_bug1787079.js b/layout/base/tests/browser_bug1787079.js new file mode 100644 index 0000000000..4ce38f8b69 --- /dev/null +++ b/layout/base/tests/browser_bug1787079.js @@ -0,0 +1,86 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +"use strict"; + +const PAGECONTENT = + "<!DOCTYPE html>" + + "<html>" + + "<style>" + + "html { height: 100vh; }" + + "</style>" + + "</html>"; + +const pageUrl = "data:text/html," + encodeURIComponent(PAGECONTENT); + +add_task(async function test() { + SpecialPowers.DOMWindowUtils.setHiDPIMode(true); + registerCleanupFunction(() => { + SpecialPowers.DOMWindowUtils.restoreHiDPIMode(); + }); + + const tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, pageUrl); + + // Enter fullscreen. + let fullscreenChangePromise = BrowserTestUtils.waitForContentEvent( + tab.linkedBrowser, + "fullscreenchange" + ); + await SpecialPowers.spawn(tab.linkedBrowser, [], () => { + content.document.documentElement.requestFullscreen(); + }); + await fullscreenChangePromise; + + let [originalInnerWidth, originalInnerHeight] = await SpecialPowers.spawn( + tab.linkedBrowser, + [], + () => { + return [content.window.innerWidth, content.window.innerHeight]; + } + ); + + // Then change the DPI. + let originalPixelRatio = await SpecialPowers.spawn( + tab.linkedBrowser, + [], + () => { + return content.window.devicePixelRatio; + } + ); + let dpiChangedPromise = TestUtils.waitForCondition(async () => { + let pixelRatio = await SpecialPowers.spawn(tab.linkedBrowser, [], () => { + return content.window.devicePixelRatio; + }); + return pixelRatio != originalPixelRatio; + }, "Make sure the DPI changed"); + SpecialPowers.DOMWindowUtils.setHiDPIMode(false); + await dpiChangedPromise; + + let [innerWidth, innerHeight] = await SpecialPowers.spawn( + tab.linkedBrowser, + [], + () => { + return [content.window.innerWidth, content.window.innerHeight]; + } + ); + + ok( + originalInnerWidth < innerWidth, + "window.innerWidth on a lower DPI should be greater than the original" + ); + ok( + originalInnerHeight < innerHeight, + "window.innerHeight on a lower DPI should be greater than the original" + ); + + fullscreenChangePromise = BrowserTestUtils.waitForContentEvent( + tab.linkedBrowser, + "fullscreenchange" + ); + await SpecialPowers.spawn(tab.linkedBrowser, [], () => { + content.document.exitFullscreen(); + }); + await fullscreenChangePromise; + + BrowserTestUtils.removeTab(tab); +}); |