Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(185)

Side by Side Diff: chrome/test/data/webui/print_preview.js

Issue 2881213003: Print Preview: Use cr.sendWithPromise for getInitialSettings (Closed)
Patch Set: Revert extra change from rebase Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 var ROOT_PATH = '../../../../';
6
5 /** 7 /**
6 * Test fixture for print preview WebUI testing. 8 * Test fixture for print preview WebUI testing.
7 * @constructor 9 * @constructor
8 * @extends {testing.Test} 10 * @extends {testing.Test}
9 */ 11 */
10 function PrintPreviewWebUITest() { 12 function PrintPreviewWebUITest() {
11 testing.Test.call(this); 13 testing.Test.call(this);
14 this.printPreview_ = null;
12 this.nativeLayer_ = null; 15 this.nativeLayer_ = null;
13 this.initialSettings_ = null; 16 this.initialSettings_ = null;
14 this.localDestinationInfos_ = null; 17 this.localDestinationInfos_ = null;
15 this.previewArea_ = null; 18 this.previewArea_ = null;
16 } 19 }
17 20
18 /** 21 /**
19 * Index of the "Save as PDF" printer. 22 * Index of the "Save as PDF" printer.
20 * @type {number} 23 * @type {number}
21 * @const 24 * @const
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
55 /** @override */ 58 /** @override */
56 isAsync: true, 59 isAsync: true,
57 60
58 /** 61 /**
59 * Stub out low-level functionality like the NativeLayer and 62 * Stub out low-level functionality like the NativeLayer and
60 * CloudPrintInterface. 63 * CloudPrintInterface.
61 * @this {PrintPreviewWebUITest} 64 * @this {PrintPreviewWebUITest}
62 * @override 65 * @override
63 */ 66 */
64 preLoad: function() { 67 preLoad: function() {
68 window.isTest = true;
65 window.addEventListener('DOMContentLoaded', function() { 69 window.addEventListener('DOMContentLoaded', function() {
70 /**
71 * Test version of the native layer.
72 * @constructor
73 * @extends {settings.TestBrowserProxy}
74 */
66 function NativeLayerStub() { 75 function NativeLayerStub() {
67 cr.EventTarget.call(this); 76 settings.TestBrowserProxy.call(this, [ 'getInitialSettings' ]);
77 this.eventTarget_ = new cr.EventTarget();
68 this.printStarted_ = false; 78 this.printStarted_ = false;
69 this.generateDraft_ = false; 79 this.generateDraft_ = false;
80 this.initialSettings_ = null;
70 } 81 }
71 NativeLayerStub.prototype = { 82 NativeLayerStub.prototype = {
72 __proto__: cr.EventTarget.prototype, 83 __proto__: settings.TestBrowserProxy.prototype,
84 getEventTarget: function() { return this.eventTarget_; },
73 isPrintStarted: function() { return this.printStarted_; }, 85 isPrintStarted: function() { return this.printStarted_; },
74 generateDraft: function() { return this.generateDraft_; }, 86 generateDraft: function() { return this.generateDraft_; },
87 getInitialSettings: function() {
88 this.methodCalled('getInitialSettings');
89 return Promise.resolve(this.initialSettings_);
90 },
75 previewReadyForTest: function() {}, 91 previewReadyForTest: function() {},
76 startGetInitialSettings: function() {},
77 startGetLocalDestinations: function() {}, 92 startGetLocalDestinations: function() {},
78 startGetPrivetDestinations: function() {}, 93 startGetPrivetDestinations: function() {},
79 startGetExtensionDestinations: function() {}, 94 startGetExtensionDestinations: function() {},
80 startGetLocalDestinationCapabilities: function(destinationId) {}, 95 startGetLocalDestinationCapabilities: function(destinationId) {},
81 startGetPreview: function(destination, printTicketStore, documentInfo, 96 startGetPreview: function(destination, printTicketStore, documentInfo,
82 generateDraft, requestId) { 97 generateDraft, requestId) {
83 this.generateDraft_ = generateDraft; 98 this.generateDraft_ = generateDraft;
84 }, 99 },
85 startHideDialog: function () {}, 100 startHideDialog: function () {},
86 startPrint: function () { this.printStarted_ = true; } 101 startPrint: function () { this.printStarted_ = true; }
(...skipping 15 matching lines...) Expand all
102 cloudprint.CloudPrintInterface = CloudPrintInterfaceStub; 117 cloudprint.CloudPrintInterface = CloudPrintInterfaceStub;
103 cloudprint.CloudPrintInterfaceEventType = oldCpInterfaceEventType; 118 cloudprint.CloudPrintInterfaceEventType = oldCpInterfaceEventType;
104 119
105 print_preview.PreviewArea.prototype.checkPluginCompatibility_ = 120 print_preview.PreviewArea.prototype.checkPluginCompatibility_ =
106 function() { 121 function() {
107 return false; 122 return false;
108 }; 123 };
109 }.bind(this)); 124 }.bind(this));
110 }, 125 },
111 126
127 extraLibraries: [
128 ROOT_PATH + 'ui/webui/resources/js/cr.js',
129 ROOT_PATH + 'ui/webui/resources/js/promise_resolver.js',
130 ROOT_PATH + 'ui/webui/resources/js/util.js',
131 ROOT_PATH + 'chrome/test/data/webui/settings/test_browser_proxy.js',
132 ],
133
112 /** 134 /**
113 * Dispatch the INITIAL_SETTINGS_SET event. This call is NOT async and will 135 * Creates an instance of print_preview.PrintPreview and initializes the
114 * happen in the same thread. 136 * |nativeLayer_| and |previewArea_|.
115 */ 137 */
116 setInitialSettings: function() { 138 createPrintPreview: function() {
117 var initialSettingsSetEvent = 139 this.printPreview_ = new print_preview.PrintPreview();
118 new Event(print_preview.NativeLayer.EventType.INITIAL_SETTINGS_SET); 140 this.nativeLayer_ = this.printPreview_.nativeLayer_;
119 initialSettingsSetEvent.initialSettings = this.initialSettings_; 141 this.previewArea_ = this.printPreview_.previewArea_;
120 this.nativeLayer_.dispatchEvent(initialSettingsSetEvent);
121 }, 142 },
122 143
123 /** 144 /**
145 * Initialize print preview with the initial settings currently stored in
146 * |this.initialSettings_|. Creates |this.printPreview_| if it does not
147 * already exist.
148 */
149 setInitialSettings: function() {
150 if (!this.printPreview_) {
151 this.printPreview_ = new print_preview.PrintPreview();
152 this.nativeLayer_ = this.printPreview_.nativeLayer_;
153 this.previewArea_ = this.printPreview_.previewArea_;
154 }
155 this.nativeLayer_.initialSettings_ = this.initialSettings_;
156 this.printPreview_.initialize();
157 testing.Test.disableAnimationsAndTransitions();
158 // Enable when failure is resolved.
159 // AX_TEXT_03: http://crbug.com/559209
160 this.accessibilityAuditConfig.ignoreSelectors(
161 'multipleLabelableElementsPerLabel',
162 '#page-settings > .right-column > *');
163 },
164
165 /**
124 * Dispatch the LOCAL_DESTINATIONS_SET event. This call is NOT async and will 166 * Dispatch the LOCAL_DESTINATIONS_SET event. This call is NOT async and will
125 * happen in the same thread. 167 * happen in the same thread.
126 */ 168 */
127 setLocalDestinations: function() { 169 setLocalDestinations: function() {
128 var localDestsSetEvent = 170 var localDestsSetEvent =
129 new Event(print_preview.NativeLayer.EventType.LOCAL_DESTINATIONS_SET); 171 new Event(print_preview.NativeLayer.EventType.LOCAL_DESTINATIONS_SET);
130 localDestsSetEvent.destinationInfos = this.localDestinationInfos_; 172 localDestsSetEvent.destinationInfos = this.localDestinationInfos_;
131 this.nativeLayer_.dispatchEvent(localDestsSetEvent); 173 this.nativeLayer_.getEventTarget().dispatchEvent(localDestsSetEvent);
132 }, 174 },
133 175
134 /** 176 /**
135 * Dispatch the CAPABILITIES_SET event. This call is NOT async and will 177 * Dispatch the CAPABILITIES_SET event. This call is NOT async and will
136 * happen in the same thread. 178 * happen in the same thread.
137 * @device - The device whose capabilities should be dispatched. 179 * @device - The device whose capabilities should be dispatched.
138 */ 180 */
139 setCapabilities: function(device) { 181 setCapabilities: function(device) {
140 var capsSetEvent = 182 var capsSetEvent =
141 new Event(print_preview.NativeLayer.EventType.CAPABILITIES_SET); 183 new Event(print_preview.NativeLayer.EventType.CAPABILITIES_SET);
142 capsSetEvent.settingsInfo = device; 184 capsSetEvent.settingsInfo = device;
143 this.nativeLayer_.dispatchEvent(capsSetEvent); 185 this.nativeLayer_.getEventTarget().dispatchEvent(capsSetEvent);
144 }, 186 },
145 187
146 /** 188 /**
147 * Dispatch the PREVIEW_GENERATION_DONE event. This call is NOT async and 189 * Dispatch the PREVIEW_GENERATION_DONE event. This call is NOT async and
148 * will happen in the same thread. 190 * will happen in the same thread.
149 */ 191 */
150 dispatchPreviewDone: function() { 192 dispatchPreviewDone: function() {
151 var previewDoneEvent = 193 var previewDoneEvent =
152 new Event(print_preview.PreviewArea.EventType.PREVIEW_GENERATION_DONE); 194 new Event(print_preview.PreviewArea.EventType.PREVIEW_GENERATION_DONE);
153 this.previewArea_.dispatchEvent(previewDoneEvent); 195 this.previewArea_.dispatchEvent(previewDoneEvent);
154 }, 196 },
155 197
156 /** 198 /**
157 * Dispatch the SETTINGS_INVALID event. This call is NOT async and will 199 * Dispatch the SETTINGS_INVALID event. This call is NOT async and will
158 * happen in the same thread. 200 * happen in the same thread.
159 */ 201 */
160 dispatchInvalidSettings: function() { 202 dispatchInvalidSettings: function() {
161 var invalidSettingsEvent = 203 var invalidSettingsEvent =
162 new Event(print_preview.NativeLayer.EventType.SETTINGS_INVALID); 204 new Event(print_preview.NativeLayer.EventType.SETTINGS_INVALID);
163 this.nativeLayer_.dispatchEvent(invalidSettingsEvent); 205 this.nativeLayer_.getEventTarget().dispatchEvent(invalidSettingsEvent);
164 }, 206 },
165 207
166 /** 208 /**
167 * @return {boolean} Whether the UI has "printed" or not. (called startPrint 209 * @return {boolean} Whether the UI has "printed" or not. (called startPrint
168 * on the native layer) 210 * on the native layer)
169 */ 211 */
170 hasPrinted: function() { 212 hasPrinted: function() {
171 return this.nativeLayer_.isPrintStarted(); 213 return this.nativeLayer_.isPrintStarted();
172 }, 214 },
173 215
(...skipping 29 matching lines...) Expand all
203 moreSettings.click(); 245 moreSettings.click();
204 }, 246 },
205 247
206 /** 248 /**
207 * Repeated setup steps for the advanced settings tests. 249 * Repeated setup steps for the advanced settings tests.
208 * Disables accessiblity errors, sets initial settings, and verifies 250 * Disables accessiblity errors, sets initial settings, and verifies
209 * advanced options section is visible after expanding more settings. 251 * advanced options section is visible after expanding more settings.
210 */ 252 */
211 setupAdvancedSettingsTest: function(device) { 253 setupAdvancedSettingsTest: function(device) {
212 // Need to disable this since overlay animation will not fully complete. 254 // Need to disable this since overlay animation will not fully complete.
213 this.accessibilityIssuesAreErrors = false;
214 this.setInitialSettings();
215 this.setLocalDestinations(); 255 this.setLocalDestinations();
216 this.setCapabilities(device); 256 this.setCapabilities(device);
217 this.expandMoreSettings(); 257 this.expandMoreSettings();
218 258
219 // Check that the advanced options settings section is visible. 259 // Check that the advanced options settings section is visible.
220 checkSectionVisible($('advanced-options-settings'), true); 260 checkSectionVisible($('advanced-options-settings'), true);
221 }, 261 },
222 262
223 /** 263 /**
224 * @this {PrintPreviewWebUITest} 264 * @this {PrintPreviewWebUITest}
(...skipping 13 matching lines...) Expand all
238 'title' /*documentTitle*/, 278 'title' /*documentTitle*/,
239 true /*documentHasSelection*/, 279 true /*documentHasSelection*/,
240 false /*selectionOnly*/, 280 false /*selectionOnly*/,
241 'FooDevice' /*systemDefaultDestinationId*/, 281 'FooDevice' /*systemDefaultDestinationId*/,
242 null /*serializedAppStateStr*/, 282 null /*serializedAppStateStr*/,
243 null /*serializedDefaultDestinationSelectionRulesStr*/); 283 null /*serializedDefaultDestinationSelectionRulesStr*/);
244 this.localDestinationInfos_ = [ 284 this.localDestinationInfos_ = [
245 { printerName: 'FooName', deviceName: 'FooDevice' }, 285 { printerName: 'FooName', deviceName: 'FooDevice' },
246 { printerName: 'BarName', deviceName: 'BarDevice' } 286 { printerName: 'BarName', deviceName: 'BarDevice' }
247 ]; 287 ];
248 this.nativeLayer_ = printPreview.nativeLayer_; 288 },
249 this.previewArea_ = printPreview.previewArea_;
250
251 testing.Test.disableAnimationsAndTransitions();
252
253 // Enable when failure is resolved.
254 // AX_TEXT_03: http://crbug.com/559209
255 this.accessibilityAuditConfig.ignoreSelectors(
256 'multipleLabelableElementsPerLabel',
257 '#page-settings > .right-column > *');
258 }
259 }; 289 };
260 290
261 // Test some basic assumptions about the print preview WebUI. 291 // Test some basic assumptions about the print preview WebUI.
262 TEST_F('PrintPreviewWebUITest', 'TestPrinterList', function() { 292 TEST_F('PrintPreviewWebUITest', 'TestPrinterList', function() {
263 this.setInitialSettings(); 293 this.setInitialSettings();
264 this.setLocalDestinations(); 294 this.printPreview_.nativeLayer_.whenCalled('getInitialSettings').then(
265 295 function() {
266 var recentList = $('destination-search').querySelector('.recent-list ul'); 296 this.setLocalDestinations();
267 var localList = $('destination-search').querySelector('.local-list ul'); 297 var recentList =
268 assertNotEquals(null, recentList); 298 $('destination-search').querySelector('.recent-list ul');
269 assertEquals(1, recentList.childNodes.length); 299 var localList =
270 assertEquals('FooName', 300 $('destination-search').querySelector('.local-list ul');
271 recentList.childNodes.item(0).querySelector( 301 assertNotEquals(null, recentList);
272 '.destination-list-item-name').textContent); 302 assertEquals(1, recentList.childNodes.length);
273 303 assertEquals('FooName',
274 assertNotEquals(null, localList); 304 recentList.childNodes.item(0).querySelector(
275 assertEquals(3, localList.childNodes.length); 305 '.destination-list-item-name').textContent);
276 assertEquals('Save as PDF', 306 assertNotEquals(null, localList);
277 localList.childNodes.item(PrintPreviewWebUITest.PDF_INDEX). 307 assertEquals(3, localList.childNodes.length);
278 querySelector('.destination-list-item-name').textContent); 308 assertEquals('Save as PDF',
279 assertEquals('FooName', 309 localList.childNodes.item(PrintPreviewWebUITest.PDF_INDEX).
280 localList.childNodes.item(PrintPreviewWebUITest.FOO_INDEX). 310 querySelector('.destination-list-item-name').textContent);
281 querySelector('.destination-list-item-name').textContent); 311 assertEquals('FooName',
282 assertEquals('BarName', 312 localList.childNodes.item(PrintPreviewWebUITest.FOO_INDEX).
283 localList.childNodes.item(PrintPreviewWebUITest.BAR_INDEX). 313 querySelector('.destination-list-item-name').textContent);
284 querySelector('.destination-list-item-name').textContent); 314 assertEquals('BarName',
285 315 localList.childNodes.item(PrintPreviewWebUITest.BAR_INDEX).
286 testDone(); 316 querySelector('.destination-list-item-name').textContent);
317 testDone();
318 }.bind(this));
287 }); 319 });
288 320
289 // Test that the printer list is structured correctly after calling 321 // Test that the printer list is structured correctly after calling
290 // addCloudPrinters with an empty list. 322 // addCloudPrinters with an empty list.
291 TEST_F('PrintPreviewWebUITest', 'TestPrinterListCloudEmpty', function() { 323 TEST_F('PrintPreviewWebUITest', 'TestPrinterListCloudEmpty', function() {
292 this.setInitialSettings(); 324 this.setInitialSettings();
293 this.setLocalDestinations();
294 325
295 var cloudPrintEnableEvent = 326 this.printPreview_.nativeLayer_.whenCalled('getInitialSettings').then(
296 new Event(print_preview.NativeLayer.EventType.CLOUD_PRINT_ENABLE); 327 function() {
297 cloudPrintEnableEvent.baseCloudPrintUrl = 'cloudprint url'; 328 this.setLocalDestinations();
298 this.nativeLayer_.dispatchEvent(cloudPrintEnableEvent);
299 329
300 var searchDoneEvent = 330 var cloudPrintEnableEvent =
301 new Event(cloudprint.CloudPrintInterfaceEventType.SEARCH_DONE); 331 new Event(print_preview.NativeLayer.EventType.CLOUD_PRINT_ENABLE);
302 searchDoneEvent.printers = []; 332 cloudPrintEnableEvent.baseCloudPrintUrl = 'cloudprint url';
303 searchDoneEvent.isRecent = true; 333 this.nativeLayer_.getEventTarget().dispatchEvent(
304 searchDoneEvent.email = 'foo@chromium.org'; 334 cloudPrintEnableEvent);
305 printPreview.cloudPrintInterface_.dispatchEvent(searchDoneEvent);
306 335
307 var recentList = $('destination-search').querySelector('.recent-list ul'); 336 var searchDoneEvent =
308 var localList = $('destination-search').querySelector('.local-list ul'); 337 new Event(cloudprint.CloudPrintInterfaceEventType.SEARCH_DONE);
309 var cloudList = $('destination-search').querySelector('.cloud-list ul'); 338 searchDoneEvent.printers = [];
339 searchDoneEvent.isRecent = true;
340 searchDoneEvent.email = 'foo@chromium.org';
341 this.printPreview_.cloudPrintInterface_.dispatchEvent(searchDoneEvent);
310 342
311 assertNotEquals(null, recentList); 343 var recentList =
312 assertEquals(1, recentList.childNodes.length); 344 $('destination-search').querySelector('.recent-list ul');
313 assertEquals('FooName', 345 var localList =
314 recentList.childNodes.item(0).querySelector( 346 $('destination-search').querySelector('.local-list ul');
315 '.destination-list-item-name').textContent); 347 var cloudList =
348 $('destination-search').querySelector('.cloud-list ul');
316 349
317 assertNotEquals(null, localList); 350 assertNotEquals(null, recentList);
318 assertEquals(3, localList.childNodes.length); 351 assertEquals(1, recentList.childNodes.length);
319 assertEquals('Save as PDF', 352 assertEquals('FooName',
320 localList.childNodes.item(PrintPreviewWebUITest.PDF_INDEX). 353 recentList.childNodes.item(0).
321 querySelector('.destination-list-item-name').textContent); 354 querySelector('.destination-list-item-name').
322 assertEquals('FooName', 355 textContent);
323 localList.childNodes.item(PrintPreviewWebUITest.FOO_INDEX).
324 querySelector('.destination-list-item-name').textContent);
325 assertEquals('BarName',
326 localList.childNodes.item(PrintPreviewWebUITest.BAR_INDEX).
327 querySelector('.destination-list-item-name').textContent);
328 356
329 assertNotEquals(null, cloudList); 357 assertNotEquals(null, localList);
330 assertEquals(0, cloudList.childNodes.length); 358 assertEquals(3, localList.childNodes.length);
359 assertEquals('Save as PDF',
360 localList.childNodes.item(
361 PrintPreviewWebUITest.PDF_INDEX).
362 querySelector('.destination-list-item-name').
363 textContent);
364 assertEquals('FooName',
365 localList.childNodes.
366 item(PrintPreviewWebUITest.FOO_INDEX).
367 querySelector('.destination-list-item-name').
368 textContent);
369 assertEquals('BarName',
370 localList.childNodes.
371 item(PrintPreviewWebUITest.BAR_INDEX).
372 querySelector('.destination-list-item-name').
373 textContent);
331 374
332 testDone(); 375 assertNotEquals(null, cloudList);
376 assertEquals(0, cloudList.childNodes.length);
377
378 testDone();
379 }.bind(this));
333 }); 380 });
334 381
335 /** 382 /**
336 * Verify that |section| visibility matches |visible|. 383 * Verify that |section| visibility matches |visible|.
337 * @param {HTMLDivElement} section The section to check. 384 * @param {HTMLDivElement} section The section to check.
338 * @param {boolean} visible The expected state of visibility. 385 * @param {boolean} visible The expected state of visibility.
339 */ 386 */
340 function checkSectionVisible(section, visible) { 387 function checkSectionVisible(section, visible) {
341 assertNotEquals(null, section); 388 assertNotEquals(null, section);
342 expectEquals( 389 expectEquals(
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
399 loadTimeData.getBoolean('printPdfAsImageEnabled')); 446 loadTimeData.getBoolean('printPdfAsImageEnabled'));
400 } 447 }
401 448
402 // Test restore settings with one destination. 449 // Test restore settings with one destination.
403 TEST_F('PrintPreviewWebUITest', 'TestPrintPreviewRestoreLocalDestination', 450 TEST_F('PrintPreviewWebUITest', 'TestPrintPreviewRestoreLocalDestination',
404 function() { 451 function() {
405 this.initialSettings_.serializedAppStateStr_ = 452 this.initialSettings_.serializedAppStateStr_ =
406 '{"version":2,"recentDestinations":[{"id":"ID", "origin":"local",' + 453 '{"version":2,"recentDestinations":[{"id":"ID", "origin":"local",' +
407 '"account":"", "capabilities":0, "name":"", "extensionId":"",' + 454 '"account":"", "capabilities":0, "name":"", "extensionId":"",' +
408 '"extensionName":""}]}'; 455 '"extensionName":""}]}';
456
409 this.setInitialSettings(); 457 this.setInitialSettings();
410 458 this.printPreview_.nativeLayer_.whenCalled('getInitialSettings').then(
411 testDone(); 459 function() {
460 testDone();
461 });
412 }); 462 });
413 463
414 // Test with multiple destinations 464 // Test with multiple destinations
415 TEST_F('PrintPreviewWebUITest', 'TestPrintPreviewRestoreMultipleDestinations', 465 TEST_F('PrintPreviewWebUITest', 'TestPrintPreviewRestoreMultipleDestinations',
416 function() { 466 function() {
417 var origin = cr.isChromeOS ? "chrome_os" : "local"; 467 var origin = cr.isChromeOS ? "chrome_os" : "local";
418 468
419 var appState = { 469 var appState = {
420 'version': 2, 470 'version': 2,
421 'recentDestinations': [ 471 'recentDestinations': [
(...skipping 21 matching lines...) Expand all
443 'account': '', 493 'account': '',
444 'capabilities': 0, 494 'capabilities': 0,
445 'name': '', 495 'name': '',
446 'extensionId': '', 496 'extensionId': '',
447 'extensionName': '' 497 'extensionName': ''
448 } 498 }
449 ] 499 ]
450 }; 500 };
451 501
452 this.initialSettings_.serializedAppStateStr_ = JSON.stringify(appState); 502 this.initialSettings_.serializedAppStateStr_ = JSON.stringify(appState);
453
454 this.setInitialSettings(); 503 this.setInitialSettings();
455 504
456 // Set capabilities for the three recently used destinations + 1 more 505 this.printPreview_.nativeLayer_.whenCalled('getInitialSettings').then(
457 this.setCapabilities(getCddTemplate('ID1')); 506 function() {
458 this.setCapabilities(getCddTemplate('ID2')); 507 // Set capabilities for the three recently used destinations + 1 more
459 this.setCapabilities(getCddTemplate('ID3')); 508 this.setCapabilities(getCddTemplate('ID1'));
460 this.setCapabilities(getCddTemplate('ID4')); 509 this.setCapabilities(getCddTemplate('ID2'));
510 this.setCapabilities(getCddTemplate('ID3'));
511 this.setCapabilities(getCddTemplate('ID4'));
461 512
462 // The most recently used destination should be the currently selected one. 513 // The most recently used destination should be the currently selected
463 // This is ID1. 514 // one. This is ID1.
464 assertEquals( 515 assertEquals(
465 'ID1', printPreview.destinationStore_.selectedDestination.id); 516 'ID1', this.printPreview_.destinationStore_.selectedDestination.id);
466 517
467 // Look through the destinations. ID1, ID2, and ID3 should all be recent. 518 // Look through the destinations. ID1, ID2, and ID3 should all be
468 var destinations = printPreview.destinationStore_.destinations_; 519 // recent.
469 var idsFound = []; 520 var destinations = this.printPreview_.destinationStore_.destinations_;
521 var idsFound = [];
470 522
471 for (var i = 0; i < destinations.length; i++) { 523 for (var i = 0; i < destinations.length; i++) {
472 if (!destinations[i]) 524 if (!destinations[i])
473 continue; 525 continue;
474 if (destinations[i].isRecent) 526 if (destinations[i].isRecent)
475 idsFound.push(destinations[i].id); 527 idsFound.push(destinations[i].id);
476 } 528 }
477 529
478 // Make sure there were 3 recent destinations and that they are the correct 530 // Make sure there were 3 recent destinations and that they are the
479 // IDs. 531 // correct IDs.
480 assertEquals(3, idsFound.length); 532 assertEquals(3, idsFound.length);
481 assertNotEquals(-1, idsFound.indexOf("ID1")); 533 assertNotEquals(-1, idsFound.indexOf("ID1"));
482 assertNotEquals(-1, idsFound.indexOf("ID2")); 534 assertNotEquals(-1, idsFound.indexOf("ID2"));
483 assertNotEquals(-1, idsFound.indexOf("ID3")); 535 assertNotEquals(-1, idsFound.indexOf("ID3"));
484 536
485 testDone(); 537 testDone();
538 }.bind(this));
486 }); 539 });
487 540
488 TEST_F('PrintPreviewWebUITest', 541 TEST_F('PrintPreviewWebUITest',
489 'TestPrintPreviewDefaultDestinationSelectionRules', function() { 542 'TestPrintPreviewDefaultDestinationSelectionRules', function() {
490 // It also makes sure these rules do override system default destination. 543 // It also makes sure these rules do override system default destination.
491 this.initialSettings_.serializedDefaultDestinationSelectionRulesStr_ = 544 this.initialSettings_.serializedDefaultDestinationSelectionRulesStr_ =
492 '{"namePattern":".*Bar.*"}'; 545 '{"namePattern":".*Bar.*"}';
493 this.setInitialSettings(); 546 this.setInitialSettings();
494 this.setLocalDestinations(); 547 this.printPreview_.nativeLayer_.whenCalled('getInitialSettings').then(
548 function() {
549 this.setLocalDestinations();
495 550
496 assertEquals( 551 assertEquals(
497 'BarDevice', printPreview.destinationStore_.selectedDestination.id); 552 'BarDevice',
553 this.printPreview_.destinationStore_.selectedDestination.id);
498 554
499 testDone(); 555 testDone();
556 }.bind(this));
500 }); 557 });
501 558
502 TEST_F('PrintPreviewWebUITest', 'TestSystemDialogLinkIsHiddenInAppKioskMode', 559 TEST_F('PrintPreviewWebUITest', 'TestSystemDialogLinkIsHiddenInAppKioskMode',
503 function() { 560 function() {
504 if (cr.isChromeOS) { 561 if (!cr.isChromeOS)
505 assertEquals(null, $('system-dialog-link'));
506 } else {
507 this.initialSettings_.isInAppKioskMode_ = true; 562 this.initialSettings_.isInAppKioskMode_ = true;
508 this.setInitialSettings();
509 563
510 checkElementDisplayed($('system-dialog-link'), false); 564 this.setInitialSettings();
511 } 565 this.printPreview_.nativeLayer_.whenCalled('getInitialSettings').then(
512 566 function() {
513 testDone(); 567 if (cr.isChromeOS)
568 assertEquals(null, $('system-dialog-link'));
569 else
570 checkElementDisplayed($('system-dialog-link'), false);
571 testDone();
572 });
514 }); 573 });
515 574
516 // Test that disabled settings hide the disabled sections. 575 // Test that disabled settings hide the disabled sections.
517 TEST_F('PrintPreviewWebUITest', 'TestSectionsDisabled', function() { 576 TEST_F('PrintPreviewWebUITest', 'TestSectionsDisabled', function() {
577 this.createPrintPreview();
518 checkSectionVisible($('layout-settings'), false); 578 checkSectionVisible($('layout-settings'), false);
519 checkSectionVisible($('color-settings'), false); 579 checkSectionVisible($('color-settings'), false);
520 checkSectionVisible($('copies-settings'), false); 580 checkSectionVisible($('copies-settings'), false);
521 581
522 this.setInitialSettings(); 582 this.setInitialSettings();
523 this.setLocalDestinations(); 583 this.printPreview_.nativeLayer_.whenCalled('getInitialSettings').then(
524 var device = getCddTemplate("FooDevice"); 584 function() {
525 device.capabilities.printer.color = { 585 this.setLocalDestinations();
526 "option": [ 586 var device = getCddTemplate("FooDevice");
527 {"is_default": true, "type": "STANDARD_COLOR"} 587 device.capabilities.printer.color = {
528 ] 588 "option": [
529 }; 589 {"is_default": true, "type": "STANDARD_COLOR"}
530 delete device.capabilities.printer.copies; 590 ]
531 this.setCapabilities(device); 591 };
592 delete device.capabilities.printer.copies;
593 this.setCapabilities(device);
532 594
533 checkSectionVisible($('layout-settings'), true); 595 checkSectionVisible($('layout-settings'), true);
534 checkSectionVisible($('color-settings'), false); 596 checkSectionVisible($('color-settings'), false);
535 checkSectionVisible($('copies-settings'), false); 597 checkSectionVisible($('copies-settings'), false);
536 598
537 this.waitForAnimationToEnd('other-options-collapsible'); 599 this.waitForAnimationToEnd('other-options-collapsible');
600 }.bind(this));
538 }); 601 });
539 602
540 // When the source is 'PDF' and 'Save as PDF' option is selected, we hide the 603 // When the source is 'PDF' and 'Save as PDF' option is selected, we hide the
541 // fit to page option. 604 // fit to page option.
542 TEST_F('PrintPreviewWebUITest', 'PrintToPDFSelectedCapabilities', function() { 605 TEST_F('PrintPreviewWebUITest', 'PrintToPDFSelectedCapabilities', function() {
543 // Add PDF printer. 606 // Add PDF printer.
544 this.initialSettings_.isDocumentModifiable_ = false; 607 this.initialSettings_.isDocumentModifiable_ = false;
545 this.initialSettings_.systemDefaultDestinationId_ = 'Save as PDF'; 608 this.initialSettings_.systemDefaultDestinationId_ = 'Save as PDF';
546 this.setInitialSettings(); 609 this.setInitialSettings();
547 610
548 var device = { 611 this.printPreview_.nativeLayer_.whenCalled('getInitialSettings').then(
549 printerId: 'Save as PDF', 612 function() {
550 capabilities: { 613 var device = {
551 version: '1.0', 614 printerId: 'Save as PDF',
552 printer: { 615 capabilities: {
553 page_orientation: { 616 version: '1.0',
554 option: [ 617 printer: {
555 {type: 'AUTO', is_default: true}, 618 page_orientation: {
556 {type: 'PORTRAIT'}, 619 option: [
557 {type: 'LANDSCAPE'} 620 {type: 'AUTO', is_default: true},
558 ] 621 {type: 'PORTRAIT'},
559 }, 622 {type: 'LANDSCAPE'}
560 color: { 623 ]
561 option: [ 624 },
562 {type: 'STANDARD_COLOR', is_default: true} 625 color: {
563 ] 626 option: [
564 }, 627 {type: 'STANDARD_COLOR', is_default: true}
565 media_size: { 628 ]
566 option: [ 629 },
567 { name: 'NA_LETTER', 630 media_size: {
568 width_microns: 0, 631 option: [
569 height_microns: 0, 632 { name: 'NA_LETTER',
570 is_default: true 633 width_microns: 0,
634 height_microns: 0,
635 is_default: true
636 }
637 ]
638 }
571 } 639 }
572 ] 640 }
641 };
642 this.setCapabilities(device);
643
644 var otherOptions = $('other-options-settings');
645 // If rasterization is an option, other options should be visible. If
646 // not, there should be no available other options.
647 checkSectionVisible(otherOptions, isPrintAsImageEnabled());
648 if (isPrintAsImageEnabled()) {
649 checkElementDisplayed(
650 otherOptions.querySelector('#fit-to-page-container'), false);
651 checkElementDisplayed(
652 otherOptions.querySelector('#rasterize-container'), true);
573 } 653 }
574 } 654 checkSectionVisible($('media-size-settings'), false);
575 } 655 checkSectionVisible($('scaling-settings'), false);
576 };
577 this.setCapabilities(device);
578 656
579 var otherOptions = $('other-options-settings'); 657 testDone();
580 // If rasterization is an option, other options should be visible. If not, 658 }.bind(this));
581 // there should be no available other options.
582 checkSectionVisible(otherOptions, isPrintAsImageEnabled());
583 if (isPrintAsImageEnabled()) {
584 checkElementDisplayed(
585 otherOptions.querySelector('#fit-to-page-container'), false);
586 checkElementDisplayed(
587 otherOptions.querySelector('#rasterize-container'), true);
588 }
589 checkSectionVisible($('media-size-settings'), false);
590 checkSectionVisible($('scaling-settings'), false);
591
592 testDone();
593 }); 659 });
594 660
595 // When the source is 'HTML', we always hide the fit to page option and show 661 // When the source is 'HTML', we always hide the fit to page option and show
596 // media size option. 662 // media size option.
597 TEST_F('PrintPreviewWebUITest', 'SourceIsHTMLCapabilities', function() { 663 TEST_F('PrintPreviewWebUITest', 'SourceIsHTMLCapabilities', function() {
598 this.setInitialSettings(); 664 this.setInitialSettings();
599 this.setLocalDestinations(); 665 this.printPreview_.nativeLayer_.whenCalled('getInitialSettings').then(
600 this.setCapabilities(getCddTemplate("FooDevice")); 666 function() {
667 this.setLocalDestinations();
668 this.setCapabilities(getCddTemplate("FooDevice"));
601 669
602 var otherOptions = $('other-options-settings'); 670 var otherOptions = $('other-options-settings');
603 var fitToPage = otherOptions.querySelector('#fit-to-page-container'); 671 var fitToPage = otherOptions.querySelector('#fit-to-page-container');
604 var rasterize; 672 var rasterize;
605 if (isPrintAsImageEnabled()) 673 if (isPrintAsImageEnabled())
606 rasterize = otherOptions.querySelector('#rasterize-container'); 674 rasterize = otherOptions.querySelector('#rasterize-container');
607 var mediaSize = $('media-size-settings'); 675 var mediaSize = $('media-size-settings');
608 var scalingSettings = $('scaling-settings'); 676 var scalingSettings = $('scaling-settings');
609 677
610 // Check that options are collapsed (section is visible, because duplex is 678 // Check that options are collapsed (section is visible, because duplex
611 // available). 679 // is available).
612 checkSectionVisible(otherOptions, true); 680 checkSectionVisible(otherOptions, true);
613 checkElementDisplayed(fitToPage, false); 681 checkElementDisplayed(fitToPage, false);
614 if (isPrintAsImageEnabled()) 682 if (isPrintAsImageEnabled())
615 checkElementDisplayed(rasterize, false); 683 checkElementDisplayed(rasterize, false);
616 checkSectionVisible(mediaSize, false); 684 checkSectionVisible(mediaSize, false);
617 checkSectionVisible(scalingSettings, false); 685 checkSectionVisible(scalingSettings, false);
618 686
619 this.expandMoreSettings(); 687 this.expandMoreSettings();
620 688
621 checkElementDisplayed(fitToPage, false); 689 checkElementDisplayed(fitToPage, false);
622 if (isPrintAsImageEnabled()) 690 if (isPrintAsImageEnabled())
623 checkElementDisplayed(rasterize, false); 691 checkElementDisplayed(rasterize, false);
624 checkSectionVisible(mediaSize, true); 692 checkSectionVisible(mediaSize, true);
625 checkSectionVisible(scalingSettings, true); 693 checkSectionVisible(scalingSettings, true);
626 694
627 this.waitForAnimationToEnd('more-settings'); 695 this.waitForAnimationToEnd('more-settings');
696 }.bind(this));
628 }); 697 });
629 698
630 // When the source is "PDF", depending on the selected destination printer, we 699 // When the source is "PDF", depending on the selected destination printer, we
631 // show/hide the fit to page option and hide media size selection. 700 // show/hide the fit to page option and hide media size selection.
632 TEST_F('PrintPreviewWebUITest', 'SourceIsPDFCapabilities', function() { 701 TEST_F('PrintPreviewWebUITest', 'SourceIsPDFCapabilities', function() {
633 this.initialSettings_.isDocumentModifiable_ = false; 702 this.initialSettings_.isDocumentModifiable_ = false;
634 this.setInitialSettings(); 703 this.setInitialSettings();
635 this.setLocalDestinations(); 704 this.printPreview_.nativeLayer_.whenCalled('getInitialSettings').then(
636 this.setCapabilities(getCddTemplate("FooDevice")); 705 function() {
706 this.setLocalDestinations();
707 this.setCapabilities(getCddTemplate("FooDevice"));
637 708
638 var otherOptions = $('other-options-settings'); 709 var otherOptions = $('other-options-settings');
639 var scalingSettings = $('scaling-settings'); 710 var scalingSettings = $('scaling-settings');
640 var fitToPageContainer = 711 var fitToPageContainer =
641 otherOptions.querySelector('#fit-to-page-container'); 712 otherOptions.querySelector('#fit-to-page-container');
642 var rasterizeContainer; 713 var rasterizeContainer;
643 if (isPrintAsImageEnabled()) { 714 if (isPrintAsImageEnabled()) {
644 rasterizeContainer = 715 rasterizeContainer =
645 otherOptions.querySelector('#rasterize-container'); 716 otherOptions.querySelector('#rasterize-container');
646 } 717 }
647 718
648 checkSectionVisible(otherOptions, true); 719 checkSectionVisible(otherOptions, true);
649 checkElementDisplayed(fitToPageContainer, true); 720 checkElementDisplayed(fitToPageContainer, true);
650 if (isPrintAsImageEnabled()) 721 if (isPrintAsImageEnabled())
651 checkElementDisplayed(rasterizeContainer, false); 722 checkElementDisplayed(rasterizeContainer, false);
652 expectTrue( 723 expectTrue(
653 fitToPageContainer.querySelector('.checkbox').checked); 724 fitToPageContainer.querySelector('.checkbox').checked);
654 this.expandMoreSettings(); 725 this.expandMoreSettings();
655 if (isPrintAsImageEnabled()) { 726 if (isPrintAsImageEnabled()) {
656 checkElementDisplayed(rasterizeContainer, true); 727 checkElementDisplayed(rasterizeContainer, true);
657 expectFalse( 728 expectFalse(
658 rasterizeContainer.querySelector('.checkbox').checked); 729 rasterizeContainer.querySelector('.checkbox').checked);
659 } 730 }
660 checkSectionVisible($('media-size-settings'), true); 731 checkSectionVisible($('media-size-settings'), true);
661 checkSectionVisible(scalingSettings, true); 732 checkSectionVisible(scalingSettings, true);
662 733
663 this.waitForAnimationToEnd('other-options-collapsible'); 734 this.waitForAnimationToEnd('other-options-collapsible');
735 }.bind(this));
664 }); 736 });
665 737
666 // When the source is "PDF", depending on the selected destination printer, we 738 // When the source is "PDF", depending on the selected destination printer, we
667 // show/hide the fit to page option and hide media size selection. 739 // show/hide the fit to page option and hide media size selection.
668 TEST_F('PrintPreviewWebUITest', 'ScalingUnchecksFitToPage', function() { 740 TEST_F('PrintPreviewWebUITest', 'ScalingUnchecksFitToPage', function() {
669 this.initialSettings_.isDocumentModifiable_ = false; 741 this.initialSettings_.isDocumentModifiable_ = false;
670 this.setInitialSettings(); 742 this.setInitialSettings();
671 this.setLocalDestinations(); 743 this.printPreview_.nativeLayer_.whenCalled('getInitialSettings').then(
672 this.setCapabilities(getCddTemplate("FooDevice")); 744 function() {
745 this.setLocalDestinations();
746 this.setCapabilities(getCddTemplate("FooDevice"));
673 747
674 var otherOptions = $('other-options-settings'); 748 var otherOptions = $('other-options-settings');
675 var scalingSettings = $('scaling-settings'); 749 var scalingSettings = $('scaling-settings');
676 750
677 checkSectionVisible(otherOptions, true); 751 checkSectionVisible(otherOptions, true);
678 var fitToPageContainer = 752 var fitToPageContainer =
679 otherOptions.querySelector('#fit-to-page-container'); 753 otherOptions.querySelector('#fit-to-page-container');
680 checkElementDisplayed(fitToPageContainer, true); 754 checkElementDisplayed(fitToPageContainer, true);
681 expectTrue( 755 expectTrue(
682 fitToPageContainer.querySelector('.checkbox').checked); 756 fitToPageContainer.querySelector('.checkbox').checked);
683 this.expandMoreSettings(); 757 this.expandMoreSettings();
684 checkSectionVisible($('media-size-settings'), true); 758 checkSectionVisible($('media-size-settings'), true);
685 checkSectionVisible(scalingSettings, true); 759 checkSectionVisible(scalingSettings, true);
686 760
687 // Change scaling input 761 // Change scaling input
688 var scalingInput = scalingSettings.querySelector('.user-value'); 762 var scalingInput = scalingSettings.querySelector('.user-value');
689 expectEquals('100', scalingInput.value); 763 expectEquals('100', scalingInput.value);
690 scalingInput.stepUp(5); 764 scalingInput.stepUp(5);
691 expectEquals('105', scalingInput.value); 765 expectEquals('105', scalingInput.value);
692 766
693 // Trigger the event 767 // Trigger the event
694 var enterEvent = document.createEvent('Event'); 768 var enterEvent = document.createEvent('Event');
695 enterEvent.initEvent('keydown'); 769 enterEvent.initEvent('keydown');
696 enterEvent.keyCode = 'Enter'; 770 enterEvent.keyCode = 'Enter';
697 scalingInput.dispatchEvent(enterEvent); 771 scalingInput.dispatchEvent(enterEvent);
698 expectFalse( 772 expectFalse(
699 fitToPageContainer.querySelector('.checkbox').checked); 773 fitToPageContainer.querySelector('.checkbox').checked);
700 774
701 this.waitForAnimationToEnd('other-options-collapsible'); 775 this.waitForAnimationToEnd('other-options-collapsible');
776 }.bind(this));
702 }); 777 });
703 778
704 // When the number of copies print preset is set for source 'PDF', we update 779 // When the number of copies print preset is set for source 'PDF', we update
705 // the copies value if capability is supported by printer. 780 // the copies value if capability is supported by printer.
706 TEST_F('PrintPreviewWebUITest', 'CheckNumCopiesPrintPreset', function() { 781 TEST_F('PrintPreviewWebUITest', 'CheckNumCopiesPrintPreset', function() {
707 this.initialSettings_.isDocumentModifiable_ = false; 782 this.initialSettings_.isDocumentModifiable_ = false;
708 this.setInitialSettings(); 783 this.setInitialSettings();
709 this.setLocalDestinations(); 784 this.printPreview_.nativeLayer_.whenCalled('getInitialSettings').then(
710 this.setCapabilities(getCddTemplate("FooDevice")); 785 function() {
786 this.setLocalDestinations();
787 this.setCapabilities(getCddTemplate("FooDevice"));
711 788
712 // Indicate that the number of copies print preset is set for source PDF. 789 // Indicate that the number of copies print preset is set for source
713 var printPresetOptions = { 790 // PDF.
714 disableScaling: true, 791 var printPresetOptions = {
715 copies: 2 792 disableScaling: true,
716 }; 793 copies: 2
717 var printPresetOptionsEvent = new Event( 794 };
718 print_preview.NativeLayer.EventType.PRINT_PRESET_OPTIONS); 795 var printPresetOptionsEvent = new Event(
719 printPresetOptionsEvent.optionsFromDocument = printPresetOptions; 796 print_preview.NativeLayer.EventType.PRINT_PRESET_OPTIONS);
720 this.nativeLayer_.dispatchEvent(printPresetOptionsEvent); 797 printPresetOptionsEvent.optionsFromDocument = printPresetOptions;
798 this.nativeLayer_.getEventTarget().
799 dispatchEvent(printPresetOptionsEvent);
721 800
722 checkSectionVisible($('copies-settings'), true); 801 checkSectionVisible($('copies-settings'), true);
723 expectEquals( 802 expectEquals(
724 printPresetOptions.copies, 803 printPresetOptions.copies,
725 parseInt($('copies-settings').querySelector('.user-value').value)); 804 parseInt($('copies-settings').querySelector('.user-value').value));
726 805
727 this.waitForAnimationToEnd('other-options-collapsible'); 806 this.waitForAnimationToEnd('other-options-collapsible');
807 }.bind(this));
728 }); 808 });
729 809
730 // When the duplex print preset is set for source 'PDF', we update the 810 // When the duplex print preset is set for source 'PDF', we update the
731 // duplex setting if capability is supported by printer. 811 // duplex setting if capability is supported by printer.
732 TEST_F('PrintPreviewWebUITest', 'CheckDuplexPrintPreset', function() { 812 TEST_F('PrintPreviewWebUITest', 'CheckDuplexPrintPreset', function() {
733 this.initialSettings_.isDocumentModifiable_ = false; 813 this.initialSettings_.isDocumentModifiable_ = false;
734 this.setInitialSettings(); 814 this.setInitialSettings();
735 this.setLocalDestinations();
736 this.setCapabilities(getCddTemplate("FooDevice"));
737 815
738 // Indicate that the duplex print preset is set to "long edge" for source PDF. 816 this.printPreview_.nativeLayer_.whenCalled('getInitialSettings').then(
739 var printPresetOptions = { 817 function() {
740 duplex: 1 818 this.setLocalDestinations();
741 }; 819 this.setCapabilities(getCddTemplate("FooDevice"));
742 var printPresetOptionsEvent = new Event(
743 print_preview.NativeLayer.EventType.PRINT_PRESET_OPTIONS);
744 printPresetOptionsEvent.optionsFromDocument = printPresetOptions;
745 this.nativeLayer_.dispatchEvent(printPresetOptionsEvent);
746 820
747 var otherOptions = $('other-options-settings'); 821 // Indicate that the duplex print preset is set to "long edge" for
748 checkSectionVisible(otherOptions, true); 822 // source PDF.
749 var duplexContainer = otherOptions.querySelector('#duplex-container'); 823 var printPresetOptions = {
750 checkElementDisplayed(duplexContainer, true); 824 duplex: 1
751 expectTrue(duplexContainer.querySelector('.checkbox').checked); 825 };
826 var printPresetOptionsEvent = new Event(
827 print_preview.NativeLayer.EventType.PRINT_PRESET_OPTIONS);
828 printPresetOptionsEvent.optionsFromDocument = printPresetOptions;
829 this.nativeLayer_.getEventTarget().
830 dispatchEvent(printPresetOptionsEvent);
752 831
753 this.waitForAnimationToEnd('other-options-collapsible'); 832 var otherOptions = $('other-options-settings');
833 checkSectionVisible(otherOptions, true);
834 var duplexContainer = otherOptions.querySelector('#duplex-container');
835 checkElementDisplayed(duplexContainer, true);
836 expectTrue(duplexContainer.querySelector('.checkbox').checked);
837
838 this.waitForAnimationToEnd('other-options-collapsible');
839 }.bind(this));
754 }); 840 });
755 841
756 // Make sure that custom margins controls are properly set up. 842 // Make sure that custom margins controls are properly set up.
757 TEST_F('PrintPreviewWebUITest', 'CustomMarginsControlsCheck', function() { 843 TEST_F('PrintPreviewWebUITest', 'CustomMarginsControlsCheck', function() {
758 this.setInitialSettings(); 844 this.setInitialSettings();
759 this.setLocalDestinations(); 845 this.printPreview_.nativeLayer_.whenCalled('getInitialSettings').then(
760 this.setCapabilities(getCddTemplate("FooDevice")); 846 function() {
847 this.setLocalDestinations();
848 this.setCapabilities(getCddTemplate("FooDevice"));
761 849
762 printPreview.printTicketStore_.marginsType.updateValue( 850 this.printPreview_.printTicketStore_.marginsType.updateValue(
763 print_preview.ticket_items.MarginsTypeValue.CUSTOM); 851 print_preview.ticket_items.MarginsTypeValue.CUSTOM);
764 852
765 ['left', 'top', 'right', 'bottom'].forEach(function(margin) { 853 ['left', 'top', 'right', 'bottom'].forEach(function(margin) {
766 var control = $('preview-area').querySelector('.margin-control-' + margin); 854 var control =
767 assertNotEquals(null, control); 855 $('preview-area').querySelector('.margin-control-' + margin);
768 var input = control.querySelector('.margin-control-textbox'); 856 assertNotEquals(null, control);
769 assertTrue(input.hasAttribute('aria-label')); 857 var input = control.querySelector('.margin-control-textbox');
770 assertNotEquals('undefined', input.getAttribute('aria-label')); 858 assertTrue(input.hasAttribute('aria-label'));
771 }); 859 assertNotEquals('undefined', input.getAttribute('aria-label'));
772 this.waitForAnimationToEnd('more-settings'); 860 });
861 this.waitForAnimationToEnd('more-settings');
862 }.bind(this));
773 }); 863 });
774 864
775 // Page layout has zero margins. Hide header and footer option. 865 // Page layout has zero margins. Hide header and footer option.
776 TEST_F('PrintPreviewWebUITest', 'PageLayoutHasNoMarginsHideHeaderFooter', 866 TEST_F('PrintPreviewWebUITest', 'PageLayoutHasNoMarginsHideHeaderFooter',
777 function() { 867 function() {
778 this.setInitialSettings(); 868 this.setInitialSettings();
779 this.setLocalDestinations(); 869 this.printPreview_.nativeLayer_.whenCalled('getInitialSettings').then(
780 this.setCapabilities(getCddTemplate("FooDevice")); 870 function() {
871 this.setLocalDestinations();
872 this.setCapabilities(getCddTemplate("FooDevice"));
781 873
782 var otherOptions = $('other-options-settings'); 874 var otherOptions = $('other-options-settings');
783 var headerFooter = otherOptions.querySelector('#header-footer-container'); 875 var headerFooter =
876 otherOptions.querySelector('#header-footer-container');
784 877
785 // Check that options are collapsed (section is visible, because duplex is 878 // Check that options are collapsed (section is visible, because duplex
786 // available). 879 // is available).
787 checkSectionVisible(otherOptions, true); 880 checkSectionVisible(otherOptions, true);
788 checkElementDisplayed(headerFooter, false); 881 checkElementDisplayed(headerFooter, false);
789 882
790 this.expandMoreSettings(); 883 this.expandMoreSettings();
791 884
792 checkElementDisplayed(headerFooter, true); 885 checkElementDisplayed(headerFooter, true);
793 886
794 printPreview.printTicketStore_.marginsType.updateValue( 887 this.printPreview_.printTicketStore_.marginsType.updateValue(
795 print_preview.ticket_items.MarginsTypeValue.CUSTOM); 888 print_preview.ticket_items.MarginsTypeValue.CUSTOM);
796 printPreview.printTicketStore_.customMargins.updateValue( 889 this.printPreview_.printTicketStore_.customMargins.updateValue(
797 new print_preview.Margins(0, 0, 0, 0)); 890 new print_preview.Margins(0, 0, 0, 0));
798 891
799 checkElementDisplayed(headerFooter, false); 892 checkElementDisplayed(headerFooter, false);
800 893
801 this.waitForAnimationToEnd('more-settings'); 894 this.waitForAnimationToEnd('more-settings');
895 }.bind(this));
802 }); 896 });
803 897
804 // Page layout has half-inch margins. Show header and footer option. 898 // Page layout has half-inch margins. Show header and footer option.
805 TEST_F('PrintPreviewWebUITest', 'PageLayoutHasMarginsShowHeaderFooter', 899 TEST_F('PrintPreviewWebUITest', 'PageLayoutHasMarginsShowHeaderFooter',
806 function() { 900 function() {
807 this.setInitialSettings(); 901 this.setInitialSettings();
808 this.setLocalDestinations(); 902 this.printPreview_.nativeLayer_.whenCalled('getInitialSettings').then(
809 this.setCapabilities(getCddTemplate("FooDevice")); 903 function() {
904 this.setLocalDestinations();
905 this.setCapabilities(getCddTemplate("FooDevice"));
810 906
811 var otherOptions = $('other-options-settings'); 907 var otherOptions = $('other-options-settings');
812 var headerFooter = otherOptions.querySelector('#header-footer-container'); 908 var headerFooter =
909 otherOptions.querySelector('#header-footer-container');
813 910
814 // Check that options are collapsed (section is visible, because duplex is 911 // Check that options are collapsed (section is visible, because duplex
815 // available). 912 // is available).
816 checkSectionVisible(otherOptions, true); 913 checkSectionVisible(otherOptions, true);
817 checkElementDisplayed(headerFooter, false); 914 checkElementDisplayed(headerFooter, false);
818 915
819 this.expandMoreSettings(); 916 this.expandMoreSettings();
820 917
821 checkElementDisplayed(headerFooter, true); 918 checkElementDisplayed(headerFooter, true);
822 919
823 printPreview.printTicketStore_.marginsType.updateValue( 920 this.printPreview_.printTicketStore_.marginsType.updateValue(
824 print_preview.ticket_items.MarginsTypeValue.CUSTOM); 921 print_preview.ticket_items.MarginsTypeValue.CUSTOM);
825 printPreview.printTicketStore_.customMargins.updateValue( 922 this.printPreview_.printTicketStore_.customMargins.updateValue(
826 new print_preview.Margins(36, 36, 36, 36)); 923 new print_preview.Margins(36, 36, 36, 36));
827 924
828 checkElementDisplayed(headerFooter, true); 925 checkElementDisplayed(headerFooter, true);
829 926
830 this.waitForAnimationToEnd('more-settings'); 927 this.waitForAnimationToEnd('more-settings');
928 }.bind(this));
831 }); 929 });
832 930
833 // Page layout has zero top and bottom margins. Hide header and footer option. 931 // Page layout has zero top and bottom margins. Hide header and footer option.
834 TEST_F('PrintPreviewWebUITest', 932 TEST_F('PrintPreviewWebUITest',
835 'ZeroTopAndBottomMarginsHideHeaderFooter', 933 'ZeroTopAndBottomMarginsHideHeaderFooter',
836 function() { 934 function() {
837 this.setInitialSettings(); 935 this.setInitialSettings();
838 this.setLocalDestinations(); 936 this.printPreview_.nativeLayer_.whenCalled('getInitialSettings').then(
839 this.setCapabilities(getCddTemplate("FooDevice")); 937 function() {
938 this.setLocalDestinations();
939 this.setCapabilities(getCddTemplate("FooDevice"));
840 940
841 var otherOptions = $('other-options-settings'); 941 var otherOptions = $('other-options-settings');
842 var headerFooter = otherOptions.querySelector('#header-footer-container'); 942 var headerFooter =
943 otherOptions.querySelector('#header-footer-container');
843 944
844 // Check that options are collapsed (section is visible, because duplex is 945 // Check that options are collapsed (section is visible, because duplex
845 // available). 946 // is available).
846 checkSectionVisible(otherOptions, true); 947 checkSectionVisible(otherOptions, true);
847 checkElementDisplayed(headerFooter, false); 948 checkElementDisplayed(headerFooter, false);
848 949
849 this.expandMoreSettings(); 950 this.expandMoreSettings();
850 951
851 checkElementDisplayed(headerFooter, true); 952 checkElementDisplayed(headerFooter, true);
852 953
853 printPreview.printTicketStore_.marginsType.updateValue( 954 this.printPreview_.printTicketStore_.marginsType.updateValue(
854 print_preview.ticket_items.MarginsTypeValue.CUSTOM); 955 print_preview.ticket_items.MarginsTypeValue.CUSTOM);
855 printPreview.printTicketStore_.customMargins.updateValue( 956 this.printPreview_.printTicketStore_.customMargins.updateValue(
856 new print_preview.Margins(0, 36, 0, 36)); 957 new print_preview.Margins(0, 36, 0, 36));
857 958
858 checkElementDisplayed(headerFooter, false); 959 checkElementDisplayed(headerFooter, false);
859 960
860 this.waitForAnimationToEnd('more-settings'); 961 this.waitForAnimationToEnd('more-settings');
962 }.bind(this));
861 }); 963 });
862 964
863 // Page layout has zero top and half-inch bottom margin. Show header and footer 965 // Page layout has zero top and half-inch bottom margin. Show header and footer
864 // option. 966 // option.
865 TEST_F('PrintPreviewWebUITest', 967 TEST_F('PrintPreviewWebUITest',
866 'ZeroTopAndNonZeroBottomMarginShowHeaderFooter', 968 'ZeroTopAndNonZeroBottomMarginShowHeaderFooter',
867 function() { 969 function() {
868 this.setInitialSettings(); 970 this.setInitialSettings();
869 this.setLocalDestinations(); 971 this.printPreview_.nativeLayer_.whenCalled('getInitialSettings').then(
870 this.setCapabilities(getCddTemplate("FooDevice")); 972 function() {
973 this.setLocalDestinations();
974 this.setCapabilities(getCddTemplate("FooDevice"));
871 975
872 var otherOptions = $('other-options-settings'); 976 var otherOptions = $('other-options-settings');
873 var headerFooter = otherOptions.querySelector('#header-footer-container'); 977 var headerFooter =
978 otherOptions.querySelector('#header-footer-container');
874 979
875 // Check that options are collapsed (section is visible, because duplex is 980 // Check that options are collapsed (section is visible, because duplex
876 // available). 981 // is available).
877 checkSectionVisible(otherOptions, true); 982 checkSectionVisible(otherOptions, true);
878 checkElementDisplayed(headerFooter, false); 983 checkElementDisplayed(headerFooter, false);
879 984
880 this.expandMoreSettings(); 985 this.expandMoreSettings();
881 986
882 checkElementDisplayed(headerFooter, true); 987 checkElementDisplayed(headerFooter, true);
883 988
884 printPreview.printTicketStore_.marginsType.updateValue( 989 this.printPreview_.printTicketStore_.marginsType.updateValue(
885 print_preview.ticket_items.MarginsTypeValue.CUSTOM); 990 print_preview.ticket_items.MarginsTypeValue.CUSTOM);
886 printPreview.printTicketStore_.customMargins.updateValue( 991 this.printPreview_.printTicketStore_.customMargins.updateValue(
887 new print_preview.Margins(0, 36, 36, 36)); 992 new print_preview.Margins(0, 36, 36, 36));
888 993
889 checkElementDisplayed(headerFooter, true); 994 checkElementDisplayed(headerFooter, true);
890 995
891 this.waitForAnimationToEnd('more-settings'); 996 this.waitForAnimationToEnd('more-settings');
997 }.bind(this));
892 }); 998 });
893 999
894 // Check header footer availability with small (label) page size. 1000 // Check header footer availability with small (label) page size.
895 TEST_F('PrintPreviewWebUITest', 'SmallPaperSizeHeaderFooter', function() { 1001 TEST_F('PrintPreviewWebUITest', 'SmallPaperSizeHeaderFooter', function() {
896 this.setInitialSettings(); 1002 this.setInitialSettings();
897 this.setLocalDestinations(); 1003 this.printPreview_.nativeLayer_.whenCalled('getInitialSettings').then(
898 var device = getCddTemplate("FooDevice"); 1004 function() {
899 device.capabilities.printer.media_size = { 1005 this.setLocalDestinations();
900 "option": [ 1006 var device = getCddTemplate("FooDevice");
901 {"name": "SmallLabel", "width_microns": 38100, "height_microns": 12700, 1007 device.capabilities.printer.media_size = {
902 "is_default": false}, 1008 "option": [
903 {"name": "BigLabel", "width_microns": 50800, "height_microns": 76200, 1009 {"name": "SmallLabel", "width_microns": 38100,
904 "is_default": true} 1010 "height_microns": 12700, "is_default": false},
905 ] 1011 {"name": "BigLabel", "width_microns": 50800,
906 }; 1012 "height_microns": 76200, "is_default": true}
907 this.setCapabilities(device); 1013 ]
1014 };
1015 this.setCapabilities(device);
908 1016
909 var otherOptions = $('other-options-settings'); 1017 var otherOptions = $('other-options-settings');
910 var headerFooter = otherOptions.querySelector('#header-footer-container'); 1018 var headerFooter =
1019 otherOptions.querySelector('#header-footer-container');
911 1020
912 // Check that options are collapsed (section is visible, because duplex is 1021 // Check that options are collapsed (section is visible, because duplex
913 // available). 1022 // is available).
914 checkSectionVisible(otherOptions, true); 1023 checkSectionVisible(otherOptions, true);
915 checkElementDisplayed(headerFooter, false); 1024 checkElementDisplayed(headerFooter, false);
916 1025
917 this.expandMoreSettings(); 1026 this.expandMoreSettings();
918 1027
919 // Big label should have header/footer 1028 // Big label should have header/footer
920 checkElementDisplayed(headerFooter, true); 1029 checkElementDisplayed(headerFooter, true);
921 1030
922 // Small label should not 1031 // Small label should not
923 printPreview.printTicketStore_.mediaSize.updateValue( 1032 this.printPreview_.printTicketStore_.mediaSize.updateValue(
924 device.capabilities.printer.media_size.option[0]); 1033 device.capabilities.printer.media_size.option[0]);
925 checkElementDisplayed(headerFooter, false); 1034 checkElementDisplayed(headerFooter, false);
926 1035
927 // Oriented in landscape, there should be enough space for header/footer. 1036 // Oriented in landscape, there should be enough space for
928 printPreview.printTicketStore_.landscape.updateValue(true); 1037 // header/footer.
929 checkElementDisplayed(headerFooter, true); 1038 this.printPreview_.printTicketStore_.landscape.updateValue(true);
1039 checkElementDisplayed(headerFooter, true);
930 1040
931 this.waitForAnimationToEnd('more-settings'); 1041 this.waitForAnimationToEnd('more-settings');
1042 }.bind(this));
932 }); 1043 });
933 1044
934 // Test that the color settings, one option, standard monochrome. 1045 // Test that the color settings, one option, standard monochrome.
935 TEST_F('PrintPreviewWebUITest', 'TestColorSettingsMonochrome', function() { 1046 TEST_F('PrintPreviewWebUITest', 'TestColorSettingsMonochrome', function() {
936 this.setInitialSettings(); 1047 this.setInitialSettings();
937 this.setLocalDestinations(); 1048 this.printPreview_.nativeLayer_.whenCalled('getInitialSettings').then(
1049 function() {
1050 this.setLocalDestinations();
938 1051
939 // Only one option, standard monochrome. 1052 // Only one option, standard monochrome.
940 var device = getCddTemplate("FooDevice"); 1053 var device = getCddTemplate("FooDevice");
941 device.capabilities.printer.color = { 1054 device.capabilities.printer.color = {
942 "option": [ 1055 "option": [
943 {"is_default": true, "type": "STANDARD_MONOCHROME"} 1056 {"is_default": true, "type": "STANDARD_MONOCHROME"}
944 ] 1057 ]
945 }; 1058 };
946 this.setCapabilities(device); 1059 this.setCapabilities(device);
947 1060
948 checkSectionVisible($('color-settings'), false); 1061 checkSectionVisible($('color-settings'), false);
949 1062
950 this.waitForAnimationToEnd('more-settings'); 1063 this.waitForAnimationToEnd('more-settings');
1064 }.bind(this));
951 }); 1065 });
952 1066
953 // Test that the color settings, one option, custom monochrome. 1067 // Test that the color settings, one option, custom monochrome.
954 TEST_F('PrintPreviewWebUITest', 'TestColorSettingsCustomMonochrome', 1068 TEST_F('PrintPreviewWebUITest', 'TestColorSettingsCustomMonochrome',
955 function() { 1069 function() {
956 this.setInitialSettings(); 1070 this.setInitialSettings();
957 this.setLocalDestinations(); 1071 this.printPreview_.nativeLayer_.whenCalled('getInitialSettings').then(
1072 function() {
1073 this.setLocalDestinations();
958 1074
959 // Only one option, standard monochrome. 1075 // Only one option, standard monochrome.
960 var device = getCddTemplate("FooDevice"); 1076 var device = getCddTemplate("FooDevice");
961 device.capabilities.printer.color = { 1077 device.capabilities.printer.color = {
962 "option": [ 1078 "option": [
963 {"is_default": true, "type": "CUSTOM_MONOCHROME", "vendor_id": "42"} 1079 {"is_default": true, "type": "CUSTOM_MONOCHROME",
964 ] 1080 "vendor_id": "42"}
965 }; 1081 ]
966 this.setCapabilities(device); 1082 };
1083 this.setCapabilities(device);
967 1084
968 checkSectionVisible($('color-settings'), false); 1085 checkSectionVisible($('color-settings'), false);
969 1086
970 this.waitForAnimationToEnd('more-settings'); 1087 this.waitForAnimationToEnd('more-settings');
1088 }.bind(this));
971 }); 1089 });
972 1090
973 // Test that the color settings, one option, standard color. 1091 // Test that the color settings, one option, standard color.
974 TEST_F('PrintPreviewWebUITest', 'TestColorSettingsColor', function() { 1092 TEST_F('PrintPreviewWebUITest', 'TestColorSettingsColor', function() {
975 this.setInitialSettings(); 1093 this.setInitialSettings();
976 this.setLocalDestinations(); 1094 this.printPreview_.nativeLayer_.whenCalled('getInitialSettings').then(
1095 function() {
1096 this.setLocalDestinations();
977 1097
978 var device = getCddTemplate("FooDevice"); 1098 var device = getCddTemplate("FooDevice");
979 device.capabilities.printer.color = { 1099 device.capabilities.printer.color = {
980 "option": [ 1100 "option": [
981 {"is_default": true, "type": "STANDARD_COLOR"} 1101 {"is_default": true, "type": "STANDARD_COLOR"}
982 ] 1102 ]
983 }; 1103 };
984 this.setCapabilities(device); 1104 this.setCapabilities(device);
985 1105
986 checkSectionVisible($('color-settings'), false); 1106 checkSectionVisible($('color-settings'), false);
987 1107
988 this.waitForAnimationToEnd('more-settings'); 1108 this.waitForAnimationToEnd('more-settings');
1109 }.bind(this));
989 }); 1110 });
990 1111
991 // Test that the color settings, one option, custom color. 1112 // Test that the color settings, one option, custom color.
992 TEST_F('PrintPreviewWebUITest', 'TestColorSettingsCustomColor', function() { 1113 TEST_F('PrintPreviewWebUITest', 'TestColorSettingsCustomColor', function() {
993 this.setInitialSettings(); 1114 this.setInitialSettings();
994 this.setLocalDestinations(); 1115 this.printPreview_.nativeLayer_.whenCalled('getInitialSettings').then(
1116 function() {
1117 this.setLocalDestinations();
995 1118
996 var device = getCddTemplate("FooDevice"); 1119 var device = getCddTemplate("FooDevice");
997 device.capabilities.printer.color = { 1120 device.capabilities.printer.color = {
998 "option": [ 1121 "option": [
999 {"is_default": true, "type": "CUSTOM_COLOR", "vendor_id": "42"} 1122 {"is_default": true, "type": "CUSTOM_COLOR", "vendor_id": "42"}
1000 ] 1123 ]
1001 }; 1124 };
1002 this.setCapabilities(device); 1125 this.setCapabilities(device);
1003 1126
1004 checkSectionVisible($('color-settings'), false); 1127 checkSectionVisible($('color-settings'), false);
1005 1128
1006 this.waitForAnimationToEnd('more-settings'); 1129 this.waitForAnimationToEnd('more-settings');
1130 }.bind(this));
1007 }); 1131 });
1008 1132
1009 // Test that the color settings, two options, both standard, defaults to color. 1133 // Test that the color settings, two options, both standard, defaults to color.
1010 TEST_F('PrintPreviewWebUITest', 'TestColorSettingsBothStandardDefaultColor', 1134 TEST_F('PrintPreviewWebUITest', 'TestColorSettingsBothStandardDefaultColor',
1011 function() { 1135 function() {
1012 this.setInitialSettings(); 1136 this.setInitialSettings();
1013 this.setLocalDestinations(); 1137 this.printPreview_.nativeLayer_.whenCalled('getInitialSettings').then(
1138 function() {
1139 this.setLocalDestinations();
1014 1140
1015 var device = getCddTemplate("FooDevice"); 1141 var device = getCddTemplate("FooDevice");
1016 device.capabilities.printer.color = { 1142 device.capabilities.printer.color = {
1017 "option": [ 1143 "option": [
1018 {"type": "STANDARD_MONOCHROME"}, 1144 {"type": "STANDARD_MONOCHROME"},
1019 {"is_default": true, "type": "STANDARD_COLOR"} 1145 {"is_default": true, "type": "STANDARD_COLOR"}
1020 ] 1146 ]
1021 }; 1147 };
1022 this.setCapabilities(device); 1148 this.setCapabilities(device);
1023 1149
1024 checkSectionVisible($('color-settings'), true); 1150 checkSectionVisible($('color-settings'), true);
1025 expectEquals( 1151 expectEquals(
1026 'color', 1152 'color',
1027 $('color-settings').querySelector('.color-settings-select').value); 1153 $('color-settings').querySelector('.color-settings-select').value);
1028 1154
1029 this.waitForAnimationToEnd('more-settings'); 1155 this.waitForAnimationToEnd('more-settings');
1156 }.bind(this));
1030 }); 1157 });
1031 1158
1032 // Test that the color settings, two options, both standard, defaults to 1159 // Test that the color settings, two options, both standard, defaults to
1033 // monochrome. 1160 // monochrome.
1034 TEST_F('PrintPreviewWebUITest', 1161 TEST_F('PrintPreviewWebUITest',
1035 'TestColorSettingsBothStandardDefaultMonochrome', function() { 1162 'TestColorSettingsBothStandardDefaultMonochrome', function() {
1036 this.setInitialSettings(); 1163 this.setInitialSettings();
1037 this.setLocalDestinations(); 1164 this.printPreview_.nativeLayer_.whenCalled('getInitialSettings').then(
1038 1165 function() {
1039 var device = getCddTemplate("FooDevice"); 1166 this.setLocalDestinations();
1040 device.capabilities.printer.color = { 1167
1041 "option": [ 1168 var device = getCddTemplate("FooDevice");
1042 {"is_default": true, "type": "STANDARD_MONOCHROME"}, 1169 device.capabilities.printer.color = {
1043 {"type": "STANDARD_COLOR"} 1170 "option": [
1044 ] 1171 {"is_default": true, "type": "STANDARD_MONOCHROME"},
1045 }; 1172 {"type": "STANDARD_COLOR"}
1046 this.setCapabilities(device); 1173 ]
1047 1174 };
1048 checkSectionVisible($('color-settings'), true); 1175 this.setCapabilities(device);
1049 expectEquals( 1176
1050 'bw', $('color-settings').querySelector('.color-settings-select').value); 1177 checkSectionVisible($('color-settings'), true);
1051 1178 expectEquals(
1052 this.waitForAnimationToEnd('more-settings'); 1179 'bw',
1180 $('color-settings').querySelector('.color-settings-select').value);
1181
1182 this.waitForAnimationToEnd('more-settings');
1183 }.bind(this));
1053 }); 1184 });
1054 1185
1055 // Test that the color settings, two options, both custom, defaults to color. 1186 // Test that the color settings, two options, both custom, defaults to color.
1056 TEST_F('PrintPreviewWebUITest', 1187 TEST_F('PrintPreviewWebUITest',
1057 'TestColorSettingsBothCustomDefaultColor', function() { 1188 'TestColorSettingsBothCustomDefaultColor', function() {
1058 this.setInitialSettings(); 1189 this.setInitialSettings();
1059 this.setLocalDestinations(); 1190 this.printPreview_.nativeLayer_.whenCalled('getInitialSettings').then(
1060 1191 function() {
1061 var device = getCddTemplate("FooDevice"); 1192 this.setLocalDestinations();
1062 device.capabilities.printer.color = { 1193
1063 "option": [ 1194 var device = getCddTemplate("FooDevice");
1064 {"type": "CUSTOM_MONOCHROME", "vendor_id": "42"}, 1195 device.capabilities.printer.color = {
1065 {"is_default": true, "type": "CUSTOM_COLOR", "vendor_id": "43"} 1196 "option": [
1066 ] 1197 {"type": "CUSTOM_MONOCHROME", "vendor_id": "42"},
1067 }; 1198 {"is_default": true, "type": "CUSTOM_COLOR", "vendor_id": "43"}
1068 this.setCapabilities(device); 1199 ]
1069 1200 };
1070 checkSectionVisible($('color-settings'), true); 1201 this.setCapabilities(device);
1071 expectEquals( 1202
1072 'color', 1203 checkSectionVisible($('color-settings'), true);
1073 $('color-settings').querySelector('.color-settings-select').value); 1204 expectEquals(
1074 1205 'color',
1075 this.waitForAnimationToEnd('more-settings'); 1206 $('color-settings').querySelector('.color-settings-select').value);
1207
1208 this.waitForAnimationToEnd('more-settings');
1209 }.bind(this));
1076 }); 1210 });
1077 1211
1078 // Test to verify that duplex settings are set according to the printer 1212 // Test to verify that duplex settings are set according to the printer
1079 // capabilities. 1213 // capabilities.
1080 TEST_F('PrintPreviewWebUITest', 'TestDuplexSettingsTrue', function() { 1214 TEST_F('PrintPreviewWebUITest', 'TestDuplexSettingsTrue', function() {
1081 this.setInitialSettings(); 1215 this.setInitialSettings();
1082 this.setLocalDestinations(); 1216 this.printPreview_.nativeLayer_.whenCalled('getInitialSettings').then(
1083 this.setCapabilities(getCddTemplate("FooDevice")); 1217 function() {
1084 1218 this.setLocalDestinations();
1085 var otherOptions = $('other-options-settings'); 1219 this.setCapabilities(getCddTemplate("FooDevice"));
1086 checkSectionVisible(otherOptions, true); 1220
1087 duplexContainer = otherOptions.querySelector('#duplex-container'); 1221 var otherOptions = $('other-options-settings');
1088 expectFalse(duplexContainer.hidden); 1222 checkSectionVisible(otherOptions, true);
1089 expectFalse(duplexContainer.querySelector('.checkbox').checked); 1223 duplexContainer = otherOptions.querySelector('#duplex-container');
1090 1224 expectFalse(duplexContainer.hidden);
1091 this.waitForAnimationToEnd('more-settings'); 1225 expectFalse(duplexContainer.querySelector('.checkbox').checked);
1226
1227 this.waitForAnimationToEnd('more-settings');
1228 }.bind(this));
1092 }); 1229 });
1093 1230
1094 // Test to verify that duplex settings are set according to the printer 1231 // Test to verify that duplex settings are set according to the printer
1095 // capabilities. 1232 // capabilities.
1096 TEST_F('PrintPreviewWebUITest', 'TestDuplexSettingsFalse', function() { 1233 TEST_F('PrintPreviewWebUITest', 'TestDuplexSettingsFalse', function() {
1097 this.setInitialSettings(); 1234 this.setInitialSettings();
1098 this.setLocalDestinations(); 1235 this.printPreview_.nativeLayer_.whenCalled('getInitialSettings').then(
1099 var device = getCddTemplate("FooDevice"); 1236 function() {
1100 delete device.capabilities.printer.duplex; 1237 this.setLocalDestinations();
1101 this.setCapabilities(device); 1238 var device = getCddTemplate("FooDevice");
1102 1239 delete device.capabilities.printer.duplex;
1103 // Check that it is collapsed. 1240 this.setCapabilities(device);
1104 var otherOptions = $('other-options-settings'); 1241
1105 checkSectionVisible(otherOptions, false); 1242 // Check that it is collapsed.
1106 1243 var otherOptions = $('other-options-settings');
1107 this.expandMoreSettings(); 1244 checkSectionVisible(otherOptions, false);
1108 1245
1109 // Now it should be visible. 1246 this.expandMoreSettings();
1110 checkSectionVisible(otherOptions, true); 1247
1111 expectTrue(otherOptions.querySelector('#duplex-container').hidden); 1248 // Now it should be visible.
1112 1249 checkSectionVisible(otherOptions, true);
1113 this.waitForAnimationToEnd('more-settings'); 1250 expectTrue(otherOptions.querySelector('#duplex-container').hidden);
1251
1252 this.waitForAnimationToEnd('more-settings');
1253 }.bind(this));
1114 }); 1254 });
1115 1255
1116 // Test that changing the selected printer updates the preview. 1256 // Test that changing the selected printer updates the preview.
1117 TEST_F('PrintPreviewWebUITest', 'TestPrinterChangeUpdatesPreview', function() { 1257 TEST_F('PrintPreviewWebUITest', 'TestPrinterChangeUpdatesPreview', function() {
1118 this.setInitialSettings(); 1258 this.setInitialSettings();
1119 this.setLocalDestinations(); 1259 this.printPreview_.nativeLayer_.whenCalled('getInitialSettings').then(
1120 this.setCapabilities(getCddTemplate("FooDevice")); 1260 function() {
1121 1261 this.setLocalDestinations();
1122 var previewGenerator = mock(print_preview.PreviewGenerator); 1262 this.setCapabilities(getCddTemplate("FooDevice"));
1123 printPreview.previewArea_.previewGenerator_ = previewGenerator.proxy(); 1263
1124 1264 var previewGenerator = mock(print_preview.PreviewGenerator);
1125 // The number of settings that can change due to a change in the destination 1265 this.printPreview_.previewArea_.previewGenerator_ =
1126 // that will therefore dispatch ticket item change events. 1266 previewGenerator.proxy();
1127 previewGenerator.expects(exactly(9)).requestPreview(); 1267
1128 1268 // The number of settings that can change due to a change in the
1129 var barDestination = 1269 // destination that will therefore dispatch ticket item change events.
1130 printPreview.destinationStore_.destinations().find(function(d) { 1270 previewGenerator.expects(exactly(9)).requestPreview();
1131 return d.id == 'BarDevice'; 1271
1132 }); 1272 var barDestination =
1133 1273 this.printPreview_.destinationStore_.destinations().find(
1134 printPreview.destinationStore_.selectDestination(barDestination); 1274 function(d) {
1135 1275 return d.id == 'BarDevice';
1136 var device = getCddTemplate("BarDevice"); 1276 });
1137 device.capabilities.printer.color = { 1277
1138 "option": [ 1278 this.printPreview_.destinationStore_.selectDestination(barDestination);
1139 {"is_default": true, "type": "STANDARD_MONOCHROME"} 1279
1140 ] 1280 var device = getCddTemplate("BarDevice");
1141 }; 1281 device.capabilities.printer.color = {
1142 this.setCapabilities(device); 1282 "option": [
1143 1283 {"is_default": true, "type": "STANDARD_MONOCHROME"}
1144 this.waitForAnimationToEnd('more-settings'); 1284 ]
1285 };
1286 this.setCapabilities(device);
1287
1288 this.waitForAnimationToEnd('more-settings');
1289 }.bind(this));
1145 }); 1290 });
1146 1291
1147 // Test that error message is displayed when plugin doesn't exist. 1292 // Test that error message is displayed when plugin doesn't exist.
1148 TEST_F('PrintPreviewWebUITest', 'TestNoPDFPluginErrorMessage', function() { 1293 TEST_F('PrintPreviewWebUITest', 'TestNoPDFPluginErrorMessage', function() {
1149 var previewAreaEl = $('preview-area'); 1294 this.setInitialSettings();
1150 1295 this.printPreview_.nativeLayer_.whenCalled('getInitialSettings').then(
1151 var loadingMessageEl = 1296 function() {
1152 previewAreaEl.getElementsByClassName('preview-area-loading-message')[0]; 1297 var previewAreaEl = $('preview-area');
1153 expectTrue(loadingMessageEl.hidden); 1298
1154 1299 var loadingMessageEl =
1155 var previewFailedMessageEl = previewAreaEl.getElementsByClassName( 1300 previewAreaEl.
1156 'preview-area-preview-failed-message')[0]; 1301 getElementsByClassName('preview-area-loading-message')[0];
1157 expectTrue(previewFailedMessageEl.hidden); 1302 expectTrue(loadingMessageEl.hidden);
1158 1303
1159 var printFailedMessageEl = 1304 var previewFailedMessageEl = previewAreaEl.getElementsByClassName(
1160 previewAreaEl.getElementsByClassName('preview-area-print-failed')[0]; 1305 'preview-area-preview-failed-message')[0];
1161 expectTrue(printFailedMessageEl.hidden); 1306 expectTrue(previewFailedMessageEl.hidden);
1162 1307
1163 var customMessageEl = 1308 var printFailedMessageEl =
1164 previewAreaEl.getElementsByClassName('preview-area-custom-message')[0]; 1309 previewAreaEl.
1165 expectFalse(customMessageEl.hidden); 1310 getElementsByClassName('preview-area-print-failed')[0];
1166 1311 expectTrue(printFailedMessageEl.hidden);
1167 testDone(); 1312
1313 var customMessageEl =
1314 previewAreaEl.
1315 getElementsByClassName('preview-area-custom-message')[0];
1316 expectFalse(customMessageEl.hidden);
1317
1318 testDone();
1319 });
1168 }); 1320 });
1169 1321
1170 // Test custom localized paper names. 1322 // Test custom localized paper names.
1171 TEST_F('PrintPreviewWebUITest', 'TestCustomPaperNames', function() { 1323 TEST_F('PrintPreviewWebUITest', 'TestCustomPaperNames', function() {
1172 this.setInitialSettings(); 1324 this.setInitialSettings();
1173 this.setLocalDestinations(); 1325 this.printPreview_.nativeLayer_.whenCalled('getInitialSettings').then(
1174 1326 function() {
1175 var customLocalizedMediaName = 'Vendor defined localized media name'; 1327 this.setLocalDestinations();
1176 var customMediaName = 'Vendor defined media name'; 1328
1177 1329 var customLocalizedMediaName = 'Vendor defined localized media name';
1178 var device = getCddTemplate("FooDevice"); 1330 var customMediaName = 'Vendor defined media name';
1179 device.capabilities.printer.media_size = { 1331
1180 option: [ 1332 var device = getCddTemplate("FooDevice");
1181 { name: 'CUSTOM', 1333 device.capabilities.printer.media_size = {
1182 width_microns: 15900, 1334 option: [
1183 height_microns: 79400, 1335 { name: 'CUSTOM',
1184 is_default: true, 1336 width_microns: 15900,
1185 custom_display_name_localized: [ 1337 height_microns: 79400,
1186 { locale: navigator.language, 1338 is_default: true,
1187 value: customLocalizedMediaName 1339 custom_display_name_localized: [
1188 } 1340 { locale: navigator.language,
1189 ] 1341 value: customLocalizedMediaName
1190 }, 1342 }
1191 { name: 'CUSTOM', 1343 ]
1192 width_microns: 15900, 1344 },
1193 height_microns: 79400, 1345 { name: 'CUSTOM',
1194 custom_display_name: customMediaName 1346 width_microns: 15900,
1195 } 1347 height_microns: 79400,
1196 ] 1348 custom_display_name: customMediaName
1197 }; 1349 }
1198 1350 ]
1199 this.setCapabilities(device); 1351 };
1200 1352
1201 this.expandMoreSettings(); 1353 this.setCapabilities(device);
1202 1354
1203 checkSectionVisible($('media-size-settings'), true); 1355 this.expandMoreSettings();
1204 var mediaSelect = $('media-size-settings').querySelector('.settings-select'); 1356
1205 // Check the default media item. 1357 checkSectionVisible($('media-size-settings'), true);
1206 expectEquals( 1358 var mediaSelect =
1207 customLocalizedMediaName, 1359 $('media-size-settings').querySelector('.settings-select');
1208 mediaSelect.options[mediaSelect.selectedIndex].text); 1360 // Check the default media item.
1209 // Check the other media item. 1361 expectEquals(
1210 expectEquals( 1362 customLocalizedMediaName,
1211 customMediaName, 1363 mediaSelect.options[mediaSelect.selectedIndex].text);
1212 mediaSelect.options[mediaSelect.selectedIndex == 0 ? 1 : 0].text); 1364 // Check the other media item.
1213 1365 expectEquals(
1214 this.waitForAnimationToEnd('more-settings'); 1366 customMediaName,
1367 mediaSelect.options[mediaSelect.selectedIndex == 0 ? 1 : 0].text);
1368
1369 this.waitForAnimationToEnd('more-settings');
1370 }.bind(this));
1215 }); 1371 });
1216 1372
1217 function getCddTemplateWithAdvancedSettings(printerId) { 1373 function getCddTemplateWithAdvancedSettings(printerId) {
1218 return { 1374 return {
1219 printerId: printerId, 1375 printerId: printerId,
1220 capabilities: { 1376 capabilities: {
1221 version: '1.0', 1377 version: '1.0',
1222 printer: { 1378 printer: {
1223 supported_content_type: [{content_type: 'application/pdf'}], 1379 supported_content_type: [{content_type: 'application/pdf'}],
1224 vendor_capability: 1380 vendor_capability:
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
1283 // testPluginCompatibility() being set to always return false. Enable button 1439 // testPluginCompatibility() being set to always return false. Enable button
1284 // to send click event. 1440 // to send click event.
1285 advancedOptionsSettingsButton.disabled = false; 1441 advancedOptionsSettingsButton.disabled = false;
1286 advancedOptionsSettingsButton.click(); 1442 advancedOptionsSettingsButton.click();
1287 } 1443 }
1288 1444
1289 // Test advanced settings with 1 capability (should not display settings search 1445 // Test advanced settings with 1 capability (should not display settings search
1290 // box). 1446 // box).
1291 TEST_F('PrintPreviewWebUITest', 'TestAdvancedSettings1Option', function() { 1447 TEST_F('PrintPreviewWebUITest', 'TestAdvancedSettings1Option', function() {
1292 var device = getCddTemplateWithAdvancedSettings("FooDevice"); 1448 var device = getCddTemplateWithAdvancedSettings("FooDevice");
1293 this.setupAdvancedSettingsTest(device); 1449 this.accessibilityIssuesAreErrors = false;
1450 this.setInitialSettings();
1451 this.printPreview_.nativeLayer_.whenCalled('getInitialSettings').then(
1452 function() {
1453 this.setupAdvancedSettingsTest(device);
1294 1454
1295 // Open the advanced settings overlay. 1455 // Open the advanced settings overlay.
1296 openAdvancedSettings(); 1456 openAdvancedSettings();
1297 1457
1298 // Check that advanced settings close button is now visible, 1458 // Check that advanced settings close button is now visible,
1299 // but not the search box (only 1 capability). 1459 // but not the search box (only 1 capability).
1300 var advancedSettingsCloseButton = $('advanced-settings'). 1460 var advancedSettingsCloseButton = $('advanced-settings').
1301 querySelector('.close-button'); 1461 querySelector('.close-button');
1302 checkElementDisplayed(advancedSettingsCloseButton, true); 1462 checkElementDisplayed(advancedSettingsCloseButton, true);
1303 checkElementDisplayed($('advanced-settings'). 1463 checkElementDisplayed($('advanced-settings').
1304 querySelector('.search-box-area'), false); 1464 querySelector('.search-box-area'), false);
1305 1465
1306 this.waitForAnimationToEnd('more-settings'); 1466 this.waitForAnimationToEnd('more-settings');
1467 }.bind(this));
1307 }); 1468 });
1308 1469
1309 1470
1310 // Test advanced settings with 2 capabilities (should have settings search box). 1471 // Test advanced settings with 2 capabilities (should have settings search box).
1311 TEST_F('PrintPreviewWebUITest', 'TestAdvancedSettings2Options', function() { 1472 TEST_F('PrintPreviewWebUITest', 'TestAdvancedSettings2Options', function() {
1312 var device = getCddTemplateWithAdvancedSettings("FooDevice"); 1473 var device = getCddTemplateWithAdvancedSettings("FooDevice");
1313 // Add new capability. 1474 // Add new capability.
1314 device.capabilities.printer.vendor_capability.push({ 1475 device.capabilities.printer.vendor_capability.push({
1315 display_name: 'Paper Type', 1476 display_name: 'Paper Type',
1316 id: 'Paper Type', 1477 id: 'Paper Type',
1317 type: 'SELECT', 1478 type: 'SELECT',
1318 select_cap: { 1479 select_cap: {
1319 option: [ 1480 option: [
1320 {display_name: 'Standard', value: 0, is_default: true}, 1481 {display_name: 'Standard', value: 0, is_default: true},
1321 {display_name: 'Recycled', value: 1}, 1482 {display_name: 'Recycled', value: 1},
1322 {display_name: 'Special', value: 2} 1483 {display_name: 'Special', value: 2}
1323 ] 1484 ]
1324 } 1485 }
1325 }); 1486 });
1326 this.setupAdvancedSettingsTest(device); 1487 this.accessibilityIssuesAreErrors = false;
1488 this.setInitialSettings();
1489 this.printPreview_.nativeLayer_.whenCalled('getInitialSettings').then(
1490 function() {
1491 this.setupAdvancedSettingsTest(device);
1327 1492
1328 // Open the advanced settings overlay. 1493 // Open the advanced settings overlay.
1329 openAdvancedSettings(); 1494 openAdvancedSettings();
1330 1495
1331 // Check advanced settings is visible and that the search box now 1496 // Check advanced settings is visible and that the search box now
1332 // appears. 1497 // appears.
1333 var advancedSettingsCloseButton = $('advanced-settings'). 1498 var advancedSettingsCloseButton = $('advanced-settings').
1334 querySelector('.close-button'); 1499 querySelector('.close-button');
1335 checkElementDisplayed(advancedSettingsCloseButton, true); 1500 checkElementDisplayed(advancedSettingsCloseButton, true);
1336 checkElementDisplayed($('advanced-settings'). 1501 checkElementDisplayed($('advanced-settings').
1337 querySelector('.search-box-area'), true); 1502 querySelector('.search-box-area'), true);
1338 1503
1339 this.waitForAnimationToEnd('more-settings'); 1504 this.waitForAnimationToEnd('more-settings');
1505 }.bind(this));
1340 }); 1506 });
1341 1507
1342 // Test that initialization with saved destination only issues one call 1508 // Test that initialization with saved destination only issues one call
1343 // to startPreview. 1509 // to startPreview.
1344 TEST_F('PrintPreviewWebUITest', 'TestInitIssuesOneRequest', function() { 1510 TEST_F('PrintPreviewWebUITest', 'TestInitIssuesOneRequest', function() {
1511 this.createPrintPreview();
1345 // Load in a bunch of recent destinations with non null capabilities. 1512 // Load in a bunch of recent destinations with non null capabilities.
1346 var origin = cr.isChromeOS ? 'chrome_os' : 'local'; 1513 var origin = cr.isChromeOS ? 'chrome_os' : 'local';
1347 var initSettings = { 1514 var initSettings = {
1348 version: 2, 1515 version: 2,
1349 recentDestinations: [1, 2, 3].map(function(i) { 1516 recentDestinations: [1, 2, 3].map(function(i) {
1350 return { 1517 return {
1351 id: 'ID' + i, origin: origin, account: '', 1518 id: 'ID' + i, origin: origin, account: '',
1352 capabilities: getCddTemplate('ID' + i), name: '', 1519 capabilities: getCddTemplate('ID' + i), name: '',
1353 extensionId: '', extensionName: '' 1520 extensionId: '', extensionName: ''
1354 }; 1521 };
1355 }), 1522 }),
1356 }; 1523 };
1357 this.initialSettings_.serializedAppStateStr_ = JSON.stringify(initSettings); 1524 this.initialSettings_.serializedAppStateStr_ = JSON.stringify(initSettings);
1358 this.setCapabilities(getCddTemplate('ID1')); 1525 this.setCapabilities(getCddTemplate('ID1'));
1359 this.setCapabilities(getCddTemplate('ID2')); 1526 this.setCapabilities(getCddTemplate('ID2'));
1360 this.setCapabilities(getCddTemplate('ID3')); 1527 this.setCapabilities(getCddTemplate('ID3'));
1361 1528
1362 // Use a real preview generator. 1529 // Use a real preview generator.
1363 printPreview.previewArea_.previewGenerator_ = 1530 this.printPreview_.previewArea_.previewGenerator_ =
1364 new print_preview.PreviewGenerator(printPreview.destinationStore_, 1531 new print_preview.PreviewGenerator(this.printPreview_.destinationStore_,
1365 printPreview.printTicketStore_, this.nativeLayer_, 1532 this.printPreview_.printTicketStore_, this.nativeLayer_,
1366 printPreview.documentInfo_); 1533 this.printPreview_.documentInfo_);
1367 1534
1368 // Preview generator starts out with inFlightRequestId_ == -1. The id 1535 // Preview generator starts out with inFlightRequestId_ == -1. The id
1369 // increments by 1 for each startGetPreview call it makes. It should only 1536 // increments by 1 for each startGetPreview call it makes. It should only
1370 // make one such call during initialization or there will be a race; see 1537 // make one such call during initialization or there will be a race; see
1371 // crbug.com/666595 1538 // crbug.com/666595
1372 expectEquals( 1539 expectEquals(
1373 -1, 1540 -1,
1374 printPreview.previewArea_.previewGenerator_.inFlightRequestId_); 1541 this.printPreview_.previewArea_.previewGenerator_.inFlightRequestId_);
1375 this.setInitialSettings(); 1542 this.setInitialSettings();
1376 expectEquals( 1543 this.printPreview_.nativeLayer_.whenCalled('getInitialSettings').then(
1377 0, 1544 function() {
1378 printPreview.previewArea_.previewGenerator_.inFlightRequestId_); 1545 expectEquals(
1379 testDone(); 1546 0,
1547 this.printPreview_.previewArea_.previewGenerator_.
1548 inFlightRequestId_);
1549 testDone();
1550 }.bind(this));
1380 }); 1551 });
1381 1552
1382 // Test that invalid settings errors disable the print preview and display 1553 // Test that invalid settings errors disable the print preview and display
1383 // an error and that the preview dialog can be recovered by selecting a 1554 // an error and that the preview dialog can be recovered by selecting a
1384 // new destination. 1555 // new destination.
1385 TEST_F('PrintPreviewWebUITest', 'TestInvalidSettingsError', function() { 1556 TEST_F('PrintPreviewWebUITest', 'TestInvalidSettingsError', function() {
1386 // Setup 1557 // Setup
1387 this.setInitialSettings(); 1558 this.setInitialSettings();
1388 this.setLocalDestinations(); 1559 this.printPreview_.nativeLayer_.whenCalled('getInitialSettings').then(
1389 this.setCapabilities(getCddTemplate("FooDevice")); 1560 function() {
1561 this.setLocalDestinations();
1562 this.setCapabilities(getCddTemplate("FooDevice"));
1390 1563
1391 // Manually enable the print header. This is needed since there is no 1564 // Manually enable the print header. This is needed since there is no
1392 // plugin during test, so it will be set as disabled normally. 1565 // plugin during test, so it will be set as disabled normally.
1393 printPreview.printHeader_.isEnabled = true; 1566 this.printPreview_.printHeader_.isEnabled = true;
1394 1567
1395 // There will be an error message in the preview area since the plugin is 1568 // There will be an error message in the preview area since the plugin
1396 // not running. However, it should not be the invalid settings error. 1569 // is not running. However, it should not be the invalid settings error.
1397 var previewAreaEl = $('preview-area'); 1570 var previewAreaEl = $('preview-area');
1398 var customMessageEl = 1571 var customMessageEl =
1399 previewAreaEl.getElementsByClassName('preview-area-custom-message')[0]; 1572 previewAreaEl.
1400 expectFalse(customMessageEl.hidden); 1573 getElementsByClassName('preview-area-custom-message')[0];
1401 var expectedMessageStart = 'The selected printer is not available or not ' + 1574 expectFalse(customMessageEl.hidden);
1402 'installed correctly.' 1575 var expectedMessageStart = 'The selected printer is not available or '
1403 expectFalse(customMessageEl.textContent.includes(expectedMessageStart)); 1576 + 'not installed correctly.'
1577 expectFalse(customMessageEl.textContent.includes(expectedMessageStart));
1404 1578
1405 // Verify that the print button is enabled. 1579 // Verify that the print button is enabled.
1406 var printHeader = $('print-header'); 1580 var printHeader = $('print-header');
1407 var printButton = printHeader.querySelector('button.print'); 1581 var printButton = printHeader.querySelector('button.print');
1408 checkElementDisplayed(printButton, true); 1582 checkElementDisplayed(printButton, true);
1409 expectFalse(printButton.disabled); 1583 expectFalse(printButton.disabled);
1410 1584
1411 // Report invalid settings error. 1585 // Report invalid settings error.
1412 this.dispatchInvalidSettings(); 1586 this.dispatchInvalidSettings();
1413 1587
1414 // Should be in an error state, print button disabled, invalid custom error 1588 // Should be in an error state, print button disabled, invalid custom
1415 // message shown. 1589 // error message shown.
1416 expectFalse(customMessageEl.hidden); 1590 expectFalse(customMessageEl.hidden);
1417 expectTrue(customMessageEl.textContent.includes(expectedMessageStart)); 1591 expectTrue(customMessageEl.textContent.includes(expectedMessageStart));
1418 expectTrue(printButton.disabled); 1592 expectTrue(printButton.disabled);
1419 1593
1420 // Select a new destination 1594 // Select a new destination
1421 var barDestination = 1595 var barDestination =
1422 printPreview.destinationStore_.destinations().find(function(d) { 1596 this.printPreview_.destinationStore_.destinations().find(
1423 return d.id == 'BarDevice'; 1597 function(d) {
1424 }); 1598 return d.id == 'BarDevice';
1599 });
1425 1600
1426 printPreview.destinationStore_.selectDestination(barDestination); 1601 this.printPreview_.destinationStore_.selectDestination(barDestination);
1427 1602
1428 // Dispatch events indicating capabilities were fetched and new preview has 1603 // Dispatch events indicating capabilities were fetched and new preview
1429 // loaded. 1604 // has loaded.
1430 this.setCapabilities(getCddTemplate("BarDevice")); 1605 this.setCapabilities(getCddTemplate("BarDevice"));
1431 this.dispatchPreviewDone(); 1606 this.dispatchPreviewDone();
1432 1607
1433 // Has active print button and successfully "prints", indicating recovery 1608 // Has active print button and successfully "prints", indicating
1434 // from error state. 1609 // recovery from error state.
1435 expectFalse(printButton.disabled); 1610 expectFalse(printButton.disabled);
1436 expectFalse(this.hasPrinted()); 1611 expectFalse(this.hasPrinted());
1437 printButton.click(); 1612 printButton.click();
1438 expectTrue(this.hasPrinted()); 1613 expectTrue(this.hasPrinted());
1439 testDone(); 1614 testDone();
1615 }.bind(this));
1440 }); 1616 });
1441 1617
1442 // Test the preview generator to make sure the generate draft parameter is set 1618 // Test the preview generator to make sure the generate draft parameter is set
1443 // correctly. It should be false if the only change is the page range. 1619 // correctly. It should be false if the only change is the page range.
1444 TEST_F('PrintPreviewWebUITest', 'TestGenerateDraft', function() { 1620 TEST_F('PrintPreviewWebUITest', 'TestGenerateDraft', function() {
1621 this.createPrintPreview();
1622
1445 // Use a real preview generator. 1623 // Use a real preview generator.
1446 printPreview.previewArea_.previewGenerator_ = 1624 this.printPreview_.previewArea_.previewGenerator_ =
1447 new print_preview.PreviewGenerator(printPreview.destinationStore_, 1625 new print_preview.PreviewGenerator(this.printPreview_.destinationStore_,
1448 printPreview.printTicketStore_, this.nativeLayer_, 1626 this.printPreview_.printTicketStore_, this.nativeLayer_,
1449 printPreview.documentInfo_); 1627 this.printPreview_.documentInfo_);
1450 1628
1451 this.setInitialSettings(); 1629 this.setInitialSettings();
1452 this.setLocalDestinations(); 1630 this.printPreview_.nativeLayer_.whenCalled('getInitialSettings').then(
1453 this.setCapabilities(getCddTemplate("FooDevice")); 1631 function() {
1632 this.setLocalDestinations();
1633 this.setCapabilities(getCddTemplate("FooDevice"));
1454 1634
1455 // The first request should generate draft because there was no previous print 1635 // The first request should generate draft because there was no
1456 // preview draft. 1636 // previous print preview draft.
1457 expectTrue(this.generateDraft()); 1637 expectTrue(this.generateDraft());
1458 1638
1459 // Change the page range - no new draft needed. 1639 // Change the page range - no new draft needed.
1460 printPreview.printTicketStore_.pageRange.updateValue("2"); 1640 this.printPreview_.printTicketStore_.pageRange.updateValue("2");
1461 expectFalse(this.generateDraft()); 1641 expectFalse(this.generateDraft());
1462 1642
1463 // Change the margin type - need to regenerate again. 1643 // Change the margin type - need to regenerate again.
1464 printPreview.printTicketStore_.marginsType.updateValue( 1644 this.printPreview_.printTicketStore_.marginsType.updateValue(
1465 print_preview.ticket_items.MarginsTypeValue.NO_MARGINS); 1645 print_preview.ticket_items.MarginsTypeValue.NO_MARGINS);
1466 expectTrue(this.generateDraft()); 1646 expectTrue(this.generateDraft());
1467 1647
1468 testDone(); 1648 testDone();
1649 }.bind(this));
1469 }); 1650 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698