Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

/* Any copyright is dedicated to the Public Domain.
const RELATIVE_DIR = "toolkit/components/pdfjs/test/";
const TESTROOT = "https://example.com/browser/" + RELATIVE_DIR;
const pdfUrl = TESTROOT + "file_pdfjs_test.pdf";
const toolbarDensityPref = "browser.uidensity";
// Test that changing the toolbar density pref is dispatched in pdf.js.
add_task(async function test() {
const mimeService = Cc["@mozilla.org/mime;1"].getService(Ci.nsIMIMEService);
const handlerInfo = mimeService.getFromTypeAndExtension(
"application/pdf",
"pdf"
);
// Make sure pdf.js is the default handler.
is(
handlerInfo.alwaysAskBeforeHandling,
false,
"pdf handler defaults to always-ask is false"
);
is(
handlerInfo.preferredAction,
Ci.nsIHandlerInfo.handleInternally,
"pdf handler defaults to internal"
);
info("Pref action: " + handlerInfo.preferredAction);
await BrowserTestUtils.withNewTab(
{ gBrowser, url: "about:blank" },
async function test_updated_preferences(browser) {
await waitForPdfJS(browser, pdfUrl);
const prefs = {
enableGuessAltText: {
type: "Bool",
initialValue: true,
newValue: false,
expectedValue: false,
listenForUpdate: true,
},
pdfBugEnabled: {
type: "Bool",
initialValue: false,
newValue: true,
// pdfBugEnabled is immutable.
expectedValue: false,
listenForUpdate: false,
},
};
for (const pref of Object.keys(prefs)) {
Services.prefs.clearUserPref(`pdfjs.${pref}`);
}
const promises = [];
for (const [
pref,
{ type, initialValue, listenForUpdate },
] of Object.entries(prefs)) {
Assert.strictEqual(
Services.prefs[`get${type}Pref`](`pdfjs.${pref}`),
initialValue,
`pdfjs.${pref} should be ${initialValue}`
);
if (listenForUpdate) {
promises.push(
BrowserTestUtils.waitForContentEvent(
browser,
"updatedPreference",
false,
null,
true
)
);
}
}
await SpecialPowers.spawn(browser, [prefs], async prfs => {
const viewer = content.wrappedJSObject.PDFViewerApplication;
for (const [pref, { newValue }] of Object.entries(prfs)) {
await viewer.preferences.set(pref, newValue);
}
});
await Promise.all(promises);
for (const [pref, { type, expectedValue }] of Object.entries(prefs)) {
Assert.strictEqual(
Services.prefs[`get${type}Pref`](`pdfjs.${pref}`),
expectedValue,
`pdfjs.${pref} should be ${expectedValue}`
);
}
for (const pref of Object.keys(prefs)) {
Services.prefs.clearUserPref(`pdfjs.${pref}`);
}
await waitForPdfJSClose(browser);
}
);
});