151 lines
4 KiB
JavaScript
151 lines
4 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
"use strict";
|
|
|
|
const { AppMenuNotifications } = ChromeUtils.importESModule(
|
|
"resource://gre/modules/AppMenuNotifications.sys.mjs"
|
|
);
|
|
|
|
/**
|
|
* The update banner should become visible when the badge-only notification is
|
|
* shown before opening the menu.
|
|
*/
|
|
add_task(async function testBannerVisibilityBeforeOpen() {
|
|
let newWin = await BrowserTestUtils.openNewBrowserWindow();
|
|
|
|
AppMenuNotifications.showBadgeOnlyNotification("update-restart");
|
|
|
|
let menuButton = newWin.document.getElementById("PanelUI-menu-button");
|
|
let shown = BrowserTestUtils.waitForEvent(
|
|
newWin.PanelUI.mainView,
|
|
"ViewShown"
|
|
);
|
|
menuButton.click();
|
|
await shown;
|
|
|
|
let banner = newWin.document.getElementById("appMenu-update-banner");
|
|
|
|
let labelPromise = BrowserTestUtils.waitForMutationCondition(
|
|
banner,
|
|
{ attributes: true, attributeFilter: ["label"] },
|
|
() => banner.hasAttribute("label")
|
|
);
|
|
|
|
ok(!banner.hidden, "Update banner should be shown");
|
|
|
|
await labelPromise;
|
|
|
|
Assert.notEqual(
|
|
banner.getAttribute("label"),
|
|
"",
|
|
"Update banner should contain text"
|
|
);
|
|
|
|
AppMenuNotifications.removeNotification(/.*/);
|
|
|
|
await BrowserTestUtils.closeWindow(newWin);
|
|
});
|
|
|
|
/**
|
|
* The update banner should become visible when the badge-only notification is
|
|
* shown during the menu is opened.
|
|
*/
|
|
add_task(async function testBannerVisibilityDuringOpen() {
|
|
let newWin = await BrowserTestUtils.openNewBrowserWindow();
|
|
|
|
let menuButton = newWin.document.getElementById("PanelUI-menu-button");
|
|
let shown = BrowserTestUtils.waitForEvent(
|
|
newWin.PanelUI.mainView,
|
|
"ViewShown"
|
|
);
|
|
menuButton.click();
|
|
await shown;
|
|
|
|
let banner = newWin.document.getElementById("appMenu-update-banner");
|
|
ok(
|
|
!banner.hasAttribute("label"),
|
|
"Update banner shouldn't contain text before notification"
|
|
);
|
|
|
|
let labelPromise = BrowserTestUtils.waitForMutationCondition(
|
|
banner,
|
|
{ attributes: true, attributeFilter: ["label"] },
|
|
() => banner.hasAttribute("label")
|
|
);
|
|
|
|
AppMenuNotifications.showNotification("update-restart");
|
|
|
|
ok(!banner.hidden, "Update banner should be shown");
|
|
|
|
await labelPromise;
|
|
|
|
Assert.notEqual(
|
|
banner.getAttribute("label"),
|
|
"",
|
|
"Update banner should contain text"
|
|
);
|
|
|
|
AppMenuNotifications.removeNotification(/.*/);
|
|
|
|
await BrowserTestUtils.closeWindow(newWin);
|
|
});
|
|
|
|
/**
|
|
* The update banner should become visible when the badge-only notification is
|
|
* shown after opening/closing the menu, so that the DOM tree is there but
|
|
* the menu is closed.
|
|
*/
|
|
add_task(async function testBannerVisibilityAfterClose() {
|
|
let newWin = await BrowserTestUtils.openNewBrowserWindow();
|
|
|
|
let menuButton = newWin.document.getElementById("PanelUI-menu-button");
|
|
let shown = BrowserTestUtils.waitForEvent(
|
|
newWin.PanelUI.mainView,
|
|
"ViewShown"
|
|
);
|
|
menuButton.click();
|
|
await shown;
|
|
|
|
ok(newWin.PanelUI.mainView.hasAttribute("visible"));
|
|
|
|
let banner = newWin.document.getElementById("appMenu-update-banner");
|
|
|
|
ok(banner.hidden, "Update banner should be hidden before notification");
|
|
ok(
|
|
!banner.hasAttribute("label"),
|
|
"Update banner shouldn't contain text before notification"
|
|
);
|
|
|
|
let labelPromise = BrowserTestUtils.waitForMutationCondition(
|
|
banner,
|
|
{ attributes: true, attributeFilter: ["label"] },
|
|
() => banner.hasAttribute("label")
|
|
);
|
|
|
|
let hidden = BrowserTestUtils.waitForCondition(() => {
|
|
return !newWin.PanelUI.mainView.hasAttribute("visible");
|
|
});
|
|
menuButton.click();
|
|
await hidden;
|
|
|
|
AppMenuNotifications.showBadgeOnlyNotification("update-restart");
|
|
|
|
shown = BrowserTestUtils.waitForEvent(newWin.PanelUI.mainView, "ViewShown");
|
|
menuButton.click();
|
|
await shown;
|
|
|
|
ok(!banner.hidden, "Update banner should be shown");
|
|
|
|
await labelPromise;
|
|
|
|
Assert.notEqual(
|
|
banner.getAttribute("label"),
|
|
"",
|
|
"Update banner should contain text"
|
|
);
|
|
|
|
AppMenuNotifications.removeNotification(/.*/);
|
|
|
|
await BrowserTestUtils.closeWindow(newWin);
|
|
});
|