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
diff --git a/src/com/android/settings/accessibility/ToggleAutoclickIgnoreMinorCursorMovementController.java b/src/com/android/settings/accessibility/ToggleAutoclickIgnoreMinorCursorMovementController.java
index 302e42a..d5d4fdd 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 @@
     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 @@
 
     @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 889b732..552e897 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 @@
         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);
+    }
 }