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

Side by Side Diff: android_webview/java/src/org/chromium/android_webview/HttpAuthDatabase.java

Issue 143663004: FindBugs: Fix a synchronized method warning in HttpAuthDatabase.java. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: update findbugs_known_bugs.txt Created 6 years, 10 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | build/android/findbugs_filter/findbugs_known_bugs.txt » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 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 package org.chromium.android_webview; 5 package org.chromium.android_webview;
6 6
7 import android.content.ContentValues; 7 import android.content.ContentValues;
8 import android.content.Context; 8 import android.content.Context;
9 import android.database.Cursor; 9 import android.database.Cursor;
10 import android.database.sqlite.SQLiteDatabase; 10 import android.database.sqlite.SQLiteDatabase;
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
45 private static final String HTTPAUTH_HOST_COL = "host"; 45 private static final String HTTPAUTH_HOST_COL = "host";
46 private static final String HTTPAUTH_REALM_COL = "realm"; 46 private static final String HTTPAUTH_REALM_COL = "realm";
47 private static final String HTTPAUTH_USERNAME_COL = "username"; 47 private static final String HTTPAUTH_USERNAME_COL = "username";
48 private static final String HTTPAUTH_PASSWORD_COL = "password"; 48 private static final String HTTPAUTH_PASSWORD_COL = "password";
49 49
50 /** 50 /**
51 * Initially false until the background thread completes. 51 * Initially false until the background thread completes.
52 */ 52 */
53 private boolean mInitialized = false; 53 private boolean mInitialized = false;
54 54
55 private final Object mInitializedLock = new Object();
56
55 /** 57 /**
56 * Create an instance of HttpAuthDatabase for the named file, and kick-off b ackground 58 * Create an instance of HttpAuthDatabase for the named file, and kick-off b ackground
57 * initialization of that database. 59 * initialization of that database.
58 * 60 *
59 * @param context the Context to use for opening the database 61 * @param context the Context to use for opening the database
60 * @param databaseFile Name of the file to be initialized. 62 * @param databaseFile Name of the file to be initialized.
61 */ 63 */
62 public HttpAuthDatabase(final Context context, final String databaseFile) { 64 public HttpAuthDatabase(final Context context, final String databaseFile) {
63 new Thread() { 65 new Thread() {
64 @Override 66 @Override
65 public void run() { 67 public void run() {
66 initOnBackgroundThread(context, databaseFile); 68 initOnBackgroundThread(context, databaseFile);
67 } 69 }
68 }.start(); 70 }.start();
69 } 71 }
70 72
71 /** 73 /**
72 * Initializes the databases and notifies any callers waiting on waitForInit . 74 * Initializes the databases and notifies any callers waiting on waitForInit .
73 * 75 *
74 * @param context the Context to use for opening the database 76 * @param context the Context to use for opening the database
75 * @param databaseFile Name of the file to be initialized. 77 * @param databaseFile Name of the file to be initialized.
76 */ 78 */
77 private synchronized void initOnBackgroundThread(Context context, String dat abaseFile) { 79 private void initOnBackgroundThread(Context context, String databaseFile) {
78 if (mInitialized) { 80 synchronized (mInitializedLock) {
79 return; 81 if (mInitialized) {
82 return;
83 }
84
85 initDatabase(context, databaseFile);
86
87 // Thread done, notify.
88 mInitialized = true;
89 notifyAll();
80 } 90 }
81
82 initDatabase(context, databaseFile);
83
84 // Thread done, notify.
85 mInitialized = true;
86 notifyAll();
87 } 91 }
88 92
89 /** 93 /**
90 * Opens the database, and upgrades it if necessary. 94 * Opens the database, and upgrades it if necessary.
91 * 95 *
92 * @param context the Context to use for opening the database 96 * @param context the Context to use for opening the database
93 * @param databaseFile Name of the file to be initialized. 97 * @param databaseFile Name of the file to be initialized.
94 */ 98 */
95 private void initDatabase(Context context, String databaseFile) { 99 private void initDatabase(Context context, String databaseFile) {
96 try { 100 try {
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
131 mDatabase.setVersion(DATABASE_VERSION); 135 mDatabase.setVersion(DATABASE_VERSION);
132 } 136 }
133 137
134 /** 138 /**
135 * Waits for the background initialization thread to complete and check the database creation 139 * Waits for the background initialization thread to complete and check the database creation
136 * status. 140 * status.
137 * 141 *
138 * @return true if the database was initialized, false otherwise 142 * @return true if the database was initialized, false otherwise
139 */ 143 */
140 private boolean waitForInit() { 144 private boolean waitForInit() {
141 synchronized (this) { 145 synchronized (mInitializedLock) {
142 while (!mInitialized) { 146 while (!mInitialized) {
143 try { 147 try {
144 wait(); 148 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.
145 } catch (InterruptedException e) { 149 } catch (InterruptedException e) {
146 Log.e(LOGTAG, "Caught exception while checking initializatio n", e); 150 Log.e(LOGTAG, "Caught exception while checking initializatio n", e);
147 } 151 }
148 } 152 }
149 } 153 }
150 return mDatabase != null; 154 return mDatabase != null;
151 } 155 }
152 156
153 /** 157 /**
154 * Sets the HTTP authentication password. Tuple (HTTPAUTH_HOST_COL, HTTPAUTH _REALM_COL, 158 * Sets the HTTP authentication password. Tuple (HTTPAUTH_HOST_COL, HTTPAUTH _REALM_COL,
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
240 /** 244 /**
241 * Clears the HTTP authentication password database. 245 * Clears the HTTP authentication password database.
242 */ 246 */
243 public void clearHttpAuthUsernamePassword() { 247 public void clearHttpAuthUsernamePassword() {
244 if (!waitForInit()) { 248 if (!waitForInit()) {
245 return; 249 return;
246 } 250 }
247 mDatabase.delete(HTTPAUTH_TABLE_NAME, null, null); 251 mDatabase.delete(HTTPAUTH_TABLE_NAME, null, null);
248 } 252 }
249 } 253 }
OLDNEW
« no previous file with comments | « no previous file | build/android/findbugs_filter/findbugs_known_bugs.txt » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698