Show prelogin only once
Bug: 5081641
Change-Id: I1c625e3528de9a7cd37dae5b8b428ff141759e14
diff --git a/src/com/android/browser/GoogleAccountLogin.java b/src/com/android/browser/GoogleAccountLogin.java
index 93996cd..cd96346 100644
--- a/src/com/android/browser/GoogleAccountLogin.java
+++ b/src/com/android/browser/GoogleAccountLogin.java
@@ -16,12 +16,6 @@
package com.android.browser;
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpResponse;
-import org.apache.http.HttpStatus;
-import org.apache.http.client.methods.HttpPost;
-import org.apache.http.util.EntityUtils;
-
import android.accounts.Account;
import android.accounts.AccountManager;
import android.accounts.AccountManagerCallback;
@@ -35,13 +29,17 @@
import android.net.Uri;
import android.net.http.AndroidHttpClient;
import android.os.Bundle;
-import android.os.Handler;
-import android.preference.PreferenceManager;
import android.util.Log;
import android.webkit.CookieSyncManager;
import android.webkit.WebView;
import android.webkit.WebViewClient;
+import org.apache.http.HttpEntity;
+import org.apache.http.HttpResponse;
+import org.apache.http.HttpStatus;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.util.EntityUtils;
+
public class GoogleAccountLogin implements Runnable,
AccountManagerCallback<Bundle>, OnCancelListener {
@@ -56,14 +54,11 @@
// Google account type
private static final String GOOGLE = "com.google";
// Last auto login time
- private static final String PREF_AUTOLOGIN_TIME = "last_autologin_time";
+ public static final String PREF_AUTOLOGIN_TIME = "last_autologin_time";
private final Activity mActivity;
private final Account mAccount;
private final WebView mWebView;
- // Does not matter if this is initialized in a non-ui thread.
- // Dialog.dismiss() will post to the right handler.
- private final Handler mHandler = new Handler();
private Runnable mRunnable;
private ProgressDialog mProgressDialog;
@@ -93,15 +88,13 @@
}
@Override
public void onPageFinished(WebView view, String url) {
- saveLoginTime();
done();
}
});
}
private void saveLoginTime() {
- Editor ed = PreferenceManager.
- getDefaultSharedPreferences(mActivity).edit();
+ Editor ed = BrowserSettings.getInstance().getPreferences().edit();
ed.putLong(PREF_AUTOLOGIN_TIME, System.currentTimeMillis());
ed.apply();
}
@@ -228,7 +221,7 @@
public static void startLoginIfNeeded(Activity activity,
Runnable runnable) {
// Already logged in?
- if (isLoggedIn(activity)) {
+ if (isLoggedIn()) {
runnable.run();
return;
}
@@ -246,6 +239,7 @@
}
private void startLogin() {
+ saveLoginTime();
mProgressDialog = ProgressDialog.show(mActivity,
mActivity.getString(R.string.pref_autologin_title),
mActivity.getString(R.string.pref_autologin_progress,
@@ -263,11 +257,10 @@
}
// Checks if we already did pre-login.
- private static boolean isLoggedIn(Context ctx) {
+ private static boolean isLoggedIn() {
// See if we last logged in less than a week ago.
- long lastLogin = PreferenceManager.
- getDefaultSharedPreferences(ctx).
- getLong(PREF_AUTOLOGIN_TIME, -1);
+ long lastLogin = BrowserSettings.getInstance().getPreferences()
+ .getLong(PREF_AUTOLOGIN_TIME, -1);
if (lastLogin == -1) {
return false;
}
diff --git a/src/com/android/browser/PreferenceKeys.java b/src/com/android/browser/PreferenceKeys.java
index 4174732..ce8ec9f 100644
--- a/src/com/android/browser/PreferenceKeys.java
+++ b/src/com/android/browser/PreferenceKeys.java
@@ -70,6 +70,7 @@
static final String PREF_NORMAL_LAYOUT = "normal_layout";
static final String PREF_SMALL_SCREEN = "small_screen";
static final String PREF_WIDE_VIEWPORT = "wide_viewport";
+ static final String PREF_RESET_PRELOGIN = "reset_prelogin";
// ----------------------
// Keys for lab_preferences.xml
diff --git a/src/com/android/browser/preferences/DebugPreferencesFragment.java b/src/com/android/browser/preferences/DebugPreferencesFragment.java
index 984c12a..566eee2 100644
--- a/src/com/android/browser/preferences/DebugPreferencesFragment.java
+++ b/src/com/android/browser/preferences/DebugPreferencesFragment.java
@@ -18,6 +18,7 @@
import com.android.browser.BrowserActivity;
import com.android.browser.BrowserSettings;
+import com.android.browser.GoogleAccountLogin;
import com.android.browser.PreferenceKeys;
import com.android.browser.R;
@@ -25,10 +26,11 @@
import android.os.Bundle;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceChangeListener;
+import android.preference.Preference.OnPreferenceClickListener;
import android.preference.PreferenceFragment;
public class DebugPreferencesFragment extends PreferenceFragment
- implements OnPreferenceChangeListener {
+ implements OnPreferenceChangeListener, OnPreferenceClickListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -38,6 +40,8 @@
Preference e = findPreference(PreferenceKeys.PREF_ENABLE_HARDWARE_ACCEL);
e.setOnPreferenceChangeListener(this);
+ e = findPreference(PreferenceKeys.PREF_RESET_PRELOGIN);
+ e.setOnPreferenceClickListener(this);
}
@Override
@@ -47,4 +51,15 @@
getActivity(), BrowserActivity.class));
return true;
}
+
+ @Override
+ public boolean onPreferenceClick(Preference preference) {
+ if (PreferenceKeys.PREF_RESET_PRELOGIN.equals(preference.getKey())) {
+ BrowserSettings.getInstance().getPreferences().edit()
+ .remove(GoogleAccountLogin.PREF_AUTOLOGIN_TIME)
+ .apply();
+ return true;
+ }
+ return false;
+ }
}