Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
/* Any copyright is dedicated to the Public Domain.
"use strict";
const TEST_URL =
"http://mochi.test:8888/browser/browser/base/content/test/browser-mathml/download_page_mathml.html";
function setupMockFilePicker() {
const MockFilePicker = SpecialPowers.MockFilePicker;
MockFilePicker.init(window);
let promise = new Promise(resolve => {
MockFilePicker.showCallback = fp => {
setTimeout(() => resolve(fp.defaultString), 0);
return Ci.nsIFilePicker.returnCancel;
};
});
return { MockFilePicker, promise };
}
add_task(async function setup_prefs() {
await SpecialPowers.pushPrefEnv({
set: [
["browser.download.always_ask_before_handling_new_types", false],
["browser.download.useDownloadDir", false],
["mathml.a.element.enabled", true],
],
});
});
// Click MathML link
add_task(async function test_mathml_click_download() {
const { MockFilePicker, promise } = setupMockFilePicker();
try {
await BrowserTestUtils.withNewTab(TEST_URL, async browser => {
await BrowserTestUtils.synthesizeMouseAtCenter(
"#mathml-link",
{},
browser
);
let filename = await promise;
is(filename, "mathml_test.txt", "Download filename matches attribute.");
});
} finally {
MockFilePicker.cleanup();
}
});
// Save MathML Link As
add_task(async function test_mathml_savelinkas_download() {
const { MockFilePicker, promise } = setupMockFilePicker();
try {
await BrowserTestUtils.withNewTab(TEST_URL, async browser => {
let menu = document.getElementById("contentAreaContextMenu");
let popupShown = BrowserTestUtils.waitForEvent(menu, "popupshown");
BrowserTestUtils.synthesizeMouse(
"#mathml-link",
2,
2,
{ type: "contextmenu", button: 2 },
browser
);
await popupShown;
let popupHidden = BrowserTestUtils.waitForEvent(menu, "popuphidden");
menu.activateItem(document.getElementById("context-savelink"));
await popupHidden;
let filename = await promise;
is(
filename,
"mathml_test.txt",
"Save Link As honors download attribute."
);
});
} finally {
MockFilePicker.cleanup();
}
});