diff --git a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java index 979c941489f..0558f25f1a4 100644 --- a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java @@ -52,6 +52,7 @@ import com.android.settings.accessibility.AccessibilityDialogUtils.DialogType; import com.android.settings.accessibility.AccessibilityUtil.QuickSettingsTooltipType; import com.android.settings.accessibility.AccessibilityUtil.UserShortcutType; import com.android.settings.utils.LocaleUtils; +import com.android.settingslib.core.AbstractPreferenceController; import com.google.android.setupcompat.util.WizardManagerHelper; @@ -213,6 +214,7 @@ public class ToggleScreenMagnificationPreferenceFragment extends getContext(), MagnificationFollowTypingPreferenceController.PREF_KEY); getSettingsLifecycle().addObserver(mFollowTypingPreferenceController); mFollowTypingPreferenceController.displayPreference(getPreferenceScreen()); + addPreferenceController(mFollowTypingPreferenceController); addAlwaysOnSetting(generalCategory); } @@ -239,6 +241,7 @@ public class ToggleScreenMagnificationPreferenceFragment extends getContext(), MagnificationAlwaysOnPreferenceController.PREF_KEY); getSettingsLifecycle().addObserver(alwaysOnPreferenceController); alwaysOnPreferenceController.displayPreference(getPreferenceScreen()); + addPreferenceController(alwaysOnPreferenceController); } @Override @@ -344,14 +347,19 @@ public class ToggleScreenMagnificationPreferenceFragment extends AccessibilitySettingsContentObserver contentObserver) { super.registerKeysToObserverCallback(contentObserver); - final List followingTypingKeys = new ArrayList<>(); - followingTypingKeys.add(Settings.Secure.ACCESSIBILITY_MAGNIFICATION_FOLLOW_TYPING_ENABLED); - contentObserver.registerKeysToObserverCallback(followingTypingKeys, - key -> updateFollowTypingState()); + var keysToObserve = List.of( + Settings.Secure.ACCESSIBILITY_MAGNIFICATION_FOLLOW_TYPING_ENABLED, + Settings.Secure.ACCESSIBILITY_MAGNIFICATION_ALWAYS_ON_ENABLED + ); + contentObserver.registerKeysToObserverCallback(keysToObserve, + key -> updatePreferencesState()); } - private void updateFollowTypingState() { - mFollowTypingPreferenceController.updateState(); + private void updatePreferencesState() { + final List controllers = new ArrayList<>(); + getPreferenceControllers().forEach(controllers::addAll); + controllers.forEach(controller -> controller.updateState( + findPreference(controller.getPreferenceKey()))); } @Override diff --git a/tests/robotests/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragmentTest.java b/tests/robotests/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragmentTest.java index 4bb5935795b..8697cb5aa91 100644 --- a/tests/robotests/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragmentTest.java +++ b/tests/robotests/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragmentTest.java @@ -175,6 +175,11 @@ public class ToggleScreenMagnificationPreferenceFragmentTest { Settings.Secure.ACCESSIBILITY_MAGNIFICATION_FOLLOW_TYPING_ENABLED)), eq(false), any(AccessibilitySettingsContentObserver.class)); + verify(mContentResolver).registerContentObserver( + eq(Settings.Secure.getUriFor( + Settings.Secure.ACCESSIBILITY_MAGNIFICATION_ALWAYS_ON_ENABLED)), + eq(false), + any(AccessibilitySettingsContentObserver.class)); } @Test