| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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 'use strict'; | 5 'use strict'; |
| 6 | 6 |
| 7 /** | 7 /** |
| 8 * @fileoverview Utility objects and functions for Google Now extension. | 8 * @fileoverview Utility objects and functions for Google Now extension. |
| 9 * Most important entities here: | 9 * Most important entities here: |
| 10 * (1) 'wrapper' is a module used to add error handling and other services to | 10 * (1) 'wrapper' is a module used to add error handling and other services to |
| (...skipping 630 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 641 * PromiseRejection.ALLOW, allow promise rejection on errors, otherwise the | 641 * PromiseRejection.ALLOW, allow promise rejection on errors, otherwise the |
| 642 * default storage object is resolved. | 642 * default storage object is resolved. |
| 643 * @return {Promise} A promise that fills the default storage object. On | 643 * @return {Promise} A promise that fills the default storage object. On |
| 644 * failure, if promise rejection is allowed, the promise is rejected, | 644 * failure, if promise rejection is allowed, the promise is rejected, |
| 645 * otherwise it is resolved to the default storage object. | 645 * otherwise it is resolved to the default storage object. |
| 646 */ | 646 */ |
| 647 function fillFromChromeLocalStorage( | 647 function fillFromChromeLocalStorage( |
| 648 defaultStorageObject, | 648 defaultStorageObject, |
| 649 opt_allowPromiseRejection) { | 649 opt_allowPromiseRejection) { |
| 650 return new Promise(function(resolve, reject) { | 650 return new Promise(function(resolve, reject) { |
| 651 instrumented.storage.local.get(defaultStorageObject, function(items) { | 651 // We have to create a keys array because keys with a default value |
| 652 // of undefined will cause that key to not be looked up! |
| 653 var keysToGet = []; |
| 654 for (var key in defaultStorageObject) { |
| 655 keysToGet.push(key); |
| 656 } |
| 657 instrumented.storage.local.get(keysToGet, function(items) { |
| 652 if (items) { | 658 if (items) { |
| 653 resolve(items); | 659 // Merge the result with the default storage object. |
| 660 var result = {}; |
| 661 for (var key in defaultStorageObject) { |
| 662 result[key] = (key in items) ? items[key] : defaultStorageObject[key]; |
| 663 } |
| 664 resolve(result); |
| 654 } else if (opt_allowPromiseRejection === PromiseRejection.ALLOW) { | 665 } else if (opt_allowPromiseRejection === PromiseRejection.ALLOW) { |
| 655 reject(); | 666 reject(); |
| 656 } else { | 667 } else { |
| 657 resolve(defaultStorageObject); | 668 resolve(defaultStorageObject); |
| 658 } | 669 } |
| 659 }); | 670 }); |
| 660 }); | 671 }); |
| 661 } | 672 } |
| 662 | 673 |
| 663 /** | 674 /** |
| (...skipping 363 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1027 // One hour is just an arbitrary amount of time chosen. | 1038 // One hour is just an arbitrary amount of time chosen. |
| 1028 chrome.alarms.create(alarmName, {periodInMinutes: 60}); | 1039 chrome.alarms.create(alarmName, {periodInMinutes: 60}); |
| 1029 | 1040 |
| 1030 return { | 1041 return { |
| 1031 addListener: addListener, | 1042 addListener: addListener, |
| 1032 getAuthToken: getAuthToken, | 1043 getAuthToken: getAuthToken, |
| 1033 isSignedIn: isSignedIn, | 1044 isSignedIn: isSignedIn, |
| 1034 removeToken: removeToken | 1045 removeToken: removeToken |
| 1035 }; | 1046 }; |
| 1036 } | 1047 } |
| OLD | NEW |