diff options
| author | Patrick Scott <phanna@android.com> | 2011-01-13 12:06:58 -0800 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-01-13 12:06:58 -0800 |
| commit | 58fddd3154418fbdf7560db5662fcf6d248061e3 (patch) | |
| tree | 73151b55aa4671aa244ab1514fdc6951361092d4 | |
| parent | d4e5cbb732e39017fb711dad4b5485cc779806bd (diff) | |
| parent | 97efb1e650b356d3fc81ff531544383362759d77 (diff) | |
| download | packages_apps_Browser-58fddd3154418fbdf7560db5662fcf6d248061e3.tar.gz packages_apps_Browser-58fddd3154418fbdf7560db5662fcf6d248061e3.tar.bz2 packages_apps_Browser-58fddd3154418fbdf7560db5662fcf6d248061e3.zip | |
Merge "Skip auto sign-in if the user is already logged in." into honeycomb
| -rw-r--r-- | src/com/android/browser/BrowserActivity.java | 14 | ||||
| -rw-r--r-- | src/com/android/browser/GoogleAccountLogin.java | 19 |
2 files changed, 30 insertions, 3 deletions
diff --git a/src/com/android/browser/BrowserActivity.java b/src/com/android/browser/BrowserActivity.java index 0fce014ae..018744dd9 100644 --- a/src/com/android/browser/BrowserActivity.java +++ b/src/com/android/browser/BrowserActivity.java @@ -26,6 +26,7 @@ import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.PixelFormat; import android.os.Bundle; +import android.os.Handler; import android.util.Log; import android.view.ActionMode; import android.view.ContextMenu; @@ -115,7 +116,8 @@ public class BrowserActivity extends Activity { } String account = settings.getAutoLoginAccount(this); - if (settings.isAutoLoginEnabled() && account != null) { + if (settings.isAutoLoginEnabled() && account != null && + !GoogleAccountLogin.isLoggedIn()) { GoogleAccountLogin login = new GoogleAccountLogin(this, account); final ProgressDialog dialog = ProgressDialog.show(this, @@ -125,9 +127,17 @@ public class BrowserActivity extends Activity { true /* cancelable */, login); final Bundle b = icicle; - final Runnable start = new Runnable() { + final Handler handler = new Handler(); + final Runnable dismiss = new Runnable() { @Override public void run() { dialog.dismiss(); + } + }; + final Runnable start = new Runnable() { + @Override public void run() { + // Post a delayed dismiss message to avoid a flash of the + // progress dialog. + handler.postDelayed(dismiss, 1000); mController.start(b, getIntent()); } }; diff --git a/src/com/android/browser/GoogleAccountLogin.java b/src/com/android/browser/GoogleAccountLogin.java index 8ff09727d..04b395751 100644 --- a/src/com/android/browser/GoogleAccountLogin.java +++ b/src/com/android/browser/GoogleAccountLogin.java @@ -35,10 +35,11 @@ import android.content.DialogInterface.OnCancelListener; import android.net.http.AndroidHttpClient; import android.net.Uri; import android.os.Bundle; +import android.webkit.CookieManager; import android.webkit.WebView; import android.webkit.WebViewClient; -import java.util.ArrayList; +import java.util.StringTokenizer; public class GoogleAccountLogin extends Thread implements AccountManagerCallback<Bundle>, OnCancelListener { @@ -182,6 +183,22 @@ public class GoogleAccountLogin extends Thread implements return AccountManager.get(ctx).getAccountsByType(GOOGLE); } + // Checks for the presence of the SID cookie on google.com. + public static boolean isLoggedIn() { + String cookies = CookieManager.getInstance().getCookie( + "http://www.google.com"); + if (cookies != null) { + StringTokenizer tokenizer = new StringTokenizer(cookies, ";"); + while (tokenizer.hasMoreTokens()) { + String cookie = tokenizer.nextToken().trim(); + if (cookie.startsWith("SID=")) { + return true; + } + } + } + return false; + } + // Used to indicate that the Browser should continue loading the main page. // This can happen on success, error, or timeout. private synchronized void done() { |
