/** * Query shared prefs for the current engine state, and update the UI accordingly. * * <p>In future, we might want this to be on a background thread, or implemented as a Loader. */ protected void updateSelectedEngines() { try { SharedPreferences syncPrefs = fxAccount.getSyncPrefs(); Map<String, Boolean> engines = SyncConfiguration.getUserSelectedEngines(syncPrefs); if (engines != null) { bookmarksPreference.setChecked( engines.containsKey("bookmarks") && engines.get("bookmarks")); historyPreference.setChecked(engines.containsKey("history") && engines.get("history")); passwordsPreference.setChecked( engines.containsKey("passwords") && engines.get("passwords")); tabsPreference.setChecked(engines.containsKey("tabs") && engines.get("tabs")); return; } // We don't have user specified preferences. Perhaps we have seen a meta/global? Set<String> enabledNames = SyncConfiguration.getEnabledEngineNames(syncPrefs); if (enabledNames != null) { bookmarksPreference.setChecked(enabledNames.contains("bookmarks")); historyPreference.setChecked(enabledNames.contains("history")); passwordsPreference.setChecked(enabledNames.contains("passwords")); tabsPreference.setChecked(enabledNames.contains("tabs")); return; } // Okay, we don't have userSelectedEngines or enabledEngines. That means // the user hasn't specified to begin with, we haven't specified here, and // we haven't already seen, Sync engines. We don't know our state, so // let's check everything (the default) and disable everything. bookmarksPreference.setChecked(true); historyPreference.setChecked(true); passwordsPreference.setChecked(true); tabsPreference.setChecked(true); setCheckboxesEnabled(false); } catch (Exception e) { Logger.warn(LOG_TAG, "Got exception getting engines to select; ignoring.", e); return; } }