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 * 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 995 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1006 /** | 1006 /** |
1007 * Attempts to resolve a provisional destination. | 1007 * Attempts to resolve a provisional destination. |
1008 * @param {!print_preview.Destination} destination Provisional destination | 1008 * @param {!print_preview.Destination} destination Provisional destination |
1009 * that should be resolved. | 1009 * that should be resolved. |
1010 */ | 1010 */ |
1011 resolveProvisionalDestination: function(destination) { | 1011 resolveProvisionalDestination: function(destination) { |
1012 assert( | 1012 assert( |
1013 destination.provisionalType == | 1013 destination.provisionalType == |
1014 print_preview.DestinationProvisionalType.NEEDS_USB_PERMISSION, | 1014 print_preview.DestinationProvisionalType.NEEDS_USB_PERMISSION, |
1015 'Provisional type cannot be resolved.'); | 1015 'Provisional type cannot be resolved.'); |
1016 this.nativeLayer_.grantExtensionPrinterAccess(destination.id); | 1016 this.nativeLayer_.grantExtensionPrinterAccess(destination.id).then( |
1017 function(destinationInfo) { | |
1018 /** | |
dpapad
2017/06/16 22:21:30
This comment needs +2 indent.
rbpotter
2017/06/19 22:19:30
Done.
| |
1019 * Removes the destination from the store and replaces it with a | |
1020 * destination created from the resolved destination properties, if | |
1021 * any are reported. Then sends a PROVISIONAL_DESTINATION_RESOLVED | |
1022 * event. | |
1023 * @param {!print_preview.ProvisionalDestinationInfo} destinationInfo | |
1024 * Information about the resolved printer. | |
1025 */ | |
1026 this.removeProvisionalDestination_(destination.id); | |
1027 var parsedDestination = | |
1028 print_preview.ExtensionDestinationParser.parse(destinationInfo); | |
1029 this.insertIntoStore_(parsedDestination); | |
1030 this.dispatchProvisionalDestinationResolvedEvent_( | |
1031 destination.id, parsedDestination); | |
1032 }.bind(this), | |
1033 function() { | |
1034 /** | |
1035 * The provisional destination is removed from the store and a | |
1036 * PROVISIONAL_DESTINATION_RESOLVED event is dispatched with a null | |
1037 * destination. | |
1038 */ | |
1039 this.removeProvisionalDestination_(destination.id); | |
1040 this.dispatchProvisionalDestinationResolvedEvent_(destination.id, | |
1041 null); | |
1042 }.bind(this)); | |
1017 }, | 1043 }, |
1018 | 1044 |
1019 /** | 1045 /** |
1020 * Selects 'Save to PDF' destination (since it always exists). | 1046 * Selects 'Save to PDF' destination (since it always exists). |
1021 * @private | 1047 * @private |
1022 */ | 1048 */ |
1023 selectPdfDestination_: function() { | 1049 selectPdfDestination_: function() { |
1024 var saveToPdfKey = this.getDestinationKey_( | 1050 var saveToPdfKey = this.getDestinationKey_( |
1025 print_preview.DestinationOrigin.LOCAL, | 1051 print_preview.DestinationOrigin.LOCAL, |
1026 print_preview.Destination.GooglePromotedId.SAVE_AS_PDF, | 1052 print_preview.Destination.GooglePromotedId.SAVE_AS_PDF, |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1142 /** | 1168 /** |
1143 * Wait for a privet device to be registered. | 1169 * Wait for a privet device to be registered. |
1144 */ | 1170 */ |
1145 waitForRegister: function(id) { | 1171 waitForRegister: function(id) { |
1146 this.nativeLayer_.getPrivetPrinters().then( | 1172 this.nativeLayer_.getPrivetPrinters().then( |
1147 this.endPrivetPrinterSearch_.bind(this)); | 1173 this.endPrivetPrinterSearch_.bind(this)); |
1148 this.waitForRegisterDestination_ = id; | 1174 this.waitForRegisterDestination_ = id; |
1149 }, | 1175 }, |
1150 | 1176 |
1151 /** | 1177 /** |
1152 * Event handler for {@code | 1178 * Removes the provisional destination with ID |provisionalId| from |
1153 * print_preview.NativeLayer.EventType.PROVISIONAL_DESTINATION_RESOLVED}. | 1179 * |destinationMap_| and |destinations_|. |
1154 * Currently assumes the provisional destination is an extension | 1180 * @param{string} provisionalId The provisional destination ID. |
1155 * destination. | |
1156 * Called when a provisional destination resolvement attempt finishes. | |
1157 * The provisional destination is removed from the store and replaced with | |
1158 * a destination created from the resolved destination properties, if any | |
1159 * are reported. | |
1160 * Emits {@code DestinationStore.EventType.PROVISIONAL_DESTINATION_RESOLVED} | |
1161 * event. | |
1162 * @param {!Event} evt The event containing the provisional destination ID | |
1163 * and resolved destination description. If the destination was not | |
1164 * successfully resolved, the description will not be set. | |
1165 * @private | 1181 * @private |
1166 */ | 1182 */ |
1167 handleProvisionalDestinationResolved_: function(evt) { | 1183 removeProvisionalDestination_: function(provisionalId) { |
1168 var provisionalDestinationIndex = -1; | 1184 this.destinations_ = this.destinations_.filter( |
1169 var provisionalDestination = null; | 1185 function(el, i, destinations) { |
dpapad
2017/06/16 22:21:30
Do you need to pass |i| and |destinations| since t
rbpotter
2017/06/19 22:19:30
Done.
| |
1170 for (var i = 0; i < this.destinations_.length; ++i) { | 1186 if (el.id == provisionalId) { |
1171 if (evt.provisionalId == this.destinations_[i].id) { | 1187 delete this.destinationMap_[this.getKey_(el)]; |
1172 provisionalDestinationIndex = i; | 1188 return false; |
1173 provisionalDestination = this.destinations_[i]; | 1189 } |
1174 break; | 1190 return true; |
1175 } | 1191 }, this); |
1176 } | 1192 }, |
1177 | 1193 |
1178 if (!provisionalDestination) | 1194 /** |
1179 return; | 1195 * Dispatches the PROVISIONAL_DESTINATION_RESOLVED event for id |
1180 | 1196 * |provisionalId| and destination |destination|. |
1181 this.destinations_.splice(provisionalDestinationIndex, 1); | 1197 * @param {string} provisionalId The ID of the destination that was |
1182 delete this.destinationMap_[this.getKey_(provisionalDestination)]; | 1198 * resolved. |
1183 | 1199 * @param {?print_preview.Destination} destination Information about the |
1184 var destination = evt.destination ? | 1200 * destination if it was resolved successfully. |
1185 print_preview.ExtensionDestinationParser.parse(evt.destination) : | 1201 */ |
1186 null; | 1202 dispatchProvisionalDestinationResolvedEvent_: function(provisionalId, |
1187 | 1203 destination) { |
1188 if (destination) | |
1189 this.insertIntoStore_(destination); | |
1190 | |
1191 var event = new Event( | 1204 var event = new Event( |
1192 DestinationStore.EventType.PROVISIONAL_DESTINATION_RESOLVED); | 1205 DestinationStore.EventType.PROVISIONAL_DESTINATION_RESOLVED); |
1193 event.provisionalId = evt.provisionalId; | 1206 event.provisionalId = provisionalId; |
1194 event.destination = destination; | 1207 event.destination = destination; |
1195 this.dispatchEvent(event); | 1208 this.dispatchEvent(event); |
1196 }, | 1209 }, |
1197 | 1210 |
1198 /** | 1211 /** |
1199 * Inserts {@code destination} to the data store and dispatches a | 1212 * Inserts {@code destination} to the data store and dispatches a |
1200 * DESTINATIONS_INSERTED event. | 1213 * DESTINATIONS_INSERTED event. |
1201 * @param {!print_preview.Destination} destination Print destination to | 1214 * @param {!print_preview.Destination} destination Print destination to |
1202 * insert. | 1215 * insert. |
1203 * @private | 1216 * @private |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1341 /** | 1354 /** |
1342 * Binds handlers to events. | 1355 * Binds handlers to events. |
1343 * @private | 1356 * @private |
1344 */ | 1357 */ |
1345 addEventListeners_: function() { | 1358 addEventListeners_: function() { |
1346 var nativeLayerEventTarget = this.nativeLayer_.getEventTarget(); | 1359 var nativeLayerEventTarget = this.nativeLayer_.getEventTarget(); |
1347 this.tracker_.add( | 1360 this.tracker_.add( |
1348 nativeLayerEventTarget, | 1361 nativeLayerEventTarget, |
1349 print_preview.NativeLayer.EventType.DESTINATIONS_RELOAD, | 1362 print_preview.NativeLayer.EventType.DESTINATIONS_RELOAD, |
1350 this.onDestinationsReload_.bind(this)); | 1363 this.onDestinationsReload_.bind(this)); |
1351 this.tracker_.add( | |
1352 nativeLayerEventTarget, | |
1353 print_preview.NativeLayer.EventType.PROVISIONAL_DESTINATION_RESOLVED, | |
1354 this.handleProvisionalDestinationResolved_.bind(this)); | |
1355 }, | 1364 }, |
1356 | 1365 |
1357 /** | 1366 /** |
1358 * Creates a local PDF print destination. | 1367 * Creates a local PDF print destination. |
1359 * @private | 1368 * @private |
1360 */ | 1369 */ |
1361 createLocalPdfPrintDestination_: function() { | 1370 createLocalPdfPrintDestination_: function() { |
1362 // TODO(alekseys): Create PDF printer in the native code and send its | 1371 // TODO(alekseys): Create PDF printer in the native code and send its |
1363 // capabilities back with other local printers. | 1372 // capabilities back with other local printers. |
1364 if (this.pdfPrinterEnabled_) { | 1373 if (this.pdfPrinterEnabled_) { |
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1665 return this.getDestinationKey_( | 1674 return this.getDestinationKey_( |
1666 destination.origin, destination.id, destination.account); | 1675 destination.origin, destination.id, destination.account); |
1667 } | 1676 } |
1668 }; | 1677 }; |
1669 | 1678 |
1670 // Export | 1679 // Export |
1671 return { | 1680 return { |
1672 DestinationStore: DestinationStore | 1681 DestinationStore: DestinationStore |
1673 }; | 1682 }; |
1674 }); | 1683 }); |
OLD | NEW |