From 259dec18b2ec410cadfce4063f396272104c2219 Mon Sep 17 00:00:00 2001 From: Vania Januar Date: Thu, 3 Nov 2022 10:00:39 +0000 Subject: [PATCH] Toggle for disabling stylus buttons. This change enables users to disable stylus button pressed from the Stylus Connected Device details Settings page. Bug: b/251199452 Test: StylusDevicesControllerTest Change-Id: I807ef8d5a56c2177037dcb527630d8bfb8f86f7c --- .../stylus/StylusDevicesController.java | 7 +++- .../stylus/StylusDevicesControllerTest.java | 37 +++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/connecteddevice/stylus/StylusDevicesController.java b/src/com/android/settings/connecteddevice/stylus/StylusDevicesController.java index 0081d87709b..bf2fdda88ff 100644 --- a/src/com/android/settings/connecteddevice/stylus/StylusDevicesController.java +++ b/src/com/android/settings/connecteddevice/stylus/StylusDevicesController.java @@ -22,6 +22,7 @@ import android.content.Intent; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.provider.Settings; +import android.provider.Settings.Secure; import android.util.Log; import android.view.InputDevice; @@ -125,6 +126,8 @@ public class StylusDevicesController extends AbstractPreferenceController implem pref.setTitle(mContext.getString(R.string.stylus_ignore_button)); pref.setIcon(R.drawable.ic_block); pref.setOnPreferenceClickListener(this); + pref.setChecked(Settings.Secure.getInt(mContext.getContentResolver(), + Settings.Secure.STYLUS_BUTTONS_DISABLED, 0) == 1); return pref; } @@ -147,7 +150,9 @@ public class StylusDevicesController extends AbstractPreferenceController implem ((SwitchPreference) preference).isChecked() ? 1 : 0); break; case KEY_IGNORE_BUTTON: - // TODO(b/251199452): to turn off stylus button presses + Settings.Secure.putInt(mContext.getContentResolver(), + Secure.STYLUS_BUTTONS_DISABLED, + ((SwitchPreference) preference).isChecked() ? 1 : 0); break; } return true; diff --git a/tests/robotests/src/com/android/settings/connecteddevice/stylus/StylusDevicesControllerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/stylus/StylusDevicesControllerTest.java index f704f2d7a0b..b1ca911eecf 100644 --- a/tests/robotests/src/com/android/settings/connecteddevice/stylus/StylusDevicesControllerTest.java +++ b/tests/robotests/src/com/android/settings/connecteddevice/stylus/StylusDevicesControllerTest.java @@ -32,6 +32,7 @@ import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.os.UserHandle; import android.provider.Settings; +import android.provider.Settings.Secure; import android.view.InputDevice; import android.view.inputmethod.InputMethodManager; @@ -227,6 +228,42 @@ public class StylusDevicesControllerTest { Settings.Global.STYLUS_HANDWRITING_ENABLED, -1)).isEqualTo(1); } + @Test + public void buttonsPreference_checkedWhenFlagTrue() { + Settings.Secure.putInt(mContext.getContentResolver(), + Settings.Secure.STYLUS_BUTTONS_DISABLED, 1); + + showScreen(mController); + SwitchPreference buttonsPref = (SwitchPreference) mPreferenceContainer.getPreference(2); + + assertThat(buttonsPref.isChecked()).isEqualTo(true); + } + + @Test + public void buttonsPreference_uncheckedWhenFlagFalse() { + Settings.Secure.putInt(mContext.getContentResolver(), + Settings.Secure.STYLUS_BUTTONS_DISABLED, 0); + + showScreen(mController); + SwitchPreference buttonsPref = (SwitchPreference) mPreferenceContainer.getPreference(2); + + assertThat(buttonsPref.isChecked()).isEqualTo(false); + } + + @Test + public void buttonsPreference_updatesFlagOnClick() { + Settings.Secure.putInt(mContext.getContentResolver(), + Settings.Secure.STYLUS_BUTTONS_DISABLED, 1); + showScreen(mController); + SwitchPreference buttonsPref = (SwitchPreference) mPreferenceContainer.getPreference(2); + + buttonsPref.performClick(); + + assertThat(buttonsPref.isChecked()).isEqualTo(false); + assertThat(Settings.Secure.getInt(mContext.getContentResolver(), + Secure.STYLUS_BUTTONS_DISABLED, -1)).isEqualTo(0); + } + private void showScreen(StylusDevicesController controller) { controller.displayPreference(mScreen); }