From 83972396f2fbf9e6838e32b3723544684df735aa Mon Sep 17 00:00:00 2001 From: Hyunyoung Song Date: Wed, 15 May 2019 22:56:41 -0700 Subject: [PATCH] Add navigation mode to Settings.Secure Bug: 132443163 Test: builds Change-Id: I90c3fd843dc111ca6fcd7f618f01c321fd055f83 --- core/java/android/provider/Settings.java | 14 ++++++++++++++ core/proto/android/providers/settings/secure.proto | 3 ++- .../providers/settings/SettingsProtoDumpUtil.java | 4 ++++ .../statusbar/phone/NavigationModeController.java | 6 ++++++ 4 files changed, 26 insertions(+), 1 deletion(-) diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index 8096eb110a1c3..66b9d168d71de 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -8829,6 +8829,18 @@ public final class Settings { private static final Validator THEME_CUSTOMIZATION_OVERLAY_PACKAGES_VALIDATOR = SettingsValidators.JSON_OBJECT_VALIDATOR; + /** + * Navigation bar mode. + * 0 = 3 button + * 1 = 2 button + * 2 = fully gestural + * @hide + */ + public static final String NAVIGATION_MODE = + "navigation_mode"; + private static final Validator NAVIGATION_MODE_VALIDATOR = + new SettingsValidators.DiscreteValueValidator(new String[] {"0", "1", "2"}); + /** * Controls whether aware is enabled. * @hide @@ -8972,6 +8984,7 @@ public final class Settings { SKIP_GESTURE, SILENCE_GESTURE, THEME_CUSTOMIZATION_OVERLAY_PACKAGES, + NAVIGATION_MODE, AWARE_ENABLED, SKIP_GESTURE_COUNT, SILENCE_ALARMS_GESTURE_COUNT, @@ -9157,6 +9170,7 @@ public final class Settings { VALIDATORS.put(SILENCE_GESTURE, SILENCE_GESTURE_VALIDATOR); VALIDATORS.put(THEME_CUSTOMIZATION_OVERLAY_PACKAGES, THEME_CUSTOMIZATION_OVERLAY_PACKAGES_VALIDATOR); + VALIDATORS.put(NAVIGATION_MODE, NAVIGATION_MODE_VALIDATOR); VALIDATORS.put(AWARE_ENABLED, AWARE_ENABLED_VALIDATOR); VALIDATORS.put(SKIP_GESTURE_COUNT, SKIP_GESTURE_COUNT_VALIDATOR); VALIDATORS.put(SILENCE_ALARMS_GESTURE_COUNT, SILENCE_GESTURE_COUNT_VALIDATOR); diff --git a/core/proto/android/providers/settings/secure.proto b/core/proto/android/providers/settings/secure.proto index 91d5bc8e45f23..fed2efaf8a78f 100644 --- a/core/proto/android/providers/settings/secure.proto +++ b/core/proto/android/providers/settings/secure.proto @@ -304,6 +304,7 @@ message SecureSettingsProto { optional SettingProto multi_press_timeout = 38 [ (android.privacy).dest = DEST_AUTOMATIC ]; + optional SettingProto navigation_mode = 76 [ (android.privacy).dest = DEST_AUTOMATIC ]; message NfcPayment { option (android.msg_privacy).dest = DEST_EXPLICIT; @@ -552,5 +553,5 @@ message SecureSettingsProto { // Please insert fields in alphabetical order and group them into messages // if possible (to avoid reaching the method limit). - // Next tag = 76; + // Next tag = 77; } diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java index c94ee0e56cba9..636808ebcb667 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java @@ -2086,6 +2086,10 @@ class SettingsProtoDumpUtil { Settings.Secure.MULTI_PRESS_TIMEOUT, SecureSettingsProto.MULTI_PRESS_TIMEOUT); + dumpSetting(s, p, + Settings.Secure.NAVIGATION_MODE, + SecureSettingsProto.NAVIGATION_MODE); + final long nfcPaymentToken = p.start(SecureSettingsProto.NFC_PAYMENT); dumpSetting(s, p, Settings.Secure.NFC_PAYMENT_DEFAULT_COMPONENT, diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationModeController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationModeController.java index 6e5685459d6a7..805a6e547793d 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationModeController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationModeController.java @@ -33,6 +33,8 @@ import android.os.PatternMatcher; import android.os.RemoteException; import android.os.ServiceManager; import android.os.UserHandle; +import android.provider.Settings; +import android.provider.Settings.Secure; import android.util.Log; import android.util.SparseBooleanArray; @@ -150,6 +152,10 @@ public class NavigationModeController implements Dumpable { mCurrentUserContext = getCurrentUserContext(); int mode = getCurrentInteractionMode(mCurrentUserContext); mMode = mode; + mUiOffloadThread.submit(() -> { + Settings.Secure.putString(mCurrentUserContext.getContentResolver(), + Secure.NAVIGATION_MODE, String.valueOf(mode)); + }); if (DEBUG) { Log.e(TAG, "updateCurrentInteractionMode: mode=" + mMode + " contextUser=" + mCurrentUserContext.getUserId());