Removed Auto-login feature (includes Google Login)

Change-Id: Iebfaf979a1df96100dc9f41c8e95430a057dd96a
diff --git a/src/com/android/browser/AutologinBar.java b/src/com/android/browser/AutologinBar.java
deleted file mode 100644
index 3bbfcd9..0000000
--- a/src/com/android/browser/AutologinBar.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.browser;
-
-import android.content.Context;
-import android.util.AttributeSet;
-import android.view.ContextThemeWrapper;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.widget.ArrayAdapter;
-import android.widget.Button;
-import android.widget.LinearLayout;
-import android.widget.ProgressBar;
-import android.widget.Spinner;
-import android.widget.TextView;
-
-import com.android.browser.R;
-import com.android.browser.DeviceAccountLogin.AutoLoginCallback;
-
-public class AutologinBar extends LinearLayout implements OnClickListener,
-        AutoLoginCallback {
-
-    protected Spinner mAutoLoginAccount;
-    protected Button mAutoLoginLogin;
-    protected ProgressBar mAutoLoginProgress;
-    protected TextView mAutoLoginError;
-    protected View mAutoLoginCancel;
-    protected DeviceAccountLogin mAutoLoginHandler;
-    protected ArrayAdapter<String> mAccountsAdapter;
-    protected TitleBar mTitleBar;
-
-    public AutologinBar(Context context) {
-        super(context);
-    }
-
-    public AutologinBar(Context context, AttributeSet attrs) {
-        super(context, attrs);
-    }
-
-    public AutologinBar(Context context, AttributeSet attrs, int defStyle) {
-        super(context, attrs, defStyle);
-    }
-
-    @Override
-    protected void onFinishInflate() {
-        super.onFinishInflate();
-        mAutoLoginAccount = (Spinner) findViewById(R.id.autologin_account);
-        mAutoLoginLogin = (Button) findViewById(R.id.autologin_login);
-        mAutoLoginLogin.setOnClickListener(this);
-        mAutoLoginProgress = (ProgressBar) findViewById(R.id.autologin_progress);
-        mAutoLoginError = (TextView) findViewById(R.id.autologin_error);
-        mAutoLoginCancel = findViewById(R.id.autologin_close);
-        mAutoLoginCancel.setOnClickListener(this);
-    }
-
-    public void setTitleBar(TitleBar titleBar) {
-        mTitleBar = titleBar;
-    }
-
-    @Override
-    public void onClick(View v) {
-        if (mAutoLoginCancel == v) {
-            if (mAutoLoginHandler != null) {
-                mAutoLoginHandler.cancel();
-                mAutoLoginHandler = null;
-            }
-            hideAutoLogin(true);
-        } else if (mAutoLoginLogin == v) {
-            if (mAutoLoginHandler != null) {
-                mAutoLoginAccount.setEnabled(false);
-                mAutoLoginLogin.setEnabled(false);
-                mAutoLoginProgress.setVisibility(View.VISIBLE);
-                mAutoLoginError.setVisibility(View.GONE);
-                mAutoLoginHandler.login(
-                        mAutoLoginAccount.getSelectedItemPosition(), this);
-            }
-        }
-    }
-
-    public void updateAutoLogin(Tab tab, boolean animate) {
-        DeviceAccountLogin login = tab.getDeviceAccountLogin();
-        if (login != null) {
-            mAutoLoginHandler = login;
-            ContextThemeWrapper wrapper = new ContextThemeWrapper(getContext(),
-                    android.R.style.Theme_Holo_Light);
-            mAccountsAdapter = new ArrayAdapter<String>(wrapper,
-                    android.R.layout.simple_spinner_item, login.getAccountNames());
-            mAccountsAdapter.setDropDownViewResource(
-                    android.R.layout.simple_spinner_dropdown_item);
-            mAutoLoginAccount.setAdapter(mAccountsAdapter);
-            mAutoLoginAccount.setSelection(0);
-            mAutoLoginAccount.setEnabled(true);
-            mAutoLoginLogin.setEnabled(true);
-            mAutoLoginProgress.setVisibility(View.INVISIBLE);
-            mAutoLoginError.setVisibility(View.GONE);
-            switch (login.getState()) {
-                case DeviceAccountLogin.PROCESSING:
-                    mAutoLoginAccount.setEnabled(false);
-                    mAutoLoginLogin.setEnabled(false);
-                    mAutoLoginProgress.setVisibility(View.VISIBLE);
-                    break;
-                case DeviceAccountLogin.FAILED:
-                    mAutoLoginProgress.setVisibility(View.INVISIBLE);
-                    mAutoLoginError.setVisibility(View.VISIBLE);
-                    break;
-                case DeviceAccountLogin.INITIAL:
-                    break;
-                default:
-                    throw new IllegalStateException();
-            }
-            showAutoLogin(animate);
-        } else {
-            hideAutoLogin(animate);
-        }
-    }
-
-    void showAutoLogin(boolean animate) {
-        mTitleBar.showAutoLogin(animate);
-    }
-
-    void hideAutoLogin(boolean animate) {
-        mTitleBar.hideAutoLogin(animate);
-    }
-
-    @Override
-    public void loginFailed() {
-        mAutoLoginAccount.setEnabled(true);
-        mAutoLoginLogin.setEnabled(true);
-        mAutoLoginProgress.setVisibility(View.INVISIBLE);
-        mAutoLoginError.setVisibility(View.VISIBLE);
-    }
-
-}
diff --git a/src/com/android/browser/BaseUi.java b/src/com/android/browser/BaseUi.java
index f5ccb42..2b4b170 100644
--- a/src/com/android/browser/BaseUi.java
+++ b/src/com/android/browser/BaseUi.java
@@ -298,7 +298,6 @@
         onTabDataChanged(tab);
         onProgressChanged(tab);
         mNavigationBar.setIncognitoMode(tab.isPrivateBrowsingEnabled());
