From 078b5913799610c3853675508e7ccc02c45f56ba Mon Sep 17 00:00:00 2001 From: Ben Murdoch Date: Fri, 1 Jun 2012 14:00:39 +0100 Subject: Get a WebViewDatabaseClassic instance lazily. Do not merge. Rather than caching the WebViewDatabaseClassic instance in a member, grab the instance when we need it. In the case of WebSyncManager - neither it or it's subclass uses the WebViewDatabaseClassic (and it's subclass is final) so remove it's initialisation. We must leave the member declared however to satisfy the published API. Bug: 6482144 Change-Id: Ibf5186a2851d17f5ad62b35ad543aeadff5618d9 --- core/java/android/webkit/BrowserFrame.java | 17 +++++++++-------- core/java/android/webkit/WebSyncManager.java | 4 +++- 2 files changed, 12 insertions(+), 9 deletions(-) (limited to 'core') diff --git a/core/java/android/webkit/BrowserFrame.java b/core/java/android/webkit/BrowserFrame.java index fe812af..5108990 100644 --- a/core/java/android/webkit/BrowserFrame.java +++ b/core/java/android/webkit/BrowserFrame.java @@ -74,7 +74,6 @@ class BrowserFrame extends Handler { private final CallbackProxy mCallbackProxy; private final WebSettingsClassic mSettings; private final Context mContext; - private final WebViewDatabaseClassic mDatabase; private final WebViewCore mWebViewCore; /* package */ boolean mLoadInitFromJava; private int mLoadType; @@ -243,7 +242,6 @@ class BrowserFrame extends Handler { mSettings = settings; mContext = context; mCallbackProxy = proxy; - mDatabase = WebViewDatabaseClassic.getInstance(appContext); mWebViewCore = w; mSearchBox = new SearchBoxImpl(mWebViewCore, mCallbackProxy); @@ -426,7 +424,8 @@ class BrowserFrame extends Handler { if (h != null) { String url = WebTextView.urlForAutoCompleteData(h.getUrl()); if (url != null) { - mDatabase.setFormData(url, data); + WebViewDatabaseClassic.getInstance(mContext).setFormData( + url, data); } } } @@ -498,8 +497,9 @@ class BrowserFrame extends Handler { if (item != null) { WebAddress uri = new WebAddress(item.getUrl()); String schemePlusHost = uri.getScheme() + uri.getHost(); - String[] up = mDatabase.getUsernamePassword( - schemePlusHost); + String[] up = + WebViewDatabaseClassic.getInstance(mContext) + .getUsernamePassword(schemePlusHost); if (up != null && up[0] != null) { setUsernamePassword(up[0], up[1]); } @@ -800,10 +800,10 @@ class BrowserFrame extends Handler { // the post data (there could be another form on the // page and that was posted instead. String postString = new String(postData); + WebViewDatabaseClassic db = WebViewDatabaseClassic.getInstance(mContext); if (postString.contains(URLEncoder.encode(username)) && postString.contains(URLEncoder.encode(password))) { - String[] saved = mDatabase.getUsernamePassword( - schemePlusHost); + String[] saved = db.getUsernamePassword(schemePlusHost); if (saved != null) { // null username implies that user has chosen not to // save password @@ -811,7 +811,8 @@ class BrowserFrame extends Handler { // non-null username implies that user has // chosen to save password, so update the // recorded password - mDatabase.setUsernamePassword(schemePlusHost, username, password); + db.setUsernamePassword(schemePlusHost, username, + password); } } else { // CallbackProxy will handle creating the resume diff --git a/core/java/android/webkit/WebSyncManager.java b/core/java/android/webkit/WebSyncManager.java index d3ec603..38b5e5c 100644 --- a/core/java/android/webkit/WebSyncManager.java +++ b/core/java/android/webkit/WebSyncManager.java @@ -37,6 +37,9 @@ abstract class WebSyncManager implements Runnable { // handler of the sync thread protected Handler mHandler; // database for the persistent storage + // Note that this remains uninitialised as it is unused. We cannot remove + // the member as it leaked into the public API via CookieSyncManager. + // TODO: hide this member, ditto for mHandler. protected WebViewDatabase mDataBase; // Ref count for calls to start/stop sync private int mStartSyncRefCount; @@ -62,7 +65,6 @@ abstract class WebSyncManager implements Runnable { protected WebSyncManager(Context context, String name) { mThreadName = name; if (context != null) { - mDataBase = WebViewDatabase.getInstance(context); mSyncThread = new Thread(this); mSyncThread.setName(mThreadName); mSyncThread.start(); -- cgit v1.1