Fix strict mode violation in GoogleAccountLogin
Do not call WebView methods from a background thread.
Bug: 5090601
Change-Id: If72d86c6a68932787b14d7eb11c3a351ac1f8385
diff --git a/src/com/android/browser/GoogleAccountLogin.java b/src/com/android/browser/GoogleAccountLogin.java
index 3896560..2bd3c8c 100644
--- a/src/com/android/browser/GoogleAccountLogin.java
+++ b/src/com/android/browser/GoogleAccountLogin.java
@@ -67,6 +67,7 @@
private String mLsid;
private int mState; // {NONE(0), SID(1), LSID(2)}
private boolean mTokensInvalidated;
+ private String mUserAgent;
private GoogleAccountLogin(Activity activity, Account account,
Runnable runnable) {
@@ -74,6 +75,7 @@
mAccount = account;
mWebView = new WebView(mActivity);
mRunnable = runnable;
+ mUserAgent = mWebView.getSettings().getUserAgentString();
// XXX: Doing pre-login causes onResume to skip calling
// resumeWebViewTimers. So to avoid problems with timers not running, we
@@ -106,17 +108,8 @@
.appendQueryParameter("SID", mSid)
.appendQueryParameter("LSID", mLsid)
.build().toString();
- // Check mRunnable to see if the request has been canceled. Otherwise
- // we might access a destroyed WebView.
- String ua = null;
- synchronized (this) {
- if (mRunnable == null) {
- return;
- }
- ua = mWebView.getSettings().getUserAgentString();
- }
// Intentionally not using Proxy.
- AndroidHttpClient client = AndroidHttpClient.newInstance(ua);
+ AndroidHttpClient client = AndroidHttpClient.newInstance(mUserAgent);
HttpPost request = new HttpPost(url);
String result = null;