Chromium Code Reviews| 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 4bf1114fc177ea3a4246683786b5d06fdf08a375..7e9783a1624ecc502822659cc4563ed2865704e8 100644 |
| --- a/chrome/test/data/webui/print_preview.js |
| +++ b/chrome/test/data/webui/print_preview.js |
| @@ -4,10 +4,15 @@ |
| /** |
| * Test fixture for print preview WebUI testing. |
| - * @extends {testing.Test} |
| * @constructor |
| + * @extends {testing.Test} |
| */ |
| -function PrintPreviewWebUITest() {} |
| +function PrintPreviewWebUITest() { |
| + testing.Test.call(this); |
| + this.nativeLayer_ = null; |
| + this.initialSettings_ = null; |
| + this.localDestinationInfos_ = null; |
| +} |
| PrintPreviewWebUITest.prototype = { |
| __proto__: testing.Test.prototype, |
| @@ -20,89 +25,42 @@ PrintPreviewWebUITest.prototype = { |
| browsePrintPreload: 'print_preview_hello_world_test.html', |
| /** |
| - * Register a mock handler to ensure expectations are met and print preview |
| - * behaves correctly. |
| - * @type {Function} |
| + * Stub out low-level functionality like the NativeLayer and |
| + * CloudPrintInterface. |
| * @this {PrintPreviewWebUITest} |
| * @override |
| */ |
| preLoad: function() { |
| - this.makeAndRegisterMockHandler(['getInitialSettings', |
| - 'getPrinters', |
| - 'getPreview', |
| - 'print', |
| - 'getPrinterCapabilities', |
| - 'showSystemDialog', |
| - 'morePrinters', |
| - 'signIn', |
| - 'addCloudPrinter', |
| - 'manageCloudPrinters', |
| - 'manageLocalPrinters', |
| - 'closePrintPreviewTab', |
| - 'hidePreview', |
| - 'cancelPendingPrintRequest', |
| - 'saveLastPrinter', |
| - ]); |
| - |
| - // Register stubs for methods expected to be called before tests |
| - // run. Specific expectations can be made in the tests themselves. |
| - this.mockHandler.stubs().getInitialSettings(). |
| - will(callFunction(function() { |
| - setDefaultPrinter('FooDevice'); |
| - })); |
| - this.mockHandler.stubs().getPrinterCapabilities(NOT_NULL). |
| - will(callFunction(function() { |
| - updateWithPrinterCapabilities({ |
| - disableColorOption: true, |
| - setColorAsDefault: true, |
| - disableCopiesOption: true, |
| - printerDefaultDuplexValue: print_preview.CopiesSettings.SIMPLEX, |
| - }); |
| - })); |
| - var savedArgs = new SaveMockArguments(); |
| - this.mockHandler.stubs().getPreview(savedArgs.match(NOT_NULL)). |
| - will(callFunctionWithSavedArgs(savedArgs, function(args) { |
| - updatePrintPreview(1, JSON.parse(args[0]).requestID); |
| - })); |
| - |
| - this.mockHandler.stubs().getPrinters(). |
| - will(callFunction(function() { |
| - setPrinters([{ |
| - printerName: 'FooName', |
| - deviceName: 'FooDevice', |
| - }, { |
| - printerName: 'BarName', |
| - deviceName: 'BarDevice', |
| - }, |
| - ]); |
| - })); |
| - |
| - this.makeAndRegisterMockGlobals(['updateWithPrinterCapabilities']); |
| - this.mockGlobals.stubs().updateWithPrinterCapabilities( |
| - savedArgs.match(ANYTHING)). |
| - will(callGlobalWithSavedArgs( |
| - savedArgs, 'updateWithPrinterCapabilities')); |
| - |
| - // Override checkCompatiblePluginExists to return a value consistent with |
| - // the state being tested and stub out the pdf viewer if it doesn't exist, |
| - // such as on non-official builds. When the plugin exists, use the real |
| - // thing. |
| - var self = this; |
| window.addEventListener('DOMContentLoaded', function() { |
| - if (!this.checkCompatiblePluginExists()) { |
| - // TODO(scr) remove this after tests pass consistently. |
| - console.info('no PDF Plugin; providing fake methods.'); |
| - |
| - // Initializing |previewArea| object here because we need to replace a |
| - // method. |
| - this.previewArea = print_preview.PreviewArea.getInstance(); |
| - this.previewArea.createOrReloadPDFPlugin = |
| - self.createOrReloadPDFPlugin.bind(previewArea); |
| + function NativeLayerStub() { |
| + cr.EventTarget.call(this); |
| } |
| - |
| - this.checkCompatiblePluginExists = |
| - self.checkCompatiblePluginExists; |
| - }); |
| + NativeLayerStub.prototype = { |
| + __proto__: cr.EventTarget.prototype, |
| + startGetInitialSettings: function() {}, |
| + startGetLocalDestinations: function() {}, |
| + startGetLocalDestinationCapabilities: function(destinationId) {} |
| + }; |
| + |
| + this.nativeLayer_ = new NativeLayerStub(); |
| + printPreview.nativeLayer_ = this.nativeLayer_; |
| + |
| + function CloudPrintInterfaceStub() { |
| + cr.EventTarget.call(this); |
| + } |
| + CloudPrintInterfaceStub.prototype = { |
| + __proto__: cr.EventTarget.prototype, |
| + search: function(isRecent) {} |
| + }; |
| + var oldCpInterfaceEventType = cloudprint.CloudPrintInterface.EventType; |
| + cloudprint.CloudPrintInterface = CloudPrintInterfaceStub; |
| + cloudprint.CloudPrintInterface.EventType = oldCpInterfaceEventType; |
| + |
| + print_preview.PreviewArea.prototype.checkPluginCompatibility_ = |
| + function() { |
| + return false; |
| + }; |
| + }.bind(this)); |
| }, |
| /** |
| @@ -113,139 +71,89 @@ PrintPreviewWebUITest.prototype = { |
| typedefCppFixture: null, |
| /** |
| - * Create the PDF plugin or reload the existing one. This function replaces |
| - * createOrReloadPDFPlugin defined in |
| - * chrome/browser/resources/print_preview/preview_area.js when there is no |
| - * official pdf plugin so that the WebUI logic can be tested. It creates and |
| - * attaches an HTMLDivElement to the |mainview| element with attributes and |
| - * 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} |
| + * @override |
| */ |
| - createOrReloadPDFPlugin: function(srcDataIndex) { |
| - var pdfViewer = $('pdf-viewer'); |
| - if (pdfViewer) |
| - return; |
| - |
| - var previewUid = 1; |
| - pdfViewer = document.createElement('div'); |
| - pdfViewer.setAttribute('id', 'pdf-viewer'); |
| - pdfViewer.setAttribute('type', |
| - 'application/x-google-chrome-print-preview-pdf'); |
| - pdfViewer.setAttribute( |
| - 'src', |
| - 'chrome://print/' + previewUid + '/' + srcDataIndex + '/print.pdf'); |
| - pdfViewer.setAttribute('aria-live', 'polite'); |
| - pdfViewer.setAttribute('aria-atomic', 'true'); |
| - function fakeFunction() {} |
| - pdfViewer.onload = fakeFunction; |
| - pdfViewer.goToPage = fakeFunction; |
| - pdfViewer.removePrintButton = fakeFunction; |
| - pdfViewer.fitToHeight = fakeFunction; |
| - pdfViewer.grayscale = fakeFunction; |
| - pdfViewer.getZoomLevel = fakeFunction; |
| - pdfViewer.setZoomLevel = fakeFunction; |
| - pdfViewer.pageXOffset = fakeFunction; |
| - pdfViewer.pageYOffset = fakeFunction; |
| - pdfViewer.setPageNumbers = fakeFunction; |
| - pdfViewer.setPageXOffset = fakeFunction; |
| - pdfViewer.setPageYOffset = fakeFunction; |
| - pdfViewer.getHeight = fakeFunction; |
| - pdfViewer.getWidth = fakeFunction; |
| - pdfViewer.getPageLocationNormalized = fakeFunction; |
| - pdfViewer.onScroll = fakeFunction; |
| - pdfViewer.onPluginSizeChanged = fakeFunction; |
| - pdfViewer.getHorizontalScrollbarThickness = fakeFunction; |
| - pdfViewer.getVerticalScrollbarThickness = fakeFunction; |
| - $('mainview').appendChild(pdfViewer); |
| - this.pdfPlugin_ = pdfViewer; |
| - onPDFLoad(); |
| - }, |
| - |
| - /** |
| - * Always return true so tests run on systems without plugin available. |
| - * @return {boolean} Always true. |
| - */ |
| - checkCompatiblePluginExists: function() { |
| - return true; |
| - }, |
| + setUp: function() { |
| + Mock4JS.clearMocksToVerify(); |
| + |
| + this.initialSettings_ = new print_preview.NativeInitialSettings( |
| + false /*isInKioskAutoPrintMode*/, |
| + ',' /*thousandsDelimeter*/, |
| + '.' /*decimalDelimeter*/, |
| + 1 /*unitType*/, |
| + true /*isDocumentModifiable*/, |
| + 0 /*marginsType*/, |
| + null /*customMargins*/, |
| + true /*isDuplexEnabled*/, |
| + false /*isHeaderFooterEnabled*/, |
| + 'FooDevice' /*initialDestinationId*/); |
| + this.localDestinationInfos_ = [ |
| + { printerName: 'FooName', deviceName: 'FooDevice' }, |
| + { printerName: 'BarName', deviceName: 'BarDevice' } |
| + ]; |
| + } |
| }; |
| GEN('#include "chrome/test/data/webui/print_preview.h"'); |
| -/** |
| - * The expected length of the |printer-list| element. |
| - * @type {number} |
| - * @const |
| - */ |
| -var printerListMinLength = 2; |
| - |
| -/** |
| - * The expected index of the "foo" printer returned by the stubbed handler. |
| - * @type {number} |
| - * @const |
| - */ |
| -var fooIndex = 0; |
| - |
| -/** |
| - * The expected index of the "bar" printer returned by the stubbed handler. |
| - * @type {number} |
| - * @const |
| - */ |
| -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'); |
| + var initialSettingsSetEvent = |
| + new cr.Event(print_preview.NativeLayer.EventType.INITIAL_SETTINGS_SET); |
| + initialSettingsSetEvent.initialSettings = this.initialSettings_; |
| + this.nativeLayer_.dispatchEvent(initialSettingsSetEvent); |
| + |
| + var localDestsSetEvent = |
| + new cr.Event(print_preview.NativeLayer.EventType.LOCAL_DESTINATIONS_SET); |
| + localDestsSetEvent.destinationInfos = this.localDestinationInfos_; |
| + this.nativeLayer_.dispatchEvent(localDestsSetEvent); |
| + |
| + var printerList = $('destination-settings'). |
| + getElementsByClassName('destination-settings-select')[0]; |
| assertNotEquals(null, printerList); |
| - assertGE(printerList.options.length, printerListMinLength); |
| - expectEquals(fooIndex, printerList.selectedIndex); |
| - expectEquals('FooName', printerList.options[fooIndex].text, |
| - 'fooIndex=' + fooIndex); |
| - expectEquals('FooDevice', printerList.options[fooIndex].value, |
| - 'fooIndex=' + fooIndex); |
| - expectEquals('BarName', printerList.options[barIndex].text, |
| - 'barIndex=' + barIndex); |
| - expectEquals('BarDevice', printerList.options[barIndex].value, |
| - 'barIndex=' + barIndex); |
| + assertGE(printerList.options.length, 2); |
| + expectEquals(0, printerList.selectedIndex); |
| + expectEquals('FooName', printerList.options[0].text, 'fooIndex=0'); |
| + expectEquals('FooDevice', printerList.options[0].value, 'fooIndex=0'); |
| + expectEquals('BarName', printerList.options[1].text, 'barIndex=1'); |
|
kmadhusu
2012/05/18 20:13:46
Is there any specific reason to use numbers rather
|
| + expectEquals('BarDevice', printerList.options[1].value, 'barIndex=1'); |
| }); |
| // Test that the printer list is structured correctly after calling |
| // addCloudPrinters with an empty list. |
| TEST_F('PrintPreviewWebUITest', 'TestPrinterListCloudEmpty', function() { |
| - cloudprint.addCloudPrinters([], addDestinationListOptionAtPosition); |
| - var printerList = $('printer-list'); |
| + var initialSettingsSetEvent = |
| + new cr.Event(print_preview.NativeLayer.EventType.INITIAL_SETTINGS_SET); |
| + initialSettingsSetEvent.initialSettings = this.initialSettings_; |
| + this.nativeLayer_.dispatchEvent(initialSettingsSetEvent); |
| + |
| + var localDestsSetEvent = |
| + new cr.Event(print_preview.NativeLayer.EventType.LOCAL_DESTINATIONS_SET); |
| + localDestsSetEvent.destinationInfos = this.localDestinationInfos_; |
| + this.nativeLayer_.dispatchEvent(localDestsSetEvent); |
| + |
| + var cloudPrintEnableEvent = |
| + new cr.Event(print_preview.NativeLayer.EventType.CLOUD_PRINT_ENABLE); |
| + cloudPrintEnableEvent.baseCloudPrintUrl = 'cloudprint url'; |
| + this.nativeLayer_.dispatchEvent(cloudPrintEnableEvent); |
| + |
| + var searchDoneEvent = |
| + new cr.Event(cloudprint.CloudPrintInterface.EventType.SEARCH_DONE); |
| + searchDoneEvent.printers = []; |
| + searchDoneEvent.isRecent = true; |
| + searchDoneEvent.email = 'foo@chromium.org'; |
| + printPreview.cloudPrintInterface_.dispatchEvent(searchDoneEvent); |
| + |
| + var printerList = $('destination-settings'). |
| + getElementsByClassName('destination-settings-select')[0]; |
| assertNotEquals(null, printerList); |
| -}); |
| - |
| -// Test that the printer list is structured correctly after attempting to add |
| -// individual cloud printers until no more can be added. |
| -TEST_F('PrintPreviewWebUITest', 'TestPrinterListCloud', function() { |
| - var printerList = $('printer-list'); |
| - assertNotEquals(null, printerList); |
| - var printer = new Object; |
| - printer['name'] = 'FooCloud'; |
| - for (var i = 0; i < maxCloudPrinters; i++) { |
| - printer['id'] = String(i); |
| - cloudprint.addCloudPrinters([printer], addDestinationListOptionAtPosition); |
| - expectEquals('FooCloud', printerList.options[i].text); |
| - expectEquals(String(i), printerList.options[i].value); |
| - } |
| - cloudprint.addCloudPrinters([printer], addDestinationListOptionAtPosition); |
| - expectNotEquals('FooCloud', printerList.options[i].text); |
| - expectNotEquals(String(i), printerList.options[i].value); |
| - for (var i = 0; i < maxCloudPrinters; i++) { |
| - expectEquals('FooCloud', printerList.options[i].text); |
| - expectEquals(String(i), printerList.options[i].value); |
| - } |
| + assertGE(printerList.options.length, 2); |
| + expectEquals(0, printerList.selectedIndex); |
| + expectEquals('FooName', printerList.options[0].text, 'fooIndex=0'); |
| + expectEquals('FooDevice', printerList.options[0].value, 'fooIndex=0'); |
| + expectEquals('BarName', printerList.options[1].text, 'barIndex=1'); |
| + expectEquals('BarDevice', printerList.options[1].value, 'barIndex=1'); |
| }); |
| /** |
| @@ -255,342 +163,554 @@ TEST_F('PrintPreviewWebUITest', 'TestPrinterListCloud', function() { |
| */ |
| function checkSectionVisible(section, visible) { |
| assertNotEquals(null, section); |
| - expectEquals(section.classList.contains('visible'), visible, |
| - 'section=' + section); |
| + expectEquals( |
| + visible, section.classList.contains('visible'), 'section=' + section.id); |
| } |
| -/** |
| - * 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); |
| +function checkElementDisplayed(el, isDisplayed) { |
| + assertNotEquals(null, el); |
| + expectEquals(isDisplayed, el.style.display != 'none'); |
| } |
| // Test that disabled settings hide the disabled sections. |
| TEST_F('PrintPreviewWebUITest', 'TestSectionsDisabled', function() { |
| - this.mockHandler.expects(once()).getPrinterCapabilities('FooDevice'). |
| - will(callFunction(function() { |
| - updateWithPrinterCapabilities({ |
| - disableColorOption: true, |
| - setColorAsDefault: true, |
| - disableCopiesOption: true, |
| - disableLandscapeOption: true, |
| - printerDefaultDuplexValue: print_preview.CopiesSettings.SIMPLEX, |
| - }); |
| - })); |
| - |
| - updateControlsWithSelectedPrinterCapabilities(); |
| - |
| - checkSectionVisible(layoutSettings.layoutOption_, false); |
| - checkSectionVisible(colorSettings.colorOption_, false); |
| - checkSectionVisible(copiesSettings.copiesOption_, false); |
| + var initialSettingsSetEvent = |
| + new cr.Event(print_preview.NativeLayer.EventType.INITIAL_SETTINGS_SET); |
| + initialSettingsSetEvent.initialSettings = this.initialSettings_; |
| + this.nativeLayer_.dispatchEvent(initialSettingsSetEvent); |
| + |
| + var localDestsSetEvent = |
| + new cr.Event(print_preview.NativeLayer.EventType.LOCAL_DESTINATIONS_SET); |
| + localDestsSetEvent.destinationInfos = this.localDestinationInfos_; |
| + this.nativeLayer_.dispatchEvent(localDestsSetEvent); |
| + |
| + checkSectionVisible($('layout-settings'), true); |
| + checkSectionVisible($('color-settings'), true); |
| + checkSectionVisible($('copies-settings'), true); |
| + |
| + var capsSetEvent = |
| + new cr.Event(print_preview.NativeLayer.EventType.CAPABILITIES_SET); |
| + capsSetEvent.settingsInfo = { |
| + 'disableColorOption': true, |
| + 'setColorAsDefault': true, |
| + 'disableCopiesOption': true, |
| + 'disableLandscapeOption': true, |
| + 'printerDefaultDuplexValue': 0 |
| + }; |
| + this.nativeLayer_.dispatchEvent(capsSetEvent); |
| + |
| + checkSectionVisible($('layout-settings'), false); |
| + checkSectionVisible($('color-settings'), false); |
| + checkSectionVisible($('copies-settings'), 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'); |
| +TEST_F( |
| + 'PrintPreviewWebUITest', |
| + 'PrintToPDFSelectedHideFitToPageOption', |
| + function() { |
| + // Add PDF printer. |
| + this.initialSettings_.isDocumentModifiable_ = false; |
| + this.initialSettings_.initialDestinationId_ = 'Save as PDF'; |
| + this.localDestinationInfos_.push( |
| + {printerName: 'Save as PDF', deviceName: 'Save as PDF'}); |
| + |
| + var initialSettingsSetEvent = |
| + new cr.Event(print_preview.NativeLayer.EventType.INITIAL_SETTINGS_SET); |
| + initialSettingsSetEvent.initialSettings = this.initialSettings_; |
| + this.nativeLayer_.dispatchEvent(initialSettingsSetEvent); |
| + |
| + var localDestsSetEvent = |
| + new cr.Event(print_preview.NativeLayer.EventType.LOCAL_DESTINATIONS_SET); |
| + localDestsSetEvent.destinationInfos = this.localDestinationInfos_; |
| + this.nativeLayer_.dispatchEvent(localDestsSetEvent); |
| + |
| + var capsSetEvent = |
| + new cr.Event(print_preview.NativeLayer.EventType.CAPABILITIES_SET); |
| + capsSetEvent.settingsInfo = { |
| + 'disableColorOption': false, |
| + 'setColorAsDefault': true, |
| + 'disableCopiesOption': true, |
| + 'disableLandscapeOption': true, |
| + 'printerDefaultDuplexValue': 0 |
| + }; |
| + this.nativeLayer_.dispatchEvent(capsSetEvent); |
| + |
| + checkElementDisplayed( |
| + $('other-options-settings'). |
| + querySelector('.other-options-settings-fit-to-page'), |
| + false); |
| }); |
| // 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()); |
| + var initialSettingsSetEvent = |
| + new cr.Event(print_preview.NativeLayer.EventType.INITIAL_SETTINGS_SET); |
| + initialSettingsSetEvent.initialSettings = this.initialSettings_; |
| + this.nativeLayer_.dispatchEvent(initialSettingsSetEvent); |
| + |
| + var localDestsSetEvent = |
| + new cr.Event(print_preview.NativeLayer.EventType.LOCAL_DESTINATIONS_SET); |
| + localDestsSetEvent.destinationInfos = this.localDestinationInfos_; |
| + this.nativeLayer_.dispatchEvent(localDestsSetEvent); |
| + |
| + var capsSetEvent = |
| + new cr.Event(print_preview.NativeLayer.EventType.CAPABILITIES_SET); |
| + capsSetEvent.settingsInfo = { |
| + 'disableColorOption': false, |
| + 'setColorAsDefault': true, |
| + 'disableCopiesOption': true, |
| + 'disableLandscapeOption': true, |
| + 'printerDefaultDuplexValue': 0 |
| + }; |
| + this.nativeLayer_.dispatchEvent(capsSetEvent); |
| + |
| + checkElementDisplayed( |
| + $('other-options-settings'). |
| + querySelector('.other-options-settings-fit-to-page'), |
| + false); |
| }); |
| // 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()); |
| + this.initialSettings_.isDocumentModifiable_ = false; |
| + |
| + var initialSettingsSetEvent = |
| + new cr.Event(print_preview.NativeLayer.EventType.INITIAL_SETTINGS_SET); |
| + initialSettingsSetEvent.initialSettings = this.initialSettings_; |
| + this.nativeLayer_.dispatchEvent(initialSettingsSetEvent); |
| + |
| + var localDestsSetEvent = |
| + new cr.Event(print_preview.NativeLayer.EventType.LOCAL_DESTINATIONS_SET); |
| + localDestsSetEvent.destinationInfos = this.localDestinationInfos_; |
| + this.nativeLayer_.dispatchEvent(localDestsSetEvent); |
| + |
| + var capsSetEvent = |
| + new cr.Event(print_preview.NativeLayer.EventType.CAPABILITIES_SET); |
| + capsSetEvent.settingsInfo = { |
| + 'disableColorOption': false, |
| + 'setColorAsDefault': true, |
| + 'disableCopiesOption': true, |
| + 'disableLandscapeOption': true, |
| + 'printerDefaultDuplexValue': 0 |
| + }; |
| + this.nativeLayer_.dispatchEvent(capsSetEvent); |
| + |
| + checkElementDisplayed( |
| + $('other-options-settings'). |
| + querySelector('.other-options-settings-fit-to-page'), |
| + true); |
| + expectTrue( |
| + $('other-options-settings').querySelector( |
| + '.other-options-settings-fit-to-page-checkbox').checked); |
| }); |
| // 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()); |
| + this.initialSettings_.isDocumentModifiable_ = false; |
| + |
| + var initialSettingsSetEvent = |
| + new cr.Event(print_preview.NativeLayer.EventType.INITIAL_SETTINGS_SET); |
| + initialSettingsSetEvent.initialSettings = this.initialSettings_; |
| + this.nativeLayer_.dispatchEvent(initialSettingsSetEvent); |
| + |
| + var localDestsSetEvent = |
| + new cr.Event(print_preview.NativeLayer.EventType.LOCAL_DESTINATIONS_SET); |
| + localDestsSetEvent.destinationInfos = this.localDestinationInfos_; |
| + this.nativeLayer_.dispatchEvent(localDestsSetEvent); |
| + |
| + var capsSetEvent = |
| + new cr.Event(print_preview.NativeLayer.EventType.CAPABILITIES_SET); |
| + capsSetEvent.settingsInfo = { |
| + 'disableColorOption': false, |
| + 'setColorAsDefault': true, |
| + 'disableCopiesOption': true, |
| + 'disableLandscapeOption': true, |
| + 'printerDefaultDuplexValue': 0 |
| + }; |
| + this.nativeLayer_.dispatchEvent(capsSetEvent); |
| + |
| + // Indicate that the PDF does not support scaling by default. |
| + cr.dispatchSimpleEvent( |
| + this.nativeLayer_, print_preview.NativeLayer.EventType.DISABLE_SCALING); |
| + |
| + checkElementDisplayed( |
| + $('other-options-settings'). |
| + querySelector('.other-options-settings-fit-to-page'), |
| + true); |
| + expectFalse( |
| + $('other-options-settings').querySelector( |
| + '.other-options-settings-fit-to-page-checkbox').checked); |
| }); |
| // Page layout has zero margins. Hide header and footer option. |
| -TEST_F('PrintPreviewWebUITest', 'PageLayoutHasNoMarginsHideHeaderFooter', |
| - function() { |
| - setInitialSettings({previewModifiable: true}); |
| - onDidGetDefaultPageLayout({ |
| - contentWidth: 100, contentHeight: 200, marginLeft: 0, marginRight: 0, |
| - marginTop: 0, marginBottom: 0, printableAreaX: 0, printableAreaY: 0, |
| - printableAreaWidth: 100, printableAreaHeight: 200}, true); |
| - checkSectionDisplayStyle(headerFooterSettings.headerFooterOption_, 'none'); |
| +TEST_F( |
| + 'PrintPreviewWebUITest', |
| + 'PageLayoutHasNoMarginsHideHeaderFooter', |
| + function() { |
| + var initialSettingsSetEvent = |
| + new cr.Event(print_preview.NativeLayer.EventType.INITIAL_SETTINGS_SET); |
| + initialSettingsSetEvent.initialSettings = this.initialSettings_; |
| + this.nativeLayer_.dispatchEvent(initialSettingsSetEvent); |
| + |
| + var localDestsSetEvent = |
| + new cr.Event(print_preview.NativeLayer.EventType.LOCAL_DESTINATIONS_SET); |
| + localDestsSetEvent.destinationInfos = this.localDestinationInfos_; |
| + this.nativeLayer_.dispatchEvent(localDestsSetEvent); |
| + |
| + var capsSetEvent = |
| + new cr.Event(print_preview.NativeLayer.EventType.CAPABILITIES_SET); |
| + capsSetEvent.settingsInfo = { |
| + 'disableColorOption': false, |
| + 'setColorAsDefault': true, |
| + 'disableCopiesOption': true, |
| + 'disableLandscapeOption': true, |
| + 'printerDefaultDuplexValue': 0 |
| + }; |
| + this.nativeLayer_.dispatchEvent(capsSetEvent); |
| + |
| + checkElementDisplayed( |
| + $('other-options-settings'). |
| + querySelector('.other-options-settings-header-footer'), |
| + true); |
| + |
| + printPreview.printTicketStore_.updateMarginsType( |
| + print_preview.ticket_items.MarginsType.Value.CUSTOM); |
| + printPreview.printTicketStore_.updateCustomMargins( |
| + new print_preview.Margins(0, 0, 0, 0)); |
| + |
| + checkElementDisplayed( |
| + $('other-options-settings'). |
| + querySelector('.other-options-settings-header-footer'), |
| + false); |
| }); |
| -// Page layout has non-zero margins. Show header and footer option. |
| -TEST_F('PrintPreviewWebUITest', 'PageLayoutHasMarginsShowHeaderFooter', |
| - function() { |
| - setInitialSettings({previewModifiable: true}); |
| - onDidGetDefaultPageLayout({ |
| - contentWidth: 100, contentHeight: 200, marginLeft: 3, marginRight: 2, |
| - marginTop: 4, marginBottom: 1, printableAreaX: 1, printableAreaY: 1, |
| - printableAreaWidth: 103, printableAreaHeight: 203}, true); |
| - checkSectionDisplayStyle(headerFooterSettings.headerFooterOption_, 'block'); |
| +// Page layout has half-inch margins. Show header and footer option. |
| +TEST_F( |
| + 'PrintPreviewWebUITest', |
|
kmadhusu
2012/05/18 20:13:46
nit: This argument can go to line 392.
|
| + 'PageLayoutHasMarginsShowHeaderFooter', |
| + function() { |
| + var initialSettingsSetEvent = |
| + new cr.Event(print_preview.NativeLayer.EventType.INITIAL_SETTINGS_SET); |
| + initialSettingsSetEvent.initialSettings = this.initialSettings_; |
| + this.nativeLayer_.dispatchEvent(initialSettingsSetEvent); |
| + |
| + var localDestsSetEvent = |
| + new cr.Event(print_preview.NativeLayer.EventType.LOCAL_DESTINATIONS_SET); |
| + localDestsSetEvent.destinationInfos = this.localDestinationInfos_; |
| + this.nativeLayer_.dispatchEvent(localDestsSetEvent); |
| + |
| + var capsSetEvent = |
| + new cr.Event(print_preview.NativeLayer.EventType.CAPABILITIES_SET); |
| + capsSetEvent.settingsInfo = { |
| + 'disableColorOption': false, |
| + 'setColorAsDefault': true, |
| + 'disableCopiesOption': true, |
| + 'disableLandscapeOption': true, |
| + 'printerDefaultDuplexValue': 0 |
| + }; |
| + this.nativeLayer_.dispatchEvent(capsSetEvent); |
| + |
| + checkElementDisplayed( |
| + $('other-options-settings'). |
| + querySelector('.other-options-settings-header-footer'), |
| + true); |
| + |
| + printPreview.printTicketStore_.updateMarginsType( |
| + print_preview.ticket_items.MarginsType.Value.CUSTOM); |
| + printPreview.printTicketStore_.updateCustomMargins( |
| + new print_preview.Margins(36, 36, 36, 36)); |
| + |
| + checkElementDisplayed( |
| + $('other-options-settings'). |
| + querySelector('.other-options-settings-header-footer'), |
| + true); |
| }); |
| // Page layout has zero top and bottom margins. Hide header and footer option. |
| -TEST_F('PrintPreviewWebUITest', 'ZeroTopAndBottomMarginsHideHeaderFooter', |
| - function() { |
| - setInitialSettings({previewModifiable: true}); |
| - onDidGetDefaultPageLayout({ |
| - contentWidth: 100, contentHeight: 200, marginLeft: 3, marginRight: 2, |
| - marginTop: 0, marginBottom: 0, printableAreaX: 1, printableAreaY: 1, |
| - printableAreaWidth: 98, printableAreaHeight: 198}, false); |
| - checkSectionDisplayStyle(headerFooterSettings.headerFooterOption_, 'none'); |
| +TEST_F( |
| + 'PrintPreviewWebUITest', |
| + 'ZeroTopAndBottomMarginsHideHeaderFooter', |
| + function() { |
| + var initialSettingsSetEvent = |
| + new cr.Event(print_preview.NativeLayer.EventType.INITIAL_SETTINGS_SET); |
| + initialSettingsSetEvent.initialSettings = this.initialSettings_; |
| + this.nativeLayer_.dispatchEvent(initialSettingsSetEvent); |
| + |
| + var localDestsSetEvent = |
| + new cr.Event(print_preview.NativeLayer.EventType.LOCAL_DESTINATIONS_SET); |
| + localDestsSetEvent.destinationInfos = this.localDestinationInfos_; |
| + this.nativeLayer_.dispatchEvent(localDestsSetEvent); |
| + |
| + var capsSetEvent = |
| + new cr.Event(print_preview.NativeLayer.EventType.CAPABILITIES_SET); |
| + capsSetEvent.settingsInfo = { |
| + 'disableColorOption': false, |
| + 'setColorAsDefault': true, |
| + 'disableCopiesOption': true, |
| + 'disableLandscapeOption': true, |
| + 'printerDefaultDuplexValue': 0 |
| + }; |
| + this.nativeLayer_.dispatchEvent(capsSetEvent); |
| + |
| + checkElementDisplayed( |
| + $('other-options-settings'). |
| + querySelector('.other-options-settings-header-footer'), |
| + true); |
| + |
| + printPreview.printTicketStore_.updateMarginsType( |
| + print_preview.ticket_items.MarginsType.Value.CUSTOM); |
| + printPreview.printTicketStore_.updateCustomMargins( |
| + new print_preview.Margins(0, 36, 0, 36)); |
| + |
| + checkElementDisplayed( |
| + $('other-options-settings'). |
| + querySelector('.other-options-settings-header-footer'), |
| + false); |
| }); |
| -// Page layout has zero top and non-zero bottom margin. Show header and footer |
| +// Page layout has zero top and half-inch bottom margin. Show header and footer |
| // option. |
| -TEST_F('PrintPreviewWebUITest', 'ZeroTopAndNonZeroBottomMarginShowHeaderFooter', |
| - function() { |
| - setInitialSettings({previewModifiable: true}); |
| - onDidGetDefaultPageLayout({ |
| - contentWidth: 100, contentHeight: 200, marginLeft: 6, marginRight: 4, |
| - marginTop: 0, marginBottom: 3, printableAreaX: 1, printableAreaY: 1, |
| - printableAreaWidth: 103, printableAreaHeight: 208}, false); |
| - checkSectionDisplayStyle(headerFooterSettings.headerFooterOption_, 'block'); |
| +TEST_F( |
| + 'PrintPreviewWebUITest', |
| + 'ZeroTopAndNonZeroBottomMarginShowHeaderFooter', |
| + function() { |
| + var initialSettingsSetEvent = |
| + new cr.Event(print_preview.NativeLayer.EventType.INITIAL_SETTINGS_SET); |
| + initialSettingsSetEvent.initialSettings = this.initialSettings_; |
| + this.nativeLayer_.dispatchEvent(initialSettingsSetEvent); |
| + |
| + var localDestsSetEvent = |
| + new cr.Event(print_preview.NativeLayer.EventType.LOCAL_DESTINATIONS_SET); |
| + localDestsSetEvent.destinationInfos = this.localDestinationInfos_; |
| + this.nativeLayer_.dispatchEvent(localDestsSetEvent); |
| + |
| + var capsSetEvent = |
| + new cr.Event(print_preview.NativeLayer.EventType.CAPABILITIES_SET); |
| + capsSetEvent.settingsInfo = { |
| + 'disableColorOption': false, |
| + 'setColorAsDefault': true, |
| + 'disableCopiesOption': true, |
| + 'disableLandscapeOption': true, |
| + 'printerDefaultDuplexValue': 0 |
| + }; |
| + this.nativeLayer_.dispatchEvent(capsSetEvent); |
| + |
| + checkElementDisplayed( |
| + $('other-options-settings'). |
| + querySelector('.other-options-settings-header-footer'), |
| + true); |
| + |
| + printPreview.printTicketStore_.updateMarginsType( |
| + print_preview.ticket_items.MarginsType.Value.CUSTOM); |
| + printPreview.printTicketStore_.updateCustomMargins( |
| + new print_preview.Margins(0, 36, 36, 36)); |
| + |
| + checkElementDisplayed( |
| + $('other-options-settings'). |
| + querySelector('.other-options-settings-header-footer'), |
| + true); |
| }); |
| // Test that the color settings are set according to the printer capabilities. |
| TEST_F('PrintPreviewWebUITest', 'TestColorSettings', function() { |
| - this.mockHandler.expects(once()).getPrinterCapabilities('FooDevice'). |
| - will(callFunction(function() { |
| - updateWithPrinterCapabilities({ |
| - disableColorOption: false, |
| - setColorAsDefault: true, |
| - disableCopiesOption: false, |
| - disableLandscapeOption: false, |
| - printerDefaultDuplexValue: print_preview.CopiesSettings.SIMPLEX, |
| - }); |
| - })); |
| - |
| - updateControlsWithSelectedPrinterCapabilities(); |
| - expectTrue(colorSettings.colorRadioButton.checked); |
| - expectFalse(colorSettings.bwRadioButton.checked); |
| - |
| - this.mockHandler.expects(once()).getPrinterCapabilities('FooDevice'). |
| - will(callFunction(function() { |
| - updateWithPrinterCapabilities({ |
| - disableColorOption: false, |
| - setColorAsDefault: false, |
| - disableCopiesOption: false, |
| - disableLandscapeOption: false, |
| - printerDefaultDuplexValue: print_preview.CopiesSettings.SIMPLEX, |
| - }); |
| - })); |
| - |
| - updateControlsWithSelectedPrinterCapabilities(); |
| - expectFalse(colorSettings.colorRadioButton.checked); |
| - expectTrue(colorSettings.bwRadioButton.checked); |
| + var initialSettingsSetEvent = |
| + new cr.Event(print_preview.NativeLayer.EventType.INITIAL_SETTINGS_SET); |
| + initialSettingsSetEvent.initialSettings = this.initialSettings_; |
| + this.nativeLayer_.dispatchEvent(initialSettingsSetEvent); |
| + |
| + var localDestsSetEvent = |
| + new cr.Event(print_preview.NativeLayer.EventType.LOCAL_DESTINATIONS_SET); |
| + localDestsSetEvent.destinationInfos = this.localDestinationInfos_; |
| + this.nativeLayer_.dispatchEvent(localDestsSetEvent); |
| + |
| + checkSectionVisible($('color-settings'), true); |
| + |
| + var capsSetEvent = |
| + new cr.Event(print_preview.NativeLayer.EventType.CAPABILITIES_SET); |
| + capsSetEvent.settingsInfo = { |
| + 'disableColorOption': false, |
| + 'setColorAsDefault': true, |
| + 'disableCopiesOption': true, |
| + 'disableLandscapeOption': true, |
| + 'printerDefaultDuplexValue': 0 |
| + }; |
| + this.nativeLayer_.dispatchEvent(capsSetEvent); |
| + |
| + checkSectionVisible($('color-settings'), true); |
| + |
| + var colorOption = $('color-settings').getElementsByClassName( |
| + 'color-settings-color-option')[0]; |
| + var bwOption = $('color-settings').getElementsByClassName( |
| + 'color-settings-bw-option')[0]; |
| + expectTrue(colorOption.checked); |
| + expectFalse(bwOption.checked); |
| + |
| + var capsSetEvent = |
| + new cr.Event(print_preview.NativeLayer.EventType.CAPABILITIES_SET); |
| + capsSetEvent.settingsInfo = { |
| + 'disableColorOption': false, |
| + 'setColorAsDefault': false, |
| + 'disableCopiesOption': false, |
| + 'disableLandscapeOption': false, |
| + 'printerDefaultDuplexValue': 0 |
| + }; |
| + this.nativeLayer_.dispatchEvent(capsSetEvent); |
| + |
| + checkSectionVisible($('color-settings'), true); |
| + expectFalse(colorOption.checked); |
| + expectTrue(bwOption.checked); |
| }); |
| // Test to verify that duplex settings are set according to the printer |
| // capabilities. |
| TEST_F('PrintPreviewWebUITest', 'TestDuplexSettings', function() { |
| - this.mockHandler.expects(once()).getPrinterCapabilities('FooDevice'). |
| - will(callFunction(function() { |
| - updateWithPrinterCapabilities({ |
| - disableColorOption: false, |
| - setColorAsDefault: false, |
| - disableCopiesOption: false, |
| - disableLandscapeOption: false, |
| - printerDefaultDuplexValue: print_preview.CopiesSettings.SIMPLEX, |
| - }); |
| - })); |
| - updateControlsWithSelectedPrinterCapabilities(); |
| - expectEquals(copiesSettings.duplexMode, print_preview.CopiesSettings.SIMPLEX); |
| - expectEquals(copiesSettings.twoSidedOption_.hidden, false); |
| + var initialSettingsSetEvent = |
| + new cr.Event(print_preview.NativeLayer.EventType.INITIAL_SETTINGS_SET); |
| + // Need to override test defaults for the initial settings, because initial |
| + // duplex value needs to be unspecified. |
| + initialSettingsSetEvent.initialSettings = |
| + new print_preview.NativeInitialSettings( |
| + false /*isInKioskAutoPrintMode*/, |
| + ',' /*thousandsDelimeter*/, |
| + '.' /*decimalDelimeter*/, |
| + 1 /*unitType*/, |
| + true /*isDocumentModifiable*/, |
| + 0 /*marginsType*/, |
| + null /*customMargins*/, |
| + null /*isDuplexEnabled*/, |
| + false /*isHeaderFooterEnabled*/, |
| + 'FooDevice' /*initialDestinationId*/); |
| + this.nativeLayer_.dispatchEvent(initialSettingsSetEvent); |
| + |
| + var localDestsSetEvent = |
| + new cr.Event(print_preview.NativeLayer.EventType.LOCAL_DESTINATIONS_SET); |
| + localDestsSetEvent.destinationInfos = this.localDestinationInfos_; |
| + this.nativeLayer_.dispatchEvent(localDestsSetEvent); |
| + |
| + var copiesDiv = $('copies-settings'); |
| + var duplexDiv = copiesDiv.getElementsByClassName('copies-settings-duplex')[0]; |
| + var duplexCheckbox = copiesDiv.getElementsByClassName( |
| + 'copies-settings-duplex-checkbox')[0]; |
| + |
| + var capsSetEvent = |
| + new cr.Event(print_preview.NativeLayer.EventType.CAPABILITIES_SET); |
| + capsSetEvent.settingsInfo = { |
| + 'disableColorOption': false, |
| + 'setColorAsDefault': true, |
| + 'disableCopiesOption': false, |
| + 'disableLandscapeOption': true, |
| + 'printerDefaultDuplexValue': 0 |
| + }; |
| + this.nativeLayer_.dispatchEvent(capsSetEvent); |
| + |
| + checkSectionVisible(copiesDiv, true); |
| + expectFalse(duplexDiv.hidden); |
| + expectFalse(duplexCheckbox.checked); |
| // If the printer default duplex value is UNKNOWN_DUPLEX_MODE, hide the |
| // two sided option. |
| - this.mockHandler.expects(once()).getPrinterCapabilities('FooDevice'). |
| - will(callFunction(function() { |
| - updateWithPrinterCapabilities({ |
| - disableColorOption: false, |
| - setColorAsDefault: false, |
| - disableCopiesOption: false, |
| - disableLandscapeOption: false, |
| - printerDefaultDuplexValue: |
| - print_preview.CopiesSettings.UNKNOWN_DUPLEX_MODE, |
| - }); |
| - })); |
| - updateControlsWithSelectedPrinterCapabilities(); |
| - expectEquals(copiesSettings.duplexMode, |
| - print_preview.CopiesSettings.UNKNOWN_DUPLEX_MODE); |
| - expectEquals(copiesSettings.twoSidedOption_.hidden, true); |
| - |
| - this.mockHandler.expects(once()).getPrinterCapabilities('FooDevice'). |
| - will(callFunction(function() { |
| - updateWithPrinterCapabilities({ |
| - disableColorOption: false, |
| - setColorAsDefault: false, |
| - disableCopiesOption: false, |
| - disableLandscapeOption: false, |
| - printerDefaultDuplexValue: print_preview.CopiesSettings.SIMPLEX, |
| - }); |
| - })); |
| - updateControlsWithSelectedPrinterCapabilities(); |
| - expectEquals(copiesSettings.twoSidedOption_.hidden, false); |
| - expectEquals(copiesSettings.duplexMode, print_preview.CopiesSettings.SIMPLEX); |
| - copiesSettings.twoSidedCheckbox.checked = true; |
| - expectEquals( |
| - copiesSettings.duplexMode, print_preview.CopiesSettings.LONG_EDGE); |
| + var capsSetEvent = |
| + new cr.Event(print_preview.NativeLayer.EventType.CAPABILITIES_SET); |
| + capsSetEvent.settingsInfo = { |
| + 'disableColorOption': false, |
| + 'setColorAsDefault': false, |
| + 'disableCopiesOption': false, |
| + 'disableLandscapeOption': false, |
| + 'printerDefaultDuplexValue': -1 |
| + }; |
| + this.nativeLayer_.dispatchEvent(capsSetEvent); |
| + |
| + checkSectionVisible(copiesDiv, true); |
| + expectTrue(duplexDiv.hidden); |
| + |
| + var capsSetEvent = |
| + new cr.Event(print_preview.NativeLayer.EventType.CAPABILITIES_SET); |
| + capsSetEvent.settingsInfo = { |
| + 'disableColorOption': false, |
| + 'setColorAsDefault': false, |
| + 'disableCopiesOption': false, |
| + 'disableLandscapeOption': false, |
| + 'printerDefaultDuplexValue': 1 |
| + }; |
| + this.nativeLayer_.dispatchEvent(capsSetEvent); |
| + |
| + checkSectionVisible(copiesDiv, true); |
| + expectFalse(duplexDiv.hidden); |
| + expectTrue(duplexCheckbox.checked); |
| }); |
| // Test that changing the selected printer updates the preview. |
| TEST_F('PrintPreviewWebUITest', 'TestPrinterChangeUpdatesPreview', 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')); |
| - |
| - var printerList = $('printer-list'); |
| - assertNotEquals(null, printerList, 'printerList'); |
| - assertGE(printerList.options.length, printerListMinLength); |
| - expectEquals(fooIndex, printerList.selectedIndex, |
| - 'fooIndex=' + fooIndex); |
| - var oldLastPreviewRequestID = lastPreviewRequestID; |
| - ++printerList.selectedIndex; |
| - updateControlsWithSelectedPrinterCapabilities(); |
| - expectNotEquals(oldLastPreviewRequestID, lastPreviewRequestID); |
| + |
| + var initialSettingsSetEvent = |
| + new cr.Event(print_preview.NativeLayer.EventType.INITIAL_SETTINGS_SET); |
| + initialSettingsSetEvent.initialSettings = this.initialSettings_; |
| + this.nativeLayer_.dispatchEvent(initialSettingsSetEvent); |
| + |
| + var localDestsSetEvent = |
| + new cr.Event(print_preview.NativeLayer.EventType.LOCAL_DESTINATIONS_SET); |
| + localDestsSetEvent.destinationInfos = this.localDestinationInfos_; |
| + this.nativeLayer_.dispatchEvent(localDestsSetEvent); |
| + |
| + var capsSetEvent = |
| + new cr.Event(print_preview.NativeLayer.EventType.CAPABILITIES_SET); |
| + capsSetEvent.settingsInfo = { |
| + 'disableColorOption': false, |
| + 'setColorAsDefault': true, |
| + 'disableCopiesOption': true, |
| + 'disableLandscapeOption': true, |
| + 'printerDefaultDuplexValue': 0 |
| + }; |
| + this.nativeLayer_.dispatchEvent(capsSetEvent); |
| + |
| + var previewGenerator = mock(print_preview.PreviewGenerator); |
| + printPreview.previewArea_.previewGenerator_ = previewGenerator.proxy(); |
| + previewGenerator.expects(once()).requestPreview(); |
| + |
| + var barDestination; |
| + var destinations = printPreview.destinationStore_.destinations; |
| + for (var destination, i = 0; destination = destinations[i]; i++) { |
| + if (destination.id == 'BarDevice') { |
| + barDestination = destination; |
| + break; |
| + } |
| + } |
| + |
| + printPreview.destinationStore_.selectDestination(barDestination); |
| + |
| + var capsSetEvent = |
| + new cr.Event(print_preview.NativeLayer.EventType.CAPABILITIES_SET); |
| + capsSetEvent.settingsInfo = { |
| + 'disableColorOption': true, |
| + 'setColorAsDefault': false, |
| + 'disableCopiesOption': true, |
| + 'disableLandscapeOption': true, |
| + 'printerDefaultDuplexValue': 0 |
| + }; |
| + this.nativeLayer_.dispatchEvent(capsSetEvent); |
| }); |
| -/** |
| - * Test fixture to test case when no PDF plugin exists. |
| - * @extends {PrintPreviewWebUITest} |
| - * @constructor |
| - */ |
| -function PrintPreviewNoPDFWebUITest() {} |
| +// Test that error message is displayed when plugin doesn't exist. |
| +TEST_F('PrintPreviewWebUITest', 'TestNoPDFPluginErrorMessage', function() { |
| + var previewAreaEl = $('preview-area'); |
| -PrintPreviewNoPDFWebUITest.prototype = { |
| - __proto__: PrintPreviewWebUITest.prototype, |
| + var loadingMessageEl = |
| + previewAreaEl.getElementsByClassName('preview-area-loading-message')[0]; |
| + expectEquals('none', loadingMessageEl.style.display); |
| - /** |
| - * Provide a typedef for C++ to correspond to JS subclass. |
| - * @type {?string} |
| - * @override |
| - */ |
| - typedefCppFixture: 'PrintPreviewWebUITest', |
| + var previewFailedMessageEl = previewAreaEl.getElementsByClassName( |
| + 'preview-area-preview-failed-message')[0]; |
| + expectEquals('none', previewFailedMessageEl.style.display); |
| - /** |
| - * Always return false to simulate failure and check expected error condition. |
| - * @return {boolean} Always false. |
| - * @override |
| - */ |
| - checkCompatiblePluginExists: function() { |
| - return false; |
| - }, |
| -}; |
| + var printFailedMessageEl = |
| + previewAreaEl.getElementsByClassName('preview-area-print-failed')[0]; |
| + expectEquals('none', printFailedMessageEl.style.display); |
| -// Test that error message is displayed when plugin doesn't exist. |
| -TEST_F('PrintPreviewNoPDFWebUITest', 'TestErrorMessage', function() { |
| - var errorButton = $('error-button'); |
| - assertNotEquals(null, errorButton); |
| - expectFalse(errorButton.disabled); |
| - var errorText = $('custom-message'); |
| - assertNotEquals(null, errorText); |
| - expectFalse(errorText.hidden); |
| + var customMessageEl = |
| + previewAreaEl.getElementsByClassName('preview-area-custom-message')[0]; |
| + expectEquals('', customMessageEl.style.display); |
| }); |