-        updateAutoLogin(tab, false);
         mBlockFocusAnimations = false;
     }
 
@@ -573,25 +572,11 @@
         return mCustomView == null;
     }
 
-    @Override
-    public void showAutoLogin(Tab tab) {
-        updateAutoLogin(tab, true);
-    }
-
-    @Override
-    public void hideAutoLogin(Tab tab) {
-        updateAutoLogin(tab, true);
-    }
-
     // -------------------------------------------------------------------------
 
     protected void updateNavigationState(Tab tab) {
     }
 
-    protected void updateAutoLogin(Tab tab, boolean animate) {
-        mTitleBar.updateAutoLogin(tab, animate);
-    }
-
     /**
      * Update the lock icon to correspond to our latest state.
      */
diff --git a/src/com/android/browser/BrowserSettings.java b/src/com/android/browser/BrowserSettings.java
index 319ded5..34ba56b 100644
--- a/src/com/android/browser/BrowserSettings.java
+++ b/src/com/android/browser/BrowserSettings.java
@@ -621,11 +621,8 @@
     }
 
     public void resetDefaultPreferences() {
-        // Preserve autologin setting
-        long gal = mPrefs.getLong(GoogleAccountLogin.PREF_AUTOLOGIN_TIME, -1);
         mPrefs.edit()
                 .clear()
-                .putLong(GoogleAccountLogin.PREF_AUTOLOGIN_TIME, gal)
                 .apply();
         resetCachedValues();
         syncManagedSettings();
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index c3553d4..4d96cf5 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -325,20 +325,6 @@
             // must do this before trying to login the user as we don't want to
             // clear any session cookies set during login.
             CookieManager.getInstance().removeSessionCookie();
-        }
-
-        GoogleAccountLogin.startLoginIfNeeded(mActivity,
-                new Runnable() {
-                    @Override public void run() {
-                        onPreloginFinished(icicle, intent, currentTabId,
-                                restoreIncognitoTabs);
-                    }
-                });
-    }
-
-    private void onPreloginFinished(Bundle icicle, Intent intent, long currentTabId,
-            boolean restoreIncognitoTabs) {
-        if (currentTabId == -1) {
             BackgroundHandler.execute(new PruneThumbnails(mActivity, null));
             if (intent == null) {
                 // This won't happen under common scenarios. The icicle is
@@ -1255,19 +1241,6 @@
         mPageDialogsHandler.showSSLCertificateOnError(view, handler, error);
     }
 
-    @Override
-    public void showAutoLogin(Tab tab) {
-        assert tab.inForeground();
-        // Update the title bar to show the auto-login request.
-        mUi.showAutoLogin(tab);
-    }
-
-    @Override
-    public void hideAutoLogin(Tab tab) {
-        assert tab.inForeground();
-        mUi.hideAutoLogin(tab);
-    }
-
     // helper method
 
     /*
diff --git a/src/com/android/browser/DeviceAccountLogin.java b/src/com/android/browser/DeviceAccountLogin.java
deleted file mode 100644
index 0638f97..0000000
--- a/src/com/android/browser/DeviceAccountLogin.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.browser;
-
-import android.accounts.Account;
-import android.accounts.AccountManager;
-import android.accounts.AccountManagerCallback;
-import android.accounts.AccountManagerFuture;
-import android.app.Activity;
-import android.os.Bundle;
-import org.codeaurora.swe.WebView;
-
-public class DeviceAccountLogin implements
-        AccountManagerCallback<Bundle> {
-
-    private final Activity mActivity;
-    private final WebView mWebView;
-    private final Tab mTab;
-    private final WebViewController mWebViewController;
-    private final AccountManager mAccountManager;
-    Account[] mAccounts;
-    private AutoLoginCallback mCallback;
-    private String mAuthToken;
-
-    // Current state of the login.
-    private int mState = INITIAL;
-
-    public static final int INITIAL = 0;
-    public static final int FAILED = 1;
-    public static final int PROCESSING = 2;
-
-    public interface AutoLoginCallback {
-        public void loginFailed();
-    }
-
-    public DeviceAccountLogin(Activity activity, WebView view, Tab tab,
-            WebViewController controller) {
-        mActivity = activity;
-        mWebView = view;
-        mTab = tab;
-        mWebViewController = controller;
-        mAccountManager = AccountManager.get(activity);
-    }
-
-    public void handleLogin(String realm, String account, String args) {
-        mAccounts = mAccountManager.getAccountsByType(realm);
-        mAuthToken = "weblogin:" + args;
-
-        // No need to display UI if there are no accounts.
-        if (mAccounts.length == 0) {
-            return;
-        }
-
-        // Verify the account before using it.
-        for (Account a : mAccounts) {
-            if (a.name.equals(account)) {
-                // Handle the automatic login case where the service gave us an
-                // account to use.
-                mAccountManager.getAuthToken(a, mAuthToken, null,
-                       mActivity, this, null);
-                return;
-            }
-        }
-
-        displayLoginUi();
-    }
-
-    @Override
-    public void run(AccountManagerFuture<Bundle> value) {
-        try {
-            String result = value.getResult().getString(
-                    AccountManager.KEY_AUTHTOKEN);
-            if (result == null) {
-                loginFailed();
-            } else {
-                mWebView.loadUrl(result);
-                mTab.setDeviceAccountLogin(null);
-                if (mTab.inForeground()) {
-                    mWebViewController.hideAutoLogin(mTab);
-                }
-            }
-        } catch (Exception e) {
-            loginFailed();
-        }
-    }
-
-    public int getState() {
-        return mState;
-    }
-
-    private void loginFailed() {
-        mState = FAILED;
-        if (mTab.getDeviceAccountLogin() == null) {
-            displayLoginUi();
-        } else {
-            if (mCallback != null) {
-                mCallback.loginFailed();
-            }
-        }
-    }
-
-    private void displayLoginUi() {
-        // Display the account picker.
-        mTab.setDeviceAccountLogin(this);
-        if (mTab.inForeground()) {
-            mWebViewController.showAutoLogin(mTab);
-        }
-    }
-
-    public void cancel() {
-        mTab.setDeviceAccountLogin(null);
-    }
-
-    public void login(int accountIndex, AutoLoginCallback cb) {
-        mState = PROCESSING;
-        mCallback = cb;
-        mAccountManager.getAuthToken(
-                mAccounts[accountIndex], mAuthToken, null,
-                mActivity, this, null);
-    }
-
-    public String[] getAccountNames() {
-        String[] names = new String[mAccounts.length];
-        for (int i = 0; i < mAccounts.length; i++) {
-            names[i] = mAccounts[i].name;
-        }
-        return names;
-    }
-}
diff --git a/src/com/android/browser/GoogleAccountLogin.java b/src/com/android/browser/GoogleAccountLogin.java
deleted file mode 100644
index f605671..0000000
--- a/src/com/android/browser/GoogleAccountLogin.java
+++ /dev/null
@@ -1,296 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.browser;
-
-import android.accounts.Account;
-import android.accounts.AccountManager;
-import android.accounts.AccountManagerCallback;
-import android.accounts.AccountManagerFuture;
-import android.app.Activity;
-import android.app.ProgressDialog;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.DialogInterface.OnCancelListener;
-import android.content.SharedPreferences.Editor;
-import android.net.Uri;
-import android.net.http.AndroidHttpClient;
-import android.os.Bundle;
-import android.util.Log;
-import org.codeaurora.swe.CookieSyncManager;
-import org.codeaurora.swe.WebView;
-import org.codeaurora.swe.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;
-
-import com.android.browser.R;
-
-public class GoogleAccountLogin implements Runnable,
-        AccountManagerCallback<Bundle>, OnCancelListener {
-
-    private static final String LOGTAG = "BrowserLogin";
-
-    // Url for issuing the uber token.
-    private Uri ISSUE_AUTH_TOKEN_URL = Uri.parse(
-            "https://www.google.com/accounts/IssueAuthToken?service=gaia&Session=false");
-    // Url for signing into a particular service.
-    private static final Uri TOKEN_AUTH_URL = Uri.parse(
-            "https://www.google.com/accounts/TokenAuth");
-    // Google account type
-    private static final String GOOGLE = "com.google";
-    // Last auto login time
-    public static final String PREF_AUTOLOGIN_TIME = "last_autologin_time";
-
-    private final Activity mActivity;
-    private final Account mAccount;
-    private final WebView mWebView;
-    private Runnable mRunnable;
-    private ProgressDialog mProgressDialog;
-
-    // SID and LSID retrieval process.
-    private String mSid;
-    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) {
-        mActivity = activity;
-        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
-        // duplicate the work here using the off-screen WebView.
-        CookieSyncManager.getInstance().startSync();
-        WebViewTimersControl.getInstance().onBrowserActivityResume(mWebView);
-
-        mWebView.setWebViewClient(new WebViewClient() {
-            @Override
-            public boolean shouldOverrideUrlLoading(WebView view, String url) {
-                return false;
-            }
-            @Override
-            public void onPageFinished(WebView view, String url) {
-                done();
-            }
-        });
-    }
-
-    private void saveLoginTime() {
-        Editor ed = BrowserSettings.getInstance().getPreferences().edit();
-        ed.putLong(PREF_AUTOLOGIN_TIME, System.currentTimeMillis());
-        ed.apply();
-    }
-
-    // Runnable
-    @Override
-    public void run() {
-        String url = ISSUE_AUTH_TOKEN_URL.buildUpon()
-                .appendQueryParameter("SID", mSid)
-                .appendQueryParameter("LSID", mLsid)
-                .build().toString();
-        // Intentionally not using Proxy.
-        AndroidHttpClient client = AndroidHttpClient.newInstance(mUserAgent);
-        HttpPost request = new HttpPost(url);
-
-        String result = null;
-        try {
-            HttpResponse response = client.execute(request);
-            int status = response.getStatusLine().getStatusCode();
-            if (status != HttpStatus.SC_OK) {
-                Log.d(LOGTAG, "LOGIN_FAIL: Bad status from auth url "
-                      + status + ": "
-                      + response.getStatusLine().getReasonPhrase());
-                // Invalidate the tokens once just in case the 403 was for other
-                // reasons.
-                if (status == HttpStatus.SC_FORBIDDEN && !mTokensInvalidated) {
-                    Log.d(LOGTAG, "LOGIN_FAIL: Invalidating tokens...");
-                    // Need to regenerate the auth tokens and try again.
-                    invalidateTokens();
-                    // XXX: Do not touch any more member variables from this
-                    // thread as a second thread will handle the next login
-                    // attempt.
-                    return;
-                }
-                done();
-                return;
-            }
-            HttpEntity entity = response.getEntity();
-            if (entity == null) {
-                Log.d(LOGTAG, "LOGIN_FAIL: Null entity in response");
-                done();
-                return;
-            }
-            result = EntityUtils.toString(entity, "UTF-8");
-        } catch (Exception e) {
-            Log.d(LOGTAG, "LOGIN_FAIL: Exception acquiring uber token " + e);
-            request.abort();
-            done();
-            return;
-        } finally {
-            client.close();
-        }
-        final String newUrl = TOKEN_AUTH_URL.buildUpon()
-                .appendQueryParameter("source", "android-browser")
-                .appendQueryParameter("auth", result)
-                .appendQueryParameter("continue",
-                        BrowserSettings.getFactoryResetHomeUrl(mActivity))
-                .build().toString();
-        mActivity.runOnUiThread(new Runnable() {
-            @Override public void run() {
-                // Check mRunnable in case the request has been canceled.  This
-                // is most likely not necessary as run() is the only non-UI
-                // thread that calls done() but I am paranoid.
-                synchronized (GoogleAccountLogin.this) {
-                    if (mRunnable == null) {
-                        return;
-                    }
-                    mWebView.loadUrl(newUrl);
-                }
-            }
-        });
-    }
-
-    private void invalidateTokens() {
-        AccountManager am = AccountManager.get(mActivity);
-        am.invalidateAuthToken(GOOGLE, mSid);
-        am.invalidateAuthToken(GOOGLE, mLsid);
-        mTokensInvalidated = true;
-        mState = 1;  // SID
-        am.getAuthToken(mAccount, "SID", null, mActivity, this, null);
-    }
-
-    // AccountManager callbacks.
-    @Override
-    public void run(AccountManagerFuture<Bundle> value) {
-        try {
-            String id = value.getResult().getString(
-                    AccountManager.KEY_AUTHTOKEN);
-            switch (mState) {
-                default:
-                case 0:
-                    throw new IllegalStateException(
-                            "Impossible to get into this state");
-                case 1:
-                    mSid = id;
-                    mState = 2;  // LSID
-                    AccountManager.get(mActivity).getAuthToken(
-                            mAccount, "LSID", null, mActivity, this, null);
-                    break;
-                case 2:
-                    mLsid = id;
-                    new Thread(this).start();
-                    break;
-            }
-        } catch (Exception e) {
-            Log.d(LOGTAG, "LOGIN_FAIL: Exception in state " + mState + " " + e);
-            // For all exceptions load the original signin page.
-            // TODO: toast login failed?
-            done();
-        }
-    }
-
-    // Start the login process if auto-login is enabled and the user is not
-    // already logged in.
-    public static void startLoginIfNeeded(Activity activity,
-            Runnable runnable) {
-        // Already logged in?
-        if (isLoggedIn()) {
-            runnable.run();
-            return;
-        }
-
-        // No account found?
-        Account[] accounts = getAccounts(activity);
-        if (accounts == null || accounts.length == 0) {
-            runnable.run();
-            return;
-        }
-
-        GoogleAccountLogin login =
-                new GoogleAccountLogin(activity, accounts[0], runnable);
-        login.startLogin();
-    }
-
-    private void startLogin() {
-        saveLoginTime();
-        mProgressDialog = ProgressDialog.show(mActivity,
-                mActivity.getString(R.string.pref_autologin_title),
-                mActivity.getString(R.string.pref_autologin_progress,
-                                    mAccount.name),
-                true /* indeterminate */,
-                true /* cancelable */,
-                this);
-        mState = 1;  // SID
-        AccountManager.get(mActivity).getAuthToken(
-                mAccount, "SID", null, mActivity, this, null);
-    }
-
-    private static Account[] getAccounts(Context ctx) {
-        return AccountManager.get(ctx).getAccountsByType(GOOGLE);
-    }
-
-    // Checks if we already did pre-login.
-    private static boolean isLoggedIn() {
-        // See if we last logged in less than a week ago.
-        long lastLogin = BrowserSettings.getInstance().getPreferences()
-                .getLong(PREF_AUTOLOGIN_TIME, -1);
-        if (lastLogin == -1) {
-            return false;
-        }
-        return true;
-    }
-
-    // Used to indicate that the Browser should continue loading the main page.
-    // This can happen on success, error, or timeout.
-    private synchronized void done() {
-        if (mRunnable != null) {
-            Log.d(LOGTAG, "Finished login attempt for " + mAccount.name);
-            mActivity.runOnUiThread(mRunnable);
-
-            try {
-                mProgressDialog.dismiss();
-            } catch (Exception e) {
-                // TODO: Switch to a managed dialog solution (DialogFragment?)
-                // Also refactor this class, it doesn't
-                // play nice with the activity lifecycle, leading to issues
-                // with the dialog it manages
-                Log.w(LOGTAG, "Failed to dismiss mProgressDialog: " + e.getMessage());
-            }
-            mRunnable = null;
-            mActivity.runOnUiThread(new Runnable() {
-                @Override
-                public void run() {
-                    mWebView.destroy();
-                }
-            });
-        }
-    }
-
-    // Called by the progress dialog on startup.
-    public void onCancel(DialogInterface unused) {
-        done();
-    }
-
-}
diff --git a/src/com/android/browser/PreloadController.java b/src/com/android/browser/PreloadController.java
index b564318..3290611 100644
--- a/src/com/android/browser/PreloadController.java
+++ b/src/com/android/browser/PreloadController.java
@@ -256,16 +256,6 @@
     }
 
     @Override
