Loading res/values/strings.xml +3 −0 Original line number Diff line number Diff line Loading @@ -5693,6 +5693,9 @@ <!-- Title for the toggle button that turns on/off the autoclick setting of ignoring minor cursor movement. [CHAR_LIMIT=NONE] --> <!-- TODO(b/388845718): Update string to translatable once approved by UXW. --> <string name="autoclick_ignore_minor_cursor_movement_title" translatable="false">Ignore minor cursor movement</string> <!-- TODO(b/394683600): Update string to translatable once approved by UXW. --> <!-- Title for the switch setting to toggle on/off the revert to left click after action. [CHAR LIMIT=NONE] --> <string name="autoclick_revert_to_left_click_title" translatable="false">Revert to left click after action</string> <!-- Title for preference screen for configuring vibrations. [CHAR LIMIT=NONE] --> <string name="accessibility_vibration_settings_title">Vibration & haptics</string> <!-- Summary for preference screen for configuring vibrations. [CHAR LIMIT=NONE] --> res/xml/accessibility_autoclick_settings.xml +5 −0 Original line number Diff line number Diff line Loading @@ -93,6 +93,11 @@ android:title="@string/autoclick_ignore_minor_cursor_movement_title" settings:controller="com.android.settings.accessibility.ToggleAutoclickIgnoreMinorCursorMovementController"/> <SwitchPreferenceCompat android:key="accessibility_control_autoclick_revert_to_left_click" android:title="@string/autoclick_revert_to_left_click_title" settings:controller="com.android.settings.accessibility.ToggleAutoclickRevertToLeftClickController"/> <com.android.settings.accessibility.AccessibilityFooterPreference android:key="accessibility_autoclick_footer" android:title="@string/accessibility_autoclick_description" Loading src/com/android/settings/accessibility/ToggleAutoclickRevertToLeftClickController.java 0 → 100644 +75 −0 Original line number Diff line number Diff line /* * Copyright 2025 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 android.view.accessibility.AccessibilityManager.AUTOCLICK_REVERT_TO_LEFT_CLICK_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; import com.android.server.accessibility.Flags; import com.android.settings.R; import com.android.settings.core.TogglePreferenceController; public class ToggleAutoclickRevertToLeftClickController extends TogglePreferenceController { private static final String TAG = ToggleAutoclickRevertToLeftClickController.class.getSimpleName(); private final ContentResolver mContentResolver; public ToggleAutoclickRevertToLeftClickController( @NonNull Context context, @NonNull String key) { super(context, key); mContentResolver = context.getContentResolver(); } @Override public int getAvailabilityStatus() { return Flags.enableAutoclickIndicator() ? AVAILABLE : CONDITIONALLY_UNAVAILABLE; } @Override public boolean isChecked() { return Settings.Secure.getInt( mContentResolver, Settings.Secure.ACCESSIBILITY_AUTOCLICK_REVERT_TO_LEFT_CLICK, AUTOCLICK_REVERT_TO_LEFT_CLICK_DEFAULT ? ON : OFF) == ON; } @Override public boolean setChecked(boolean isChecked) { Settings.Secure.putInt( mContentResolver, Settings.Secure.ACCESSIBILITY_AUTOCLICK_REVERT_TO_LEFT_CLICK, isChecked ? ON : OFF); return true; } @Override public int getSliceHighlightMenuRes() { return R.string.menu_key_accessibility; } } tests/robotests/src/com/android/settings/accessibility/ToggleAutoclickRevertToLeftClickControllerTest.java 0 → 100644 +95 −0 Original line number Diff line number Diff line /* * Copyright 2025 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 android.view.accessibility.AccessibilityManager.AUTOCLICK_REVERT_TO_LEFT_CLICK_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; import com.android.settings.core.BasePreferenceController; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; /** Tests for {@link ToggleAutoclickRevertToLeftClickController}. */ @RunWith(RobolectricTestRunner.class) public class ToggleAutoclickRevertToLeftClickControllerTest { private static final String PREFERENCE_KEY = "accessibility_control_autoclick_revert_to_left_click"; @Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule(); private final Context mContext = ApplicationProvider.getApplicationContext(); private ToggleAutoclickRevertToLeftClickController mController; @Before public void setUp() { mController = new ToggleAutoclickRevertToLeftClickController(mContext, PREFERENCE_KEY); } @Test @EnableFlags(com.android.server.accessibility.Flags.FLAG_ENABLE_AUTOCLICK_INDICATOR) public void getAvailabilityStatus_availableWhenFlagOn() { assertThat(mController.getAvailabilityStatus()) .isEqualTo(BasePreferenceController.AVAILABLE); } @Test @DisableFlags(com.android.server.accessibility.Flags.FLAG_ENABLE_AUTOCLICK_INDICATOR) public void getAvailabilityStatus_conditionallyUnavailableWhenFlagOn() { 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_REVERT_TO_LEFT_CLICK, AUTOCLICK_REVERT_TO_LEFT_CLICK_DEFAULT ? ON : OFF); } } Loading
res/values/strings.xml +3 −0 Original line number Diff line number Diff line Loading @@ -5693,6 +5693,9 @@ <!-- Title for the toggle button that turns on/off the autoclick setting of ignoring minor cursor movement. [CHAR_LIMIT=NONE] --> <!-- TODO(b/388845718): Update string to translatable once approved by UXW. --> <string name="autoclick_ignore_minor_cursor_movement_title" translatable="false">Ignore minor cursor movement</string> <!-- TODO(b/394683600): Update string to translatable once approved by UXW. --> <!-- Title for the switch setting to toggle on/off the revert to left click after action. [CHAR LIMIT=NONE] --> <string name="autoclick_revert_to_left_click_title" translatable="false">Revert to left click after action</string> <!-- Title for preference screen for configuring vibrations. [CHAR LIMIT=NONE] --> <string name="accessibility_vibration_settings_title">Vibration & haptics</string> <!-- Summary for preference screen for configuring vibrations. [CHAR LIMIT=NONE] -->
res/xml/accessibility_autoclick_settings.xml +5 −0 Original line number Diff line number Diff line Loading @@ -93,6 +93,11 @@ android:title="@string/autoclick_ignore_minor_cursor_movement_title" settings:controller="com.android.settings.accessibility.ToggleAutoclickIgnoreMinorCursorMovementController"/> <SwitchPreferenceCompat android:key="accessibility_control_autoclick_revert_to_left_click" android:title="@string/autoclick_revert_to_left_click_title" settings:controller="com.android.settings.accessibility.ToggleAutoclickRevertToLeftClickController"/> <com.android.settings.accessibility.AccessibilityFooterPreference android:key="accessibility_autoclick_footer" android:title="@string/accessibility_autoclick_description" Loading
src/com/android/settings/accessibility/ToggleAutoclickRevertToLeftClickController.java 0 → 100644 +75 −0 Original line number Diff line number Diff line /* * Copyright 2025 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 android.view.accessibility.AccessibilityManager.AUTOCLICK_REVERT_TO_LEFT_CLICK_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; import com.android.server.accessibility.Flags; import com.android.settings.R; import com.android.settings.core.TogglePreferenceController; public class ToggleAutoclickRevertToLeftClickController extends TogglePreferenceController { private static final String TAG = ToggleAutoclickRevertToLeftClickController.class.getSimpleName(); private final ContentResolver mContentResolver; public ToggleAutoclickRevertToLeftClickController( @NonNull Context context, @NonNull String key) { super(context, key); mContentResolver = context.getContentResolver(); } @Override public int getAvailabilityStatus() { return Flags.enableAutoclickIndicator() ? AVAILABLE : CONDITIONALLY_UNAVAILABLE; } @Override public boolean isChecked() { return Settings.Secure.getInt( mContentResolver, Settings.Secure.ACCESSIBILITY_AUTOCLICK_REVERT_TO_LEFT_CLICK, AUTOCLICK_REVERT_TO_LEFT_CLICK_DEFAULT ? ON : OFF) == ON; } @Override public boolean setChecked(boolean isChecked) { Settings.Secure.putInt( mContentResolver, Settings.Secure.ACCESSIBILITY_AUTOCLICK_REVERT_TO_LEFT_CLICK, isChecked ? ON : OFF); return true; } @Override public int getSliceHighlightMenuRes() { return R.string.menu_key_accessibility; } }
tests/robotests/src/com/android/settings/accessibility/ToggleAutoclickRevertToLeftClickControllerTest.java 0 → 100644 +95 −0 Original line number Diff line number Diff line /* * Copyright 2025 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 android.view.accessibility.AccessibilityManager.AUTOCLICK_REVERT_TO_LEFT_CLICK_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; import com.android.settings.core.BasePreferenceController; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; /** Tests for {@link ToggleAutoclickRevertToLeftClickController}. */ @RunWith(RobolectricTestRunner.class) public class ToggleAutoclickRevertToLeftClickControllerTest { private static final String PREFERENCE_KEY = "accessibility_control_autoclick_revert_to_left_click"; @Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule(); private final Context mContext = ApplicationProvider.getApplicationContext(); private ToggleAutoclickRevertToLeftClickController mController; @Before public void setUp() { mController = new ToggleAutoclickRevertToLeftClickController(mContext, PREFERENCE_KEY); } @Test @EnableFlags(com.android.server.accessibility.Flags.FLAG_ENABLE_AUTOCLICK_INDICATOR) public void getAvailabilityStatus_availableWhenFlagOn() { assertThat(mController.getAvailabilityStatus()) .isEqualTo(BasePreferenceController.AVAILABLE); } @Test @DisableFlags(com.android.server.accessibility.Flags.FLAG_ENABLE_AUTOCLICK_INDICATOR) public void getAvailabilityStatus_conditionallyUnavailableWhenFlagOn() { 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_REVERT_TO_LEFT_CLICK, AUTOCLICK_REVERT_TO_LEFT_CLICK_DEFAULT ? ON : OFF); } }