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

Side by Side Diff: chrome/browser/resources/print_preview/data/destination_store.js

Issue 294923005: Add media size capability to PDF printer. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Retrieve PDF printer capabilites via the same API as for any other local printer. Created 6 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 | Annotate | Revision Log
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 cr.define('print_preview', function() { 5 cr.define('print_preview', function() {
6 'use strict'; 6 'use strict';
7 7
8 /** 8 /**
9 * A data store that stores destinations and dispatches events when the data 9 * A data store that stores destinations and dispatches events when the data
10 * store changes. 10 * store changes.
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
187 187
188 /** 188 /**
189 * Amount of time spent searching for privet destination, in milliseconds. 189 * Amount of time spent searching for privet destination, in milliseconds.
190 * @type {number} 190 * @type {number}
191 * @const 191 * @const
192 * @private 192 * @private
193 */ 193 */
194 DestinationStore.PRIVET_SEARCH_DURATION_ = 2000; 194 DestinationStore.PRIVET_SEARCH_DURATION_ = 2000;
195 195
196 /** 196 /**
197 * Creates a local PDF print destination. 197 * Localizes printer capabilities.
198 * @return {!print_preview.Destination} Created print destination. 198 * @param {!Object} capabilities Printer capabilities to localize.
199 * @return {!Object} Localized capabilities.
199 * @private 200 * @private
200 */ 201 */
201 DestinationStore.createLocalPdfPrintDestination_ = function() { 202 DestinationStore.localizeCapabilities_ = function(capabilities) {
202 var dest = new print_preview.Destination( 203 var mediaSize = capabilities.printer.media_size;
203 print_preview.Destination.GooglePromotedId.SAVE_AS_PDF, 204 var mediaDisplayNames = {
204 print_preview.Destination.Type.LOCAL, 205 'ISO_A4': 'A4',
205 print_preview.Destination.Origin.LOCAL, 206 'ISO_A3': 'A3',
206 localStrings.getString('printToPDF'), 207 'NA_LETTER': 'Letter',
207 false /*isRecent*/, 208 'NA_LEGAL': 'Legal',
208 print_preview.Destination.ConnectionStatus.ONLINE); 209 'NA_LEDGER': 'Tabloid'
209 dest.capabilities = {
210 version: '1.0',
211 printer: {
212 page_orientation: {
213 option: [
214 {type: 'AUTO', is_default: true},
215 {type: 'PORTRAIT'},
216 {type: 'LANDSCAPE'}
217 ]
218 },
219 color: { option: [{type: 'STANDARD_COLOR', is_default: true}] }
220 }
221 }; 210 };
222 return dest; 211 for (var i = 0, media; media = mediaSize.option[i]; i++) {
212 media.custom_display_name = mediaDisplayNames[media.name] || media.name;
213 }
214 return capabilities;
223 }; 215 };
224 216
225 DestinationStore.prototype = { 217 DestinationStore.prototype = {
226 __proto__: cr.EventTarget.prototype, 218 __proto__: cr.EventTarget.prototype,
227 219
228 /** 220 /**
229 * @param {string=} opt_account Account to filter destinations by. When 221 * @param {string=} opt_account Account to filter destinations by. When
230 * omitted, all destinations are returned. 222 * omitted, all destinations are returned.
231 * @return {!Array.<!print_preview.Destination>} List of destinations 223 * @return {!Array.<!print_preview.Destination>} List of destinations
232 * accessible by the {@code account}. 224 * accessible by the {@code account}.
(...skipping 416 matching lines...) Expand 10 before | Expand all | Expand 10 after
649 this.nativeLayer_, 641 this.nativeLayer_,
650 print_preview.NativeLayer.EventType.PRIVET_PRINTER_CHANGED, 642 print_preview.NativeLayer.EventType.PRIVET_PRINTER_CHANGED,
651 this.onPrivetPrinterAdded_.bind(this)); 643 this.onPrivetPrinterAdded_.bind(this));
652 this.tracker_.add( 644 this.tracker_.add(
653 this.nativeLayer_, 645 this.nativeLayer_,
654 print_preview.NativeLayer.EventType.PRIVET_CAPABILITIES_SET, 646 print_preview.NativeLayer.EventType.PRIVET_CAPABILITIES_SET,
655 this.onPrivetCapabilitiesSet_.bind(this)); 647 this.onPrivetCapabilitiesSet_.bind(this));
656 }, 648 },
657 649
658 /** 650 /**
651 * Creates a local PDF print destination.
652 * @return {!print_preview.Destination} Created print destination.
653 * @private
654 */
655 createLocalPdfPrintDestination_: function() {
656 return new print_preview.Destination(
657 print_preview.Destination.GooglePromotedId.SAVE_AS_PDF,
658 print_preview.Destination.Type.LOCAL,
659 print_preview.Destination.Origin.LOCAL,
660 localStrings.getString('printToPDF'),
661 false /*isRecent*/,
662 print_preview.Destination.ConnectionStatus.ONLINE);
663 },
664
665 /**
659 * Resets the state of the destination store to its initial state. 666 * Resets the state of the destination store to its initial state.
660 * @private 667 * @private
661 */ 668 */
662 reset_: function() { 669 reset_: function() {
663 this.destinations_ = []; 670 this.destinations_ = [];
664 this.destinationMap_ = {}; 671 this.destinationMap_ = {};
665 this.selectDestination(null); 672 this.selectDestination(null);
666 this.loadedCloudOrigins_ = {}; 673 this.loadedCloudOrigins_ = {};
667 this.hasLoadedAllLocalDestinations_ = false; 674 this.hasLoadedAllLocalDestinations_ = false;
668 this.insertDestination_( 675 // TODO(alekseys): Create PDF printer in the native code and send its
669 DestinationStore.createLocalPdfPrintDestination_()); 676 // capabilities back with other local printers.
677 this.insertDestination_(this.createLocalPdfPrintDestination_());
670 this.resetAutoSelectTimeout_(); 678 this.resetAutoSelectTimeout_();
671 }, 679 },
672 680
673 /** 681 /**
674 * Resets destination auto selection timeout. 682 * Resets destination auto selection timeout.
675 * @private 683 * @private
676 */ 684 */
677 resetAutoSelectTimeout_: function() { 685 resetAutoSelectTimeout_: function() {
678 this.cancelAutoSelectTimeout_(); 686 this.cancelAutoSelectTimeout_();
679 this.autoSelectTimeout_ = 687 this.autoSelectTimeout_ =
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
716 * destination. 724 * destination.
717 * @private 725 * @private
718 */ 726 */
719 onLocalDestinationCapabilitiesSet_: function(event) { 727 onLocalDestinationCapabilitiesSet_: function(event) {
720 var destinationId = event.settingsInfo['printerId']; 728 var destinationId = event.settingsInfo['printerId'];
721 var key = this.getDestinationKey_( 729 var key = this.getDestinationKey_(
722 print_preview.Destination.Origin.LOCAL, 730 print_preview.Destination.Origin.LOCAL,
723 destinationId, 731 destinationId,
724 ''); 732 '');
725 var destination = this.destinationMap_[key]; 733 var destination = this.destinationMap_[key];
726 var capabilities = print_preview.LocalCapabilitiesParser.parse( 734 // Special case for PDF printer (until local printers capabilities are
735 // reported in CDD format too).
736 if (destinationId ==
737 print_preview.Destination.GooglePromotedId.SAVE_AS_PDF) {
738 if (destination) {
739 destination.capabilities = DestinationStore.localizeCapabilities_(
740 event.settingsInfo.capabilities);
741 }
742 } else {
743 var capabilities = print_preview.LocalCapabilitiesParser.parse(
727 event.settingsInfo); 744 event.settingsInfo);
728 if (destination) { 745 if (destination) {
729 // In case there were multiple capabilities request for this local 746 // In case there were multiple capabilities request for this local
730 // destination, just ignore the later ones. 747 // destination, just ignore the later ones.
731 if (destination.capabilities != null) { 748 if (destination.capabilities != null) {
732 return; 749 return;
750 }
751 destination.capabilities = capabilities;
752 } else {
753 // TODO(rltoscano): This makes the assumption that the "deviceName" is
754 // the same as "printerName". We should include the "printerName" in
755 // the response. See http://crbug.com/132831.
756 destination = print_preview.LocalDestinationParser.parse(
757 {deviceName: destinationId, printerName: destinationId});
758 destination.capabilities = capabilities;
759 this.insertDestination_(destination);
733 } 760 }
734 destination.capabilities = capabilities;
735 } else {
736 // TODO(rltoscano): This makes the assumption that the "deviceName" is
737 // the same as "printerName". We should include the "printerName" in the
738 // response. See http://crbug.com/132831.
739 destination = print_preview.LocalDestinationParser.parse(
740 {deviceName: destinationId, printerName: destinationId});
741 destination.capabilities = capabilities;
742 this.insertDestination_(destination);
743 } 761 }
744 if (this.selectedDestination_ && 762 if (this.selectedDestination_ &&
745 this.selectedDestination_.id == destinationId) { 763 this.selectedDestination_.id == destinationId) {
746 cr.dispatchSimpleEvent(this, 764 cr.dispatchSimpleEvent(this,
747 DestinationStore.EventType. 765 DestinationStore.EventType.
748 SELECTED_DESTINATION_CAPABILITIES_READY); 766 SELECTED_DESTINATION_CAPABILITIES_READY);
749 } 767 }
750 }, 768 },
751 769
752 /** 770 /**
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
914 return id == this.appState_.selectedDestinationId && 932 return id == this.appState_.selectedDestinationId &&
915 origin == this.appState_.selectedDestinationOrigin; 933 origin == this.appState_.selectedDestinationOrigin;
916 } 934 }
917 }; 935 };
918 936
919 // Export 937 // Export
920 return { 938 return {
921 DestinationStore: DestinationStore 939 DestinationStore: DestinationStore
922 }; 940 };
923 }); 941 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698