aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/android/inputmethod/latin/accounts/AccountsChangedReceiver.java
diff options
context:
space:
mode:
authorSandeep Siddhartha <sansid@google.com>2014-10-09 12:21:56 -0700
committerSandeep Siddhartha <sansid@google.com>2014-10-10 10:49:32 -0700
commit1e10d29bc8975ea45ca5e3bdf1936aa418161bcb (patch)
tree5335837308f4be45cab40477313534fde9001323 /java/src/com/android/inputmethod/latin/accounts/AccountsChangedReceiver.java
parent6e565332df385d67d58543879f9d81263e667c06 (diff)
downloadlatinime-1e10d29bc8975ea45ca5e3bdf1936aa418161bcb.tar.gz
latinime-1e10d29bc8975ea45ca5e3bdf1936aa418161bcb.tar.xz
latinime-1e10d29bc8975ea45ca5e3bdf1936aa418161bcb.zip
Don't restore device specific preferences
There are two categories of preferences: 1. That are part of the default shared preference They were all getting backed up and restored. Added a blacklist to not restore some of these. e.g. current account 2. That are in a non-default shared preference file. These are not getting backed up currently, but added a specific local preference file for all such preferences. Bug: 17288591 Change-Id: I2f748be971a2337543e5014434aa39313fd1e1d8
Diffstat (limited to 'java/src/com/android/inputmethod/latin/accounts/AccountsChangedReceiver.java')
-rw-r--r--java/src/com/android/inputmethod/latin/accounts/AccountsChangedReceiver.java47
1 files changed, 28 insertions, 19 deletions
diff --git a/java/src/com/android/inputmethod/latin/accounts/AccountsChangedReceiver.java b/java/src/com/android/inputmethod/latin/accounts/AccountsChangedReceiver.java
index 9445ce4c3..00bcecf52 100644
--- a/java/src/com/android/inputmethod/latin/accounts/AccountsChangedReceiver.java
+++ b/java/src/com/android/inputmethod/latin/accounts/AccountsChangedReceiver.java
@@ -26,7 +26,7 @@ import android.text.TextUtils;
import android.util.Log;
import com.android.inputmethod.annotations.UsedForTesting;
-import com.android.inputmethod.latin.settings.Settings;
+import com.android.inputmethod.latin.settings.LocalSettingsConstants;
/**
* {@link BroadcastReceiver} for {@link AccountManager#LOGIN_ACCOUNTS_CHANGED_ACTION}.
@@ -41,25 +41,14 @@ public class AccountsChangedReceiver extends BroadcastReceiver {
return;
}
+ // Ideally the account preference could live in a different preferences file
+ // that wasn't being backed up and restored, however the preference fragments
+ // currently only deal with the default shared preferences which is why
+ // separating this out into a different file is not trivial currently.
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
- final String currentAccount = prefs.getString(Settings.PREF_ACCOUNT_NAME, null);
- if (currentAccount != null) {
- final String[] accounts = getAccountsForLogin(context);
- boolean accountFound = false;
- for (String account : accounts) {
- if (TextUtils.equals(currentAccount, account)) {
- accountFound = true;
- break;
- }
- }
- // The current account was not found in the list of accounts, remove it.
- if (!accountFound) {
- Log.i(TAG, "The current account was removed from the system: " + currentAccount);
- prefs.edit()
- .remove(Settings.PREF_ACCOUNT_NAME)
- .apply();
- }
- }
+ final String currentAccount = prefs.getString(
+ LocalSettingsConstants.PREF_ACCOUNT_NAME, null);
+ removeUnknownAccountFromPreference(prefs, getAccountsForLogin(context), currentAccount);
}
/**
@@ -69,4 +58,24 @@ public class AccountsChangedReceiver extends BroadcastReceiver {
protected String[] getAccountsForLogin(Context context) {
return LoginAccountUtils.getAccountsForLogin(context);
}
+
+ /**
+ * Removes the currentAccount from preferences if it's not found
+ * in the list of current accounts.
+ */
+ private static void removeUnknownAccountFromPreference(final SharedPreferences prefs,
+ final String[] accounts, final String currentAccount) {
+ if (currentAccount == null) {
+ return;
+ }
+ for (final String account : accounts) {
+ if (TextUtils.equals(currentAccount, account)) {
+ return;
+ }
+ }
+ Log.i(TAG, "The current account was removed from the system: " + currentAccount);
+ prefs.edit()
+ .remove(LocalSettingsConstants.PREF_ACCOUNT_NAME)
+ .apply();
+ }
}