Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
const { DownloadIntegration } = ChromeUtils.importESModule(
"resource://gre/modules/DownloadIntegration.sys.mjs"
);
const TEST_PATH = getRootDirectory(gTestPath).replace(
);
// New file is being downloaded and no dialogs are shown in the way.
add_task(async function skipDialogAndDownloadFile() {
await SpecialPowers.pushPrefEnv({
set: [
["browser.download.always_ask_before_handling_new_types", false],
["browser.download.useDownloadDir", true],
],
});
let publicList = await Downloads.getList(Downloads.PUBLIC);
registerCleanupFunction(async () => {
await publicList.removeFinished();
});
let downloadFinishedPromise = promiseDownloadFinished(publicList);
let initialTabsCount = gBrowser.tabs.length;
let loadingTab = await BrowserTestUtils.openNewForegroundTab({
gBrowser,
opening: TEST_PATH + "file_green.webp",
waitForLoad: false,
waitForStateStop: true,
});
// We just open the file to be downloaded... and wait for it to be downloaded!
// We see no dialogs to be accepted in the process.
let download = await downloadFinishedPromise;
await BrowserTestUtils.waitForCondition(
() => gBrowser.tabs.length == initialTabsCount + 2
);
gBrowser.removeCurrentTab();
BrowserTestUtils.removeTab(loadingTab);
Assert.ok(
await IOUtils.exists(download.target.path),
"The file should have been downloaded."
);
try {
info("removing " + download.target.path);
if (Services.appinfo.OS === "WINNT") {
// We need to make the file writable to delete it on Windows.
await IOUtils.setPermissions(download.target.path, 0o600);
}
await IOUtils.remove(download.target.path);
} catch (ex) {
info("The file " + download.target.path + " is not removed, " + ex);
}
});