Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

/* Any copyright is dedicated to the Public Domain.
const ReferrerInfo = Components.Constructor(
"@mozilla.org/referrer-info;1",
"nsIReferrerInfo",
"init"
);
const TEST_REFERRER = "https://example.com/";
registerCleanupFunction(async function () {
await task_resetState();
await PlacesUtils.history.clear();
});
async function addDownload(referrerInfo) {
let startTimeMs = Date.now();
let publicList = await Downloads.getList(Downloads.PUBLIC);
let downloadData = {
source: {
referrerInfo,
},
target: {
path: gTestTargetFile.path,
},
startTime: new Date(startTimeMs++),
};
let download = await Downloads.createDownload(downloadData);
await publicList.add(download);
await download.start();
}
/**
* Make sure "Go To Download Page" is enabled and works as expected.
*/
add_task(async function test_go_to_download_page() {
let referrerInfo = new ReferrerInfo(
Ci.nsIReferrerInfo.NO_REFERRER,
true,
NetUtil.newURI(TEST_REFERRER)
);
let tabPromise = BrowserTestUtils.waitForNewTab(gBrowser, TEST_REFERRER);
// Wait for focus first
await promiseFocus();
// Ensure that state is reset in case previous tests didn't finish.
await task_resetState();
// Populate the downloads database with the data required by this test.
await addDownload(referrerInfo);
// Open the user interface and wait for data to be fully loaded.
await task_openPanel();
let win = await openLibrary("Downloads");
registerCleanupFunction(function () {
win.close();
});
let listbox = win.document.getElementById("downloadsListBox");
ok(listbox, "download list box present");
// Select one of the downloads.
listbox.itemChildren[0].click();
let contextMenu = win.document.getElementById("downloadsContextMenu");
let popupShownPromise = BrowserTestUtils.waitForEvent(
contextMenu,
"popupshown"
);
EventUtils.synthesizeMouseAtCenter(
listbox.itemChildren[0],
{ type: "contextmenu", button: 2 },
win
);
await popupShownPromise;
// Find and click "Go To Download Page"
let goToDownloadButton = [...contextMenu.children].find(
child => child.command == "downloadsCmd_openReferrer"
);
contextMenu.activateItem(goToDownloadButton);
let newTab = await tabPromise;
ok(newTab, "Go To Download Page opened a new tab");
gBrowser.removeTab(newTab);
});