Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

/* 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";
/**
* @returns {Promise<{maxCanvasDim: number, accelerated: boolean}>} The
* viewer's maximum canvas dimension with these prefs, and whether canvases
* are actually accelerated with them.
*/
async function getMaxCanvasDim(prefs) {
await SpecialPowers.pushPrefEnv({ set: prefs });
const accelerated = Cc["@mozilla.org/gfx/info;1"].getService(
Ci.nsIGfxInfo
).usingAcceleratedCanvas;
let maxCanvasDim;
await BrowserTestUtils.withNewTab(
{ gBrowser, url: "about:blank" },
async browser => {
await waitForPdfJS(browser, pdfUrl);
maxCanvasDim = await SpecialPowers.spawn(
browser,
[],
() =>
content.wrappedJSObject.PDFViewerApplication.pdfViewer.maxCanvasDim
);
await waitForPdfJSClose(browser);
}
);
await SpecialPowers.popPrefEnv();
return { maxCanvasDim, accelerated };
}
add_task(async function test_max_canvas_dim() {
const maxSize = Services.prefs.getIntPref("gfx.canvas.max-size");
const acceleratedMaxSize = 4096;
// Acceleration also depends on the GPU, so it may be off on some machines.
let { maxCanvasDim, accelerated } = await getMaxCanvasDim([
["pdfjs.enableHWA", true],
["gfx.canvas.accelerated", true],
["gfx.canvas.accelerated.max-size", acceleratedMaxSize],
]);
info(`Accelerated canvases: ${accelerated}`);
is(
maxCanvasDim,
accelerated ? Math.min(maxSize, acceleratedMaxSize) : maxSize,
"The accelerated maximum size is used when canvases are accelerated"
);
({ maxCanvasDim } = await getMaxCanvasDim([
["pdfjs.enableHWA", false],
["gfx.canvas.accelerated", true],
["gfx.canvas.accelerated.max-size", acceleratedMaxSize],
]));
is(
maxCanvasDim,
maxSize,
"The maximum size is used when pdf.js doesn't use acceleration"
);
({ maxCanvasDim, accelerated } = await getMaxCanvasDim([
["pdfjs.enableHWA", true],
["gfx.canvas.accelerated", false],
["gfx.canvas.accelerated.force-enabled", false],
["gfx.canvas.accelerated.max-size", acceleratedMaxSize],
]));
ok(!accelerated, "Canvases aren't accelerated");
is(
maxCanvasDim,
maxSize,
"The maximum size is used when canvases aren't accelerated"
);
({ maxCanvasDim } = await getMaxCanvasDim([
["pdfjs.enableHWA", true],
["gfx.canvas.accelerated", true],
["gfx.canvas.accelerated.max-size", 0],
]));
is(
maxCanvasDim,
maxSize,
"The maximum size is used when the accelerated size is unlimited"
);
});