-    public void showAutoLogin(Tab tab) {
-        if (LOGD_ENABLED) Log.d(LOGTAG, "showAutoLogin()");
-    }
-
-    @Override
-    public void hideAutoLogin(Tab tab) {
-        if (LOGD_ENABLED) Log.d(LOGTAG, "hideAutoLogin()");
-    }
-
-    @Override
     public boolean shouldCaptureThumbnails() {
         return false;
     }
diff --git a/src/com/android/browser/Tab.java b/src/com/android/browser/Tab.java
index 6d36d9c..4889efe 100644
--- a/src/com/android/browser/Tab.java
+++ b/src/com/android/browser/Tab.java
@@ -185,8 +185,6 @@
     // Listener used to know when we move forward or back in the history list.
     private final WebBackForwardListClient mWebBackForwardListClient;
     private DataController mDataController;
-    // State of the auto-login request.
-    private DeviceAccountLogin mDeviceAccountLogin;
 
     // AsyncTask for downloading touch icons
     DownloadTouchIcon mTouchIconLoader;
@@ -399,13 +397,6 @@
                 }
             }
 
-            // Cancel the auto-login process.
-            if (mDeviceAccountLogin != null) {
-                mDeviceAccountLogin.cancel();
-                mDeviceAccountLogin = null;
-                mWebViewController.hideAutoLogin(Tab.this);
-            }
-
             // finally update the UI in the activity if it is in the foreground
             mWebViewController.onPageStarted(Tab.this, view, favicon);
 
