fix(#AlwaysOnMagnifier): update state when setting is changed outside the app
Refactor to keep track of all controllers and notify them all when a key changes, similar to ColorAndMotionFragment.java Bug: b/265086261 Fix: 267433655 Test: atest packages/apps/Settings/tests/robotests/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragmentTest.java Change-Id: Id44d1d4074318aff8c4c4bc6f07d65b3e0ffc561
This commit is contained in:
@@ -52,6 +52,7 @@ import com.android.settings.accessibility.AccessibilityDialogUtils.DialogType;
|
|||||||
import com.android.settings.accessibility.AccessibilityUtil.QuickSettingsTooltipType;
|
import com.android.settings.accessibility.AccessibilityUtil.QuickSettingsTooltipType;
|
||||||
import com.android.settings.accessibility.AccessibilityUtil.UserShortcutType;
|
import com.android.settings.accessibility.AccessibilityUtil.UserShortcutType;
|
||||||
import com.android.settings.utils.LocaleUtils;
|
import com.android.settings.utils.LocaleUtils;
|
||||||
|
import com.android.settingslib.core.AbstractPreferenceController;
|
||||||
|
|
||||||
import com.google.android.setupcompat.util.WizardManagerHelper;
|
import com.google.android.setupcompat.util.WizardManagerHelper;
|
||||||
|
|
||||||
@@ -213,6 +214,7 @@ public class ToggleScreenMagnificationPreferenceFragment extends
|
|||||||
getContext(), MagnificationFollowTypingPreferenceController.PREF_KEY);
|
getContext(), MagnificationFollowTypingPreferenceController.PREF_KEY);
|
||||||
getSettingsLifecycle().addObserver(mFollowTypingPreferenceController);
|
getSettingsLifecycle().addObserver(mFollowTypingPreferenceController);
|
||||||
mFollowTypingPreferenceController.displayPreference(getPreferenceScreen());
|
mFollowTypingPreferenceController.displayPreference(getPreferenceScreen());
|
||||||
|
addPreferenceController(mFollowTypingPreferenceController);
|
||||||
|
|
||||||
addAlwaysOnSetting(generalCategory);
|
addAlwaysOnSetting(generalCategory);
|
||||||
}
|
}
|
||||||
@@ -239,6 +241,7 @@ public class ToggleScreenMagnificationPreferenceFragment extends
|
|||||||
getContext(), MagnificationAlwaysOnPreferenceController.PREF_KEY);
|
getContext(), MagnificationAlwaysOnPreferenceController.PREF_KEY);
|
||||||
getSettingsLifecycle().addObserver(alwaysOnPreferenceController);
|
getSettingsLifecycle().addObserver(alwaysOnPreferenceController);
|
||||||
alwaysOnPreferenceController.displayPreference(getPreferenceScreen());
|
alwaysOnPreferenceController.displayPreference(getPreferenceScreen());
|
||||||
|
addPreferenceController(alwaysOnPreferenceController);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -344,14 +347,19 @@ public class ToggleScreenMagnificationPreferenceFragment extends
|
|||||||
AccessibilitySettingsContentObserver contentObserver) {
|
AccessibilitySettingsContentObserver contentObserver) {
|
||||||
super.registerKeysToObserverCallback(contentObserver);
|
super.registerKeysToObserverCallback(contentObserver);
|
||||||
|
|
||||||
final List<String> followingTypingKeys = new ArrayList<>();
|
var keysToObserve = List.of(
|
||||||
followingTypingKeys.add(Settings.Secure.ACCESSIBILITY_MAGNIFICATION_FOLLOW_TYPING_ENABLED);
|
Settings.Secure.ACCESSIBILITY_MAGNIFICATION_FOLLOW_TYPING_ENABLED,
|
||||||
contentObserver.registerKeysToObserverCallback(followingTypingKeys,
|
Settings.Secure.ACCESSIBILITY_MAGNIFICATION_ALWAYS_ON_ENABLED
|
||||||
key -> updateFollowTypingState());
|
);
|
||||||
|
contentObserver.registerKeysToObserverCallback(keysToObserve,
|
||||||
|
key -> updatePreferencesState());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateFollowTypingState() {
|
private void updatePreferencesState() {
|
||||||
mFollowTypingPreferenceController.updateState();
|
final List<AbstractPreferenceController> controllers = new ArrayList<>();
|
||||||
|
getPreferenceControllers().forEach(controllers::addAll);
|
||||||
|
controllers.forEach(controller -> controller.updateState(
|
||||||
|
findPreference(controller.getPreferenceKey())));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -175,6 +175,11 @@ public class ToggleScreenMagnificationPreferenceFragmentTest {
|
|||||||
Settings.Secure.ACCESSIBILITY_MAGNIFICATION_FOLLOW_TYPING_ENABLED)),
|
Settings.Secure.ACCESSIBILITY_MAGNIFICATION_FOLLOW_TYPING_ENABLED)),
|
||||||
eq(false),
|
eq(false),
|
||||||
any(AccessibilitySettingsContentObserver.class));
|
any(AccessibilitySettingsContentObserver.class));
|
||||||
|
verify(mContentResolver).registerContentObserver(
|
||||||
|
eq(Settings.Secure.getUriFor(
|
||||||
|
Settings.Secure.ACCESSIBILITY_MAGNIFICATION_ALWAYS_ON_ENABLED)),
|
||||||
|
eq(false),
|
||||||
|
any(AccessibilitySettingsContentObserver.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
Reference in New Issue
Block a user