Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
- Manifest: docshell/test/browser/browser.toml
/* Any copyright is dedicated to the Public Domain.
ChromeUtils.defineESModuleGetters(this, {
Downloads: "resource://gre/modules/Downloads.sys.mjs",
});
const TEST_PATH = getRootDirectory(gTestPath).replace(
);
function doLoad(url, forceMediaDocument, contentFn) {
return BrowserTestUtils.withNewTab({ gBrowser }, async function (browser) {
browser.loadURI(Services.io.newURI(url), {
triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),
forceMediaDocument,
});
await BrowserTestUtils.browserLoaded(browser, false, url);
await SpecialPowers.spawn(browser, [], contentFn);
});
}
add_task(async function test_img_png() {
await doLoad(TEST_PATH + "file_media_header.sjs?imagePNG", "image", () => {
// The image was successfully displayed inline, which means
// we sent the right Accept header and ignored the Content-Disposition.
let img = content.document.querySelector("img");
is(img.width, 1, "PNG width");
is(img.height, 1, "PNG height");
});
});
add_task(async function test_img_svg() {
await doLoad(
TEST_PATH + "file_media_header.sjs?imageSVG",
"image",
async () => {
let img = content.document.querySelector("img");
// Work around for intermittent failures.
for (let i = 0; i < 10; i++) {
if (img.width === 100) {
break;
}
// eslint-disable-next-line mozilla/no-arbitrary-setTimeout
await new Promise(resolve => content.setTimeout(resolve, 100));
}
is(img.width, 100, "SVG width");
is(img.height, 100, "SVG height");
}
);
});
add_task(async function test_video() {
await doLoad(TEST_PATH + "file_media_header.sjs?videoWebM", "video", () => {
let video = content.document.querySelector("video");
ok(video, "Video element exists");
is(video.autoplay, false, "video does not autoplay");
});
});
// Regression test for bug 2011081: forceMediaDocument with an
// application/octet-stream response must not trigger a download.
add_task(async function test_img_octet_stream_no_download() {
let downloadList = await Downloads.getList(Downloads.ALL);
let downloadAdded = false;
let downloadView = {
onDownloadAdded() {
downloadAdded = true;
},
};
await downloadList.addView(downloadView);
registerCleanupFunction(async () => {
await downloadList.removeView(downloadView);
});
await BrowserTestUtils.withNewTab({ gBrowser }, async function (browser) {
let url = TEST_PATH + "file_media_header.sjs?imageOctetStream";
browser.loadURI(Services.io.newURI(url), {
triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),
forceMediaDocument: "image",
});
await BrowserTestUtils.browserStopped(browser);
ok(!downloadAdded, "No download triggered for application/octet-stream");
});
});