From 2cc0471c773c4bfac1df72a913441a9d73c681ad Mon Sep 17 00:00:00 2001 From: mincheli Date: Tue, 14 Jan 2020 14:58:00 +0800 Subject: [PATCH] Added key Magnification capability To support window magnification, we use this key to store magnification capability. If the device is capable of only one magnification mode, it can not switch the magnification mode between full screen mode and window mode. Bug: 144327603 Test: atest SettingsProviderTest Change-Id: If5aaa1ccc851f675afed204a367f08224e04df9b --- core/java/android/provider/Settings.java | 23 +++++++++++++++++-- .../android/providers/settings/secure.proto | 6 +++-- .../settings/backup/SecureSettings.java | 1 + .../validators/SecureSettingsValidators.java | 4 ++++ .../settings/SettingsProtoDumpUtil.java | 3 +++ 5 files changed, 33 insertions(+), 4 deletions(-) diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index fdce49cfcb3b2..aa51b69a8b2d2 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -8867,8 +8867,8 @@ public final class Settings { public static final String WINDOW_MAGNIFICATION = "window_magnification"; /** - * Controls magnification mode when magnification is enabled via a system-wide - * triple tap gesture or the accessibility shortcut. + * Controls magnification mode when magnification is enabled via a system-wide triple tap + * gesture or the accessibility shortcut. * * @see#ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN * @see#ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW @@ -8889,6 +8889,25 @@ public final class Settings { */ public static final int ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW = 0x2; + /** + * Magnification mode value that is capable of magnifying whole display and particular + * region in a window. + * @hide + */ + public static final int ACCESSIBILITY_MAGNIFICATION_MODE_ALL = 0x3; + + /** + * Controls magnification capability. Accessibility magnification is capable of at least one + * of the magnification modes. + * + * @see#ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN + * @see#ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW + * @see#ACCESSIBILITY_MAGNIFICATION_MODE_ALL + * @hide + */ + public static final String ACCESSIBILITY_MAGNIFICATION_CAPABILITY = + "accessibility_magnification_capability"; + /** * Keys we no longer back up under the current schema, but want to continue to * process when restoring historical backup datasets. diff --git a/core/proto/android/providers/settings/secure.proto b/core/proto/android/providers/settings/secure.proto index a3313b21131dd..c7f49b9d0936f 100644 --- a/core/proto/android/providers/settings/secure.proto +++ b/core/proto/android/providers/settings/secure.proto @@ -75,9 +75,11 @@ message SecureSettingsProto { // Settings for accessibility timeout optional SettingProto non_interactive_ui_timeout_ms = 32 [ (android.privacy).dest = DEST_AUTOMATIC ]; optional SettingProto interactive_ui_timeout_ms = 33 [ (android.privacy).dest = DEST_AUTOMATIC ]; - // Settings for magnification mode + // Settings for accessibility magnification. optional SettingProto accessibility_magnification_mode = 34 [ (android.privacy).dest = DEST_AUTOMATIC ]; - optional SettingProto button_long_press_targets = 35 [ (android.privacy).dest = DEST_AUTOMATIC ]; + optional SettingProto accessibility_magnification_capability = 35 [ (android.privacy).dest = DEST_AUTOMATIC ]; + optional SettingProto button_long_press_targets = 36 [ (android.privacy).dest = DEST_AUTOMATIC ]; + } optional Accessibility accessibility = 2; diff --git a/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java b/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java index 8fa98c85fc330..4dd7186154f4e 100644 --- a/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java +++ b/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java @@ -162,6 +162,7 @@ public class SecureSettings { Settings.Secure.AWARE_TAP_PAUSE_TOUCH_COUNT, Settings.Secure.PEOPLE_STRIP, Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE, + Settings.Secure.ACCESSIBILITY_MAGNIFICATION_CAPABILITY, Settings.Secure.ACCESSIBILITY_BUTTON_LONG_PRESS_TARGETS, }; } diff --git a/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java b/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java index 75c5f95818203..4442779755b78 100644 --- a/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java +++ b/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java @@ -245,6 +245,10 @@ public class SecureSettingsValidators { new InclusiveIntegerRangeValidator( Secure.ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN, Secure.ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW)); + VALIDATORS.put(Secure.ACCESSIBILITY_MAGNIFICATION_CAPABILITY, + new InclusiveIntegerRangeValidator( + Secure.ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN, + Secure.ACCESSIBILITY_MAGNIFICATION_MODE_ALL)); VALIDATORS.put( Secure.ACCESSIBILITY_BUTTON_LONG_PRESS_TARGETS, ACCESSIBILITY_SHORTCUT_TARGET_LIST_VALIDATOR); diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java index af74121a11c98..cd5271e0eff87 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java @@ -1813,6 +1813,9 @@ class SettingsProtoDumpUtil { dumpSetting(s, p, Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE, SecureSettingsProto.Accessibility.ACCESSIBILITY_MAGNIFICATION_MODE); + dumpSetting(s, p, + Settings.Secure.ACCESSIBILITY_MAGNIFICATION_CAPABILITY, + SecureSettingsProto.Accessibility.ACCESSIBILITY_MAGNIFICATION_CAPABILITY); dumpSetting(s, p, Settings.Secure.ACCESSIBILITY_BUTTON_LONG_PRESS_TARGETS, SecureSettingsProto.Accessibility.BUTTON_LONG_PRESS_TARGETS);