| Index: chrome/test/data/webui/print_preview.js
|
| diff --git a/chrome/test/data/webui/print_preview.js b/chrome/test/data/webui/print_preview.js
|
| index 70a0f035c464e3c79e41ecd1ce1fc3732a2fb199..4bf1114fc177ea3a4246683786b5d06fdf08a375 100644
|
| --- a/chrome/test/data/webui/print_preview.js
|
| +++ b/chrome/test/data/webui/print_preview.js
|
| @@ -23,6 +23,7 @@ PrintPreviewWebUITest.prototype = {
|
| * Register a mock handler to ensure expectations are met and print preview
|
| * behaves correctly.
|
| * @type {Function}
|
| + * @this {PrintPreviewWebUITest}
|
| * @override
|
| */
|
| preLoad: function() {
|
| @@ -120,6 +121,7 @@ PrintPreviewWebUITest.prototype = {
|
| * empty methods, which are used by testing and that would be provided by the
|
| * HTMLEmbedElement when the PDF plugin exists.
|
| * @param {number} srcDataIndex Preview data source index.
|
| + * @this {PrintPreviewWebUITest}
|
| */
|
| createOrReloadPDFPlugin: function(srcDataIndex) {
|
| var pdfViewer = $('pdf-viewer');
|
| @@ -193,6 +195,13 @@ var fooIndex = 0;
|
| */
|
| var barIndex = 1;
|
|
|
| +/**
|
| + * The expected "Save as PDF" option text returned by the stubbed handler.
|
| + * @type {string}
|
| + * @const
|
| + */
|
| +var saveAsPDFOptionStr = 'Save as PDF';
|
| +
|
| // Test some basic assumptions about the print preview WebUI.
|
| TEST_F('PrintPreviewWebUITest', 'TestPrinterList', function() {
|
| var printerList = $('printer-list');
|
| @@ -250,6 +259,16 @@ function checkSectionVisible(section, visible) {
|
| 'section=' + section);
|
| }
|
|
|
| +/**
|
| + * Verify that |section| style display matches |value|.
|
| + * @param {HTMLDivElement} section The section to check.
|
| + * @param {string} value The expected display style value.
|
| + */
|
| +function checkSectionDisplayStyle(section, value) {
|
| + assertNotEquals(null, section);
|
| + expectEquals(section.style.display, value, 'section=' + section);
|
| +}
|
| +
|
| // Test that disabled settings hide the disabled sections.
|
| TEST_F('PrintPreviewWebUITest', 'TestSectionsDisabled', function() {
|
| this.mockHandler.expects(once()).getPrinterCapabilities('FooDevice').
|
| @@ -270,6 +289,120 @@ TEST_F('PrintPreviewWebUITest', 'TestSectionsDisabled', function() {
|
| checkSectionVisible(copiesSettings.copiesOption_, false);
|
| });
|
|
|
| +// When the source is 'PDF' and 'Save as PDF' option is selected, we hide the
|
| +// fit to page option.
|
| +TEST_F('PrintPreviewWebUITest', 'PrintToPDFSelectedHideFitToPageOption',
|
| + function() {
|
| + var savedArgs = new SaveMockArguments();
|
| + this.mockHandler.expects(once()).getPreview(savedArgs.match(ANYTHING)).
|
| + will(callFunctionWithSavedArgs(savedArgs, function(args) {
|
| + updatePrintPreview(2, JSON.parse(args[0]).requestID);
|
| + }));
|
| +
|
| + this.mockGlobals.expects(once()).updateWithPrinterCapabilities(
|
| + savedArgs.match(ANYTHING)).
|
| + will(callGlobalWithSavedArgs(
|
| + savedArgs, 'updateWithPrinterCapabilities'));
|
| +
|
| + setInitialSettings({previewModifiable: false});
|
| + var printerList = $('printer-list');
|
| + assertNotEquals(null, printerList, 'printerList');
|
| + assertGE(printerList.options.length, printerListMinLength);
|
| + for (var i = 0; i < printerList.options.length; i++) {
|
| + if (printerList.options[i].text == saveAsPDFOptionStr &&
|
| + printerList.options[i].value == saveAsPDFOptionStr) {
|
| + printerList.selectedIndex = i;
|
| + break;
|
| + }
|
| + }
|
| + updateControlsWithSelectedPrinterCapabilities();
|
| + checkSectionDisplayStyle(fitToPageSettings.fitToPageOption_, 'none');
|
| +});
|
| +
|
| +// When the source is 'HTML', we always hide the fit to page option.
|
| +TEST_F('PrintPreviewWebUITest', 'SourceIsHTMLHideFitToPageOption', function() {
|
| + var savedArgs = new SaveMockArguments();
|
| + this.mockHandler.expects(once()).getPreview(savedArgs.match(ANYTHING)).
|
| + will(callFunctionWithSavedArgs(savedArgs, function(args) {
|
| + updatePrintPreview(2, JSON.parse(args[0]).requestID);
|
| + }));
|
| +
|
| + this.mockGlobals.expects(once()).updateWithPrinterCapabilities(
|
| + savedArgs.match(ANYTHING)).
|
| + will(callGlobalWithSavedArgs(
|
| + savedArgs, 'updateWithPrinterCapabilities'));
|
| +
|
| + setInitialSettings({previewModifiable: true});
|
| + var printerList = $('printer-list');
|
| + assertNotEquals(null, printerList, 'printerList');
|
| + assertGE(printerList.options.length, printerListMinLength);
|
| + updateControlsWithSelectedPrinterCapabilities();
|
| + checkSectionDisplayStyle(fitToPageSettings.fitToPageOption_, 'none');
|
| + expectTrue(fitToPageSettings.hasFitToPage());
|
| +});
|
| +
|
| +// When the source is "PDF", depending on the selected destination printer, we
|
| +// show/hide the fit to page option.
|
| +TEST_F('PrintPreviewWebUITest', 'SourceIsPDFShowFitToPageOption', function() {
|
| + var savedArgs = new SaveMockArguments();
|
| + this.mockHandler.expects(once()).getPreview(savedArgs.match(ANYTHING)).
|
| + will(callFunctionWithSavedArgs(savedArgs, function(args) {
|
| + updatePrintPreview(2, JSON.parse(args[0]).requestID);
|
| + }));
|
| +
|
| + this.mockGlobals.expects(once()).updateWithPrinterCapabilities(
|
| + savedArgs.match(ANYTHING)).
|
| + will(callGlobalWithSavedArgs(
|
| + savedArgs, 'updateWithPrinterCapabilities'));
|
| +
|
| + setInitialSettings({previewModifiable: false});
|
| + var printerList = $('printer-list');
|
| + assertNotEquals(null, printerList, 'printerList');
|
| + assertGE(printerList.options.length, printerListMinLength);
|
| + var saveAsPDFOptionSelected = false;
|
| + var selectedPrinterOption = printerList.options[printerList.selectedIndex];
|
| + if (selectedPrinterOption.text == saveAsPDFOptionStr &&
|
| + selectedPrinterOption.value == saveAsPDFOptionStr) {
|
| + saveAsPDFOptionSelected = true;
|
| + }
|
| + updateControlsWithSelectedPrinterCapabilities();
|
| + checkSectionDisplayStyle(fitToPageSettings.fitToPageOption_,
|
| + saveAsPDFOptionSelected ? 'none' : 'block');
|
| + expectTrue(fitToPageSettings.hasFitToPage());
|
| +});
|
| +
|
| +// When the print scaling is disabled for the source "PDF", we show the fit
|
| +// to page option but the state is unchecked by default.
|
| +TEST_F('PrintPreviewWebUITest', 'PrintScalingDisabledForPlugin', function() {
|
| + var savedArgs = new SaveMockArguments();
|
| + this.mockHandler.expects(once()).getPreview(savedArgs.match(ANYTHING)).
|
| + will(callFunctionWithSavedArgs(savedArgs, function(args) {
|
| + updatePrintPreview(2, JSON.parse(args[0]).requestID);
|
| + }));
|
| +
|
| + this.mockGlobals.expects(once()).updateWithPrinterCapabilities(
|
| + savedArgs.match(ANYTHING)).
|
| + will(callGlobalWithSavedArgs(
|
| + savedArgs, 'updateWithPrinterCapabilities'));
|
| +
|
| + setInitialSettings({previewModifiable: false});
|
| + var printerList = $('printer-list');
|
| + assertNotEquals(null, printerList, 'printerList');
|
| + assertGE(printerList.options.length, printerListMinLength);
|
| + var saveAsPDFOptionSelected = false;
|
| + var selectedPrinterOption = printerList.options[printerList.selectedIndex];
|
| + if (selectedPrinterOption.text == saveAsPDFOptionStr &&
|
| + selectedPrinterOption.value == saveAsPDFOptionStr) {
|
| + saveAsPDFOptionSelected = true;
|
| + }
|
| + updateControlsWithSelectedPrinterCapabilities();
|
| + printScalingDisabledForSourcePDF();
|
| + checkSectionDisplayStyle(fitToPageSettings.fitToPageOption_,
|
| + saveAsPDFOptionSelected ? 'none' : 'block');
|
| + // Make sure the fit to page checkbox is unchecked.
|
| + expectFalse(fitToPageSettings.hasFitToPage());
|
| +});
|
| +
|
| // Page layout has zero margins. Hide header and footer option.
|
| TEST_F('PrintPreviewWebUITest', 'PageLayoutHasNoMarginsHideHeaderFooter',
|
| function() {
|
| @@ -278,7 +411,7 @@ TEST_F('PrintPreviewWebUITest', 'PageLayoutHasNoMarginsHideHeaderFooter',
|
| contentWidth: 100, contentHeight: 200, marginLeft: 0, marginRight: 0,
|
| marginTop: 0, marginBottom: 0, printableAreaX: 0, printableAreaY: 0,
|
| printableAreaWidth: 100, printableAreaHeight: 200}, true);
|
| - checkSectionVisible(headerFooterSettings.headerFooterOption_, false);
|
| + checkSectionDisplayStyle(headerFooterSettings.headerFooterOption_, 'none');
|
| });
|
|
|
| // Page layout has non-zero margins. Show header and footer option.
|
| @@ -289,7 +422,7 @@ TEST_F('PrintPreviewWebUITest', 'PageLayoutHasMarginsShowHeaderFooter',
|
| contentWidth: 100, contentHeight: 200, marginLeft: 3, marginRight: 2,
|
| marginTop: 4, marginBottom: 1, printableAreaX: 1, printableAreaY: 1,
|
| printableAreaWidth: 103, printableAreaHeight: 203}, true);
|
| - checkSectionVisible(headerFooterSettings.headerFooterOption_, true);
|
| + checkSectionDisplayStyle(headerFooterSettings.headerFooterOption_, 'block');
|
| });
|
|
|
| // Page layout has zero top and bottom margins. Hide header and footer option.
|
| @@ -300,7 +433,7 @@ TEST_F('PrintPreviewWebUITest', 'ZeroTopAndBottomMarginsHideHeaderFooter',
|
| contentWidth: 100, contentHeight: 200, marginLeft: 3, marginRight: 2,
|
| marginTop: 0, marginBottom: 0, printableAreaX: 1, printableAreaY: 1,
|
| printableAreaWidth: 98, printableAreaHeight: 198}, false);
|
| - checkSectionVisible(headerFooterSettings.headerFooterOption_, false);
|
| + checkSectionDisplayStyle(headerFooterSettings.headerFooterOption_, 'none');
|
| });
|
|
|
| // Page layout has zero top and non-zero bottom margin. Show header and footer
|
| @@ -312,7 +445,7 @@ TEST_F('PrintPreviewWebUITest', 'ZeroTopAndNonZeroBottomMarginShowHeaderFooter',
|
| contentWidth: 100, contentHeight: 200, marginLeft: 6, marginRight: 4,
|
| marginTop: 0, marginBottom: 3, printableAreaX: 1, printableAreaY: 1,
|
| printableAreaWidth: 103, printableAreaHeight: 208}, false);
|
| - checkSectionVisible(headerFooterSettings.headerFooterOption_, true);
|
| + checkSectionDisplayStyle(headerFooterSettings.headerFooterOption_, 'block');
|
| });
|
|
|
| // Test that the color settings are set according to the printer capabilities.
|
|
|