diff options
| author | Danny Baumann <dannybaumann@web.de> | 2014-09-16 13:01:04 +0200 |
|---|---|---|
| committer | Danny Baumann <dannybaumann@web.de> | 2014-09-16 13:02:16 +0200 |
| commit | 07c9e709919d7c664625ce281e9e0de5dbcf09a1 (patch) | |
| tree | bf42f288f4ef97c54fd5ad261a34cd4d01fb9a40 | |
| parent | 8d79d3d0deffc9a6e0dabd5345cfd29fe8d1f6b7 (diff) | |
| download | packages_apps_ContactsCommon-07c9e709919d7c664625ce281e9e0de5dbcf09a1.tar.gz packages_apps_ContactsCommon-07c9e709919d7c664625ce281e9e0de5dbcf09a1.tar.bz2 packages_apps_ContactsCommon-07c9e709919d7c664625ce281e9e0de5dbcf09a1.zip | |
Make sure internal lists of AccountTypeManager aren't modified.
Change-Id: Iab3d31db52546dbfcf9f9b0cc6b8152ef48a15fe
| -rw-r--r-- | src/com/android/contacts/common/model/AccountTypeManager.java | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/src/com/android/contacts/common/model/AccountTypeManager.java b/src/com/android/contacts/common/model/AccountTypeManager.java index 4765349f..955242c3 100644 --- a/src/com/android/contacts/common/model/AccountTypeManager.java +++ b/src/com/android/contacts/common/model/AccountTypeManager.java @@ -66,6 +66,7 @@ import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Sets; +import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Comparator; @@ -434,10 +435,10 @@ class AccountTypeManagerImpl extends AccountTypeManager accountType = new GoogleAccountType(mContext, auth.packageName); } else if (ExchangeAccountType.isExchangeType(type)) { accountType = new ExchangeAccountType(mContext, auth.packageName, type); - } else if (SimAccountType.ACCOUNT_TYPE.equals(type)) { - accountType = new SimAccountType(mContext, auth.packageName); - } else if (PhoneAccountType.ACCOUNT_TYPE.equals(type)) { - accountType = new PhoneAccountType(mContext, auth.packageName); + } else if (SimAccountType.ACCOUNT_TYPE.equals(type)) { + accountType = new SimAccountType(mContext, auth.packageName); + } else if (PhoneAccountType.ACCOUNT_TYPE.equals(type)) { + accountType = new PhoneAccountType(mContext, auth.packageName); } else { // TODO: use syncadapter package instead, since it provides resources Log.d(TAG, "Registering external account type=" + type @@ -602,9 +603,8 @@ class AccountTypeManagerImpl extends AccountTypeManager if (isAirMode) { return trimAccountByType(contactWritableOnly ? mContactWritableAccounts : mAccounts, SimAccountType.ACCOUNT_TYPE); - } else { - return contactWritableOnly ? mContactWritableAccounts : mAccounts; } + break; case FLAG_ALL_ACCOUNTS_WITHOUT_LOCAL: return trimAccountByType( contactWritableOnly ? mContactWritableAccounts : mAccounts, @@ -614,7 +614,8 @@ class AccountTypeManagerImpl extends AccountTypeManager contactWritableOnly ? mContactWritableAccounts : mAccounts, SimAccountType.ACCOUNT_TYPE); } - return contactWritableOnly ? mContactWritableAccounts : mAccounts; + List<AccountWithDataSet> list = contactWritableOnly ? mContactWritableAccounts : mAccounts; + return new ArrayList<AccountWithDataSet>(list); } private boolean isSimStateUnknown(Account account) { |
