From 43a97878ce14b72f0981164f87f2e35e14151312 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 11:22:09 +0200 Subject: Adding upstream version 110.0.1. Signed-off-by: Daniel Baumann --- .../printing/tests/browser_pdf_printer_settings.js | 125 +++++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 toolkit/components/printing/tests/browser_pdf_printer_settings.js (limited to 'toolkit/components/printing/tests/browser_pdf_printer_settings.js') diff --git a/toolkit/components/printing/tests/browser_pdf_printer_settings.js b/toolkit/components/printing/tests/browser_pdf_printer_settings.js new file mode 100644 index 0000000000..16a7d86600 --- /dev/null +++ b/toolkit/components/printing/tests/browser_pdf_printer_settings.js @@ -0,0 +1,125 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +"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; + + ok( + 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"); + }); +}); -- cgit v1.2.3