From a4bb7e44da8cad348e441f37f6babe4d491af30b Mon Sep 17 00:00:00 2001 From: Rhed Jao Date: Mon, 2 Mar 2020 21:16:32 +0800 Subject: [PATCH] Support long press accessibility button (1/n) Adds a new setting key to support long press accessibility button. Bug: 150587818 Test: atest SettingsProviderTest Change-Id: I1ca1e01867a937690f7a5e5b27d595cd0a83e395 --- core/java/android/provider/Settings.java | 12 ++++++++++++ core/proto/android/providers/settings/secure.proto | 1 + .../provider/settings/backup/SecureSettings.java | 1 + .../validators/SecureSettingsValidators.java | 3 +++ .../providers/settings/SettingsProtoDumpUtil.java | 3 +++ 5 files changed, 20 insertions(+) diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index 4216cf387380a..83a304facce33 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -6607,6 +6607,18 @@ public final class Settings { public static final String ACCESSIBILITY_BUTTON_TARGET_COMPONENT = "accessibility_button_target_component"; + /** + * Setting specifying the accessibility services, accessibility shortcut targets, + * or features to be toggled via the long press accessibility button in the navigation bar. + * + *

This is a colon-separated string list which contains the flattened + * {@link ComponentName} and the class name of a system class implementing a supported + * accessibility feature. + * @hide + */ + public static final String ACCESSIBILITY_BUTTON_LONG_PRESS_TARGETS = + "accessibility_button_long_press_targets"; + /** * The system class name of magnification controller which is a target to be toggled via * accessibility shortcut or accessibility button. diff --git a/core/proto/android/providers/settings/secure.proto b/core/proto/android/providers/settings/secure.proto index 6d9e8ab776b71..a3313b21131dd 100644 --- a/core/proto/android/providers/settings/secure.proto +++ b/core/proto/android/providers/settings/secure.proto @@ -77,6 +77,7 @@ message SecureSettingsProto { optional SettingProto interactive_ui_timeout_ms = 33 [ (android.privacy).dest = DEST_AUTOMATIC ]; // Settings for magnification mode optional SettingProto accessibility_magnification_mode = 34 [ (android.privacy).dest = DEST_AUTOMATIC ]; + optional SettingProto button_long_press_targets = 35 [ (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 2431381f30332..8fa98c85fc330 100644 --- a/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java +++ b/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java @@ -162,5 +162,6 @@ public class SecureSettings { Settings.Secure.AWARE_TAP_PAUSE_TOUCH_COUNT, Settings.Secure.PEOPLE_STRIP, Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE, + 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 5553469b04204..75c5f95818203 100644 --- a/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java +++ b/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java @@ -245,5 +245,8 @@ public class SecureSettingsValidators { new InclusiveIntegerRangeValidator( Secure.ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN, Secure.ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW)); + 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 d6776879254d5..8789a5c62c6cd 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java @@ -1811,6 +1811,9 @@ class SettingsProtoDumpUtil { dumpSetting(s, p, Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE, SecureSettingsProto.Accessibility.ACCESSIBILITY_MAGNIFICATION_MODE); + dumpSetting(s, p, + Settings.Secure.ACCESSIBILITY_BUTTON_LONG_PRESS_TARGETS, + SecureSettingsProto.Accessibility.BUTTON_LONG_PRESS_TARGETS); p.end(accessibilityToken); final long adaptiveSleepToken = p.start(SecureSettingsProto.ADAPTIVE_SLEEP);