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));
+ }
+}