Merge "Separate auto click preference controller from accessibility"
diff --git a/res/xml/accessibility_settings.xml b/res/xml/accessibility_settings.xml
index e3954c4..eddce0f 100644
--- a/res/xml/accessibility_settings.xml
+++ b/res/xml/accessibility_settings.xml
@@ -90,10 +90,10 @@
         android:title="@string/interaction_control_category_title">
 
         <Preference
-            android:fragment="com.android.settings.accessibility.ToggleAutoclickPreferenceFragment"
             android:key="autoclick_preference"
             android:title="@string/accessibility_autoclick_preference_title"
-            settings:searchable="false"/>
+            android:fragment="com.android.settings.accessibility.ToggleAutoclickPreferenceFragment"
+            settings:controller="com.android.settings.accessibility.AutoclickPreferenceController"/>
 
         <SwitchPreference
             android:key="toggle_power_button_ends_call_preference"
diff --git a/src/com/android/settings/accessibility/AccessibilitySettings.java b/src/com/android/settings/accessibility/AccessibilitySettings.java
index a4bff41..a302411 100644
--- a/src/com/android/settings/accessibility/AccessibilitySettings.java
+++ b/src/com/android/settings/accessibility/AccessibilitySettings.java
@@ -112,8 +112,6 @@
             "captioning_preference_screen";
     private static final String DISPLAY_MAGNIFICATION_PREFERENCE_SCREEN =
             "magnification_preference_screen";
-    private static final String AUTOCLICK_PREFERENCE_SCREEN =
-            "autoclick_preference";
     private static final String VIBRATION_PREFERENCE_SCREEN =
             "vibration_preference_screen";
     private static final String DISPLAY_DALTONIZER_PREFERENCE_SCREEN =
@@ -200,7 +198,6 @@
     private ListPreference mSelectLongPressTimeoutPreference;
     private Preference mCaptioningPreferenceScreen;
     private Preference mDisplayMagnificationPreferenceScreen;
-    private Preference mAutoclickPreferenceScreen;
     private Preference mAccessibilityShortcutPreferenceScreen;
     private Preference mDisplayDaltonizerPreferenceScreen;
     private Preference mHearingAidPreference;
@@ -405,9 +402,6 @@
         mDisplayMagnificationPreferenceScreen = findPreference(
                 DISPLAY_MAGNIFICATION_PREFERENCE_SCREEN);
 
-        // Autoclick after pointer stops.
-        mAutoclickPreferenceScreen = findPreference(AUTOCLICK_PREFERENCE_SCREEN);
-
         // Display color adjustments.
         mDisplayDaltonizerPreferenceScreen = findPreference(DISPLAY_DALTONIZER_PREFERENCE_SCREEN);
 
@@ -653,8 +647,6 @@
         updateFeatureSummary(Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED,
                 mDisplayDaltonizerPreferenceScreen);
 
-        updateAutoclickSummary(mAutoclickPreferenceScreen);
-
         updateAccessibilityShortcut(mAccessibilityShortcutPreferenceScreen);
     }
 
@@ -664,20 +656,6 @@
                 : R.string.accessibility_feature_state_off);
     }
 
