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

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

Issue 900503002: List printers managed by extensions in print preview (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 5 years, 10 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 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 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 147
148 /** 148 /**
149 * ID of a timeout after the start of a privet search to end that privet 149 * ID of a timeout after the start of a privet search to end that privet
150 * search. 150 * search.
151 * @type {?number} 151 * @type {?number}
152 * @private 152 * @private
153 */ 153 */
154 this.privetSearchTimeout_ = null; 154 this.privetSearchTimeout_ = null;
155 155
156 /** 156 /**
157 * Whether a search for extension destinations is in progress.
158 * @type {boolean}
159 * @private
160 */
161 this.isExtensionDestinationSearchInProgress_ = false;
162
163 /**
164 * Whether the destination store has already loaded all extension
165 * destinations.
166 * @type {boolean}
167 * @private
168 */
169 this.hasLoadedAllExtensionDestinations_ = false;
170
171 /**
172 * ID of a timeout set at the start of an extension destination search. The
173 * timeout ends the search.
174 * @type {?number}
175 * @private
176 */
177 this.extensionSearchTimeout_ = null;
178
179 /**
157 * MDNS service name of destination that we are waiting to register. 180 * MDNS service name of destination that we are waiting to register.
158 * @type {?string} 181 * @type {?string}
159 * @private 182 * @private
160 */ 183 */
161 this.waitForRegisterDestination_ = null; 184 this.waitForRegisterDestination_ = null;
162 185
163 this.addEventListeners_(); 186 this.addEventListeners_();
164 this.reset_(); 187 this.reset_();
165 }; 188 };
166 189
(...skipping 27 matching lines...) Expand all
194 217
195 /** 218 /**
196 * Amount of time spent searching for privet destination, in milliseconds. 219 * Amount of time spent searching for privet destination, in milliseconds.
197 * @type {number} 220 * @type {number}
198 * @const 221 * @const
199 * @private 222 * @private
200 */ 223 */
201 DestinationStore.PRIVET_SEARCH_DURATION_ = 2000; 224 DestinationStore.PRIVET_SEARCH_DURATION_ = 2000;
202 225
203 /** 226 /**
227 * Maximum amount of time spent searching for extension destinations, in
228 * milliseconds.
229 * @type {number}
230 * @const
231 * @private
232 */
233 DestinationStore.EXTENSION_SEARCH_DURATION_ = 2000;
Aleksey Shlyapnikov 2015/02/03 20:18:24 Just 2 seconds?
tbarzic 2015/02/04 02:21:23 I can increase the number a bit, but few seconds s
234
235 /**
204 * Localizes printer capabilities. 236 * Localizes printer capabilities.
205 * @param {!Object} capabilities Printer capabilities to localize. 237 * @param {!Object} capabilities Printer capabilities to localize.
206 * @return {!Object} Localized capabilities. 238 * @return {!Object} Localized capabilities.
207 * @private 239 * @private
208 */ 240 */
209 DestinationStore.localizeCapabilities_ = function(capabilities) { 241 DestinationStore.localizeCapabilities_ = function(capabilities) {
210 var mediaSize = capabilities.printer.media_size; 242 var mediaSize = capabilities.printer.media_size;
211 if (mediaSize) { 243 if (mediaSize) {
212 var mediaDisplayNames = { 244 var mediaDisplayNames = {
213 'ISO_A4': 'A4', 245 'ISO_A4': 'A4',
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
260 get isAutoSelectDestinationInProgress() { 292 get isAutoSelectDestinationInProgress() {
261 return this.selectedDestination_ == null && 293 return this.selectedDestination_ == null &&
262 this.autoSelectTimeout_ != null; 294 this.autoSelectTimeout_ != null;
263 }, 295 },
264 296
265 /** 297 /**
266 * @return {boolean} Whether a search for local destinations is in progress. 298 * @return {boolean} Whether a search for local destinations is in progress.
267 */ 299 */
268 get isLocalDestinationSearchInProgress() { 300 get isLocalDestinationSearchInProgress() {
269 return this.isLocalDestinationSearchInProgress_ || 301 return this.isLocalDestinationSearchInProgress_ ||
270 this.isPrivetDestinationSearchInProgress_; 302 this.isPrivetDestinationSearchInProgress_ ||
303 this.isExtensionDestinationSearchInProgress_;
271 }, 304 },
272 305
273 /** 306 /**
274 * @return {boolean} Whether a search for cloud destinations is in progress. 307 * @return {boolean} Whether a search for cloud destinations is in progress.
275 */ 308 */
276 get isCloudDestinationSearchInProgress() { 309 get isCloudDestinationSearchInProgress() {
277 return !!this.cloudPrintInterface_ && 310 return !!this.cloudPrintInterface_ &&
278 this.cloudPrintInterface_.isCloudDestinationSearchInProgress; 311 this.cloudPrintInterface_.isCloudDestinationSearchInProgress;
279 }, 312 },
280 313
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
332 print_preview.Destination.Origin.PRIVET, 365 print_preview.Destination.Origin.PRIVET,
333 destinationName, 366 destinationName,
334 false /*isRecent*/, 367 false /*isRecent*/,
335 print_preview.Destination.ConnectionStatus.ONLINE); 368 print_preview.Destination.ConnectionStatus.ONLINE);
336 this.selectedDestination_.capabilities = 369 this.selectedDestination_.capabilities =
337 this.appState_.selectedDestinationCapabilities; 370 this.appState_.selectedDestinationCapabilities;
338 371
339 cr.dispatchSimpleEvent( 372 cr.dispatchSimpleEvent(
340 this, 373 this,
341 DestinationStore.EventType.CACHED_SELECTED_DESTINATION_INFO_READY); 374 DestinationStore.EventType.CACHED_SELECTED_DESTINATION_INFO_READY);
375 } else if (this.appState_.selectedDestinationOrigin ==
376 print_preview.Destination.Origin.EXTENSION) {
377 // TODO(tbarzic): Add support for requesting a single extension's
378 // printer list.
379 this.startLoadExtensionDestinations();
380
381 var parsedDestinationID =
382 print_preview.ExtensionDestinationParser.parseDestinationID(
383 this.appState_.selectedDestinationId);
384 this.selectedDestination_ =
385 print_preview.ExtensionDestinationParser.parse({
386 extensionId: parsedDestinationID.extensionID,
387 id: parsedDestinationID.printerID,
388 name: this.appState_.selectedDestinationName_ || ''
389 });
390
391 if (this.appState_.selectedDestinationCapabilities) {
392 this.selectedDestination_.capabilities =
393 this.appState_.selectedDestinationCapabilities;
394
395 cr.dispatchSimpleEvent(
396 this,
397 DestinationStore.EventType
398 .CACHED_SELECTED_DESTINATION_INFO_READY);
399 }
342 } else { 400 } else {
343 this.selectDefaultDestination_(); 401 this.selectDefaultDestination_();
344 } 402 }
345 } 403 }
346 }, 404 },
347 405
348 /** 406 /**
349 * Sets the destination store's Google Cloud Print interface. 407 * Sets the destination store's Google Cloud Print interface.
350 * @param {!cloudprint.CloudPrintInterface} cloudPrintInterface Interface 408 * @param {!cloudprint.CloudPrintInterface} cloudPrintInterface Interface
351 * to set. 409 * to set.
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
430 CLOUD_DUPLICATE_SELECTED); 488 CLOUD_DUPLICATE_SELECTED);
431 } 489 }
432 // Notify about selected destination change. 490 // Notify about selected destination change.
433 cr.dispatchSimpleEvent( 491 cr.dispatchSimpleEvent(
434 this, DestinationStore.EventType.DESTINATION_SELECT); 492 this, DestinationStore.EventType.DESTINATION_SELECT);
435 // Request destination capabilities, of not known yet. 493 // Request destination capabilities, of not known yet.
436 if (destination.capabilities == null) { 494 if (destination.capabilities == null) {
437 if (destination.isPrivet) { 495 if (destination.isPrivet) {
438 this.nativeLayer_.startGetPrivetDestinationCapabilities( 496 this.nativeLayer_.startGetPrivetDestinationCapabilities(
439 destination.id); 497 destination.id);
440 } 498 } else if (destination.isExtension) {
441 else if (destination.isLocal) { 499 var parsedDestinationID =
500 print_preview.ExtensionDestinationParser.parseDestinationID(
501 destination.id);
502 this.nativeLayer_.startGetExtensionDestinationCapabilities(
503 parsedDestinationID.extensionID,
504 parsedDestinationID.printerID);
505 } else if (destination.isLocal) {
442 this.nativeLayer_.startGetLocalDestinationCapabilities( 506 this.nativeLayer_.startGetLocalDestinationCapabilities(
443 destination.id); 507 destination.id);
444 } else { 508 } else {
445 assert(this.cloudPrintInterface_ != null, 509 assert(this.cloudPrintInterface_ != null,
446 'Cloud destination selected, but GCP is not enabled'); 510 'Cloud destination selected, but GCP is not enabled');
447 this.cloudPrintInterface_.printer( 511 this.cloudPrintInterface_.printer(
448 destination.id, destination.origin, destination.account); 512 destination.id, destination.origin, destination.account);
449 } 513 }
450 } else { 514 } else {
451 cr.dispatchSimpleEvent( 515 cr.dispatchSimpleEvent(
(...skipping 22 matching lines...) Expand all
474 this.nativeLayer_.startGetLocalDestinations(); 538 this.nativeLayer_.startGetLocalDestinations();
475 this.isLocalDestinationSearchInProgress_ = true; 539 this.isLocalDestinationSearchInProgress_ = true;
476 cr.dispatchSimpleEvent( 540 cr.dispatchSimpleEvent(
477 this, DestinationStore.EventType.DESTINATION_SEARCH_STARTED); 541 this, DestinationStore.EventType.DESTINATION_SEARCH_STARTED);
478 } 542 }
479 }, 543 },
480 544
481 /** Initiates loading of privet print destinations. */ 545 /** Initiates loading of privet print destinations. */
482 startLoadPrivetDestinations: function() { 546 startLoadPrivetDestinations: function() {
483 if (!this.hasLoadedAllPrivetDestinations_) { 547 if (!this.hasLoadedAllPrivetDestinations_) {
548 if (this.privetDestinationSearchInProgress_)
549 clearTimeout(this.privetSearchTimeout_);
484 this.isPrivetDestinationSearchInProgress_ = true; 550 this.isPrivetDestinationSearchInProgress_ = true;
485 this.nativeLayer_.startGetPrivetDestinations(); 551 this.nativeLayer_.startGetPrivetDestinations();
486 cr.dispatchSimpleEvent( 552 cr.dispatchSimpleEvent(
487 this, DestinationStore.EventType.DESTINATION_SEARCH_STARTED); 553 this, DestinationStore.EventType.DESTINATION_SEARCH_STARTED);
488 if (this.privetDestinationSearchInProgress_)
489 clearTimeout(this.privetSearchTimeout_);
490 this.privetSearchTimeout_ = setTimeout( 554 this.privetSearchTimeout_ = setTimeout(
491 this.endPrivetPrinterSearch_.bind(this), 555 this.endPrivetPrinterSearch_.bind(this),
492 DestinationStore.PRIVET_SEARCH_DURATION_); 556 DestinationStore.PRIVET_SEARCH_DURATION_);
493 } 557 }
494 }, 558 },
495 559
560 /** Initializes loading of extension managed print destinations. */
561 startLoadExtensionDestinations: function() {
562 if (this.hasLoadedAllExtensionDestinations_)
563 return;
564
565 if (this.isExtensionDestinationSearchInProgress_)
566 clearTimeout(this.extensionSearchTimeout_);
567
568 this.isExtensionDestinationSearchInProgress_ = true;
569 this.nativeLayer_.startGetExtensionDestinations();
570 cr.dispatchSimpleEvent(
571 this, DestinationStore.EventType.DESTINATION_SEARCH_STARTED);
572 this.extensionSearchTimeout_ = setTimeout(
573 this.endExtensionPrinterSearch_.bind(this),
574 DestinationStore.EXTENSION_SEARCH_DURATION_);
575 },
576
496 /** 577 /**
497 * Initiates loading of cloud destinations. 578 * Initiates loading of cloud destinations.
498 * @param {print_preview.Destination.Origin=} opt_origin Search destinations 579 * @param {print_preview.Destination.Origin=} opt_origin Search destinations
499 * for the specified origin only. 580 * for the specified origin only.
500 */ 581 */
501 startLoadCloudDestinations: function(opt_origin) { 582 startLoadCloudDestinations: function(opt_origin) {
502 if (this.cloudPrintInterface_ != null) { 583 if (this.cloudPrintInterface_ != null) {
503 var origins = this.loadedCloudOrigins_[this.userInfo_.activeUser] || []; 584 var origins = this.loadedCloudOrigins_[this.userInfo_.activeUser] || [];
504 if (origins.length == 0 || 585 if (origins.length == 0 ||
505 (opt_origin && origins.indexOf(opt_origin) < 0)) { 586 (opt_origin && origins.indexOf(opt_origin) < 0)) {
(...skipping 15 matching lines...) Expand all
521 this.startLoadCloudDestinations( 602 this.startLoadCloudDestinations(
522 print_preview.Destination.Origin.COOKIES); 603 print_preview.Destination.Origin.COOKIES);
523 } 604 }
524 }, 605 },
525 606
526 /** Initiates loading of all known destination types. */ 607 /** Initiates loading of all known destination types. */
527 startLoadAllDestinations: function() { 608 startLoadAllDestinations: function() {
528 this.startLoadCloudDestinations(); 609 this.startLoadCloudDestinations();
529 this.startLoadLocalDestinations(); 610 this.startLoadLocalDestinations();
530 this.startLoadPrivetDestinations(); 611 this.startLoadPrivetDestinations();
612 this.startLoadExtensionDestinations();
531 }, 613 },
532 614
533 /** 615 /**
534 * Wait for a privet device to be registered. 616 * Wait for a privet device to be registered.
535 */ 617 */
536 waitForRegister: function(id) { 618 waitForRegister: function(id) {
537 this.nativeLayer_.startGetPrivetDestinations(); 619 this.nativeLayer_.startGetPrivetDestinations();
538 this.waitForRegisterDestination_ = id; 620 this.waitForRegisterDestination_ = id;
539 }, 621 },
540 622
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
625 */ 707 */
626 endPrivetPrinterSearch_: function() { 708 endPrivetPrinterSearch_: function() {
627 this.nativeLayer_.stopGetPrivetDestinations(); 709 this.nativeLayer_.stopGetPrivetDestinations();
628 this.isPrivetDestinationSearchInProgress_ = false; 710 this.isPrivetDestinationSearchInProgress_ = false;
629 this.hasLoadedAllPrivetDestinations_ = true; 711 this.hasLoadedAllPrivetDestinations_ = true;
630 cr.dispatchSimpleEvent( 712 cr.dispatchSimpleEvent(
631 this, DestinationStore.EventType.DESTINATION_SEARCH_DONE); 713 this, DestinationStore.EventType.DESTINATION_SEARCH_DONE);
632 }, 714 },
633 715
634 /** 716 /**
717 * Called when loading of extension managed printers is done.
718 * @private
719 */
720 endExtensionPrinterSearch_: function() {
721 this.isExtensionDestinationSearchInProgress_ = false;
722 this.hasLoadedAllExtensionDestinations_ = true;
723 cr.dispatchSimpleEvent(
724 this, DestinationStore.EventType.DESTINATION_SEARCH_DONE);
725 // Clear initially selected (cached) extension destination if it hasn't
726 // been found among reported extension destinations.
727 if (this.isInAutoSelectMode_ && this.selectedDestination_.isExtension)
728 this.selectDefaultDestination_();
729 },
730
731 /**
635 * Inserts a destination into the store without dispatching any events. 732 * Inserts a destination into the store without dispatching any events.
636 * @return {boolean} Whether the inserted destination was not already in the 733 * @return {boolean} Whether the inserted destination was not already in the
637 * store. 734 * store.
638 * @private 735 * @private
639 */ 736 */
640 insertIntoStore_: function(destination) { 737 insertIntoStore_: function(destination) {
641 var key = this.getKey_(destination); 738 var key = this.getKey_(destination);
642 var existingDestination = this.destinationMap_[key]; 739 var existingDestination = this.destinationMap_[key];
643 if (existingDestination == null) { 740 if (existingDestination == null) {
644 this.destinations_.push(destination); 741 this.destinations_.push(destination);
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
677 print_preview.NativeLayer.EventType.DESTINATIONS_RELOAD, 774 print_preview.NativeLayer.EventType.DESTINATIONS_RELOAD,
678 this.onDestinationsReload_.bind(this)); 775 this.onDestinationsReload_.bind(this));
679 this.tracker_.add( 776 this.tracker_.add(
680 this.nativeLayer_, 777 this.nativeLayer_,
681 print_preview.NativeLayer.EventType.PRIVET_PRINTER_CHANGED, 778 print_preview.NativeLayer.EventType.PRIVET_PRINTER_CHANGED,
682 this.onPrivetPrinterAdded_.bind(this)); 779 this.onPrivetPrinterAdded_.bind(this));
683 this.tracker_.add( 780 this.tracker_.add(
684 this.nativeLayer_, 781 this.nativeLayer_,
685 print_preview.NativeLayer.EventType.PRIVET_CAPABILITIES_SET, 782 print_preview.NativeLayer.EventType.PRIVET_CAPABILITIES_SET,
686 this.onPrivetCapabilitiesSet_.bind(this)); 783 this.onPrivetCapabilitiesSet_.bind(this));
784 this.tracker_.add(
785 this.nativeLayer_,
786 print_preview.NativeLayer.EventType.EXTENSION_PRINTERS_ADDED,
787 this.onExtensionPrintersAdded_.bind(this));
788 this.tracker_.add(
789 this.nativeLayer_,
790 print_preview.NativeLayer.EventType.EXTENSION_CAPABILITIES_SET,
791 this.onExtensionCapabilitiesSet_.bind(this));
687 }, 792 },
688 793
689 /** 794 /**
690 * Creates a local PDF print destination. 795 * Creates a local PDF print destination.
691 * @return {!print_preview.Destination} Created print destination. 796 * @return {!print_preview.Destination} Created print destination.
692 * @private 797 * @private
693 */ 798 */
694 createLocalPdfPrintDestination_: function() { 799 createLocalPdfPrintDestination_: function() {
695 // TODO(alekseys): Create PDF printer in the native code and send its 800 // TODO(alekseys): Create PDF printer in the native code and send its
696 // capabilities back with other local printers. 801 // capabilities back with other local printers.
(...skipping 12 matching lines...) Expand all
709 * Resets the state of the destination store to its initial state. 814 * Resets the state of the destination store to its initial state.
710 * @private 815 * @private
711 */ 816 */
712 reset_: function() { 817 reset_: function() {
713 this.destinations_ = []; 818 this.destinations_ = [];
714 this.destinationMap_ = {}; 819 this.destinationMap_ = {};
715 this.selectDestination(null); 820 this.selectDestination(null);
716 this.loadedCloudOrigins_ = {}; 821 this.loadedCloudOrigins_ = {};
717 this.hasLoadedAllLocalDestinations_ = false; 822 this.hasLoadedAllLocalDestinations_ = false;
718 this.hasLoadedAllPrivetDestinations_ = false; 823 this.hasLoadedAllPrivetDestinations_ = false;
824 this.hasLoadedAllExtensionDestinations_ = false;
719 825
720 clearTimeout(this.autoSelectTimeout_); 826 clearTimeout(this.autoSelectTimeout_);
721 this.autoSelectTimeout_ = setTimeout( 827 this.autoSelectTimeout_ = setTimeout(
722 this.selectDefaultDestination_.bind(this), 828 this.selectDefaultDestination_.bind(this),
723 DestinationStore.AUTO_SELECT_TIMEOUT_); 829 DestinationStore.AUTO_SELECT_TIMEOUT_);
724 }, 830 },
725 831
726 /** 832 /**
727 * Called when the local destinations have been got from the native layer. 833 * Called when the local destinations have been got from the native layer.
728 * @param {Event} event Contains the local destinations. 834 * @param {Event} event Contains the local destinations.
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
884 print_preview.PrivetDestinationParser.parse(event.printer)); 990 print_preview.PrivetDestinationParser.parse(event.printer));
885 } 991 }
886 }, 992 },
887 993
888 /** 994 /**
889 * Called when capabilities for a privet printer are set. 995 * Called when capabilities for a privet printer are set.
890 * @param {Object} event Contains the capabilities and printer ID. 996 * @param {Object} event Contains the capabilities and printer ID.
891 * @private 997 * @private
892 */ 998 */
893 onPrivetCapabilitiesSet_: function(event) { 999 onPrivetCapabilitiesSet_: function(event) {
894 var destinationId = event.printerId;
895 var destinations = 1000 var destinations =
896 print_preview.PrivetDestinationParser.parse(event.printer); 1001 print_preview.PrivetDestinationParser.parse(event.printer);
897 destinations.forEach(function(dest) { 1002 destinations.forEach(function(dest) {
898 dest.capabilities = event.capabilities; 1003 dest.capabilities = event.capabilities;
899 this.updateDestination_(dest); 1004 this.updateDestination_(dest);
900 }, this); 1005 }, this);
901 }, 1006 },
902 1007
903 /** 1008 /**
1009 * Called when an extension responds to a getExtensionDestinations
1010 * request.
1011 * @param {Object} event Contains information about list of printers
1012 * reported by the extension.
1013 * {@code done} parameter is set iff this is the final list of printers
1014 * returned as part of getExtensionDestinations request.
1015 * @private
1016 */
1017 onExtensionPrintersAdded_: function(event) {
1018 this.insertDestinations_(event.printers.map(function(printer) {
1019 return print_preview.ExtensionDestinationParser.parse(printer);
1020 }));
1021
1022 if (event.done && this.isExtensionDestinationSearchInProgress_) {
1023 clearTimeout(this.extensionSearchTimeout_);
1024 this.endExtensionPrinterSearch_();
1025 }
1026 },
1027
1028 /**
1029 * Called when capabilities for an extension managed printer are set.
1030 * @param {Object} event Contains the printer capabilities and ID, and the
1031 * ID of extension that manages the printer.
1032 * @private
1033 */
1034 onExtensionCapabilitiesSet_: function(event) {
1035 var destinationID =
1036 print_preview.ExtensionDestinationParser.generateDestinationID(
1037 event.extensionID, event.printerID);
1038 var destinationKey = this.getDestinationKey_(
1039 print_preview.Destination.Origin.EXTENSION,
1040 destinationID,
1041 '' /* account */);
1042 var destination = this.destinationMap_[destinationKey];
1043 if (!destination)
1044 return;
1045 destination.capabilities = event.capabilities;
1046 this.updateDestination_(destination);
1047 },
1048
1049 /**
904 * Called from native layer after the user was requested to sign in, and did 1050 * Called from native layer after the user was requested to sign in, and did
905 * so successfully. 1051 * so successfully.
906 * @private 1052 * @private
907 */ 1053 */
908 onDestinationsReload_: function() { 1054 onDestinationsReload_: function() {
909 this.reset_(); 1055 this.reset_();
910 this.isInAutoSelectMode_ = true; 1056 this.isInAutoSelectMode_ = true;
911 this.createLocalPdfPrintDestination_(); 1057 this.createLocalPdfPrintDestination_();
912 this.startLoadAllDestinations(); 1058 this.startLoadAllDestinations();
913 }, 1059 },
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
958 return id == this.appState_.selectedDestinationId && 1104 return id == this.appState_.selectedDestinationId &&
959 origin == this.appState_.selectedDestinationOrigin; 1105 origin == this.appState_.selectedDestinationOrigin;
960 } 1106 }
961 }; 1107 };
962 1108
963 // Export 1109 // Export
964 return { 1110 return {
965 DestinationStore: DestinationStore 1111 DestinationStore: DestinationStore
966 }; 1112 };
967 }); 1113 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698