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

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

Issue 14340003: Rename AuthType to Origin of destination. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rename AuthType to Origin. Created 7 years, 8 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 21 matching lines...) Expand all
32 this.appState_ = appState; 32 this.appState_ = appState;
33 33
34 /** 34 /**
35 * Internal backing store for the data store. 35 * Internal backing store for the data store.
36 * @type {!Array.<!print_preview.Destination>} 36 * @type {!Array.<!print_preview.Destination>}
37 * @private 37 * @private
38 */ 38 */
39 this.destinations_ = []; 39 this.destinations_ = [];
40 40
41 /** 41 /**
42 * Cache used for constant lookup of destinations by ID. 42 * Cache used for constant lookup of destinations by origin and id.
43 * @type {object.<string, !print_preview.Destination>} 43 * @type {object.<string, !print_preview.Destination>}
44 * @private 44 * @private
45 */ 45 */
46 this.destinationMap_ = {}; 46 this.destinationMap_ = {};
47 47
48 /** 48 /**
49 * Currently selected destination. 49 * Currently selected destination.
50 * @type {print_preview.Destination} 50 * @type {print_preview.Destination}
51 * @private 51 * @private
52 */ 52 */
53 this.selectedDestination_ = null; 53 this.selectedDestination_ = null;
54 54
55 /** 55 /**
56 * Initial destination ID used to auto-select the first inserted destination 56 * Initial destination ID used to auto-select the first inserted destination
57 * that matches. If {@code null}, the first destination inserted into the 57 * that matches. If {@code null}, the first destination inserted into the
58 * store will be selected. 58 * store will be selected.
59 * @type {?string} 59 * @type {?string}
60 * @private 60 * @private
61 */ 61 */
62 this.initialDestinationId_ = null; 62 this.initialDestinationId_ = null;
63 63
64 /** 64 /**
65 * Whether the initial destination is a local one or not. 65 * Initial origin used to auto-select destination.
66 * @type {boolean} 66 * @type {print_preview.Destination.Origin}
67 * @private 67 * @private
68 */ 68 */
69 this.isInitialDestinationLocal_ = true; 69 this.initialDestinationOrigin_ = print_preview.Destination.Origin.LOCAL;
70 70
71 /** 71 /**
72 * Whether the destination store will auto select the destination that 72 * Whether the destination store will auto select the destination that
73 * matches the initial destination. 73 * matches the initial destination.
74 * @type {boolean} 74 * @type {boolean}
75 * @private 75 * @private
76 */ 76 */
77 this.isInAutoSelectMode_ = false; 77 this.isInAutoSelectMode_ = false;
78 78
79 /** 79 /**
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 147
148 /** 148 /**
149 * Creates a local PDF print destination. 149 * Creates a local PDF print destination.
150 * @return {!print_preview.Destination} Created print destination. 150 * @return {!print_preview.Destination} Created print destination.
151 * @private 151 * @private
152 */ 152 */
153 DestinationStore.createLocalPdfPrintDestination_ = function() { 153 DestinationStore.createLocalPdfPrintDestination_ = function() {
154 var dest = new print_preview.Destination( 154 var dest = new print_preview.Destination(
155 print_preview.Destination.GooglePromotedId.SAVE_AS_PDF, 155 print_preview.Destination.GooglePromotedId.SAVE_AS_PDF,
156 print_preview.Destination.Type.LOCAL, 156 print_preview.Destination.Type.LOCAL,
157 print_preview.Destination.AuthType.LOCAL, 157 print_preview.Destination.Origin.LOCAL,
158 localStrings.getString('printToPDF'), 158 localStrings.getString('printToPDF'),
159 false /*isRecent*/, 159 false /*isRecent*/,
160 print_preview.Destination.ConnectionStatus.ONLINE); 160 print_preview.Destination.ConnectionStatus.ONLINE);
161 dest.capabilities = new print_preview.ChromiumCapabilities( 161 dest.capabilities = new print_preview.ChromiumCapabilities(
162 false /*hasCopiesCapability*/, 162 false /*hasCopiesCapability*/,
163 '1' /*defaultCopiesStr*/, 163 '1' /*defaultCopiesStr*/,
164 false /*hasCollateCapability*/, 164 false /*hasCollateCapability*/,
165 false /*defaultIsCollateEnabled*/, 165 false /*defaultIsCollateEnabled*/,
166 false /*hasDuplexCapability*/, 166 false /*hasDuplexCapability*/,
167 false /*defaultIsDuplexEnabled*/, 167 false /*defaultIsDuplexEnabled*/,
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
209 /** 209 /**
210 * Initializes the destination store. Sets the initially selected 210 * Initializes the destination store. Sets the initially selected
211 * destination. If any inserted destinations match this ID, that destination 211 * destination. If any inserted destinations match this ID, that destination
212 * will be automatically selected. This method must be called after the 212 * will be automatically selected. This method must be called after the
213 * print_preview.AppState has been initialized. 213 * print_preview.AppState has been initialized.
214 * @param {?string} systemDefaultDestinationId ID of the system default 214 * @param {?string} systemDefaultDestinationId ID of the system default
215 * destination. 215 * destination.
216 * @private 216 * @private
217 */ 217 */
218 init: function(systemDefaultDestinationId) { 218 init: function(systemDefaultDestinationId) {
219 if (this.appState_.selectedDestinationId) { 219 if (this.appState_.selectedDestinationId &&
220 this.appState_.selectedDestinationOrigin) {
220 this.initialDestinationId_ = this.appState_.selectedDestinationId; 221 this.initialDestinationId_ = this.appState_.selectedDestinationId;
221 this.isInitialDestinationLocal_ = 222 this.initialDestinationOrigin_ =
222 this.appState_.isSelectedDestinationLocal; 223 this.appState_.selectedDestinationOrigin_;
223 } else { 224 } else {
224 this.initialDestinationId_ = systemDefaultDestinationId; 225 this.initialDestinationId_ = systemDefaultDestinationId;
225 this.isInitialDestinationLocal_ = true; 226 this.initialDestinationOrigin_ =
227 print_preview.Destination.Origin.LOCAL;
226 } 228 }
227
228 this.isInAutoSelectMode_ = true; 229 this.isInAutoSelectMode_ = true;
229 if (this.initialDestinationId_ == null) { 230 if (this.initialDestinationId_ == null ||
231 this.initialDestinationOrigin_ == null) {
230 assert(this.destinations_.length > 0, 232 assert(this.destinations_.length > 0,
231 'No destinations available to select'); 233 'No destinations available to select');
232 this.selectDestination(this.destinations_[0]); 234 this.selectDestination(this.destinations_[0]);
233 } else { 235 } else {
234 var candidate = this.destinationMap_[this.initialDestinationId_]; 236 var key = this.getDestinationKey_(this.initialDestinationOrigin_,
237 this.initialDestinationId_);
238 var candidate = this.destinationMap_[key];
235 if (candidate != null) { 239 if (candidate != null) {
236 this.selectDestination(candidate); 240 this.selectDestination(candidate);
237 } else if (!cr.isChromeOS && this.isInitialDestinationLocal_) { 241 } else if (!cr.isChromeOS &&
242 this.initialDestinationOrigin_ ==
243 print_preview.Destination.Origin.LOCAL) {
238 this.nativeLayer_.startGetLocalDestinationCapabilities( 244 this.nativeLayer_.startGetLocalDestinationCapabilities(
239 this.initialDestinationId_); 245 this.initialDestinationId_);
240 } 246 }
241 } 247 }
242 }, 248 },
243 249
244 /** 250 /**
245 * Sets the destination store's Google Cloud Print interface. 251 * Sets the destination store's Google Cloud Print interface.
246 * @param {!print_preview.CloudPrintInterface} cloudPrintInterface Interface 252 * @param {!print_preview.CloudPrintInterface} cloudPrintInterface Interface
247 * to set. 253 * to set.
(...skipping 10 matching lines...) Expand all
258 this.onCloudPrintSearchFailed_.bind(this)); 264 this.onCloudPrintSearchFailed_.bind(this));
259 this.tracker_.add( 265 this.tracker_.add(
260 this.cloudPrintInterface_, 266 this.cloudPrintInterface_,
261 cloudprint.CloudPrintInterface.EventType.PRINTER_DONE, 267 cloudprint.CloudPrintInterface.EventType.PRINTER_DONE,
262 this.onCloudPrintPrinterDone_.bind(this)); 268 this.onCloudPrintPrinterDone_.bind(this));
263 this.tracker_.add( 269 this.tracker_.add(
264 this.cloudPrintInterface_, 270 this.cloudPrintInterface_,
265 cloudprint.CloudPrintInterface.EventType.PRINTER_FAILED, 271 cloudprint.CloudPrintInterface.EventType.PRINTER_FAILED,
266 this.onCloudPrintPrinterFailed_.bind(this)); 272 this.onCloudPrintPrinterFailed_.bind(this));
267 // Fetch initial destination if its a cloud destination. 273 // Fetch initial destination if its a cloud destination.
268 if (this.isInAutoSelectMode_ && !this.isInitialDestinationLocal_) { 274 var origin = this.initialDestinationOrigin_;
269 this.cloudPrintInterface_.printer(this.initialDestinationId_); 275 if (this.isInAutoSelectMode_ &&
276 origin != print_preview.Destination.Origin.LOCAL) {
277 this.cloudPrintInterface_.printer(this.initialDestinationId_, origin);
270 } 278 }
271 }, 279 },
272 280
273 /** 281 /**
274 * @return {boolean} Whether only default cloud destinations have been 282 * @return {boolean} Whether only default cloud destinations have been
275 * loaded. 283 * loaded.
276 */ 284 */
277 hasOnlyDefaultCloudDestinations: function() { 285 hasOnlyDefaultCloudDestinations: function() {
278 return this.destinations_.every(function(dest) { 286 return this.destinations_.every(function(dest) {
279 return dest.isLocal || 287 return dest.isLocal ||
(...skipping 24 matching lines...) Expand all
304 cr.dispatchSimpleEvent( 312 cr.dispatchSimpleEvent(
305 this, DestinationStore.EventType.DESTINATION_SELECT); 313 this, DestinationStore.EventType.DESTINATION_SELECT);
306 if (destination.capabilities == null) { 314 if (destination.capabilities == null) {
307 if (destination.isLocal) { 315 if (destination.isLocal) {
308 this.nativeLayer_.startGetLocalDestinationCapabilities( 316 this.nativeLayer_.startGetLocalDestinationCapabilities(
309 destination.id); 317 destination.id);
310 } else { 318 } else {
311 assert(this.cloudPrintInterface_ != null, 319 assert(this.cloudPrintInterface_ != null,
312 'Selected destination is a cloud destination, but Google ' + 320 'Selected destination is a cloud destination, but Google ' +
313 'Cloud Print is not enabled'); 321 'Cloud Print is not enabled');
314 this.cloudPrintInterface_.printer(destination.id); 322 this.cloudPrintInterface_.printer(destination.id,
323 destination.origin);
315 } 324 }
316 } else { 325 } else {
317 cr.dispatchSimpleEvent( 326 cr.dispatchSimpleEvent(
318 this, 327 this,
319 DestinationStore.EventType.SELECTED_DESTINATION_CAPABILITIES_READY); 328 DestinationStore.EventType.SELECTED_DESTINATION_CAPABILITIES_READY);
320 } 329 }
321 }, 330 },
322 331
323 /** 332 /**
324 * Inserts a print destination to the data store and dispatches a 333 * Inserts a print destination to the data store and dispatches a
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
370 }, 379 },
371 380
372 /** 381 /**
373 * Updates an existing print destination with capabilities information. If 382 * Updates an existing print destination with capabilities information. If
374 * the destination doesn't already exist, it will be added. 383 * the destination doesn't already exist, it will be added.
375 * @param {!print_preview.Destination} destination Destination to update. 384 * @param {!print_preview.Destination} destination Destination to update.
376 * @return {!print_preview.Destination} The existing destination that was 385 * @return {!print_preview.Destination} The existing destination that was
377 * updated. 386 * updated.
378 */ 387 */
379 updateDestination: function(destination) { 388 updateDestination: function(destination) {
380 var existingDestination = this.destinationMap_[destination.id]; 389 var key = this.getDestinationKey_(destination.origin, destination.id);
390 var existingDestination = this.destinationMap_[key];
381 if (existingDestination != null) { 391 if (existingDestination != null) {
382 existingDestination.capabilities = destination.capabilities; 392 existingDestination.capabilities = destination.capabilities;
383 return existingDestination; 393 return existingDestination;
384 } else { 394 } else {
385 this.insertDestination(destination); 395 this.insertDestination(destination);
Toscano 2013/04/18 19:26:41 Can you put a "return null;" statement after this
Vitaly Buka (NO REVIEWS) 2013/04/18 20:48:23 Probably "return destination;"? On 2013/04/18 19:2
Vitaly Buka (NO REVIEWS) 2013/04/18 23:44:59 Done.
386 } 396 }
387 }, 397 },
388 398
389 /** Initiates loading of local print destinations. */ 399 /** Initiates loading of local print destinations. */
390 startLoadLocalDestinations: function() { 400 startLoadLocalDestinations: function() {
391 this.nativeLayer_.startGetLocalDestinations(); 401 this.nativeLayer_.startGetLocalDestinations();
392 this.isLocalDestinationSearchInProgress_ = true; 402 this.isLocalDestinationSearchInProgress_ = true;
393 cr.dispatchSimpleEvent( 403 cr.dispatchSimpleEvent(
394 this, DestinationStore.EventType.DESTINATION_SEARCH_STARTED); 404 this, DestinationStore.EventType.DESTINATION_SEARCH_STARTED);
395 }, 405 },
(...skipping 13 matching lines...) Expand all
409 } 419 }
410 }, 420 },
411 421
412 /** 422 /**
413 * Inserts a destination into the store without dispatching any events. 423 * Inserts a destination into the store without dispatching any events.
414 * @return {boolean} Whether the inserted destination was not already in the 424 * @return {boolean} Whether the inserted destination was not already in the
415 * store. 425 * store.
416 * @private 426 * @private
417 */ 427 */
418 insertDestination_: function(destination) { 428 insertDestination_: function(destination) {
419 var existingDestination = this.destinationMap_[destination.id]; 429 var key = this.getDestinationKey_(destination.origin, destination.id);
430 var existingDestination = this.destinationMap_[key];
420 if (existingDestination == null) { 431 if (existingDestination == null) {
421 this.destinations_.push(destination); 432 this.destinations_.push(destination);
422 this.destinationMap_[destination.id] = destination; 433 this.destinationMap_[key] = destination;
423 return true; 434 return true;
424 } else if (existingDestination.connectionStatus == 435 } else if (existingDestination.connectionStatus ==
425 print_preview.Destination.ConnectionStatus.UNKNOWN && 436 print_preview.Destination.ConnectionStatus.UNKNOWN &&
426 destination.connectionStatus != 437 destination.connectionStatus !=
427 print_preview.Destination.ConnectionStatus.UNKNOWN) { 438 print_preview.Destination.ConnectionStatus.UNKNOWN) {
428 existingDestination.connectionStatus = destination.connectionStatus; 439 existingDestination.connectionStatus = destination.connectionStatus;
429 return true; 440 return true;
430 } else { 441 } else {
431 return false; 442 return false;
432 } 443 }
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
490 * Called when the native layer retrieves the capabilities for the selected 501 * Called when the native layer retrieves the capabilities for the selected
491 * local destination. Updates the destination with new capabilities if the 502 * local destination. Updates the destination with new capabilities if the
492 * destination already exists, otherwise it creates a new destination and 503 * destination already exists, otherwise it creates a new destination and
493 * then updates its capabilities. 504 * then updates its capabilities.
494 * @param {cr.Event} event Contains the capabilities of the local print 505 * @param {cr.Event} event Contains the capabilities of the local print
495 * destination. 506 * destination.
496 * @private 507 * @private
497 */ 508 */
498 onLocalDestinationCapabilitiesSet_: function(event) { 509 onLocalDestinationCapabilitiesSet_: function(event) {
499 var destinationId = event.settingsInfo['printerId']; 510 var destinationId = event.settingsInfo['printerId'];
500 var destination = this.destinationMap_[destinationId]; 511 var key =
512 this.getDestinationKey_(print_preview.Destination.Origin.LOCAL,
513 destinationId);
514 var destination = this.destinationMap_[key];
501 var capabilities = print_preview.LocalCapabilitiesParser.parse( 515 var capabilities = print_preview.LocalCapabilitiesParser.parse(
502 event.settingsInfo); 516 event.settingsInfo);
503 if (destination) { 517 if (destination) {
504 // In case there were multiple capabilities request for this local 518 // In case there were multiple capabilities request for this local
505 // destination, just ignore the later ones. 519 // destination, just ignore the later ones.
506 if (destination.capabilities != null) { 520 if (destination.capabilities != null) {
507 return; 521 return;
508 } 522 }
509 destination.capabilities = capabilities; 523 destination.capabilities = capabilities;
510 } else { 524 } else {
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
616 /** 630 /**
617 * Called when no destination was auto-selected after some timeout. Selects 631 * Called when no destination was auto-selected after some timeout. Selects
618 * the first destination in store. 632 * the first destination in store.
619 * @private 633 * @private
620 */ 634 */
621 onAutoSelectTimeoutExpired_: function() { 635 onAutoSelectTimeoutExpired_: function() {
622 this.autoSelectTimeout_ = null; 636 this.autoSelectTimeout_ = null;
623 assert(this.destinations_.length > 0, 637 assert(this.destinations_.length > 0,
624 'No destinations were loaded before auto-select timeout expired'); 638 'No destinations were loaded before auto-select timeout expired');
625 this.selectDestination(this.destinations_[0]); 639 this.selectDestination(this.destinations_[0]);
640 },
641
642 /**
643 * Returns key to be used with {@code destinationMap_}.
644 * @param {!print_preview.Destination.Origin} origin Destination origin.
645 * @return {!string} id Destination id.
646 * @private
647 */
648 getDestinationKey_: function(origin, id) {
649 return origin + '/' + id;
Toscano 2013/04/18 19:26:41 Wouldn't it be better to move this into destinatio
Vitaly Buka (NO REVIEWS) 2013/04/18 20:48:23 We need to be able create key without instance of
Toscano 2013/04/18 22:45:40 SGTM
626 } 650 }
627 }; 651 };
628 652
629 // Export 653 // Export
630 return { 654 return {
631 DestinationStore: DestinationStore 655 DestinationStore: DestinationStore
632 }; 656 };
633 }); 657 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698