Fix crash when changing Chrome bookmark sync account.
Need to move a UI access from the AsyncTasks doInBackground to
onPostExecute.
Bug:3238088
Change-Id: I7ca63834f3992087025ae8e99e594690f163e937
diff --git a/src/com/android/browser/preferences/PersonalPreferencesFragment.java b/src/com/android/browser/preferences/PersonalPreferencesFragment.java
index a0c8ea0..0620df2 100644
--- a/src/com/android/browser/preferences/PersonalPreferencesFragment.java
+++ b/src/com/android/browser/preferences/PersonalPreferencesFragment.java
@@ -81,14 +81,14 @@
refreshUi(context);
}
- private class GetAccountsTask extends AsyncTask<Void, Void, Void> {
+ private class GetAccountsTask extends AsyncTask<Void, Void, String> {
private Context mContext;
GetAccountsTask(Context ctx) {
mContext = ctx;
}
- protected Void doInBackground(Void... unused) {
+ protected String doInBackground(Void... unused) {
AccountManager am = (AccountManager) mContext.getSystemService(Context.ACCOUNT_SERVICE);
Account[] accounts = am.getAccountsByType("com.google");
if (accounts == null || accounts.length == 0) {
@@ -97,26 +97,34 @@
getPreferenceScreen().removePreference(mChromeSync);
}
} else {
+ // Google accounts are present.
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(mContext);
Bundle args = mChromeSync.getExtras();
args.putParcelableArray("accounts", accounts);
mEnabled = BrowserContract.Settings.isSyncEnabled(mContext);
+ mChromeSync.setOnPreferenceClickListener(PersonalPreferencesFragment.this);
+
if (!mEnabled) {
- // Google accounts are present, but Chrome sync isn't enabled yet.
// Setup a link to the enable wizard
- mChromeSync.setSummary(R.string.pref_personal_sync_with_chrome_summary);
+ return mContext.getResources().getString(
+ R.string.pref_personal_sync_with_chrome_summary);
} else {
// Chrome sync is enabled, setup a link to account switcher
- String accountName = prefs.getString(BrowserBookmarksPage.PREF_ACCOUNT_NAME,
- null);
- mChromeSync.setSummary(accountName);
+ String accountName = prefs.getString(
+ BrowserBookmarksPage.PREF_ACCOUNT_NAME, null);
args.putString("curAccount", accountName);
+ return accountName;
}
- mChromeSync.setOnPreferenceClickListener(PersonalPreferencesFragment.this);
}
return null;
}
+
+ protected void onPostExecute(String summary) {
+ if (summary != null) {
+ mChromeSync.setSummary(summary);
+ }
+ }
}
void refreshUi(Context context) {