OLD | NEW |
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 cr.define('print_preview', function() { | 5 cr.define('print_preview', function() { |
6 'use strict'; | 6 'use strict'; |
7 | 7 |
8 /** | 8 /** |
9 * An interface to the native Chromium printing system layer. | 9 * An interface to the native Chromium printing system layer. |
10 * @constructor | 10 * @constructor |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
47 * @const | 47 * @const |
48 */ | 48 */ |
49 NativeLayer.EventType = { | 49 NativeLayer.EventType = { |
50 CAPABILITIES_SET: 'print_preview.NativeLayer.CAPABILITIES_SET', | 50 CAPABILITIES_SET: 'print_preview.NativeLayer.CAPABILITIES_SET', |
51 CLOUD_PRINT_ENABLE: 'print_preview.NativeLayer.CLOUD_PRINT_ENABLE', | 51 CLOUD_PRINT_ENABLE: 'print_preview.NativeLayer.CLOUD_PRINT_ENABLE', |
52 DESTINATIONS_RELOAD: 'print_preview.NativeLayer.DESTINATIONS_RELOAD', | 52 DESTINATIONS_RELOAD: 'print_preview.NativeLayer.DESTINATIONS_RELOAD', |
53 DISABLE_SCALING: 'print_preview.NativeLayer.DISABLE_SCALING', | 53 DISABLE_SCALING: 'print_preview.NativeLayer.DISABLE_SCALING', |
54 FILE_SELECTION_CANCEL: 'print_preview.NativeLayer.FILE_SELECTION_CANCEL', | 54 FILE_SELECTION_CANCEL: 'print_preview.NativeLayer.FILE_SELECTION_CANCEL', |
55 FILE_SELECTION_COMPLETE: | 55 FILE_SELECTION_COMPLETE: |
56 'print_preview.NativeLayer.FILE_SELECTION_COMPLETE', | 56 'print_preview.NativeLayer.FILE_SELECTION_COMPLETE', |
| 57 GET_CAPABILITIES_FAIL: 'print_preview.NativeLayer.GET_CAPABILITIES_FAIL', |
57 INITIAL_SETTINGS_SET: 'print_preview.NativeLayer.INITIAL_SETTINGS_SET', | 58 INITIAL_SETTINGS_SET: 'print_preview.NativeLayer.INITIAL_SETTINGS_SET', |
58 LOCAL_DESTINATIONS_SET: 'print_preview.NativeLayer.LOCAL_DESTINATIONS_SET', | 59 LOCAL_DESTINATIONS_SET: 'print_preview.NativeLayer.LOCAL_DESTINATIONS_SET', |
59 PAGE_COUNT_READY: 'print_preview.NativeLayer.PAGE_COUNT_READY', | 60 PAGE_COUNT_READY: 'print_preview.NativeLayer.PAGE_COUNT_READY', |
60 PAGE_LAYOUT_READY: 'print_preview.NativeLayer.PAGE_LAYOUT_READY', | 61 PAGE_LAYOUT_READY: 'print_preview.NativeLayer.PAGE_LAYOUT_READY', |
61 PAGE_PREVIEW_READY: 'print_preview.NativeLayer.PAGE_PREVIEW_READY', | 62 PAGE_PREVIEW_READY: 'print_preview.NativeLayer.PAGE_PREVIEW_READY', |
62 PREVIEW_GENERATION_DONE: | 63 PREVIEW_GENERATION_DONE: |
63 'print_preview.NativeLayer.PREVIEW_GENERATION_DONE', | 64 'print_preview.NativeLayer.PREVIEW_GENERATION_DONE', |
64 PREVIEW_GENERATION_FAIL: | 65 PREVIEW_GENERATION_FAIL: |
65 'print_preview.NativeLayer.PREVIEW_GENERATION_FAIL', | 66 'print_preview.NativeLayer.PREVIEW_GENERATION_FAIL', |
66 PREVIEW_RELOAD: 'print_preview.NativeLayer.PREVIEW_RELOAD', | 67 PREVIEW_RELOAD: 'print_preview.NativeLayer.PREVIEW_RELOAD', |
(...skipping 14 matching lines...) Expand all Loading... |
81 /** | 82 /** |
82 * Enumeration of color modes used by Chromium. | 83 * Enumeration of color modes used by Chromium. |
83 * @enum {number} | 84 * @enum {number} |
84 * @private | 85 * @private |
85 */ | 86 */ |
86 NativeLayer.ColorMode_ = { | 87 NativeLayer.ColorMode_ = { |
87 GRAY: 1, | 88 GRAY: 1, |
88 COLOR: 2 | 89 COLOR: 2 |
89 }; | 90 }; |
90 | 91 |
| 92 /** |
| 93 * Version of the serialized state of the print preview. |
| 94 * @type {number} |
| 95 * @const |
| 96 * @private |
| 97 */ |
| 98 NativeLayer.SERIALIZED_STATE_VERSION_ = 1; |
| 99 |
91 NativeLayer.prototype = { | 100 NativeLayer.prototype = { |
92 __proto__: cr.EventTarget.prototype, | 101 __proto__: cr.EventTarget.prototype, |
93 | 102 |
94 /** Gets the initial settings to initialize the print preview with. */ | 103 /** Gets the initial settings to initialize the print preview with. */ |
95 startGetInitialSettings: function() { | 104 startGetInitialSettings: function() { |
96 chrome.send('getInitialSettings'); | 105 chrome.send('getInitialSettings'); |
97 }, | 106 }, |
98 | 107 |
99 /** | 108 /** |
100 * Requests the system's local print destinations. A LOCAL_DESTINATIONS_SET | 109 * Requests the system's local print destinations. A LOCAL_DESTINATIONS_SET |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
189 }, | 198 }, |
190 | 199 |
191 /** | 200 /** |
192 * Persists the selected destination and print ticket for the next print | 201 * Persists the selected destination and print ticket for the next print |
193 * session. | 202 * session. |
194 * @param {!print_preview.Destination} destination Destination to save. | 203 * @param {!print_preview.Destination} destination Destination to save. |
195 * @param {!print_preview.PrintTicketStore} printTicketStore Used for | 204 * @param {!print_preview.PrintTicketStore} printTicketStore Used for |
196 * generating the serialized print ticket to persist. | 205 * generating the serialized print ticket to persist. |
197 */ | 206 */ |
198 startSaveDestinationAndTicket: function(destination, printTicketStore) { | 207 startSaveDestinationAndTicket: function(destination, printTicketStore) { |
199 chrome.send('saveLastPrinter', [destination.id, '' /*TODO(rltoscano)*/]); | 208 // TODO(rltoscano): Implement a comprehensive serialization process. |
| 209 var printPreviewSerializedState = { |
| 210 'version': print_preview.NativeLayer.SERIALIZED_STATE_VERSION_, |
| 211 'isLocalDestination': |
| 212 destination.type == print_preview.Destination.Type.LOCAL |
| 213 }; |
| 214 chrome.send( |
| 215 'saveLastPrinter', |
| 216 [destination.id, JSON.stringify(printPreviewSerializedState)]); |
200 }, | 217 }, |
201 | 218 |
202 /** | 219 /** |
203 * Requests that the document be printed. | 220 * Requests that the document be printed. |
204 * @param {!print_preview.Destination} destination Destination to print to. | 221 * @param {!print_preview.Destination} destination Destination to print to. |
205 * @param {!print_preview.PrintTicketStore} printTicketStore Used to get the | 222 * @param {!print_preview.PrintTicketStore} printTicketStore Used to get the |
206 * state of the print ticket. | 223 * state of the print ticket. |
207 * @param {print_preview.CloudPrintInterface} cloudPrintInterface Interface | 224 * @param {print_preview.CloudPrintInterface} cloudPrintInterface Interface |
208 * to Google Cloud Print. | 225 * to Google Cloud Print. |
209 * @param {boolean=} opt_isOpenPdfInPreview Whether to open the PDF in the | 226 * @param {boolean=} opt_isOpenPdfInPreview Whether to open the PDF in the |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
347 initialSettings['marginRight'] || 0, | 364 initialSettings['marginRight'] || 0, |
348 initialSettings['marginBottom'] || 0, | 365 initialSettings['marginBottom'] || 0, |
349 initialSettings['marginLeft'] || 0); | 366 initialSettings['marginLeft'] || 0); |
350 } | 367 } |
351 | 368 |
352 var marginsType = null; | 369 var marginsType = null; |
353 if (initialSettings.hasOwnProperty('marginsType')) { | 370 if (initialSettings.hasOwnProperty('marginsType')) { |
354 marginsType = initialSettings['marginsType']; | 371 marginsType = initialSettings['marginsType']; |
355 } | 372 } |
356 | 373 |
| 374 // TODO(rltoscano): Replace this loading of serialized state with a |
| 375 // comprehensive version. |
| 376 var serializedPrintPreviewState = |
| 377 JSON.parse(initialSettings['cloudPrintData'] || '{}'); |
| 378 var isLocalDestination = true; |
| 379 if (serializedPrintPreviewState && |
| 380 serializedPrintPreviewState.version == 1) { |
| 381 isLocalDestination = serializedPrintPreviewState.isLocalDestination; |
| 382 } |
| 383 |
357 var nativeInitialSettings = new print_preview.NativeInitialSettings( | 384 var nativeInitialSettings = new print_preview.NativeInitialSettings( |
358 initialSettings['printAutomaticallyInKioskMode'] || false, | 385 initialSettings['printAutomaticallyInKioskMode'] || false, |
359 numberFormatSymbols[0] || ',', | 386 numberFormatSymbols[0] || ',', |
360 numberFormatSymbols[1] || '.', | 387 numberFormatSymbols[1] || '.', |
361 unitType, | 388 unitType, |
362 initialSettings['previewModifiable'] || false, | 389 initialSettings['previewModifiable'] || false, |
363 initialSettings['initiatorTabTitle'] || '', | 390 initialSettings['initiatorTabTitle'] || '', |
364 marginsType, | 391 marginsType, |
365 customMargins, | 392 customMargins, |
366 initialSettings['duplex'] || false, | 393 initialSettings['duplex'] || false, |
367 initialSettings['headerFooterEnabled'] || false, | 394 initialSettings['headerFooterEnabled'] || false, |
368 initialSettings['printerName'] || null); | 395 initialSettings['printerName'] || null, |
| 396 isLocalDestination); |
369 | 397 |
370 var initialSettingsSetEvent = new cr.Event( | 398 var initialSettingsSetEvent = new cr.Event( |
371 NativeLayer.EventType.INITIAL_SETTINGS_SET); | 399 NativeLayer.EventType.INITIAL_SETTINGS_SET); |
372 initialSettingsSetEvent.initialSettings = nativeInitialSettings; | 400 initialSettingsSetEvent.initialSettings = nativeInitialSettings; |
373 this.dispatchEvent(initialSettingsSetEvent); | 401 this.dispatchEvent(initialSettingsSetEvent); |
374 }, | 402 }, |
375 | 403 |
376 /** | 404 /** |
377 * Turn on the integration of Cloud Print. | 405 * Turn on the integration of Cloud Print. |
378 * @param {string} cloudPrintURL The URL to use for cloud print servers. | 406 * @param {string} cloudPrintURL The URL to use for cloud print servers. |
(...skipping 27 matching lines...) Expand all Loading... |
406 */ | 434 */ |
407 onUpdateWithPrinterCapabilities_: function(settingsInfo) { | 435 onUpdateWithPrinterCapabilities_: function(settingsInfo) { |
408 var capsSetEvent = new cr.Event(NativeLayer.EventType.CAPABILITIES_SET); | 436 var capsSetEvent = new cr.Event(NativeLayer.EventType.CAPABILITIES_SET); |
409 capsSetEvent.settingsInfo = settingsInfo; | 437 capsSetEvent.settingsInfo = settingsInfo; |
410 this.dispatchEvent(capsSetEvent); | 438 this.dispatchEvent(capsSetEvent); |
411 }, | 439 }, |
412 | 440 |
413 /** | 441 /** |
414 * Called when native layer gets settings information for a requested local | 442 * Called when native layer gets settings information for a requested local |
415 * destination. | 443 * destination. |
416 * @param {Object} printer_name printer affected by error. | 444 * @param {string} printerId printer affected by error. |
417 * @private | 445 * @private |
418 */ | 446 */ |
419 onFailedToGetPrinterCapabilities_: function(printer_name) { | 447 onFailedToGetPrinterCapabilities_: function(destinationId) { |
420 // TODO(rltoscano): Switch to the next printer. | 448 var getCapsFailEvent = new cr.Event( |
421 console.log('onFailedToGetPrinterCapabilities: ' + printer_name); | 449 NativeLayer.EventType.GET_CAPABILITIES_FAIL); |
| 450 getCapsFailEvent.destinationId = destinationId; |
| 451 this.dispatchEvent(getCapsFailEvent); |
422 }, | 452 }, |
423 | 453 |
424 /** Reloads the printer list. */ | 454 /** Reloads the printer list. */ |
425 onReloadPrintersList_: function() { | 455 onReloadPrintersList_: function() { |
426 cr.dispatchSimpleEvent(this, NativeLayer.EventType.DESTINATIONS_RELOAD); | 456 cr.dispatchSimpleEvent(this, NativeLayer.EventType.DESTINATIONS_RELOAD); |
427 }, | 457 }, |
428 | 458 |
429 /** | 459 /** |
430 * Called from the C++ layer. | 460 * Called from the C++ layer. |
431 * Take the PDF data handed to us and submit it to the cloud, closing the | 461 * Take the PDF data handed to us and submit it to the cloud, closing the |
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
590 * modifiable. | 620 * modifiable. |
591 * @param {string} documentTitle Title of the document. | 621 * @param {string} documentTitle Title of the document. |
592 * @param {print_preview.ticket_items.MarginsType.Value} marginsType Initial | 622 * @param {print_preview.ticket_items.MarginsType.Value} marginsType Initial |
593 * margins type. | 623 * margins type. |
594 * @param {print_preview.Margins} customMargins Initial custom margins. | 624 * @param {print_preview.Margins} customMargins Initial custom margins. |
595 * @param {boolean} isDuplexEnabled Whether duplexing is initially enabled. | 625 * @param {boolean} isDuplexEnabled Whether duplexing is initially enabled. |
596 * @param {boolean} isHeaderFooterEnabled Whether the header-footer is | 626 * @param {boolean} isHeaderFooterEnabled Whether the header-footer is |
597 * initially enabled. | 627 * initially enabled. |
598 * @param {?string} initialDestinationId ID of the destination to initially | 628 * @param {?string} initialDestinationId ID of the destination to initially |
599 * select. | 629 * select. |
| 630 * @param {boolean} isLocalDestination Whether the initial destination is |
| 631 * local. |
600 * @constructor | 632 * @constructor |
601 */ | 633 */ |
602 function NativeInitialSettings( | 634 function NativeInitialSettings( |
603 isInKioskAutoPrintMode, | 635 isInKioskAutoPrintMode, |
604 thousandsDelimeter, | 636 thousandsDelimeter, |
605 decimalDelimeter, | 637 decimalDelimeter, |
606 unitType, | 638 unitType, |
607 isDocumentModifiable, | 639 isDocumentModifiable, |
608 documentTitle, | 640 documentTitle, |
609 marginsType, | 641 marginsType, |
610 customMargins, | 642 customMargins, |
611 isDuplexEnabled, | 643 isDuplexEnabled, |
612 isHeaderFooterEnabled, | 644 isHeaderFooterEnabled, |
613 initialDestinationId) { | 645 initialDestinationId, |
| 646 isLocalDestination) { |
614 | 647 |
615 /** | 648 /** |
616 * Whether the print preview should be in auto-print mode. | 649 * Whether the print preview should be in auto-print mode. |
617 * @type {boolean} | 650 * @type {boolean} |
618 * @private | 651 * @private |
619 */ | 652 */ |
620 this.isInKioskAutoPrintMode_ = isInKioskAutoPrintMode; | 653 this.isInKioskAutoPrintMode_ = isInKioskAutoPrintMode; |
621 | 654 |
622 /** | 655 /** |
623 * Character delimeter of thousands digits. | 656 * Character delimeter of thousands digits. |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
681 * @private | 714 * @private |
682 */ | 715 */ |
683 this.isHeaderFooterEnabled_ = isHeaderFooterEnabled; | 716 this.isHeaderFooterEnabled_ = isHeaderFooterEnabled; |
684 | 717 |
685 /** | 718 /** |
686 * ID of the initially selected destination. | 719 * ID of the initially selected destination. |
687 * @type {?string} | 720 * @type {?string} |
688 * @private | 721 * @private |
689 */ | 722 */ |
690 this.initialDestinationId_ = initialDestinationId; | 723 this.initialDestinationId_ = initialDestinationId; |
| 724 |
| 725 /** |
| 726 * Whether the initial destination is local. |
| 727 * @type {boolean} |
| 728 * @private |
| 729 */ |
| 730 this.isLocalDestination_ = isLocalDestination; |
691 }; | 731 }; |
692 | 732 |
693 NativeInitialSettings.prototype = { | 733 NativeInitialSettings.prototype = { |
694 /** | 734 /** |
695 * @return {boolean} Whether the print preview should be in auto-print mode. | 735 * @return {boolean} Whether the print preview should be in auto-print mode. |
696 */ | 736 */ |
697 get isInKioskAutoPrintMode() { | 737 get isInKioskAutoPrintMode() { |
698 return this.isInKioskAutoPrintMode_; | 738 return this.isInKioskAutoPrintMode_; |
699 }, | 739 }, |
700 | 740 |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
745 }, | 785 }, |
746 | 786 |
747 /** @return {boolean} Whether the header-footer is initially enabled. */ | 787 /** @return {boolean} Whether the header-footer is initially enabled. */ |
748 get isHeaderFooterEnabled() { | 788 get isHeaderFooterEnabled() { |
749 return this.isHeaderFooterEnabled_; | 789 return this.isHeaderFooterEnabled_; |
750 }, | 790 }, |
751 | 791 |
752 /** @return {?string} ID of the initially selected destination. */ | 792 /** @return {?string} ID of the initially selected destination. */ |
753 get initialDestinationId() { | 793 get initialDestinationId() { |
754 return this.initialDestinationId_; | 794 return this.initialDestinationId_; |
| 795 }, |
| 796 |
| 797 /** @return {boolean} Whether the initial destination is local. */ |
| 798 get isLocalDestination() { |
| 799 return this.isLocalDestination_; |
755 } | 800 } |
756 }; | 801 }; |
757 | 802 |
758 // Export | 803 // Export |
759 return { | 804 return { |
760 NativeInitialSettings: NativeInitialSettings, | 805 NativeInitialSettings: NativeInitialSettings, |
761 NativeLayer: NativeLayer | 806 NativeLayer: NativeLayer |
762 }; | 807 }; |
763 }); | 808 }); |
OLD | NEW |