summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPatrick Scott <phanna@android.com>2011-01-13 12:06:58 -0800
committerAndroid (Google) Code Review <android-gerrit@google.com>2011-01-13 12:06:58 -0800
commit58fddd3154418fbdf7560db5662fcf6d248061e3 (patch)
tree73151b55aa4671aa244ab1514fdc6951361092d4
parentd4e5cbb732e39017fb711dad4b5485cc779806bd (diff)
parent97efb1e650b356d3fc81ff531544383362759d77 (diff)
downloadpackages_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.java14
-rw-r--r--src/com/android/browser/GoogleAccountLogin.java19
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() {