summaryrefslogtreecommitdiffstats
path: root/toolkit/components/printing/tests/browser_print_page_size.js
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/printing/tests/browser_print_page_size.js')
-rw-r--r--toolkit/components/printing/tests/browser_print_page_size.js269
1 files changed, 269 insertions, 0 deletions
diff --git a/toolkit/components/printing/tests/browser_print_page_size.js b/toolkit/components/printing/tests/browser_print_page_size.js
new file mode 100644
index 0000000000..699068eab0
--- /dev/null
+++ b/toolkit/components/printing/tests/browser_print_page_size.js
@@ -0,0 +1,269 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+const pdfPrinterName = "Mozilla Save to PDF";
+const someOtherPrinter = "Other Printer";
+
+async function changeDestination(helper, dir) {
+ let picker = helper.get("printer-picker");
+ let changed = BrowserTestUtils.waitForEvent(picker, "change");
+
+ let pickerOpened = BrowserTestUtils.waitForSelectPopupShown(window);
+ picker.focus();
+ EventUtils.sendKey("space", helper.win);
+ await pickerOpened;
+ EventUtils.sendKey(dir, window);
+ EventUtils.sendKey("return", window);
+ await changed;
+}
+
+add_task(async function testShowAndHidePaperSizeSectionWithPageSize() {
+ await PrintHelper.withTestPage(async helper => {
+ await helper.addMockPrinter(someOtherPrinter);
+ await SpecialPowers.pushPrefEnv({
+ set: [
+ ["print.save_as_pdf.use_page_rule_size_as_paper_size.enabled", true],
+ ],
+ });
+ await helper.startPrint();
+ await helper.setupMockPrint();
+
+ helper.assertSettingsMatch({
+ printerName: pdfPrinterName,
+ usePageRuleSizeAsPaperSize: true,
+ });
+
+ await helper.openMoreSettings();
+
+ let paperSize = helper.get("paper-size");
+
+ ok(BrowserTestUtils.isHidden(paperSize), "Paper size section is hidden");
+
+ await helper.waitForSettingsEvent(async () => {
+ await changeDestination(helper, "down");
+ });
+ await helper.awaitAnimationFrame();
+
+ helper.assertSettingsMatch({
+ printerName: someOtherPrinter,
+ usePageRuleSizeAsPaperSize: false,
+ });
+
+ ok(BrowserTestUtils.isVisible(paperSize), "Paper size section is shown");
+
+ await helper.closeDialog();
+ }, "page_size.html");
+});
+
+add_task(async function testShowPaperSizeSectionWithoutPageSize() {
+ await PrintHelper.withTestPage(async helper => {
+ await helper.addMockPrinter(someOtherPrinter);
+ await SpecialPowers.pushPrefEnv({
+ set: [
+ ["print.save_as_pdf.use_page_rule_size_as_paper_size.enabled", true],
+ ],
+ });
+ await helper.startPrint();
+ await helper.setupMockPrint();
+
+ helper.assertSettingsMatch({
+ printerName: pdfPrinterName,
+ usePageRuleSizeAsPaperSize: true,
+ });
+
+ await helper.openMoreSettings();
+
+ let paperSize = helper.get("paper-size");
+
+ ok(BrowserTestUtils.isVisible(paperSize), "Paper size section is shown");
+
+ await helper.waitForSettingsEvent(async () => {
+ await changeDestination(helper, "down");
+ });
+ await helper.awaitAnimationFrame();
+
+ helper.assertSettingsMatch({
+ printerName: someOtherPrinter,
+ usePageRuleSizeAsPaperSize: false,
+ });
+
+ ok(
+ BrowserTestUtils.isVisible(paperSize),
+ "Paper size section is still shown"
+ );
+
+ await helper.closeDialog();
+ });
+});
+
+add_task(async function testCustomPageSizePassedToPrinter() {
+ await PrintHelper.withTestPage(async helper => {
+ await SpecialPowers.pushPrefEnv({
+ set: [
+ ["print.save_as_pdf.use_page_rule_size_as_paper_size.enabled", true],
+ ],
+ });
+ await helper.startPrint();
+ await helper.setupMockPrint();
+
+ is(helper.settings.paperWidth.toFixed(1), "4.0", "Check paperWidth");
+ is(helper.settings.paperHeight.toFixed(1), "12.0", "Check paperHeight");
+ is(
+ helper.settings.orientation,
+ Ci.nsIPrintSettings.kPortraitOrientation,
+ "Check orientation"
+ );
+ is(
+ helper.settings.paperSizeUnit,
+ helper.settings.kPaperSizeInches,
+ "Check paperSizeUnit"
+ );
+
+ await helper.closeDialog();
+ }, "page_size.html");
+});
+
+add_task(async function testNamedPageSizePassedToPrinter() {
+ await PrintHelper.withTestPage(async helper => {
+ await SpecialPowers.pushPrefEnv({
+ set: [
+ ["print.save_as_pdf.use_page_rule_size_as_paper_size.enabled", true],
+ ],
+ });
+ await helper.startPrint();
+ await helper.setupMockPrint();
+
+ helper.assertSettingsMatch({
+ printerName: pdfPrinterName,
+ usePageRuleSizeAsPaperSize: true,
+ });
+
+ is(helper.settings.paperId, "iso_a5", "Check paper id is A5");
+ is(
+ helper.settings.paperWidth.toFixed(1),
+ "5.8",
+ "Check paperWidth is ~148mm (in inches)"
+ );
+ is(
+ helper.settings.paperHeight.toFixed(1),
+ "8.3",
+ "Check paperHeight is ~210mm (in inches)"
+ );
+ is(
+ helper.settings.paperSizeUnit,
+ helper.settings.kPaperSizeInches,
+ "Check paperSizeUnit"
+ );
+ is(
+ helper.settings.orientation,
+ Ci.nsIPrintSettings.kPortraitOrientation,
+ "Check orientation"
+ );
+ await helper.closeDialog();
+ }, "page_size_a5.html");
+});
+
+add_task(async function testLandscapePageSizePassedToPrinter() {
+ await PrintHelper.withTestPage(async helper => {
+ await SpecialPowers.pushPrefEnv({
+ set: [
+ ["print.save_as_pdf.use_page_rule_size_as_paper_size.enabled", true],
+ ],
+ });
+ await helper.startPrint();
+ await helper.setupMockPrint();
+
+ helper.assertSettingsMatch({
+ printerName: pdfPrinterName,
+ usePageRuleSizeAsPaperSize: true,
+ });
+
+ is(helper.settings.paperId, "iso_a5", "Check paper id is A5");
+ is(
+ helper.settings.orientation,
+ Ci.nsIPrintSettings.kLandscapeOrientation,
+ "Check orientation is landscape"
+ );
+ is(
+ helper.settings.paperWidth.toFixed(1),
+ "5.8",
+ "Check paperWidth is ~148mm (in inches)"
+ );
+ is(
+ helper.settings.paperHeight.toFixed(1),
+ "8.3",
+ "Check paperHeight is ~210mm (in inches)"
+ );
+ is(
+ helper.settings.paperSizeUnit,
+ helper.settings.kPaperSizeInches,
+ "Check paperSizeUnit"
+ );
+
+ await helper.closeDialog();
+ }, "page_size_a5_landscape.html");
+});
+
+add_task(async function testZeroSizePassedToPrinter() {
+ await PrintHelper.withTestPage(async helper => {
+ await helper.startPrint();
+ await helper.setupMockPrint();
+
+ let pageSize = helper.get("paper-size");
+ let orientation = helper.get("orientation");
+
+ ok(BrowserTestUtils.isVisible(pageSize), "Fallback to page size section");
+ ok(BrowserTestUtils.isVisible(orientation), "Orientation picker is shown");
+
+ await helper.closeDialog();
+ });
+}, "page_size_zero.html");
+
+add_task(async function testZeroWidthPassedToPrinter() {
+ await PrintHelper.withTestPage(async helper => {
+ await SpecialPowers.pushPrefEnv({
+ set: [
+ ["print.save_as_pdf.use_page_rule_size_as_paper_size.enabled", true],
+ ],
+ });
+ await helper.startPrint();
+ await helper.setupMockPrint();
+
+ let pageSize = helper.get("paper-size");
+ let orientation = helper.get("orientation");
+
+ ok(BrowserTestUtils.isVisible(pageSize), "Fallback to page size section");
+ ok(BrowserTestUtils.isVisible(orientation), "Orientation picker is shown");
+
+ await helper.closeDialog();
+ });
+}, "page_size_zero_width.html");
+
+add_task(async function testDefaultSizePassedToPrinter() {
+ await PrintHelper.withTestPage(async helper => {
+ await SpecialPowers.pushPrefEnv({
+ set: [
+ ["print.save_as_pdf.use_page_rule_size_as_paper_size.enabled", true],
+ ],
+ });
+ await helper.startPrint();
+ await helper.setupMockPrint();
+
+ helper.assertSettingsMatch({
+ printerName: pdfPrinterName,
+ usePageRuleSizeAsPaperSize: true,
+ });
+
+ is(helper.settings.paperWidth.toFixed(1), "8.5", "Check paperWidth");
+ is(helper.settings.paperHeight.toFixed(1), "11.0", "Check paperHeight");
+ is(
+ helper.settings.paperSizeUnit,
+ helper.settings.kPaperSizeInches,
+ "Check paperSizeUnit"
+ );
+
+ await helper.closeDialog();
+ });
+});