From 53841dc6ffe4d19dca989da367e060a4ab0a10f1 Mon Sep 17 00:00:00 2001 From: Patrick Huang Date: Fri, 3 Mar 2023 00:04:02 +0000 Subject: [PATCH] Add Settings keys for sticky emergency gesture UI These will be used to temporarily disable some user navigations when emergency UI is triggered. The usage will be similar to that of Settings.Secure.USER_SETUP_COMPLETE. Adding to backup deny list because they represent internal states and are not user configurable. Bug: 256494850 Test: manual (cherry picked from https://googleplex-android-review.googlesource.com/q/commit:c715d1053cc141b55ef3039dcf572d12a5a530d7) Merged-In: I81d46267b79302e87609bea599c94ef7bddeb47f Change-Id: I81d46267b79302e87609bea599c94ef7bddeb47f --- core/java/android/provider/Settings.java | 25 +++++++++++++++++++ .../validators/GlobalSettingsValidators.java | 2 ++ .../validators/SecureSettingsValidators.java | 3 +++ .../android/provider/SettingsBackupTest.java | 3 +++ 4 files changed, 33 insertions(+) diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index 05b6da4f7cbe1..61d8512990af9 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -10021,6 +10021,21 @@ public final class Settings { public static final String EMERGENCY_GESTURE_SOUND_ENABLED = "emergency_gesture_sound_enabled"; + /** + * Whether the emergency gesture UI is currently showing. + * + * @hide + */ + public static final String EMERGENCY_GESTURE_UI_SHOWING = "emergency_gesture_ui_showing"; + + /** + * The last time the emergency gesture UI was started. + * + * @hide + */ + public static final String EMERGENCY_GESTURE_UI_LAST_STARTED_MILLIS = + "emergency_gesture_ui_last_started_millis"; + /** * Whether the camera launch gesture to double tap the power button when the screen is off * should be disabled. @@ -15054,6 +15069,16 @@ public final class Settings { public static final String EMERGENCY_GESTURE_TAP_DETECTION_MIN_TIME_MS = "emergency_gesture_tap_detection_min_time_ms"; + /** + * The maximum duration in milliseconds for which the emergency gesture UI can stay + * "sticky", where the notification pull-down shade and navigation gestures/buttons are + * temporarily disabled. The feature is disabled completely if the value is set to zero. + * + * @hide + */ + public static final String EMERGENCY_GESTURE_STICKY_UI_MAX_DURATION_MILLIS = + "emergency_gesture_sticky_ui_max_duration_millis"; + /** * Whether to enable automatic system server heap dumps. This only works on userdebug or * eng builds, not on user builds. This is set by the user and overrides the config value. diff --git a/packages/SettingsProvider/src/android/provider/settings/validators/GlobalSettingsValidators.java b/packages/SettingsProvider/src/android/provider/settings/validators/GlobalSettingsValidators.java index 8d07fb67c14fb..d5386c1d75acc 100644 --- a/packages/SettingsProvider/src/android/provider/settings/validators/GlobalSettingsValidators.java +++ b/packages/SettingsProvider/src/android/provider/settings/validators/GlobalSettingsValidators.java @@ -126,6 +126,8 @@ public class GlobalSettingsValidators { NON_NEGATIVE_INTEGER_VALIDATOR); VALIDATORS.put(Global.EMERGENCY_GESTURE_TAP_DETECTION_MIN_TIME_MS, NON_NEGATIVE_INTEGER_VALIDATOR); + VALIDATORS.put(Global.EMERGENCY_GESTURE_STICKY_UI_MAX_DURATION_MILLIS, + NON_NEGATIVE_INTEGER_VALIDATOR); VALIDATORS.put(Global.CALL_AUTO_RETRY, BOOLEAN_VALIDATOR); VALIDATORS.put(Global.DOCK_AUDIO_MEDIA_ENABLED, BOOLEAN_VALIDATOR); VALIDATORS.put( diff --git a/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java b/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java index abd2c7511567a..f6c2f69187390 100644 --- a/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java +++ b/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java @@ -314,6 +314,9 @@ public class SecureSettingsValidators { VALIDATORS.put(Secure.SWIPE_BOTTOM_TO_NOTIFICATION_ENABLED, BOOLEAN_VALIDATOR); VALIDATORS.put(Secure.EMERGENCY_GESTURE_ENABLED, BOOLEAN_VALIDATOR); VALIDATORS.put(Secure.EMERGENCY_GESTURE_SOUND_ENABLED, BOOLEAN_VALIDATOR); + VALIDATORS.put(Secure.EMERGENCY_GESTURE_UI_SHOWING, BOOLEAN_VALIDATOR); + VALIDATORS.put( + Secure.EMERGENCY_GESTURE_UI_LAST_STARTED_MILLIS, NONE_NEGATIVE_LONG_VALIDATOR); VALIDATORS.put(Secure.ADAPTIVE_CONNECTIVITY_ENABLED, BOOLEAN_VALIDATOR); VALIDATORS.put( Secure.ASSIST_HANDLES_LEARNING_TIME_ELAPSED_MILLIS, NONE_NEGATIVE_LONG_VALIDATOR); diff --git a/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java b/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java index 1f14723f466f2..47abb35d01ab5 100644 --- a/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java +++ b/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java @@ -257,6 +257,7 @@ public class SettingsBackupTest { Settings.Global.EMERGENCY_AFFORDANCE_NEEDED, Settings.Global.EMERGENCY_GESTURE_POWER_BUTTON_COOLDOWN_PERIOD_MS, Settings.Global.EMERGENCY_GESTURE_TAP_DETECTION_MIN_TIME_MS, + Settings.Global.EMERGENCY_GESTURE_STICKY_UI_MAX_DURATION_MILLIS, Settings.Global.EMULATE_DISPLAY_CUTOUT, Settings.Global.ENABLE_ACCESSIBILITY_GLOBAL_GESTURE_ENABLED, Settings.Global.ENABLE_CACHE_QUOTA_CALCULATION, @@ -718,6 +719,8 @@ public class SettingsBackupTest { Settings.Secure.DOCKED_CLOCK_FACE, Settings.Secure.DOZE_PULSE_ON_LONG_PRESS, Settings.Secure.EMERGENCY_ASSISTANCE_APPLICATION, + Settings.Secure.EMERGENCY_GESTURE_UI_SHOWING, + Settings.Secure.EMERGENCY_GESTURE_UI_LAST_STARTED_MILLIS, Settings.Secure.ENABLED_INPUT_METHODS, // Intentionally removed in P Settings.Secure.ENABLED_NOTIFICATION_ASSISTANT, Settings.Secure.ENABLED_NOTIFICATION_LISTENERS,