protected void refresh() { // refresh is called from our onResume, which can happen before the owning // Activity tells us about an account (via our public // refresh(AndroidFxAccount) method). if (fxAccount == null) { throw new IllegalArgumentException("fxAccount must not be null"); } updateProfileInformation(); updateAuthServerPreference(); updateSyncServerPreference(); try { // There are error states determined by Android, not the login state // machine, and we have a chance to present these states here. We handle // them specially, since we can't surface these states as part of syncing, // because they generally stop syncs from happening regularly. Right now // there are no such states. // Interrogate the Firefox Account's state. State state = fxAccount.getState(); switch (state.getNeededAction()) { case NeedsUpgrade: showNeedsUpgrade(); break; case NeedsPassword: showNeedsPassword(); break; case NeedsVerification: showNeedsVerification(); break; case NeedsFinishMigrating: showNeedsFinishMigrating(); break; case None: showConnected(); break; } // We check for the master setting last, since it is not strictly // necessary for the user to address this error state: it's really a // warning state. We surface it for the user's convenience, and to prevent // confused folks wondering why Sync is not working at all. final boolean masterSyncAutomatically = ContentResolver.getMasterSyncAutomatically(); if (!masterSyncAutomatically) { showNeedsMasterSyncAutomaticallyEnabled(); return; } } finally { // No matter our state, we should update the checkboxes. updateSelectedEngines(); } final String clientName = clientsDataDelegate.getClientName(); deviceNamePreference.setSummary(clientName); deviceNamePreference.setText(clientName); updateSyncNowPreference(); }
@Override public boolean onPreferenceChange(Preference preference, Object newValue) { if (preference == deviceNamePreference) { String newClientName = (String) newValue; if (TextUtils.isEmpty(newClientName)) { newClientName = clientsDataDelegate.getDefaultClientName(); } final long now = System.currentTimeMillis(); clientsDataDelegate.setClientName(newClientName, now); requestDelayedSync(); // Try to update our remote client record. hardRefresh(); // Updates the value displayed to the user, among other things. return true; } // For everything else, accept the change. return true; }