diff options
Diffstat (limited to 'layout/base/tests/browser_bug1787079.js')
-rw-r--r-- | layout/base/tests/browser_bug1787079.js | 88 |
1 files changed, 88 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..2161b1f3dc --- /dev/null +++ b/layout/base/tests/browser_bug1787079.js @@ -0,0 +1,88 @@ +/* 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]; + } + ); + + Assert.less( + originalInnerWidth, + innerWidth, + "window.innerWidth on a lower DPI should be greater than the original" + ); + Assert.less( + 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); +}); |