@@ -706,14 +697,6 @@
                 super.onUnhandledKeyEvent(view, event);
             }
         }
-
-        @Override
-        public void onReceivedLoginRequest(WebView view, String realm,
-                String account, String args) {
-            new DeviceAccountLogin(mWebViewController.getActivity(), view, Tab.this, mWebViewController)
-                    .handleLogin(realm, account, args);
-        }
-
     };
 
     private void syncCurrentState(WebView view, String url) {
@@ -734,17 +717,6 @@
         mCurrentState.mIncognito = view.isPrivateBrowsingEnabled();
     }
 
-    // Called by DeviceAccountLogin when the Tab needs to have the auto-login UI
-    // displayed.
-    void setDeviceAccountLogin(DeviceAccountLogin login) {
-        mDeviceAccountLogin = login;
-    }
-
-    // Returns non-null if the title bar should display the auto-login UI.
-    DeviceAccountLogin getDeviceAccountLogin() {
-        return mDeviceAccountLogin;
-    }
-
     // -------------------------------------------------------------------------
     // WebChromeClient implementation for the main WebView
     // -------------------------------------------------------------------------
diff --git a/src/com/android/browser/TitleBar.java b/src/com/android/browser/TitleBar.java
index 1f9ec23..7438d26 100644
--- a/src/com/android/browser/TitleBar.java
+++ b/src/com/android/browser/TitleBar.java
@@ -53,7 +53,6 @@
     private PageProgressView mProgress;
     private AccessibilityManager mAccessibilityManager;
 
