forked from mirrors/gecko-dev
This is what I see when running the test: console.log: Changing zoom for browser from 1 to 0.5 set fullZoom@chrome://global/content/elements/browser-custom-element.js:812:19 set fullZoom@chrome://browser/content/tabbrowser.js:526:7 ZoomManager_setZoomForBrowser@chrome://global/content/viewZoomOverlay.js:60:7 set zoom@chrome://global/content/viewZoomOverlay.js:49:10 @chrome://mochitests/content/browser/browser/components/customizableui/test/browser_947914_button_zoomReset.js:26:5 Async*Tester_execTest/<@chrome://mochikit/content/browser-test.js:1039:34 Tester_execTest@chrome://mochikit/content/browser-test.js:1074:11 nextTest/<@chrome://mochikit/content/browser-test.js:904:14 SimpleTest.waitForFocus/waitForFocusInner/focusedOrLoaded/<@chrome://mochikit/content/tests/SimpleTest/SimpleTest.js:918:23 "FullZoomChange for browser" PASS Zoom reset button exists in Panel Menu - console.log: Changing zoom for browser from 0.5 to 1 console.log: set fullZoom@chrome://global/content/elements/browser-custom-element.js:817:19 ZoomManager_setZoomForBrowser@chrome://global/content/viewZoomOverlay.js:60:7 FullZoom__applyPrefToZoom@chrome://browser/content/browser-fullZoom.js:479:19 FullZoom_onLocationChange@chrome://browser/content/browser-fullZoom.js:247:14 XWB_onUpdateCurrentBrowser@chrome://browser/content/browser.js:5419:16 callListeners@chrome://browser/content/tabbrowser.js:820:31 _callProgressListeners@chrome://browser/content/tabbrowser.js:834:22 _callProgressListeners@chrome://browser/content/tabbrowser.js:5776:46 onStateChange@chrome://browser/content/tabbrowser.js:6039:14 _callProgressListeners@resource://gre/modules/RemoteWebProgress.jsm:75:31 onStateChange@resource://gre/modules/RemoteWebProgress.jsm:88:10 Which is pretty broken (the zoom is reset way earlier than clicking the reset button, by FullZoom.onLocationChange). This seems to me was mostly passing by chance, but with my Fission changes which made FullZoomChange events more async (and actually, not notify twice) it started failing. Wait to load a page before changing the zoom level so that the browser doesn't reset it when navigating. Differential Revision: https://phabricator.services.mozilla.com/D72208
75 lines
2.2 KiB
JavaScript
75 lines
2.2 KiB
JavaScript
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
"use strict";
|
|
|
|
var initialPageZoom = ZoomManager.zoom;
|
|
|
|
add_task(async function() {
|
|
info("Check zoom reset button existence and functionality");
|
|
is(initialPageZoom, 1, "Page zoom reset correctly");
|
|
|
|
await BrowserTestUtils.withNewTab(
|
|
{ gBrowser, url: "http://example.com", waitForLoad: true },
|
|
async function(browser) {
|
|
CustomizableUI.addWidgetToArea(
|
|
"zoom-controls",
|
|
CustomizableUI.AREA_FIXED_OVERFLOW_PANEL
|
|
);
|
|
|
|
registerCleanupFunction(() => CustomizableUI.reset());
|
|
|
|
CustomizableUI.addWidgetToArea(
|
|
"zoom-controls",
|
|
CustomizableUI.AREA_FIXED_OVERFLOW_PANEL
|
|
);
|
|
|
|
await waitForOverflowButtonShown();
|
|
|
|
{
|
|
let zoomChange = BrowserTestUtils.waitForEvent(
|
|
gBrowser,
|
|
"FullZoomChange"
|
|
);
|
|
ZoomManager.zoom = 0.5;
|
|
await zoomChange;
|
|
}
|
|
|
|
await document.getElementById("nav-bar").overflowable.show();
|
|
info("Menu panel was opened");
|
|
|
|
let zoomResetButton = document.getElementById("zoom-reset-button");
|
|
ok(zoomResetButton, "Zoom reset button exists in Panel Menu");
|
|
|
|
let zoomChange = BrowserTestUtils.waitForEvent(
|
|
gBrowser,
|
|
"FullZoomChange"
|
|
);
|
|
zoomResetButton.click();
|
|
await zoomChange;
|
|
|
|
let pageZoomLevel = Math.floor(ZoomManager.zoom * 100);
|
|
let expectedZoomLevel = 100;
|
|
let buttonZoomLevel = parseInt(zoomResetButton.getAttribute("label"), 10);
|
|
is(pageZoomLevel, expectedZoomLevel, "Page zoom reset correctly");
|
|
is(
|
|
pageZoomLevel,
|
|
buttonZoomLevel,
|
|
"Button displays the correct zoom level"
|
|
);
|
|
|
|
// close the panel
|
|
let panelHiddenPromise = promiseOverflowHidden(window);
|
|
document.getElementById("widget-overflow").hidePopup();
|
|
await panelHiddenPromise;
|
|
info("Menu panel was closed");
|
|
}
|
|
);
|
|
});
|
|
|
|
add_task(async function asyncCleanup() {
|
|
// reset zoom level
|
|
ZoomManager.zoom = initialPageZoom;
|
|
info("Zoom level was restored");
|
|
});
|