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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappRegistry.java

Issue 2421833003: Move WebappRegistry warmup to async task. (Closed)
Patch Set: Update comments. Created 4 years, 2 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/android/java/src/org/chromium/chrome/browser/DeferredStartupHandler.java ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 2f4d265096609eb46c811a4e1c24b2f8e99fc664..9ee9075312b3efe99ab0b31b6abc1f194e7ce46e 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
@@ -49,7 +49,11 @@ public class WebappRegistry {
/** Represents a period of 13 weeks in milliseconds */
static final long WEBAPP_UNOPENED_CLEANUP_DURATION = TimeUnit.DAYS.toMillis(13L * 7L);
- private static volatile WebappRegistry sInstance;
+ /** Initialization-on-demand holder. This exists for thread-safe lazy initialization. */
+ private static class Holder {
+ // Not final for testing.
+ private static WebappRegistry sInstance = new WebappRegistry();
+ }
private HashMap<String, WebappDataStorage> mStorages;
private SharedPreferences mPreferences;
@@ -62,34 +66,37 @@ public class WebappRegistry {
void onWebappDataStorageRetrieved(WebappDataStorage storage);
}
+ private WebappRegistry() {
+ mPreferences = openSharedPreferences();
+ mStorages = new HashMap<>();
+ }
+
/**
- * Returns the singleton WebappRegistry instance. Creates the instance if necessary.
+ * Returns the singleton WebappRegistry instance. Creates the instance on first call.
*/
public static WebappRegistry getInstance() {
- if (sInstance == null) sInstance = new WebappRegistry();
- return sInstance;
+ return Holder.sInstance;
}
/**
- * Warm up the WebappRegistry and a specific WebappDataStorage SharedPreferences. This static
- * method can be called on any thread, so it must not initialize sInstance.
+ * Warm up the WebappRegistry and a specific WebappDataStorage SharedPreferences.
* @param id The web app id to warm up in addition to the WebappRegistry.
*/
public static void warmUpSharedPrefsForId(String id) {
- sInstance.initStorages(id, false);
+ getInstance().initStorages(id, false);
}
/**
- * Warm up the WebappRegistry and all WebappDataStorage SharedPreferences. This static method
- * can be called on any thread, so it must not initialize sInstance.
+ * Warm up the WebappRegistry and all WebappDataStorage SharedPreferences.
*/
public static void warmUpSharedPrefs() {
- sInstance.initStorages(null, false);
+ getInstance().initStorages(null, false);
}
+ @VisibleForTesting
public static void refreshSharedPrefsForTesting() {
- sInstance = new WebappRegistry();
- sInstance.initStorages(null, true);
+ Holder.sInstance = new WebappRegistry();
+ getInstance().initStorages(null, true);
}
/**
@@ -264,11 +271,6 @@ public class WebappRegistry {
REGISTRY_FILE_NAME, Context.MODE_PRIVATE);
}
- private WebappRegistry() {
- mPreferences = openSharedPreferences();
- mStorages = new HashMap<String, WebappDataStorage>();
- }
-
private void initStorages(String idToInitialize, boolean replaceExisting) {
Set<String> webapps =
mPreferences.getStringSet(KEY_WEBAPP_SET, Collections.<String>emptySet());
« no previous file with comments | « chrome/android/java/src/org/chromium/chrome/browser/DeferredStartupHandler.java ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698