Chromium Code Reviews| Index: chrome/android/java/src/org/chromium/chrome/browser/signin/AccountManagementFragment.java |
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/AccountManagementFragment.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/AccountManagementFragment.java |
| index a1fafb5f57fbb4b1ff98701e73a7307236f11330..58a16906eb5d7d73aa76fb85fce9e556b76fc6c3 100644 |
| --- a/chrome/android/java/src/org/chromium/chrome/browser/signin/AccountManagementFragment.java |
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/AccountManagementFragment.java |
| @@ -28,6 +28,7 @@ import android.os.Bundle; |
| import android.os.UserManager; |
| import android.preference.Preference; |
| import android.preference.Preference.OnPreferenceClickListener; |
| +import android.preference.PreferenceCategory; |
| import android.preference.PreferenceFragment; |
| import android.preference.PreferenceScreen; |
| import android.support.annotation.Nullable; |
| @@ -57,7 +58,6 @@ import org.chromium.chrome.browser.sync.ui.SyncCustomizationFragment; |
| import org.chromium.components.signin.AccountManagerHelper; |
| import org.chromium.components.signin.ChromeSigninController; |
| -import java.util.ArrayList; |
| import java.util.HashMap; |
| /** |
| @@ -87,13 +87,6 @@ public class AccountManagementFragment extends PreferenceFragment |
| public static final String SHOW_GAIA_SERVICE_TYPE_EXTRA = "ShowGAIAServiceType"; |
| /** |
| - * Account name preferences will be ordered sequentially, starting with this "order" value. |
| - * This ensures that the account name preferences appear in the correct location in the |
| - * preference fragment. See account_management_preferences.xml for details. |
| - */ |
| - private static final int FIRST_ACCOUNT_PREF_ORDER = 100; |
| - |
| - /** |
| * SharedPreference name for the preference that disables signing out of Chrome. |
| * Signing out is forever disabled once Chrome signs the user in automatically |
| * if the device has a child account or if the device is an Android EDU device. |
| @@ -105,7 +98,7 @@ public class AccountManagementFragment extends PreferenceFragment |
| private static String sChildAccountId; |
| private static Bitmap sCachedBadgedPicture; |
| - public static final String PREF_ADD_ACCOUNT = "add_account"; |
| + public static final String PREF_ACCOUNTS_CATEGORY = "accounts_category"; |
| public static final String PREF_PARENTAL_SETTINGS = "parental_settings"; |
| public static final String PREF_PARENT_ACCOUNTS = "parent_accounts"; |
| public static final String PREF_CHILD_CONTENT = "child_content"; |
| @@ -117,8 +110,6 @@ public class AccountManagementFragment extends PreferenceFragment |
| private int mGaiaServiceType; |
| - private ArrayList<Preference> mAccountsListPreferences = new ArrayList<>(); |
| - |
| private Profile mProfile; |
| private String mSignedInAccountName; |
| @@ -229,7 +220,6 @@ public class AccountManagementFragment extends PreferenceFragment |
| getActivity().setTitle(fullName); |
| configureSignOutSwitch(); |
| - configureAddAccountPreference(); |
| configureChildAccountPreferences(); |
| configureSyncSettings(); |
| configureGoogleActivityControls(); |
| @@ -327,43 +317,6 @@ public class AccountManagementFragment extends PreferenceFragment |
| }); |
| } |
| - private void configureAddAccountPreference() { |
| - ChromeBasePreference addAccount = (ChromeBasePreference) findPreference(PREF_ADD_ACCOUNT); |
| - |
| - if (mProfile.isChild()) { |
| - getPreferenceScreen().removePreference(addAccount); |
| - } else { |
| - addAccount.setTitle(getResources().getString( |
| - R.string.account_management_add_account_title)); |
| - addAccount.setOnPreferenceClickListener(new OnPreferenceClickListener() { |
| - @Override |
| - public boolean onPreferenceClick(Preference preference) { |
| - if (!isVisible() || !isResumed()) return false; |
| - |
| - AccountManagementScreenHelper.logEvent( |
| - ProfileAccountManagementMetrics.ADD_ACCOUNT, |
| - mGaiaServiceType); |
| - |
| - AccountAdder.getInstance().addAccount( |
| - getActivity(), AccountAdder.ADD_ACCOUNT_RESULT); |
| - |
| - // Return to the last opened tab if triggered from the content area. |
| - if (mGaiaServiceType != AccountManagementScreenHelper.GAIA_SERVICE_TYPE_NONE) { |
| - if (isAdded()) getActivity().finish(); |
| - } |
| - |
| - return true; |
| - } |
| - }); |
| - addAccount.setManagedPreferenceDelegate(new ManagedPreferenceDelegate() { |
| - @Override |
| - public boolean isPreferenceControlledByPolicy(Preference preference) { |
| - return !canAddAccounts(); |
| - } |
| - }); |
| - } |
| - } |
| - |
| private void configureChildAccountPreferences() { |
| Preference parentAccounts = findPreference(PREF_PARENT_ACCOUNTS); |
| Preference childContent = findPreference(PREF_CHILD_CONTENT); |
| @@ -416,35 +369,64 @@ public class AccountManagementFragment extends PreferenceFragment |
| } |
| private void updateAccountsList() { |
| - PreferenceScreen prefScreen = getPreferenceScreen(); |
| - if (prefScreen == null) return; |
| + PreferenceCategory accountsCategory = |
| + (PreferenceCategory) findPreference(PREF_ACCOUNTS_CATEGORY); |
| + if (accountsCategory == null) return; |
| - for (int i = 0; i < mAccountsListPreferences.size(); i++) { |
| - prefScreen.removePreference(mAccountsListPreferences.get(i)); |
| - } |
| - mAccountsListPreferences.clear(); |
| + accountsCategory.removeAll(); |
| - final Preferences activity = (Preferences) getActivity(); |
| + boolean isChildAccount = mProfile.isChild(); |
| Account[] accounts = AccountManagerHelper.get().getGoogleAccounts(); |
| - int nextPrefOrder = FIRST_ACCOUNT_PREF_ORDER; |
| - |
| for (Account account : accounts) { |
| - ChromeBasePreference pref = new ChromeBasePreference(activity); |
| + ChromeBasePreference pref = new ChromeBasePreference(getActivity()); |
| pref.setSelectable(false); |
| pref.setTitle(account.name); |
| - boolean isChildAccount = mProfile.isChild(); |
| pref.setUseReducedPadding(isChildAccount); |
| pref.setIcon(new BitmapDrawable(getResources(), |
| isChildAccount ? getBadgedUserPicture(account.name, getResources()) : |
| getUserPicture(account.name, getResources()))); |
| - pref.setOrder(nextPrefOrder++); |
| - prefScreen.addPreference(pref); |
| - mAccountsListPreferences.add(pref); |
| + accountsCategory.addPreference(pref); |
| + } |
| + |
| + if (isChildAccount) { |
|
David Trainor- moved to gerrit
2017/05/31 15:57:14
Should this be !isChildAccount? I'm assuming we w
bsazonov
2017/05/31 16:06:42
Oops! Sorry for that.
Thanks a lot for catching th
|
| + accountsCategory.addPreference(createAddAccountPreference()); |
| } |
| } |
| + private ChromeBasePreference createAddAccountPreference() { |
| + ChromeBasePreference addAccountPreference = new ChromeBasePreference(getActivity()); |
| + addAccountPreference.setIcon(R.drawable.add_circle_blue); |
| + addAccountPreference.setTitle(R.string.account_management_add_account_title); |
| + addAccountPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() { |
| + @Override |
| + public boolean onPreferenceClick(Preference preference) { |
| + if (!isVisible() || !isResumed()) return false; |
| + |
| + AccountManagementScreenHelper.logEvent( |
| + ProfileAccountManagementMetrics.ADD_ACCOUNT, mGaiaServiceType); |
| + |
| + AccountAdder.getInstance().addAccount( |
| + getActivity(), AccountAdder.ADD_ACCOUNT_RESULT); |
| + |
| + // Return to the last opened tab if triggered from the content area. |
| + if (mGaiaServiceType != AccountManagementScreenHelper.GAIA_SERVICE_TYPE_NONE) { |
| + if (isAdded()) getActivity().finish(); |
| + } |
| + |
| + return true; |
| + } |
| + }); |
| + addAccountPreference.setManagedPreferenceDelegate(new ManagedPreferenceDelegate() { |
| + @Override |
| + public boolean isPreferenceControlledByPolicy(Preference preference) { |
| + return !canAddAccounts(); |
| + } |
| + }); |
| + return addAccountPreference; |
| + } |
| + |
| // ProfileDownloader.Observer implementation: |
| @Override |