Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
/* Any copyright is dedicated to the Public Domain.
"use strict";
add_task(async function testPDFPrinterSettings() {
await PrintHelper.withTestPage(async helper => {
// Set some bad prefs
await SpecialPowers.pushPrefEnv({
set: [
["print.print_to_file", false],
["print.print_in_color", false],
["print.printer_Mozilla_Save_to_PDF.print_to_file", false],
["print.printer_Mozilla_Save_to_PDF.print_in_color", false],
],
});
await helper.startPrint();
await helper.awaitAnimationFrame();
// Verify we end up with sane settings
let { settings } = helper;
Assert.equal(
settings.outputDestination,
Ci.nsIPrintSettings.kOutputDestinationFile,
"Check the current settings have file destination"
);
ok(
settings.printInColor,
"Check the current settings have a truthy printInColor for the PDF printer"
);
is(
settings.outputFormat,
Ci.nsIPrintSettings.kOutputFormatPDF,
"The PDF printer has the correct outputFormat"
);
await helper.closeDialog();
await SpecialPowers.popPrefEnv();
});
});
add_task(async function testPDFCancel() {
await PrintHelper.withTestPage(async helper => {
await helper.startPrint();
helper.mockFilePickerCancel();
let form = helper.doc.querySelector("#print");
// retrieve all elements other than cancel button
let elements = [];
for (let element of form.elements) {
if (element.name != "cancel") {
elements.push(element);
}
}
let getDisabledStates = () => elements.map(el => el.disabled);
let initialDisabledStates = getDisabledStates();
ok(
initialDisabledStates.some(disabled => !disabled),
"At least one enabled form element before submitting"
);
let getShownDisabledStates = new Promise(resolve => {
MockFilePicker.showCallback = () => resolve(getDisabledStates());
});
EventUtils.sendKey("return", helper.win);
let shownDisabledStates = await getShownDisabledStates;
ok(shownDisabledStates, "Got disabled states while shown");
ok(
shownDisabledStates.every(disabled => disabled),
"All elements were disabled when showing picker"
);
let cancelButton = helper.doc.querySelector(`button[name="cancel"]`);
ok(!cancelButton.disabled, "Cancel button is still enabled");
let saveButton = form.querySelector("#print-button");
await BrowserTestUtils.waitForAttributeRemoval("disabled", saveButton);
helper.assertDialogOpen();
is(
getDisabledStates().every(
(disabledState, index) => disabledState === initialDisabledStates[index]
),
true,
"Previous disabled states match after returning to preview"
);
// Close the dialog with Escape.
await helper.withClosingFn(() => {
EventUtils.synthesizeKey("VK_ESCAPE", {}, helper.win);
});
helper.assertDialogClosed();
});
});
add_task(async function testPDFFile() {
await PrintHelper.withTestPage(async helper => {
await helper.startPrint();
helper.mockFilePicker("pdfFile.pdf");
let filePath = PathUtils.join(
Services.dirsvc.get("TmpD", Ci.nsIFile).path,
"pdfFile.pdf"
);
await helper.withClosingFn(() => {
EventUtils.sendKey("return", helper.win);
});
try {
Services.prefs.getStringPref(
"print.printer_Mozilla_Save_to_PDF.print_to_filename"
);
ok(false, "Should have cleared the filename pref");
} catch (ex) {
ok(true, "Cleared the filename pref");
}
is(await IOUtils.exists(filePath), true, "Saved pdf file exists");
ok(await IOUtils.read(filePath), "Saved pdf file is not empty");
});
});