summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/accounts/AccountPreferenceController.java
diff options
context:
space:
mode:
authorFan Zhang <zhfan@google.com>2017-05-18 01:14:10 +0000
committerandroid-build-merger <android-build-merger@google.com>2017-05-18 01:14:10 +0000
commit867c68e76c3115357fdadcee03080e7704919ba7 (patch)
tree7c634a1422ae7a4b09f799d23b5ffaef305bfa3e /src/com/android/settings/accounts/AccountPreferenceController.java
parent63c5b41f01236e782e4c59c48f5df89b8048eb25 (diff)
parent60d26cfffa673c69a151e619b9c5c4738e638082 (diff)
downloadpackages_apps_Settings-867c68e76c3115357fdadcee03080e7704919ba7.tar.gz
packages_apps_Settings-867c68e76c3115357fdadcee03080e7704919ba7.tar.bz2
packages_apps_Settings-867c68e76c3115357fdadcee03080e7704919ba7.zip
Merge "Fix bug where accounts are duplicated in user&account list." into oc-dev am: 2b030aeb65
am: 60d26cfffa Change-Id: I878bafe5a626e2f6fe9d8f4cfbb89dfeb763c7a0
Diffstat (limited to 'src/com/android/settings/accounts/AccountPreferenceController.java')
-rw-r--r--src/com/android/settings/accounts/AccountPreferenceController.java27
1 files changed, 14 insertions, 13 deletions
diff --git a/src/com/android/settings/accounts/AccountPreferenceController.java b/src/com/android/settings/accounts/AccountPreferenceController.java
index 2801f045a1..69569da013 100644
--- a/src/com/android/settings/accounts/AccountPreferenceController.java
+++ b/src/com/android/settings/accounts/AccountPreferenceController.java
@@ -123,9 +123,9 @@ public class AccountPreferenceController extends PreferenceController
*/
public boolean pendingRemoval;
/**
- * The map from account name to account preference
+ * The map from account key to account preference
*/
- public ArrayMap<CharSequence, AccountTypePreference> accountPreferences = new ArrayMap<>();
+ public ArrayMap<String, AccountTypePreference> accountPreferences = new ArrayMap<>();
}
public AccountPreferenceController(Context context, SettingsPreferenceFragment parent,
@@ -426,7 +426,7 @@ public class AccountPreferenceController extends PreferenceController
return;
}
if (profileData.userInfo.isEnabled()) {
- final ArrayMap<CharSequence, AccountTypePreference> preferenceToRemove =
+ final ArrayMap<String, AccountTypePreference> preferenceToRemove =
new ArrayMap<>(profileData.accountPreferences);
final ArrayList<AccountTypePreference> preferences = getAccountTypePreferences(
profileData.authenticatorHelper, profileData.userInfo.getUserHandle(),
@@ -435,18 +435,19 @@ public class AccountPreferenceController extends PreferenceController
for (int i = 0; i < count; i++) {
final AccountTypePreference preference = preferences.get(i);
preference.setOrder(i);
- if (!profileData.accountPreferences.containsValue(preference)) {
- profileData.preferenceGroup.addPreference(preferences.get(i));
- profileData.accountPreferences.put(preference.getTitle(), preference);
+ final String key = preference.getKey();
+ if (!profileData.accountPreferences.containsKey(key)) {
+ profileData.preferenceGroup.addPreference(preference);
+ profileData.accountPreferences.put(key, preference);
}
}
if (profileData.addAccountPreference != null) {
profileData.preferenceGroup.addPreference(profileData.addAccountPreference);
}
- for (CharSequence name : preferenceToRemove.keySet()) {
+ for (String key : preferenceToRemove.keySet()) {
profileData.preferenceGroup.removePreference(
- profileData.accountPreferences.get(name));
- profileData.accountPreferences.remove(name);
+ profileData.accountPreferences.get(key));
+ profileData.accountPreferences.remove(key);
}
} else {
profileData.preferenceGroup.removeAll();
@@ -471,8 +472,7 @@ public class AccountPreferenceController extends PreferenceController
}
private ArrayList<AccountTypePreference> getAccountTypePreferences(AuthenticatorHelper helper,
- UserHandle userHandle,
- ArrayMap<CharSequence, AccountTypePreference> preferenceToRemove) {
+ UserHandle userHandle, ArrayMap<String, AccountTypePreference> preferenceToRemove) {
final String[] accountTypes = helper.getEnabledAccountTypes();
final ArrayList<AccountTypePreference> accountTypePreferences =
new ArrayList<>(accountTypes.length);
@@ -497,7 +497,8 @@ public class AccountPreferenceController extends PreferenceController
// Add a preference row for each individual account
for (Account account : accounts) {
- final AccountTypePreference preference = preferenceToRemove.remove(account.name);
+ final AccountTypePreference preference =
+ preferenceToRemove.remove(AccountTypePreference.buildKey(account));
if (preference != null) {
accountTypePreferences.add(preference);
continue;
@@ -521,7 +522,7 @@ public class AccountPreferenceController extends PreferenceController
fragmentArguments.putParcelable(EXTRA_USER, userHandle);
accountTypePreferences.add(new AccountTypePreference(
prefContext, mMetricsFeatureProvider.getMetricsCategory(mParent),
- account.name, titleResPackageName, titleResId, label,
+ account, titleResPackageName, titleResId, label,
AccountDetailDashboardFragment.class.getName(), fragmentArguments, icon));
}
helper.preloadDrawableForType(mContext, accountType);