Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

/* Any copyright is dedicated to the Public Domain.
"use strict";
add_task(async function doorhanger_bc_downloadAutoFailures_bgWin() {
function getBackgroundWindowHandler(destroyWindow) {
return async function () {
await TestUtils.waitForCondition(
() => PanelUI.menuButton.hasAttribute("badge-status"),
"Background window has a badge.",
undefined,
200
).catch(e => {
// Instead of throwing let the check below fail the test.
logTestInfo(e);
});
ok(
PanelUI.menuButton.hasAttribute("badge-status"),
"PanelUI.menuButton should have a 'badge-status' attribute"
);
is(
PanelUI.notificationPanel.state,
"closed",
"The doorhanger is not showing for the background window"
);
is(
PanelUI.menuButton.getAttribute("badge-status"),
"update-available",
"The badge is showing for the background window"
);
let buttonEl = getNotificationButton(
extraWindow,
"update-available",
"button"
);
buttonEl.click();
if (destroyWindow) {
// The next popup may be shown during closeWindow or promiseFocus
// calls.
let waitForPopupShown = new Promise(resolve => {
window.addEventListener(
"popupshown",
() => {
executeSoon(resolve);
},
{ once: true }
);
});
await BrowserTestUtils.closeWindow(extraWindow);
await SimpleTest.promiseFocus(window);
await waitForPopupShown;
}
};
}
const maxBackgroundErrors = 5;
await SpecialPowers.pushPrefEnv({
set: [[PREF_APP_UPDATE_BACKGROUNDMAXERRORS, maxBackgroundErrors]],
});
let extraWindow = await BrowserTestUtils.openNewBrowserWindow();
await SimpleTest.promiseFocus(extraWindow);
let params = { checkAttempts: 1, queryString: "&badURL=1", popupShown: true };
await runDoorhangerUpdateTest(params, [
getBackgroundWindowHandler(false),
getBackgroundWindowHandler(true),
{
// If the update process is unable to install the update show the manual
// update doorhanger.
notificationId: "update-manual",
button: "button",
checkActiveUpdate: null,
pageURLs: { manual: URL_MANUAL_UPDATE },
},
]);
});