Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Errors

/* 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;
const kTimeoutInMS = 20000;
async function testZoomButtonAppearsAndDisappearsBasedOnZoomChanges(
zoomEventType
) {
let tab = await BrowserTestUtils.openNewForegroundTab({
gBrowser,
opening: "https://example.com/",
waitForStateStop: true,
});
info("Running this test with " + zoomEventType.substring(0, 9));
info("Confirm whether the browser zoom is set to the default level");
is(initialPageZoom, 1, "Page zoom is set to default (100%)");
let zoomResetButton = document.getElementById("urlbar-zoom-button");
is(zoomResetButton.hidden, true, "Zoom reset button is currently hidden");
info("Change zoom and confirm zoom button appears");
let labelUpdatePromise = BrowserTestUtils.waitForAttribute(
"label",
zoomResetButton
);
FullZoom.enlarge();
await labelUpdatePromise;
info("Zoom increased to " + Math.floor(ZoomManager.zoom * 100) + "%");
is(zoomResetButton.hidden, false, "Zoom reset button is now visible");
let pageZoomLevel = Math.floor(ZoomManager.zoom * 100);
let expectedZoomLevel = 110;
let buttonZoomLevel = parseInt(zoomResetButton.getAttribute("label"), 10);
is(
buttonZoomLevel,
expectedZoomLevel,
"Button label updated successfully to " +
Math.floor(ZoomManager.zoom * 100) +
"%"
);
let zoomResetPromise = BrowserTestUtils.waitForEvent(window, zoomEventType);
zoomResetButton.click();
await zoomResetPromise;
pageZoomLevel = Math.floor(ZoomManager.zoom * 100);
expectedZoomLevel = 100;
is(
pageZoomLevel,
expectedZoomLevel,
"Clicking zoom button successfully resets browser zoom to 100%"
);
is(zoomResetButton.hidden, true, "Zoom reset button returns to being hidden");
BrowserTestUtils.removeTab(tab);
}
add_task(async function () {
await testZoomButtonAppearsAndDisappearsBasedOnZoomChanges("FullZoomChange");
await SpecialPowers.pushPrefEnv({ set: [["browser.zoom.full", false]] });
await testZoomButtonAppearsAndDisappearsBasedOnZoomChanges("TextZoomChange");
await SpecialPowers.pushPrefEnv({ set: [["browser.zoom.full", true]] });
});
add_task(async function () {
info(
"Confirm that URL bar zoom button doesn't appear when customizable zoom widget is added to toolbar"
);
CustomizableUI.addWidgetToArea("zoom-controls", CustomizableUI.AREA_NAVBAR);
let zoomCustomizableWidget = document.getElementById("zoom-reset-button");
let zoomResetButton = document.getElementById("urlbar-zoom-button");
let zoomChangePromise = BrowserTestUtils.waitForEvent(
window,
"FullZoomChange"
);
FullZoom.enlarge();
await zoomChangePromise;
is(
zoomResetButton.hidden,
true,
"URL zoom button remains hidden despite zoom increase"
);
is(
parseInt(zoomCustomizableWidget.label, 10),
110,
"Customizable zoom widget's label has updated to " +
zoomCustomizableWidget.label
);
});
add_task(async function asyncCleanup() {
// reset zoom level and customizable widget
ZoomManager.zoom = initialPageZoom;
is(ZoomManager.zoom, 1, "Zoom level was restored");
if (document.getElementById("zoom-controls")) {
CustomizableUI.removeWidgetFromArea(
"zoom-controls",
CustomizableUI.AREA_NAVBAR
);
ok(
!document.getElementById("zoom-controls"),
"Customizable zoom widget removed from toolbar"
);
}
});