Index: chrome/android/java/src/org/chromium/chrome/browser/preferences/MainPreferences.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/MainPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/MainPreferences.java |
index c9017d3796e1ac966cc9a8fb4dfeca91fa3fb63a..2e655d14b8b951db14fcc34a7fd4667a6bcacff7 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/MainPreferences.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/MainPreferences.java |
@@ -4,37 +4,26 @@ |
package org.chromium.chrome.browser.preferences; |
-import android.app.DialogFragment; |
-import android.app.FragmentManager; |
-import android.content.Context; |
+import android.content.Intent; |
import android.os.Bundle; |
import android.os.Handler; |
import android.preference.Preference; |
import android.preference.Preference.OnPreferenceClickListener; |
import android.preference.PreferenceFragment; |
-import org.chromium.base.Callback; |
-import org.chromium.base.VisibleForTesting; |
-import org.chromium.base.metrics.RecordUserAction; |
import org.chromium.chrome.R; |
import org.chromium.chrome.browser.PasswordUIView; |
import org.chromium.chrome.browser.autofill.PersonalDataManager; |
import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings; |
import org.chromium.chrome.browser.partnercustomizations.HomepageManager; |
import org.chromium.chrome.browser.preferences.datareduction.DataReductionPreferences; |
-import org.chromium.chrome.browser.signin.AccountAdder; |
-import org.chromium.chrome.browser.signin.AddGoogleAccountDialogFragment; |
-import org.chromium.chrome.browser.signin.AddGoogleAccountDialogFragment.AddGoogleAccountListener; |
+import org.chromium.chrome.browser.signin.AccountSigninActivity; |
import org.chromium.chrome.browser.signin.SigninAccessPoint; |
import org.chromium.chrome.browser.signin.SigninManager; |
import org.chromium.chrome.browser.signin.SigninManager.SignInStateObserver; |
-import org.chromium.chrome.browser.sync.ui.ChooseAccountFragment; |
import org.chromium.chrome.browser.util.FeatureUtilities; |
-import org.chromium.sync.signin.AccountManagerHelper; |
import org.chromium.sync.signin.ChromeSigninController; |
-import java.util.List; |
- |
/** |
* The main settings screen, shown when the user first opens Settings. |
*/ |
@@ -98,13 +87,21 @@ public class MainPreferences extends PreferenceFragment implements SignInStateOb |
mSignInPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() { |
@Override |
public boolean onPreferenceClick(Preference preference) { |
- if (!ChromeSigninController.get(getActivity()).isSignedIn()) { |
- displayAccountPicker(); |
- return true; |
+ if (ChromeSigninController.get(getActivity()).isSignedIn()) return false; |
+ if (!SigninManager.get(getActivity()).isSignInAllowed()) { |
+ if (SigninManager.get(getActivity()).isSigninDisabledByPolicy()) { |
+ ManagedPreferencesUtils.showManagedByAdministratorToast(getActivity()); |
+ } |
+ return false; |
} |
- return false; |
+ |
+ mSignInPreference.setEnabled(false); |
+ SigninManager.logSigninStartAccessPoint(SigninAccessPoint.SETTINGS); |
+ startActivity(new Intent(getActivity(), AccountSigninActivity.class)); |
+ return true; |
} |
}); |
+ mSignInPreference.setEnabled(true); |
Preference documentMode = findPreference(PREF_DOCUMENT_MODE); |
if (FeatureUtilities.isDocumentModeEligible(getActivity())) { |
@@ -165,80 +162,6 @@ public class MainPreferences extends PreferenceFragment implements SignInStateOb |
} |
} |
- private void displayAccountPicker() { |
- displayAccountPicker(new Callback<DialogFragment>() { |
- @Override |
- public void onResult(DialogFragment fragment) {} |
- }); |
- } |
- |
- /** |
- * Displays the account picker or the add account dialog and signs the user in. |
- * |
- * @param callback Called with the fragment that was shown, or null. Used for testing. |
- */ |
- @VisibleForTesting |
- public void displayAccountPicker(final Callback<DialogFragment> callback) { |
- Context context = getActivity(); |
- if (context == null) { |
- postCallback(callback, null); |
- return; |
- } |
- |
- if (!SigninManager.get(context).isSignInAllowed()) { |
- if (SigninManager.get(context).isSigninDisabledByPolicy()) { |
- ManagedPreferencesUtils.showManagedByAdministratorToast(context); |
- } |
- postCallback(callback, null); |
- return; |
- } |
- |
- AccountManagerHelper.get(context).getGoogleAccountNames(new Callback<List<String>>() { |
- @Override |
- public void onResult(List<String> accountNames) { |
- FragmentManager fragmentManager = getFragmentManager(); |
- if (fragmentManager == null) { |
- // Preferences were closed since the click happened; abort. |
- callback.onResult(null); |
- return; |
- } |
- |
- if (!accountNames.isEmpty()) { |
- if (fragmentManager.findFragmentByTag(ACCOUNT_PICKER_DIALOG_TAG) != null) { |
- callback.onResult(null); |
- } else { |
- ChooseAccountFragment chooserFragment = |
- new ChooseAccountFragment(accountNames); |
- chooserFragment.show(fragmentManager, ACCOUNT_PICKER_DIALOG_TAG); |
- callback.onResult(chooserFragment); |
- SigninManager.logSigninStartAccessPoint(SigninAccessPoint.SETTINGS); |
- } |
- } else { |
- AddGoogleAccountDialogFragment dialog = new AddGoogleAccountDialogFragment(); |
- dialog.setListener(new AddGoogleAccountListener() { |
- @Override |
- public void onAddAccountClicked() { |
- RecordUserAction.record("Signin_AddAccountToDevice"); |
- AccountAdder.getInstance().addAccount( |
- MainPreferences.this, AccountAdder.ADD_ACCOUNT_RESULT); |
- } |
- }); |
- dialog.show(fragmentManager, null); |
- callback.onResult(dialog); |
- } |
- } |
- }); |
- } |
- |
- private <V> void postCallback(final Callback<V> callback, final V result) { |
- new Handler().post(new Runnable() { |
- @Override |
- public void run() { |
- callback.onResult(result); |
- } |
- }); |
- } |
- |
// SignInStateObserver |
@Override |