michael@0: function test() { michael@0: waitForExplicitFinish(); michael@0: michael@0: ok(!gInPrintPreviewMode, michael@0: "Should NOT be in print preview mode at starting this tests"); michael@0: // Skip access key test on platforms which don't support access key. michael@0: if (!/Win|Linux/.test(navigator.platform)) { michael@0: openPrintPreview(testClosePrintPreviewWithEscKey); michael@0: } else { michael@0: openPrintPreview(testClosePrintPreviewWithAccessKey); michael@0: } michael@0: } michael@0: michael@0: function testClosePrintPreviewWithAccessKey() { michael@0: EventUtils.synthesizeKey("c", { altKey: true }); michael@0: checkPrintPreviewClosed(function (aSucceeded) { michael@0: ok(aSucceeded, michael@0: "print preview mode should be finished by access key"); michael@0: openPrintPreview(testClosePrintPreviewWithEscKey); michael@0: }); michael@0: } michael@0: michael@0: function testClosePrintPreviewWithEscKey() { michael@0: EventUtils.synthesizeKey("VK_ESCAPE", {}); michael@0: checkPrintPreviewClosed(function (aSucceeded) { michael@0: ok(aSucceeded, michael@0: "print preview mode should be finished by Esc key press"); michael@0: openPrintPreview(testClosePrintPreviewWithClosingWindowShortcutKey); michael@0: }); michael@0: } michael@0: michael@0: function testClosePrintPreviewWithClosingWindowShortcutKey() { michael@0: EventUtils.synthesizeKey("w", { accelKey: true }); michael@0: checkPrintPreviewClosed(function (aSucceeded) { michael@0: ok(aSucceeded, michael@0: "print preview mode should be finished by closing window shortcut key"); michael@0: finish(); michael@0: }); michael@0: } michael@0: michael@0: function openPrintPreview(aCallback) { michael@0: document.getElementById("cmd_printPreview").doCommand(); michael@0: executeSoon(function () { michael@0: if (gInPrintPreviewMode) { michael@0: executeSoon(aCallback); michael@0: return; michael@0: } michael@0: executeSoon(arguments.callee); michael@0: }); michael@0: } michael@0: michael@0: function checkPrintPreviewClosed(aCallback) { michael@0: let count = 0; michael@0: executeSoon(function () { michael@0: if (!gInPrintPreviewMode) { michael@0: executeSoon(function () { aCallback(count < 1000); }); michael@0: return; michael@0: } michael@0: if (++count == 1000) { michael@0: // The test might fail. michael@0: PrintUtils.exitPrintPreview(); michael@0: } michael@0: executeSoon(arguments.callee); michael@0: }); michael@0: }