diff options
3 files changed, 39 insertions, 2 deletions
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index 548b1230d6e2..d7f9ad822c68 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -6406,6 +6406,15 @@ public final class Settings { "accessibility_button_target_component"; /** + * The system class name of magnification controller which is a target to be toggled via + * accessibility shortcut or accessibility button. + * + * @hide + */ + public static final String ACCESSIBILITY_SHORTCUT_TARGET_MAGNIFICATION_CONTROLLER = + "com.android.server.accessibility.MagnificationController"; + + /** * If touch exploration is enabled. */ public static final String TOUCH_EXPLORATION_ENABLED = "touch_exploration_enabled"; diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java index 1e0c1d877f67..4443524d2098 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java @@ -20,6 +20,7 @@ import static android.os.Process.INVALID_UID; import static android.os.Process.ROOT_UID; import static android.os.Process.SHELL_UID; import static android.os.Process.SYSTEM_UID; +import static android.provider.Settings.Secure.ACCESSIBILITY_SHORTCUT_TARGET_MAGNIFICATION_CONTROLLER; import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_2BUTTON_OVERLAY; import android.Manifest; @@ -3304,7 +3305,7 @@ public class SettingsProvider extends ContentProvider { } private final class UpgradeController { - private static final int SETTINGS_VERSION = 185; + private static final int SETTINGS_VERSION = 186; private final int mUserId; @@ -4547,6 +4548,32 @@ public class SettingsProvider extends ContentProvider { currentVersion = 185; } + if (currentVersion == 185) { + // Deprecate ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED, and migrate it + // to ACCESSIBILITY_BUTTON_TARGET_COMPONENT. + final SettingsState secureSettings = getSecureSettingsLocked(userId); + final Setting magnifyNavbarEnabled = secureSettings.getSettingLocked( + Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED); + if ("1".equals(magnifyNavbarEnabled.getValue())) { + secureSettings.insertSettingLocked( + Secure.ACCESSIBILITY_BUTTON_TARGET_COMPONENT, + ACCESSIBILITY_SHORTCUT_TARGET_MAGNIFICATION_CONTROLLER, + null /* tag */, false /* makeDefault */, + SettingsState.SYSTEM_PACKAGE_NAME); + } else { + // Clear a11y button targets list setting. A11yManagerService will end up + // adding all legacy enabled services that want the button to the list, so + // there's no need to keep tracking them. + secureSettings.insertSettingLocked( + Secure.ACCESSIBILITY_BUTTON_TARGET_COMPONENT, + null, null /* tag */, false /* makeDefault */, + SettingsState.SYSTEM_PACKAGE_NAME); + } + secureSettings.deleteSettingLocked( + Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED); + currentVersion = 186; + } + // vXXX: Add new settings above this point. if (currentVersion != newVersion) { diff --git a/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java b/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java index 72782258d237..1a1a480d59e2 100644 --- a/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java +++ b/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java @@ -734,7 +734,8 @@ public class SettingsBackupTest { Settings.Secure.DOZE_WAKE_DISPLAY_GESTURE, Settings.Secure.FACE_UNLOCK_RE_ENROLL, Settings.Secure.TAP_GESTURE, - Settings.Secure.WINDOW_MAGNIFICATION); + Settings.Secure.WINDOW_MAGNIFICATION, + Settings.Secure.ACCESSIBILITY_SHORTCUT_TARGET_MAGNIFICATION_CONTROLLER); @Test public void systemSettingsBackedUpOrBlacklisted() { |