Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(260)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/preferences/MainPreferences.java

Issue 1745563002: Revert of Created the dialog offering the user to merge their account data or keep it (Closed) Base URL: maybelle.lon.corp.google.com:/usr/local/google/code/clankium/src@sync_settings
Patch Set: Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 2e655d14b8b951db14fcc34a7fd4667a6bcacff7..c9017d3796e1ac966cc9a8fb4dfeca91fa3fb63a 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,25 +4,36 @@
package org.chromium.chrome.browser.preferences;
-import android.content.Intent;
+import android.app.DialogFragment;
+import android.app.FragmentManager;
+import android.content.Context;
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.AccountSigninActivity;
+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.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.
@@ -87,21 +98,13 @@
mSignInPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
- if (ChromeSigninController.get(getActivity()).isSignedIn()) return false;
- if (!SigninManager.get(getActivity()).isSignInAllowed()) {
- if (SigninManager.get(getActivity()).isSigninDisabledByPolicy()) {
- ManagedPreferencesUtils.showManagedByAdministratorToast(getActivity());
- }
- return false;
- }
-
- mSignInPreference.setEnabled(false);
- SigninManager.logSigninStartAccessPoint(SigninAccessPoint.SETTINGS);
- startActivity(new Intent(getActivity(), AccountSigninActivity.class));
- return true;
- }
- });
- mSignInPreference.setEnabled(true);
+ if (!ChromeSigninController.get(getActivity()).isSignedIn()) {
+ displayAccountPicker();
+ return true;
+ }
+ return false;
+ }
+ });
Preference documentMode = findPreference(PREF_DOCUMENT_MODE);
if (FeatureUtilities.isDocumentModeEligible(getActivity())) {
@@ -162,6 +165,80 @@
}
}
+ 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

Powered by Google App Engine
This is Rietveld 408576698