-    private void updateAutoclickSummary(Preference pref) {
-        final boolean enabled = Settings.Secure.getInt(
-                getContentResolver(), Settings.Secure.ACCESSIBILITY_AUTOCLICK_ENABLED, 0) == 1;
-        if (!enabled) {
-            pref.setSummary(R.string.accessibility_feature_state_off);
-            return;
-        }
-        int delay = Settings.Secure.getInt(
-                getContentResolver(), Settings.Secure.ACCESSIBILITY_AUTOCLICK_DELAY,
-                AccessibilityManager.AUTOCLICK_DELAY_DEFAULT);
-        pref.setSummary(ToggleAutoclickPreferenceFragment.getAutoclickPreferenceSummary(
-                getResources(), delay));
-    }
-
     @VisibleForTesting
     void updateVibrationSummary(Preference pref) {
         final Context context = getContext();
diff --git a/src/com/android/settings/accessibility/AutoclickPreferenceController.java b/src/com/android/settings/accessibility/AutoclickPreferenceController.java
new file mode 100644
index 0000000..4d85b52
--- /dev/null
+++ b/src/com/android/settings/accessibility/AutoclickPreferenceController.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.accessibility;
+
+import android.content.Context;
+import android.provider.Settings;
+import android.view.accessibility.AccessibilityManager;
+
+import com.android.settings.R;
+import com.android.settings.core.BasePreferenceController;
+
+public class AutoclickPreferenceController extends BasePreferenceController {
+
+    public AutoclickPreferenceController(Context context, String preferenceKey) {
+        super(context, preferenceKey);
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        return AVAILABLE_UNSEARCHABLE;
+    }
+
+    @Override
+    public CharSequence getSummary() {
+        final boolean enabled = Settings.Secure.getInt(mContext.getContentResolver(),
+                Settings.Secure.ACCESSIBILITY_AUTOCLICK_ENABLED, 0) == 1;
+        if (!enabled) {
+            return mContext.getResources().getText(R.string.accessibility_feature_state_off);
+        }
+        final int delay = Settings.Secure.getInt(mContext.getContentResolver(),
+                Settings.Secure.ACCESSIBILITY_AUTOCLICK_DELAY,
+                AccessibilityManager.AUTOCLICK_DELAY_DEFAULT);
+        return ToggleAutoclickPreferenceFragment.getAutoclickPreferenceSummary(
+                mContext.getResources(), delay);
+    }
+}
\ No newline at end of file
diff --git a/tests/robotests/src/com/android/settings/accessibility/AutoclickPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/AutoclickPreferenceControllerTest.java
new file mode 100644
index 0000000..b8be23e
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/accessibility/AutoclickPreferenceControllerTest.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.accessibility;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.provider.Settings;
+import android.view.accessibility.AccessibilityManager;
+
+import com.android.settings.R;
+import com.android.settings.core.BasePreferenceController;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.RuntimeEnvironment;
+
+@RunWith(RobolectricTestRunner.class)
+public class AutoclickPreferenceControllerTest {
+
+    private Context mContext;
+    private AutoclickPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+        mController = new AutoclickPreferenceController(mContext, "auto_click");
+    }
+
+    @Test
+    public void getAvailabilityStatus_shouldReturnAvailableUnsearchable() {
+        assertThat(mController.getAvailabilityStatus())
+                .isEqualTo(BasePreferenceController.AVAILABLE_UNSEARCHABLE);
+    }
+
+    @Test
+    public void getSummary_disabledAutoclick_shouldReturnOffSummary() {
+        Settings.Secure.putInt(mContext.getContentResolver(),
+                Settings.Secure.ACCESSIBILITY_AUTOCLICK_ENABLED, 0);
+
+        assertThat(mController.getSummary())
+                .isEqualTo(mContext.getText(R.string.accessibility_feature_state_off));
+    }
+
+    @Test
+    public void getSummary_enabledAutoclick_shouldReturnOnSummary() {
+        final int autoclickDelayDefault = AccessibilityManager.AUTOCLICK_DELAY_DEFAULT;
+        Settings.Secure.putInt(mContext.getContentResolver(),
+                Settings.Secure.ACCESSIBILITY_AUTOCLICK_ENABLED, 1);
+        Settings.Secure.putInt(mContext.getContentResolver(),
+                Settings.Secure.ACCESSIBILITY_AUTOCLICK_DELAY, autoclickDelayDefault);
+
+        assertThat(mController.getSummary())
+                .isEqualTo(ToggleAutoclickPreferenceFragment.getAutoclickPreferenceSummary(
+                        mContext.getResources(), autoclickDelayDefault));
+    }
+}