forked from mirrors/gecko-dev
107 lines
3.5 KiB
JavaScript
107 lines
3.5 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;
|
|
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"
|
|
);
|
|
}
|
|
});
|