OSDN Git Service

Separate auto click preference controller from accessibility
authorMill Chen <millchen@google.com>
Tue, 25 Jun 2019 13:01:39 +0000 (21:01 +0800)
committerMill Chen <millchen@google.com>
Thu, 27 Jun 2019 14:40:45 +0000 (22:40 +0800)
Bug: 135056871
Test: manual, robotests
Change-Id: I5125fd79d0bc257ebf8108dd84d520d25a0ed669

res/xml/accessibility_settings.xml
src/com/android/settings/accessibility/AccessibilitySettings.java
src/com/android/settings/accessibility/AutoclickPreferenceController.java [new file with mode: 0644]
tests/robotests/src/com/android/settings/accessibility/AutoclickPreferenceControllerTest.java [new file with mode: 0644]

index bd7e1eb..3ad5d6e 100644 (file)
         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"
index b36f5ed..fd05714 100644 (file)
@@ -118,8 +118,6 @@ public class AccessibilitySettings extends DashboardFragment implements
             "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 =
@@ -208,7 +206,6 @@ public class AccessibilitySettings extends DashboardFragment implements
     private ListPreference mSelectLongPressTimeoutPreference;
     private Preference mCaptioningPreferenceScreen;
     private Preference mDisplayMagnificationPreferenceScreen;
-    private Preference mAutoclickPreferenceScreen;
     private Preference mAccessibilityShortcutPreferenceScreen;
     private Preference mDisplayDaltonizerPreferenceScreen;
     private Preference mHearingAidPreference;
@@ -456,9 +453,6 @@ public class AccessibilitySettings extends DashboardFragment implements
         mDisplayMagnificationPreferenceScreen = findPreference(
                 DISPLAY_MAGNIFICATION_PREFERENCE_SCREEN);
 
-        // Autoclick after pointer stops.
-        mAutoclickPreferenceScreen = findPreference(AUTOCLICK_PREFERENCE_SCREEN);
-
         // Display color adjustments.
         mDisplayDaltonizerPreferenceScreen = findPreference(DISPLAY_DALTONIZER_PREFERENCE_SCREEN);
 
@@ -724,8 +718,6 @@ public class AccessibilitySettings extends DashboardFragment implements
         updateFeatureSummary(Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED,
                 mDisplayDaltonizerPreferenceScreen);
 
-        updateAutoclickSummary(mAutoclickPreferenceScreen);
-
         updateAccessibilityShortcut(mAccessibilityShortcutPreferenceScreen);
     }
 
@@ -735,20 +727,6 @@ public class AccessibilitySettings extends DashboardFragment implements
                 : 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 (file)
index 0000000..4d85b52
--- /dev/null
@@ -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 (file)
index 0000000..b8be23e
--- /dev/null
@@ -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));
+    }
+}