summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDanny Baumann <dannybaumann@web.de>2014-09-16 13:01:04 +0200
committerDanny Baumann <dannybaumann@web.de>2014-09-16 13:02:16 +0200
commit07c9e709919d7c664625ce281e9e0de5dbcf09a1 (patch)
treebf42f288f4ef97c54fd5ad261a34cd4d01fb9a40
parent8d79d3d0deffc9a6e0dabd5345cfd29fe8d1f6b7 (diff)
downloadpackages_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.java15
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) {