-    private AutologinBar mAutoLogin;
     private NavigationBarBase mNavBar;
     private boolean mUseQuickControls;
     private SnapshotBar mSnapshotBar;
@@ -84,16 +83,6 @@
         mNavBar.setTitleBar(this);
     }
 
-    private void inflateAutoLoginBar() {
-        if (mAutoLogin != null) {
-            return;
-        }
-
-        ViewStub stub = (ViewStub) findViewById(R.id.autologin_stub);
-        mAutoLogin = (AutologinBar) stub.inflate();
-        mAutoLogin.setTitleBar(this);
-    }
-
     private void inflateSnapshotBar() {
         if (mSnapshotBar != null) {
             return;
@@ -309,78 +298,14 @@
 
     int calculateEmbeddedHeight() {
         int height = mNavBar.getHeight();
-        if (mAutoLogin != null && mAutoLogin.getVisibility() == View.VISIBLE) {
-            height += mAutoLogin.getHeight();
-        }
         return height;
     }
 
-    public void updateAutoLogin(Tab tab, boolean animate) {
-        if (mAutoLogin == null) {
-            if  (tab.getDeviceAccountLogin() == null) {
-                return;
-            }
-            inflateAutoLoginBar();
-        }
-        mAutoLogin.updateAutoLogin(tab, animate);
-    }
-
-    public void showAutoLogin(boolean animate) {
-        if (mUseQuickControls) {
-            mBaseUi.showTitleBar();
-        }
-        if (mAutoLogin == null) {
-            inflateAutoLoginBar();
-        }
-        mAutoLogin.setVisibility(View.VISIBLE);
-        if (animate) {
-            mAutoLogin.startAnimation(AnimationUtils.loadAnimation(
-                    getContext(), R.anim.autologin_enter));
-        }
-    }
-
-    public void hideAutoLogin(boolean animate) {
-        if (mUseQuickControls) {
-            mBaseUi.hideTitleBar();
-            mAutoLogin.setVisibility(View.GONE);
-            mBaseUi.refreshWebView();
-        } else {
-            if (animate) {
-                Animation anim = AnimationUtils.loadAnimation(getContext(),
-                        R.anim.autologin_exit);
-                anim.setAnimationListener(new AnimationListener() {
-                    @Override
-                    public void onAnimationEnd(Animation a) {
-                        mAutoLogin.setVisibility(View.GONE);
-                        mBaseUi.refreshWebView();
-                    }
-
-                    @Override
-                    public void onAnimationStart(Animation a) {
-                    }
-
-                    @Override
-                    public void onAnimationRepeat(Animation a) {
-                    }
-                });
-                mAutoLogin.startAnimation(anim);
-            } else if (mAutoLogin.getAnimation() == null) {
-                mAutoLogin.setVisibility(View.GONE);
-                mBaseUi.refreshWebView();
-            }
-        }
-    }
-
     public boolean wantsToBeVisible() {
-        return inAutoLogin()
-            || (mSnapshotBar != null && mSnapshotBar.getVisibility() == View.VISIBLE
+        return (mSnapshotBar != null && mSnapshotBar.getVisibility() == View.VISIBLE
                     && mSnapshotBar.isAnimating());
     }
 
-    private boolean inAutoLogin() {
-        return mAutoLogin != null && mAutoLogin.getVisibility() == View.VISIBLE;
-    }
-
     public boolean isEditingUrl() {
         return mNavBar.isEditingUrl();
     }
diff --git a/src/com/android/browser/UI.java b/src/com/android/browser/UI.java
index 00dacdb..70f0880 100644
--- a/src/com/android/browser/UI.java
+++ b/src/com/android/browser/UI.java
@@ -136,10 +136,6 @@
 
     boolean dispatchKey(int code, KeyEvent event);
 
-    void showAutoLogin(Tab tab);
-
-    void hideAutoLogin(Tab tab);
-
     void setFullscreen(boolean enabled);
 
     void setUseQuickControls(boolean enabled);
diff --git a/src/com/android/browser/WebViewController.java b/src/com/android/browser/WebViewController.java
index 6864470..c5e3bc0 100644
--- a/src/com/android/browser/WebViewController.java
+++ b/src/com/android/browser/WebViewController.java
@@ -116,9 +116,5 @@
 
     void bookmarkedStatusHasChanged(Tab tab);
 
-    void showAutoLogin(Tab tab);
-
-    void hideAutoLogin(Tab tab);
-
     boolean shouldCaptureThumbnails();
 }
diff --git a/src/com/android/browser/preferences/DebugPreferencesFragment.java b/src/com/android/browser/preferences/DebugPreferencesFragment.java
index 24821d1..3a0b32f 100644
--- a/src/com/android/browser/preferences/DebugPreferencesFragment.java
+++ b/src/com/android/browser/preferences/DebugPreferencesFragment.java
@@ -22,7 +22,6 @@
 import android.preference.PreferenceFragment;
 
 import com.android.browser.BrowserSettings;
-import com.android.browser.GoogleAccountLogin;
 import com.android.browser.PreferenceKeys;
 import com.android.browser.R;
 
@@ -34,19 +33,10 @@
 
         // Load the XML preferences file
         addPreferencesFromResource(R.xml.debug_preferences);
-
-        Preference e = findPreference(PreferenceKeys.PREF_RESET_PRELOGIN);
-        e.setOnPreferenceClickListener(this);
     }
 
     @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;
     }
 }