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..ad28a732c2c31842eae40a17249fee370bdfe584 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; |
+ notifyAll(); |
+ } |
} |
/** |
@@ -138,7 +142,7 @@ public class HttpAuthDatabase { |
* @return true if the database was initialized, false otherwise |
*/ |
private boolean waitForInit() { |
- synchronized (this) { |
+ synchronized (mInitializedLock) { |
while (!mInitialized) { |
try { |
wait(); |
boliu
2014/02/04 23:26:25
This needs to be mInitializedLock.wait() I think.
Lei Zhang
2014/02/05 00:50:42
Thanks. Done.
|