From 4de40b3959aea0e6537707a1b711fc4b805e6c62 Mon Sep 17 00:00:00 2001 From: Wenyu Zhang Date: Thu, 16 Jan 2025 13:11:46 +0000 Subject: [PATCH] a11y: Hook ignore minor cursor movement setting to its controller Change-Id: I2c0ac1c36cc600f551d2a89ab3ec6d1405ac58d9 Test: ToggleAutoclickIgnoreMinorCursorMovementControllerTest Bug: b/388845718 Flag: com.android.server.accessibility.enable_autoclick_indicator --- ...ckIgnoreMinorCursorMovementController.java | 23 +++++++++++++-- ...noreMinorCursorMovementControllerTest.java | 28 +++++++++++++++++++ 2 files changed, 48 insertions(+), 3 deletions(-) diff --git a/src/com/android/settings/accessibility/ToggleAutoclickIgnoreMinorCursorMovementController.java b/src/com/android/settings/accessibility/ToggleAutoclickIgnoreMinorCursorMovementController.java index 302e42a2b2f..d5d4fddeaff 100644 --- a/src/com/android/settings/accessibility/ToggleAutoclickIgnoreMinorCursorMovementController.java +++ b/src/com/android/settings/accessibility/ToggleAutoclickIgnoreMinorCursorMovementController.java @@ -16,7 +16,14 @@ package com.android.settings.accessibility; +import static android.view.accessibility.AccessibilityManager.AUTOCLICK_IGNORE_MINOR_CURSOR_MOVEMENT_DEFAULT; + +import static com.android.settings.accessibility.AccessibilityUtil.State.OFF; +import static com.android.settings.accessibility.AccessibilityUtil.State.ON; + +import android.content.ContentResolver; import android.content.Context; +import android.provider.Settings; import androidx.annotation.NonNull; @@ -29,9 +36,13 @@ public class ToggleAutoclickIgnoreMinorCursorMovementController extends TogglePr private static final String TAG = ToggleAutoclickIgnoreMinorCursorMovementController.class.getSimpleName(); + private final ContentResolver mContentResolver; + public ToggleAutoclickIgnoreMinorCursorMovementController( @NonNull Context context, @NonNull String key) { super(context, key); + + mContentResolver = context.getContentResolver(); } @Override @@ -41,13 +52,19 @@ public class ToggleAutoclickIgnoreMinorCursorMovementController extends TogglePr @Override public boolean isChecked() { - // TODO(b/388845718): retrieve check status from settings. - return false; + return Settings.Secure.getInt( + mContentResolver, + Settings.Secure.ACCESSIBILITY_AUTOCLICK_IGNORE_MINOR_CURSOR_MOVEMENT, + AUTOCLICK_IGNORE_MINOR_CURSOR_MOVEMENT_DEFAULT ? ON : OFF) + == ON; } @Override public boolean setChecked(boolean isChecked) { - // TODO(b/388845718): Update settings. + Settings.Secure.putInt( + mContentResolver, + Settings.Secure.ACCESSIBILITY_AUTOCLICK_IGNORE_MINOR_CURSOR_MOVEMENT, + isChecked ? ON : OFF); return true; } diff --git a/tests/robotests/src/com/android/settings/accessibility/ToggleAutoclickIgnoreMinorCursorMovementControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/ToggleAutoclickIgnoreMinorCursorMovementControllerTest.java index 889b7322888..552e89742b4 100644 --- a/tests/robotests/src/com/android/settings/accessibility/ToggleAutoclickIgnoreMinorCursorMovementControllerTest.java +++ b/tests/robotests/src/com/android/settings/accessibility/ToggleAutoclickIgnoreMinorCursorMovementControllerTest.java @@ -16,12 +16,17 @@ package com.android.settings.accessibility; +import static android.view.accessibility.AccessibilityManager.AUTOCLICK_IGNORE_MINOR_CURSOR_MOVEMENT_DEFAULT; + +import static com.android.settings.accessibility.AccessibilityUtil.State.OFF; +import static com.android.settings.accessibility.AccessibilityUtil.State.ON; import static com.google.common.truth.Truth.assertThat; import android.content.Context; import android.platform.test.annotations.DisableFlags; import android.platform.test.annotations.EnableFlags; import android.platform.test.flag.junit.SetFlagsRule; +import android.provider.Settings; import androidx.test.core.app.ApplicationProvider; @@ -66,4 +71,27 @@ public class ToggleAutoclickIgnoreMinorCursorMovementControllerTest { assertThat(mController.getAvailabilityStatus()) .isEqualTo(BasePreferenceController.CONDITIONALLY_UNAVAILABLE); } + + @Test + public void isChecked_matchesSetting() { + assertThat(mController.isChecked()).isEqualTo(readSetting() == ON); + } + + @Test + public void setChecked_true_updatesSetting() { + mController.setChecked(true); + assertThat(readSetting()).isEqualTo(ON); + } + + @Test + public void setChecked_false_updatesSetting() { + mController.setChecked(false); + assertThat(readSetting()).isEqualTo(OFF); + } + + private int readSetting() { + return Settings.Secure.getInt(mContext.getContentResolver(), + Settings.Secure.ACCESSIBILITY_AUTOCLICK_IGNORE_MINOR_CURSOR_MOVEMENT, + AUTOCLICK_IGNORE_MINOR_CURSOR_MOVEMENT_DEFAULT ? ON : OFF); + } }