Index: android_webview/java/src/org/chromium/android_webview/HttpAuthDatabase.java |
diff --git a/android_webview/java/src/org/chromium/android_webview/HttpAuthDatabase.java b/android_webview/java/src/org/chromium/android_webview/HttpAuthDatabase.java |
index 6e65e060a7033ecacafdebf90f8060e191e987fe..8102e1fc959bde04f4dd025010a35b4b53cd9fe9 100644 |
--- a/android_webview/java/src/org/chromium/android_webview/HttpAuthDatabase.java |
+++ b/android_webview/java/src/org/chromium/android_webview/HttpAuthDatabase.java |
@@ -52,6 +52,8 @@ public class HttpAuthDatabase { |
*/ |
private boolean mInitialized = false; |
+ private final Object mInitializedLock = new Object(); |
+ |
/** |
* Create an instance of HttpAuthDatabase for the named file, and kick-off background |
* initialization of that database. |
@@ -74,16 +76,18 @@ public class HttpAuthDatabase { |
* @param context the Context to use for opening the database |
* @param databaseFile Name of the file to be initialized. |
*/ |
- private synchronized void initOnBackgroundThread(Context context, String databaseFile) { |
- if (mInitialized) { |
- return; |
- } |
+ private void initOnBackgroundThread(Context context, String databaseFile) { |
+ synchronized (mInitializedLock) { |
+ if (mInitialized) { |
+ return; |
+ } |
- initDatabase(context, databaseFile); |
+ initDatabase(context, databaseFile); |
- // Thread done, notify. |
- mInitialized = true; |
- notifyAll(); |
+ // Thread done, notify. |
+ mInitialized = true; |
+ mInitializedLock.notifyAll(); |
+ } |
} |
/** |
@@ -138,10 +142,10 @@ public class HttpAuthDatabase { |
* @return true if the database was initialized, false otherwise |
*/ |
private boolean waitForInit() { |
- synchronized (this) { |
+ synchronized (mInitializedLock) { |
while (!mInitialized) { |
try { |
- wait(); |
+ mInitializedLock.wait(); |
} catch (InterruptedException e) { |
Log.e(LOGTAG, "Caught exception while checking initialization", e); |
} |