Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

"use strict";
const TEST_PATH = getRootDirectory(gTestPath).replace(
);
add_task(async function () {
await BrowserTestUtils.withNewTab(
TEST_PATH + "file_pdfjs_not_subject_to_csp.html",
async function (browser) {
let pdfPromise = BrowserTestUtils.waitForContentEvent(
browser,
"documentloaded",
false,
null,
true
);
await ContentTask.spawn(browser, {}, async function () {
let pdfButton = content.document.getElementById("pdfButton");
pdfButton.click();
});
await pdfPromise;
await ContentTask.spawn(browser, {}, async function () {
let pdfFrame = content.document.getElementById("pdfFrame");
// 1) Sanity that we have loaded the PDF using a blob
ok(pdfFrame.src.startsWith("blob:"), "it's a blob URL");
// 2) Ensure that the PDF has actually loaded
ok(
pdfFrame.contentDocument.querySelector("div#viewer"),
"document content has viewer UI"
);
// 3) Ensure we have the correct CSP attached
let cspJSON = pdfFrame.contentDocument.cspJSON;
ok(cspJSON.includes("script-src"), "found script-src directive");
ok(cspJSON.includes("allowPDF"), "found script-src nonce value");
});
await SpecialPowers.spawn(browser, [], async () => {
const pdfFrame = content.document.getElementById("pdfFrame");
const viewer =
pdfFrame.contentWindow.wrappedJSObject.PDFViewerApplication;
await viewer.testingClose();
});
}
);
});