Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

/* Any copyright is dedicated to the Public Domain.
"use strict";
/* import-globals-from ../../mochitest/role.js */
loadScripts({ name: "role.js", dir: MOCHITESTS_DIR });
// Verify we receive hide and show notifications when the chrome
// XUL alert is closed or opened. Mac expects both notifications to
// properly communicate live region changes.
async function runTests(browser) {
ok(PopupNotifications, "PopupNotifications object exists");
ok(PopupNotifications.panel, "PopupNotifications panel exists");
// When available, the popup panel makes itself a child of the chrome window.
// To verify it isn't accessible without reproducing the entirety of the chrome
// window tree, we check instead that the panel is not accessible.
ok(!isAccessible(PopupNotifications.panel), "Popup panel is not accessible");
const panelShown = waitForEvent(EVENT_SHOW, PopupNotifications.panel);
const notification = PopupNotifications.show(
browser,
"test-notification",
"hello world",
PopupNotifications.panel.id
);
await panelShown;
ok(isAccessible(PopupNotifications.panel), "Popup panel is accessible");
testAccessibleTree(PopupNotifications.panel, {
ALERT: [
{ LABEL: [{ TEXT_LEAF: [] }] },
{ PUSHBUTTON: [] },
{ PUSHBUTTON: [] },
],
});
// Verify the popup panel is associated with the chrome window.
is(
PopupNotifications.panel.ownerGlobal,
getMainChromeWindow(window),
"Popup panel is associated with the chrome window"
);
const panelHidden = waitForEvent(EVENT_HIDE, PopupNotifications.panel);
PopupNotifications.remove(notification);
await panelHidden;
ok(!isAccessible(PopupNotifications.panel), "Popup panel is not accessible");
}
addAccessibleTask(``, runTests);