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

Side by Side Diff: chrome/browser/resources/print_preview/search/destination_search.js

Issue 233623003: Remember and restore the account last used destination is registered for. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Adjust PrintPreview unit test. Created 6 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 * Component used for searching for a print destination. 9 * Component used for searching for a print destination.
10 * This is a modal dialog that allows the user to search and select a 10 * This is a modal dialog that allows the user to search and select a
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
140 setTimeout(function(element) { 140 setTimeout(function(element) {
141 element.classList.remove('transparent'); 141 element.classList.remove('transparent');
142 }.bind(this, this.getElement()), 0); 142 }.bind(this, this.getElement()), 0);
143 this.searchBox_.focus(); 143 this.searchBox_.focus();
144 var promoEl = this.getChildElement('.cloudprint-promo'); 144 var promoEl = this.getChildElement('.cloudprint-promo');
145 if (getIsVisible(promoEl)) { 145 if (getIsVisible(promoEl)) {
146 this.metrics_.incrementDestinationSearchBucket( 146 this.metrics_.incrementDestinationSearchBucket(
147 print_preview.Metrics.DestinationSearchBucket. 147 print_preview.Metrics.DestinationSearchBucket.
148 CLOUDPRINT_PROMO_SHOWN); 148 CLOUDPRINT_PROMO_SHOWN);
149 } 149 }
150 if (this.userInfo_.initialized) {
151 this.onUsersChanged_();
152 }
150 this.reflowLists_(); 153 this.reflowLists_();
151 } else { 154 } else {
152 this.getElement().classList.add('transparent'); 155 this.getElement().classList.add('transparent');
153 // Collapse all destination lists 156 // Collapse all destination lists
154 this.localList_.setIsShowAll(false); 157 this.localList_.setIsShowAll(false);
155 this.cloudList_.setIsShowAll(false); 158 this.cloudList_.setIsShowAll(false);
156 this.searchBox_.setQuery(''); 159 this.searchBox_.setQuery('');
157 this.filterLists_(null); 160 this.filterLists_(null);
158 } 161 }
159 }, 162 },
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
217 this.destinationStore_, 220 this.destinationStore_,
218 print_preview.DestinationStore.EventType.DESTINATION_SELECT, 221 print_preview.DestinationStore.EventType.DESTINATION_SELECT,
219 this.onDestinationStoreSelect_.bind(this)); 222 this.onDestinationStoreSelect_.bind(this));
220 this.tracker.add( 223 this.tracker.add(
221 this.destinationStore_, 224 this.destinationStore_,
222 print_preview.DestinationStore.EventType.DESTINATION_SEARCH_STARTED, 225 print_preview.DestinationStore.EventType.DESTINATION_SEARCH_STARTED,
223 this.updateThrobbers_.bind(this)); 226 this.updateThrobbers_.bind(this));
224 this.tracker.add( 227 this.tracker.add(
225 this.destinationStore_, 228 this.destinationStore_,
226 print_preview.DestinationStore.EventType.DESTINATION_SEARCH_DONE, 229 print_preview.DestinationStore.EventType.DESTINATION_SEARCH_DONE,
227 this.updateThrobbers_.bind(this)); 230 this.onDestinationSearchDone_.bind(this));
228 231
229 this.tracker.add( 232 this.tracker.add(
230 this.localList_, 233 this.localList_,
231 print_preview.DestinationList.EventType.ACTION_LINK_ACTIVATED, 234 print_preview.DestinationList.EventType.ACTION_LINK_ACTIVATED,
232 this.onManageLocalDestinationsActivated_.bind(this)); 235 this.onManageLocalDestinationsActivated_.bind(this));
233 this.tracker.add( 236 this.tracker.add(
234 this.cloudList_, 237 this.cloudList_,
235 print_preview.DestinationList.EventType.ACTION_LINK_ACTIVATED, 238 print_preview.DestinationList.EventType.ACTION_LINK_ACTIVATED,
236 this.onManageCloudDestinationsActivated_.bind(this)); 239 this.onManageCloudDestinationsActivated_.bind(this));
237 240
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
305 /** 308 /**
306 * Renders all of the destinations in the destination store. 309 * Renders all of the destinations in the destination store.
307 * @private 310 * @private
308 */ 311 */
309 renderDestinations_: function() { 312 renderDestinations_: function() {
310 var recentDestinations = []; 313 var recentDestinations = [];
311 var localDestinations = []; 314 var localDestinations = [];
312 var cloudDestinations = []; 315 var cloudDestinations = [];
313 var unregisteredCloudDestinations = []; 316 var unregisteredCloudDestinations = [];
314 317
315 this.destinationStore_.destinations.forEach(function(destination) { 318 var destinations =
319 this.destinationStore_.destinations(this.userInfo_.activeUser);
320 destinations.forEach(function(destination) {
316 if (destination.isRecent) { 321 if (destination.isRecent) {
317 recentDestinations.push(destination); 322 recentDestinations.push(destination);
318 } 323 }
319 if (destination.isLocal || 324 if (destination.isLocal ||
320 destination.origin == print_preview.Destination.Origin.DEVICE) { 325 destination.origin == print_preview.Destination.Origin.DEVICE) {
321 localDestinations.push(destination); 326 localDestinations.push(destination);
322 } else { 327 } else {
323 if (destination.connectionStatus == 328 if (destination.connectionStatus ==
324 print_preview.Destination.ConnectionStatus.UNREGISTERED) { 329 print_preview.Destination.ConnectionStatus.UNREGISTERED) {
325 unregisteredCloudDestinations.push(destination); 330 unregisteredCloudDestinations.push(destination);
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
401 this.localList_.setIsThrobberVisible( 406 this.localList_.setIsThrobberVisible(
402 this.destinationStore_.isLocalDestinationSearchInProgress); 407 this.destinationStore_.isLocalDestinationSearchInProgress);
403 this.cloudList_.setIsThrobberVisible( 408 this.cloudList_.setIsThrobberVisible(
404 this.destinationStore_.isCloudDestinationSearchInProgress); 409 this.destinationStore_.isCloudDestinationSearchInProgress);
405 this.recentList_.setIsThrobberVisible( 410 this.recentList_.setIsThrobberVisible(
406 this.destinationStore_.isLocalDestinationSearchInProgress && 411 this.destinationStore_.isLocalDestinationSearchInProgress &&
407 this.destinationStore_.isCloudDestinationSearchInProgress); 412 this.destinationStore_.isCloudDestinationSearchInProgress);
408 this.reflowLists_(); 413 this.reflowLists_();
409 }, 414 },
410 415
411
412 /** 416 /**
413 * Updates the account selection UI. 417 * Called when user's logged in accounts change. Updates the UI.
414 * @param {string} email Email of the logged in user. 418 * @private
415 * @param {!Array.<string>} accounts List of logged in user accounts.
416 */ 419 */
417 setAccounts_: function(email, accounts) { 420 onUsersChanged_: function() {
418 var loggedIn = !!email; 421 var loggedIn = this.userInfo_.loggedIn;
419 if (loggedIn) { 422 if (loggedIn) {
420 var accountSelectEl = this.getChildElement('.account-select'); 423 var accountSelectEl = this.getChildElement('.account-select');
421 accountSelectEl.innerHTML = ''; 424 accountSelectEl.innerHTML = '';
422 accounts.forEach(function(account) { 425 this.userInfo_.users.forEach(function(account) {
423 var option = document.createElement('option'); 426 var option = document.createElement('option');
424 option.text = account; 427 option.text = account;
425 option.value = account; 428 option.value = account;
426 accountSelectEl.add(option); 429 accountSelectEl.add(option);
427 }); 430 });
428 var option = document.createElement('option'); 431 var option = document.createElement('option');
429 option.text = localStrings.getString('addAccountTitle'); 432 option.text = localStrings.getString('addAccountTitle');
430 option.value = ''; 433 option.value = '';
431 accountSelectEl.add(option); 434 accountSelectEl.add(option);
432 435
433 accountSelectEl.selectedIndex = accounts.indexOf(email); 436 accountSelectEl.selectedIndex =
437 this.userInfo_.users.indexOf(this.userInfo_.activeUser);
434 } 438 }
435 439
436 setIsVisible(this.getChildElement('.user-info'), loggedIn); 440 setIsVisible(this.getChildElement('.user-info'), loggedIn);
437 setIsVisible(this.getChildElement('.cloud-list'), loggedIn); 441 setIsVisible(this.getChildElement('.cloud-list'), loggedIn);
438 setIsVisible(this.getChildElement('.cloudprint-promo'), !loggedIn); 442 setIsVisible(this.getChildElement('.cloudprint-promo'), !loggedIn);
439 this.reflowLists_(); 443 this.reflowLists_();
440 }, 444 },
441 445
442 /** 446 /**
443 * Called when a destination search should be executed. Filters the 447 * Called when a destination search should be executed. Filters the
(...skipping 29 matching lines...) Expand all
473 this.metrics_.incrementDestinationSearchBucket( 477 this.metrics_.incrementDestinationSearchBucket(
474 print_preview.Metrics.DestinationSearchBucket.DESTINATION_SELECTED); 478 print_preview.Metrics.DestinationSearchBucket.DESTINATION_SELECTED);
475 }, 479 },
476 480
477 /** 481 /**
478 * Called when a destination is selected. Selected destination are marked as 482 * Called when a destination is selected. Selected destination are marked as
479 * recent, so we have to update our recent destinations list. 483 * recent, so we have to update our recent destinations list.
480 * @private 484 * @private
481 */ 485 */
482 onDestinationStoreSelect_: function() { 486 onDestinationStoreSelect_: function() {
483 var destinations = this.destinationStore_.destinations; 487 var destinations =
488 this.destinationStore_.destinations(this.userInfo_.activeUser);
484 var recentDestinations = []; 489 var recentDestinations = [];
485 destinations.forEach(function(destination) { 490 destinations.forEach(function(destination) {
486 if (destination.isRecent) { 491 if (destination.isRecent) {
487 recentDestinations.push(destination); 492 recentDestinations.push(destination);
488 } 493 }
489 }); 494 });
490 this.recentList_.updateDestinations(recentDestinations); 495 this.recentList_.updateDestinations(recentDestinations);
491 this.reflowLists_(); 496 this.reflowLists_();
492 }, 497 },
493 498
494 /** 499 /**
495 * Called when destinations are inserted into the store. Rerenders 500 * Called when destinations are inserted into the store. Rerenders
496 * destinations. 501 * destinations.
497 * @private 502 * @private
498 */ 503 */
499 onDestinationsInserted_: function() { 504 onDestinationsInserted_: function() {
500 this.renderDestinations_(); 505 this.renderDestinations_();
501 this.reflowLists_(); 506 this.reflowLists_();
502 }, 507 },
503 508
504 /** 509 /**
510 * Called when destinations are inserted into the store. Rerenders
511 * destinations.
512 * @private
513 */
514 onDestinationSearchDone_: function() {
515 this.updateThrobbers_();
516 this.renderDestinations_();
517 this.reflowLists_();
518 },
519
520 /**
505 * Called when the manage cloud printers action is activated. 521 * Called when the manage cloud printers action is activated.
506 * @private 522 * @private
507 */ 523 */
508 onManageCloudDestinationsActivated_: function() { 524 onManageCloudDestinationsActivated_: function() {
509 cr.dispatchSimpleEvent( 525 cr.dispatchSimpleEvent(
510 this, 526 this,
511 print_preview.DestinationSearch.EventType.MANAGE_CLOUD_DESTINATIONS); 527 print_preview.DestinationSearch.EventType.MANAGE_CLOUD_DESTINATIONS);
512 }, 528 },
513 529
514 /** 530 /**
(...skipping 21 matching lines...) Expand all
536 * Called when item in the Accounts list is selected. Initiates active user 552 * Called when item in the Accounts list is selected. Initiates active user
537 * switch or, for 'Add account...' item, opens Google sign-in page. 553 * switch or, for 'Add account...' item, opens Google sign-in page.
538 * @private 554 * @private
539 */ 555 */
540 onAccountChange_: function() { 556 onAccountChange_: function() {
541 var accountSelectEl = this.getChildElement('.account-select'); 557 var accountSelectEl = this.getChildElement('.account-select');
542 var account = 558 var account =
543 accountSelectEl.options[accountSelectEl.selectedIndex].value; 559 accountSelectEl.options[accountSelectEl.selectedIndex].value;
544 if (account) { 560 if (account) {
545 this.userInfo_.activeUser = account; 561 this.userInfo_.activeUser = account;
562 this.destinationStore_.reloadUserCookieBasedDestinations();
546 } else { 563 } else {
547 cr.dispatchSimpleEvent(this, DestinationSearch.EventType.ADD_ACCOUNT); 564 cr.dispatchSimpleEvent(this, DestinationSearch.EventType.ADD_ACCOUNT);
548 // Set selection back to the active user. 565 // Set selection back to the active user.
549 for (var i = 0; i < accountSelectEl.options.length; i++) { 566 for (var i = 0; i < accountSelectEl.options.length; i++) {
550 if (accountSelectEl.options[i].value == this.userInfo_.activeUser) { 567 if (accountSelectEl.options[i].value == this.userInfo_.activeUser) {
551 accountSelectEl.selectedIndex = i; 568 accountSelectEl.selectedIndex = i;
552 break; 569 break;
553 } 570 }
554 } 571 }
555 } 572 }
(...skipping 21 matching lines...) Expand all
577 594
578 /** 595 /**
579 * Called when an animation ends on the page. 596 * Called when an animation ends on the page.
580 * @private 597 * @private
581 */ 598 */
582 onAnimationEnd_: function() { 599 onAnimationEnd_: function() {
583 this.getChildElement('.page').classList.remove('pulse'); 600 this.getChildElement('.page').classList.remove('pulse');
584 }, 601 },
585 602
586 /** 603 /**
587 * Called when user's logged in accounts change. Updates the UI.
588 * @private
589 */
590 onUsersChanged_: function() {
591 this.setAccounts_(this.userInfo_.activeUser, this.userInfo_.users);
592 },
593
594 /**
595 * Called when the window is resized. Reflows layout of destination lists. 604 * Called when the window is resized. Reflows layout of destination lists.
596 * @private 605 * @private
597 */ 606 */
598 onWindowResize_: function() { 607 onWindowResize_: function() {
599 this.reflowLists_(); 608 this.reflowLists_();
600 } 609 }
601 }; 610 };
602 611
603 // Export 612 // Export
604 return { 613 return {
605 DestinationSearch: DestinationSearch 614 DestinationSearch: DestinationSearch
606 }; 615 };
607 }); 616 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698