Index: chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappRegistry.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappRegistry.java b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappRegistry.java |
index 1997ce97f279cb9b1ced3daafedd907400a81a4b..b05ebdcbdf2a63686a4bb0f6b904d1ab698ba2e2 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappRegistry.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappRegistry.java |
@@ -112,13 +112,19 @@ public class WebappRegistry { |
protected final WebappDataStorage doInBackground(Void... nothing) { |
// Create the WebappDataStorage on the background thread, as this must create and |
// open a new SharedPreferences. |
- return WebappDataStorage.open(webappId); |
+ WebappDataStorage storage = WebappDataStorage.open(webappId); |
+ // The first read from {@link WebappDataStorage} must be done in the background. |
dominickn
2017/06/13 01:36:57
This is an interesting restriction! Is it new?
pkotwicz
2017/06/13 03:14:29
Thank you for your question! It forced me to do mo
dominickn
2017/06/13 23:13:21
Perhaps this bit of code should be moved to warmUp
|
+ // Otherwise a strict mode exception is thrown. Do it now. |
+ storage.getLastUsedTime(); |
+ return storage; |
} |
@Override |
protected final void onPostExecute(WebappDataStorage storage) { |
- // Guarantee that last used time != WebappDataStorage.LAST_USED_INVALID. Must be |
- // run on the main thread as SharedPreferences.Editor.apply() is called. |
+ // Update the last used time in order to prevent |
+ // {@link WebappRegistry@unregisterOldWebapps()} from deleting the |
+ // WebappDataStorage. Must be run on the main thread as |
+ // SharedPreferences.Editor.apply() is called. |
mStorages.put(webappId, storage); |
mPreferences.edit().putStringSet(KEY_WEBAPP_SET, mStorages.keySet()).apply(); |
storage.updateLastUsedTime(); |