Chromium Code Reviews| Index: chrome/browser/resources/print_preview/data/destination_store.js |
| diff --git a/chrome/browser/resources/print_preview/data/destination_store.js b/chrome/browser/resources/print_preview/data/destination_store.js |
| index acbfae038781a9008a0fa7ad8cd361e356bff7fd..1bf650bc696907cac964ba8f4fa4a688a5f0fd2c 100644 |
| --- a/chrome/browser/resources/print_preview/data/destination_store.js |
| +++ b/chrome/browser/resources/print_preview/data/destination_store.js |
| @@ -458,16 +458,42 @@ cr.define('print_preview', function() { |
| var capabilities = null; |
| var extensionId = ''; |
| var extensionName = ''; |
| - if (this.appState_.selectedDestinationId && |
| - this.appState_.selectedDestinationOrigin) { |
| - origin = this.appState_.selectedDestinationOrigin; |
| - id = this.appState_.selectedDestinationId; |
| - account = this.appState_.selectedDestinationAccount || ''; |
| - name = this.appState_.selectedDestinationName || ''; |
| - capabilities = this.appState_.selectedDestinationCapabilities; |
| - extensionId = this.appState_.selectedDestinationExtensionId || ''; |
| - extensionName = this.appState_.selectedDestinationExtensionName || ''; |
| + var foundDestination = false; |
| + if (this.appState_.recentDestinations) { |
| + // Run through the destinations backwards the most recently used is set |
| + // as the initially selected destination. |
| + for (var i = this.appState_.recentDestinations.length - 1; i >= 0; |
| + i--) { |
| + origin = this.appState_.recentDestinations[i].origin_; |
| + id = this.appState_.recentDestinations[i].id_; |
| + account = this.appState_.recentDestinations[i].account_ || ''; |
| + name = this.appState_.recentDestinations[i].name_ || ''; |
| + capabilities = this.appState_.recentDestinations[i].capabilities_; |
| + extensionId = this.appState_.recentDestinations[i].extension_id_ || |
| + ''; |
| + extensionName = |
| + this.appState_.recentDestinations[i].extension_name_ || ''; |
| + var candidate = |
| + this.destinationMap_[this.getDestinationKey_(origin, |
| + id, account)]; |
| + if (candidate != null) { |
| + this.selectDestination(candidate); |
| + candidate.isRecent = true; |
| + foundDestination = true; |
| + } else { |
| + foundDestination = this.fetchPreselectedDestination_( |
| + origin, |
| + id, |
| + account, |
| + name, |
| + capabilities, |
| + extensionId, |
| + extensionName); |
| + } |
| + } |
| } |
| + if (foundDestination) return; |
| + // Try the system default |
| var candidate = |
| this.destinationMap_[this.getDestinationKey_(origin, id, account)]; |
| if (candidate != null) { |
| @@ -1128,6 +1154,11 @@ cr.define('print_preview', function() { |
| var key = this.getKey_(destination); |
| var existingDestination = this.destinationMap_[key]; |
| if (existingDestination == null) { |
| + destination.isRecent |= this.appState_.recentDestinations.some( |
| + function(recent) { |
| + return (destination.id == recent.id_ && |
|
dpapad
2016/09/21 20:46:32
Since you are accessing id_, origin_ from here, ma
rbpotter
2016/09/21 23:19:15
Done.
|
| + destination.origin == recent.origin_); |
| + }, this); |
| this.destinations_.push(destination); |
| this.destinationMap_[key] = destination; |
| return true; |