/* 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"
);
}
});