зеркало из https://github.com/mozilla/gecko-dev.git
210 строки
6.4 KiB
JavaScript
210 строки
6.4 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
"use strict";
|
|
|
|
function changeToOption(helper, index) {
|
|
return helper.waitForSettingsEvent(function() {
|
|
let select = helper.get("duplex-select");
|
|
select.focus();
|
|
select.scrollIntoView({ block: "center" });
|
|
|
|
EventUtils.sendKey("space", helper.win);
|
|
let selectedIndex = select.selectedIndex;
|
|
info(`Looking for ${index} from ${selectedIndex}`);
|
|
while (selectedIndex != index) {
|
|
if (index > selectedIndex) {
|
|
EventUtils.sendKey("down", helper.win);
|
|
selectedIndex++;
|
|
} else {
|
|
EventUtils.sendKey("up", helper.win);
|
|
selectedIndex--;
|
|
}
|
|
}
|
|
EventUtils.sendKey("return", helper.win);
|
|
});
|
|
}
|
|
|
|
add_task(async function testPDFPrinterIsNonDuplex() {
|
|
await PrintHelper.withTestPage(async helper => {
|
|
await helper.startPrint();
|
|
await helper.openMoreSettings();
|
|
|
|
is(
|
|
helper.settings.printerName,
|
|
"Mozilla Save to PDF",
|
|
"Mozilla Save to PDF is the current printer."
|
|
);
|
|
|
|
const duplexSection = helper.get("two-sided-printing");
|
|
ok(
|
|
duplexSection.hidden,
|
|
"The two-sided printing section should be hidden when the printer does not support duplex."
|
|
);
|
|
|
|
helper.assertSettingsMatch({ duplex: Ci.nsIPrintSettings.kDuplexNone });
|
|
|
|
await helper.closeDialog();
|
|
});
|
|
});
|
|
|
|
add_task(async function testToggleDuplexWithPortraitOrientation() {
|
|
const mockPrinterName = "DuplexWithPortrait";
|
|
await PrintHelper.withTestPage(async helper => {
|
|
const printer = helper.addMockPrinter(mockPrinterName);
|
|
printer.supportsDuplex = Promise.resolve(true);
|
|
|
|
await helper.startPrint();
|
|
await helper.dispatchSettingsChange({ printerName: mockPrinterName });
|
|
await helper.awaitAnimationFrame();
|
|
await helper.openMoreSettings();
|
|
|
|
is(
|
|
helper.settings.printerName,
|
|
mockPrinterName,
|
|
"The Fake Printer is current printer"
|
|
);
|
|
|
|
const duplexSection = helper.get("two-sided-printing");
|
|
ok(
|
|
!duplexSection.hidden,
|
|
"The two-sided printing section should not be hidden when the printer supports duplex."
|
|
);
|
|
|
|
helper.assertSettingsMatch({
|
|
orientation: Ci.nsIPrintSettings.kPortraitOrientation,
|
|
duplex: Ci.nsIPrintSettings.kDuplexNone,
|
|
});
|
|
|
|
await changeToOption(helper, 1);
|
|
helper.assertSettingsMatch({
|
|
orientation: Ci.nsIPrintSettings.kPortraitOrientation,
|
|
duplex: Ci.nsIPrintSettings.kDuplexFlipOnLongEdge,
|
|
});
|
|
|
|
await changeToOption(helper, 2);
|
|
helper.assertSettingsMatch({
|
|
orientation: Ci.nsIPrintSettings.kPortraitOrientation,
|
|
duplex: Ci.nsIPrintSettings.kDuplexFlipOnShortEdge,
|
|
});
|
|
|
|
await changeToOption(helper, 0);
|
|
helper.assertSettingsMatch({
|
|
orientation: Ci.nsIPrintSettings.kPortraitOrientation,
|
|
duplex: Ci.nsIPrintSettings.kDuplexNone,
|
|
});
|
|
|
|
await helper.closeDialog();
|
|
});
|
|
});
|
|
|
|
add_task(async function testToggleDuplexWithLandscapeOrientation() {
|
|
const mockPrinterName = "DuplexWithLandscape";
|
|
await PrintHelper.withTestPage(async helper => {
|
|
const printer = helper.addMockPrinter(mockPrinterName);
|
|
printer.supportsDuplex = Promise.resolve(true);
|
|
|
|
await helper.startPrint();
|
|
await helper.dispatchSettingsChange({ printerName: mockPrinterName });
|
|
await helper.awaitAnimationFrame();
|
|
await helper.openMoreSettings();
|
|
|
|
is(
|
|
helper.settings.printerName,
|
|
mockPrinterName,
|
|
"The Fake Printer is current printer"
|
|
);
|
|
|
|
const duplexSection = helper.get("two-sided-printing");
|
|
ok(
|
|
!duplexSection.hidden,
|
|
"The two-sided printing section should not be hidden when the printer supports duplex."
|
|
);
|
|
|
|
await helper.assertSettingsMatch({
|
|
orientation: Ci.nsIPrintSettings.kPortraitOrientation,
|
|
duplex: Ci.nsIPrintSettings.kDuplexNone,
|
|
});
|
|
|
|
await helper.dispatchSettingsChange({ orientation: 1 });
|
|
await helper.awaitAnimationFrame();
|
|
await helper.assertSettingsMatch({
|
|
orientation: Ci.nsIPrintSettings.kLandscapeOrientation,
|
|
duplex: Ci.nsIPrintSettings.kDuplexNone,
|
|
});
|
|
|
|
await changeToOption(helper, 1);
|
|
helper.assertSettingsMatch({
|
|
orientation: Ci.nsIPrintSettings.kLandscapeOrientation,
|
|
duplex: Ci.nsIPrintSettings.kDuplexFlipOnLongEdge,
|
|
});
|
|
|
|
await changeToOption(helper, 2);
|
|
helper.assertSettingsMatch({
|
|
orientation: Ci.nsIPrintSettings.kLandscapeOrientation,
|
|
duplex: Ci.nsIPrintSettings.kDuplexFlipOnShortEdge,
|
|
});
|
|
|
|
await changeToOption(helper, 0);
|
|
helper.assertSettingsMatch({
|
|
orientation: Ci.nsIPrintSettings.kLandscapeOrientation,
|
|
duplex: Ci.nsIPrintSettings.kDuplexNone,
|
|
});
|
|
|
|
await helper.closeDialog();
|
|
});
|
|
});
|
|
|
|
add_task(async function testSwitchOrientationWithDuplexEnabled() {
|
|
const mockPrinterName = "ToggleOrientationPrinter";
|
|
await PrintHelper.withTestPage(async helper => {
|
|
const printer = helper.addMockPrinter(mockPrinterName);
|
|
printer.supportsDuplex = Promise.resolve(true);
|
|
|
|
await helper.startPrint();
|
|
await helper.dispatchSettingsChange({ printerName: mockPrinterName });
|
|
await helper.awaitAnimationFrame();
|
|
await helper.openMoreSettings();
|
|
|
|
is(
|
|
helper.settings.printerName,
|
|
mockPrinterName,
|
|
"The Fake Printer is current printer"
|
|
);
|
|
|
|
const duplexSection = helper.get("two-sided-printing");
|
|
ok(
|
|
!duplexSection.hidden,
|
|
"The two-sided printing section should not be hidden when the printer supports duplex."
|
|
);
|
|
|
|
await helper.assertSettingsMatch({
|
|
orientation: Ci.nsIPrintSettings.kPortraitOrientation,
|
|
duplex: Ci.nsIPrintSettings.kDuplexNone,
|
|
});
|
|
|
|
await changeToOption(helper, 1);
|
|
|
|
await helper.assertSettingsMatch({
|
|
orientation: Ci.nsIPrintSettings.kPortraitOrientation,
|
|
duplex: Ci.nsIPrintSettings.kDuplexFlipOnLongEdge,
|
|
});
|
|
|
|
await helper.dispatchSettingsChange({ orientation: 1 });
|
|
await helper.awaitAnimationFrame();
|
|
await helper.assertSettingsMatch({
|
|
orientation: Ci.nsIPrintSettings.kLandscapeOrientation,
|
|
duplex: Ci.nsIPrintSettings.kDuplexFlipOnLongEdge,
|
|
});
|
|
|
|
await helper.dispatchSettingsChange({ orientation: 0 });
|
|
await helper.awaitAnimationFrame();
|
|
await helper.assertSettingsMatch({
|
|
orientation: Ci.nsIPrintSettings.kPortraitOrientation,
|
|
duplex: Ci.nsIPrintSettings.kDuplexFlipOnLongEdge,
|
|
});
|
|
|
|
await helper.closeDialog();
|
|
});
|
|
});
|