From 6530cdd60b3a2b4bd932e7fbe058446cad960079 Mon Sep 17 00:00:00 2001 From: Micah Tigley Date: Fri, 31 May 2019 17:45:21 +0000 Subject: [PATCH] Bug 1107456 - Part 2: Test that RDM's viewport's outer size values remain unaffected at different zoom levels. r=bradwerth Depends on D32778 Differential Revision: https://phabricator.services.mozilla.com/D33239 --HG-- extra : moz-landing-system : lando --- .../responsive.html/test/browser/browser.ini | 1 + .../test/browser/browser_outer_size.js | 42 +++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 devtools/client/responsive.html/test/browser/browser_outer_size.js diff --git a/devtools/client/responsive.html/test/browser/browser.ini b/devtools/client/responsive.html/test/browser/browser.ini index 7c3d238c2a42..dd58416683f3 100644 --- a/devtools/client/responsive.html/test/browser/browser.ini +++ b/devtools/client/responsive.html/test/browser/browser.ini @@ -50,6 +50,7 @@ tags = devtools webextensions skip-if = true # Bug 1413765 [browser_network_throttling.js] [browser_orientationchange_event.js] +[browser_outer_size.js] [browser_page_state.js] [browser_page_style.js] [browser_permission_doorhanger.js] diff --git a/devtools/client/responsive.html/test/browser/browser_outer_size.js b/devtools/client/responsive.html/test/browser/browser_outer_size.js new file mode 100644 index 000000000000..ea8178ead1b8 --- /dev/null +++ b/devtools/client/responsive.html/test/browser/browser_outer_size.js @@ -0,0 +1,42 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +"use strict"; + +// Test the window's outerWidth and outerHeight values are not affected by page zoom. + +const TEST_URL = "data:text/html;charset=utf-8,"; +const OUTER_WIDTH = 375; +const OUTER_HEIGHT = 450; +const ZOOM_LEVELS = [0.3, 0.5, 0.9, 1, 1.5, 2, 2.4]; + +add_task(async function() { + const tab = await addTab(TEST_URL); + const browser = tab.linkedBrowser; + + const { ui, manager } = await openRDM(tab); + await setViewportSize(ui, manager, OUTER_WIDTH, OUTER_HEIGHT); + + info("Ensure outer size values are unchanged at different zoom levels."); + for (let i = 0; i < ZOOM_LEVELS.length; i++) { + await checkWindowOuterSize(ui, browser, ZOOM_LEVELS[i]); + } +}); + +async function checkWindowOuterSize(ui, browser, zoom) { + info(`Setting zoom level to ${zoom}`); + ZoomManager.setZoomForBrowser(browser, zoom); + + return ContentTask.spawn(ui.getViewportBrowser(), + { width: OUTER_WIDTH, height: OUTER_HEIGHT }, + async function({ width, height }) { + // Approximate the outer size value returned on the window content with the expected + // value. We should expect, at the very most, a 1px difference between the two due + // to floating point rounding errors that occur when scaling from inner size CSS + // integer values to outer size CSS integer values. See Part 1 of Bug 1107456. + ok(Math.abs(content.outerWidth - width) <= 1, + `window.outerWidth should be ${width} and we got ${content.outerWidth}.`); + ok(Math.abs(content.outerHeight - height) <= 1, + `window.outerHeight should be ${height} and we got ${content.outerHeight}.`); + }); +}