From 6b7167d88aec9b9fada77bf24b8f8ef0da853328 Mon Sep 17 00:00:00 2001 From: Bill Lin Date: Fri, 23 Apr 2021 15:32:05 +0800 Subject: [PATCH] 1/ Add ONE_HANDED_MODE_ACTIVATED secure settings for shortcut A new requirement to add A11y shortcut for One Handed Mode feature - The shortcut action is enter or exit one handed mode - ONE_HANDED_MODE_ACTIVATED = 0 /* false */ : STATE_NONE - ONE_HANDED_MODE_ACTIVATED = 1 /* true */ : STATE_ACTIVE Compare to enabled or disabled (ONE_HANDED_MODE_ENABLED) - ONE_HANDED_MODE_ENABLED = 0 /* false */ : Disable function - ONE_HANDED_MODE_ENABLED = 1 /* true */ : Enabled function Test: manual Test: make Bug: 182425480 Change-Id: Iee911631a6734af7eb742e1206d2b9b75b694969 --- core/java/android/provider/Settings.java | 6 ++++++ .../android/providers/settings/secure.proto | 1 + .../SettingsProvider/res/values/defaults.xml | 3 +++ .../settings/backup/SecureSettings.java | 1 + .../validators/SecureSettingsValidators.java | 1 + .../providers/settings/SettingsProvider.java | 18 +++++++++++++++++- 6 files changed, 29 insertions(+), 1 deletion(-) diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index f8991ce1e97b5..d7c0902b57f68 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -8514,6 +8514,12 @@ public final class Settings { public static final String SWIPE_BOTTOM_TO_NOTIFICATION_ENABLED = "swipe_bottom_to_notification_enabled"; + /** + * Controls whether One-Handed mode is currently activated. + * @hide + */ + public static final String ONE_HANDED_MODE_ACTIVATED = "one_handed_mode_activated"; + /** * For user preference if One-Handed Mode enabled. * @hide diff --git a/core/proto/android/providers/settings/secure.proto b/core/proto/android/providers/settings/secure.proto index ae6dcfdc2817b..1bba12ff7fa6a 100644 --- a/core/proto/android/providers/settings/secure.proto +++ b/core/proto/android/providers/settings/secure.proto @@ -430,6 +430,7 @@ message SecureSettingsProto { optional SettingProto one_handed_mode_enabled = 1 [ (android.privacy).dest = DEST_AUTOMATIC ]; optional SettingProto one_handed_mode_timeout = 2 [ (android.privacy).dest = DEST_AUTOMATIC ]; optional SettingProto taps_app_to_exit = 3 [ (android.privacy).dest = DEST_AUTOMATIC ]; + optional SettingProto one_handed_mode_activated = 4 [ (android.privacy).dest = DEST_AUTOMATIC ]; } optional OneHanded onehanded = 80; diff --git a/packages/SettingsProvider/res/values/defaults.xml b/packages/SettingsProvider/res/values/defaults.xml index fbb84fdfcedcc..ccbcb8920de37 100644 --- a/packages/SettingsProvider/res/values/defaults.xml +++ b/packages/SettingsProvider/res/values/defaults.xml @@ -256,4 +256,7 @@ 1 + + false + diff --git a/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java b/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java index 72fb23797f0dd..1cfdff8e24ed2 100644 --- a/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java +++ b/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java @@ -173,6 +173,7 @@ public class SecureSettings { Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE, Settings.Secure.ACCESSIBILITY_BUTTON_TARGETS, Settings.Secure.ACCESSIBILITY_MAGNIFICATION_CAPABILITY, + Settings.Secure.ONE_HANDED_MODE_ACTIVATED, Settings.Secure.ONE_HANDED_MODE_ENABLED, Settings.Secure.ONE_HANDED_MODE_TIMEOUT, Settings.Secure.TAPS_APP_TO_EXIT, diff --git a/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java b/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java index 4872aa4820fff..36f5dba613557 100644 --- a/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java +++ b/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java @@ -262,6 +262,7 @@ public class SecureSettingsValidators { VALIDATORS.put( Secure.ACCESSIBILITY_BUTTON_TARGETS, ACCESSIBILITY_SHORTCUT_TARGET_LIST_VALIDATOR); + VALIDATORS.put(Secure.ONE_HANDED_MODE_ACTIVATED, BOOLEAN_VALIDATOR); VALIDATORS.put(Secure.ONE_HANDED_MODE_ENABLED, BOOLEAN_VALIDATOR); VALIDATORS.put(Secure.ONE_HANDED_MODE_TIMEOUT, ANY_INTEGER_VALIDATOR); VALIDATORS.put(Secure.TAPS_APP_TO_EXIT, BOOLEAN_VALIDATOR); diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java index 2e90d369a8838..941f47f525510 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java @@ -3401,7 +3401,7 @@ public class SettingsProvider extends ContentProvider { } private final class UpgradeController { - private static final int SETTINGS_VERSION = 201; + private static final int SETTINGS_VERSION = 202; private final int mUserId; @@ -4959,6 +4959,22 @@ public class SettingsProvider extends ContentProvider { currentVersion = 201; } + if (currentVersion == 201) { + // Version 201: Set the default value for Secure Settings: + final SettingsState secureSettings = getSecureSettingsLocked(userId); + final Setting oneHandedModeActivated = secureSettings.getSettingLocked( + Secure.ONE_HANDED_MODE_ACTIVATED); + if (oneHandedModeActivated.isNull()) { + final boolean defOneHandedModeActivated = getContext().getResources() + .getBoolean(R.bool.def_one_handed_mode_activated); + secureSettings.insertSettingLocked( + Secure.ONE_HANDED_MODE_ACTIVATED, + defOneHandedModeActivated ? "1" : "0", null, true, + SettingsState.SYSTEM_PACKAGE_NAME); + } + currentVersion = 202; + } + // vXXX: Add new settings above this point. if (currentVersion != newVersion) {