diff --git a/res/layout/dialog_keyboard_a11y_input_setting_keys.xml b/res/layout/dialog_keyboard_a11y_input_setting_keys.xml
index addc3473276..bba1e2acff6 100644
--- a/res/layout/dialog_keyboard_a11y_input_setting_keys.xml
+++ b/res/layout/dialog_keyboard_a11y_input_setting_keys.xml
@@ -15,122 +15,161 @@
limitations under the License.
-->
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+ android:layout_marginTop="16dp"
+ android:textSize="20sp"
+ android:gravity="center_horizontal"
+ android:textColor="?android:attr/textColorPrimary"
+ android:fontFamily="@*android:string/config_headlineFontFamilyMedium"
+ />
+
+
+
+
+
+
+
+
-
-
+
-
+
+ android:gravity="center_vertical"
+ android:paddingEnd="16dp">
+
+
+
+
-
-
+
-
\ No newline at end of file
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/res/xml/accessibility_autoclick_settings.xml b/res/xml/accessibility_autoclick_settings.xml
index cc091a57da9..7eddb8697da 100644
--- a/res/xml/accessibility_autoclick_settings.xml
+++ b/res/xml/accessibility_autoclick_settings.xml
@@ -22,23 +22,25 @@
+ settings:searchable="false"/>
+ settings:lottie_rawRes="@drawable/accessibility_dwell"/>
+
+
+ settings:controller="com.android.settings.accessibility.ToggleAutoclickPreferenceController"/>
+ settings:controller="com.android.settings.accessibility.ToggleAutoclickPreferenceController"/>
+ settings:controller="com.android.settings.accessibility.ToggleAutoclickPreferenceController"/>
+ settings:controller="com.android.settings.accessibility.ToggleAutoclickPreferenceController"/>
+ settings:controller="com.android.settings.accessibility.ToggleAutoclickPreferenceController"/>
+ settings:controller="com.android.settings.accessibility.ToggleAutoclickCustomSeekbarController"/>
+ settings:controller="com.android.settings.accessibility.ToggleAutoclickCursorAreaSizeController"/>
+ settings:controller="com.android.settings.accessibility.ToggleAutoclickIgnoreMinorCursorMovementController"/>
+ settings:controller="com.android.settings.accessibility.ToggleAutoclickFooterPreferenceController"/>
diff --git a/src/com/android/settings/accessibility/AccessibilityShortcutPreferenceFragment.java b/src/com/android/settings/accessibility/AccessibilityShortcutPreferenceFragment.java
index 886c9499389..88a70d3adfc 100644
--- a/src/com/android/settings/accessibility/AccessibilityShortcutPreferenceFragment.java
+++ b/src/com/android/settings/accessibility/AccessibilityShortcutPreferenceFragment.java
@@ -104,14 +104,17 @@ public abstract class AccessibilityShortcutPreferenceFragment extends Restricted
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
- mShortcutPreference = new ShortcutPreference(getPrefContext(), /* attrs= */ null);
- mShortcutPreference.setPersistent(false);
- mShortcutPreference.setKey(getShortcutPreferenceKey());
+ mShortcutPreference =
+ getPreferenceScreen().findPreference(getShortcutPreferenceKey());
+ if (mShortcutPreference == null) {
+ mShortcutPreference = new ShortcutPreference(getPrefContext(), /* attrs= */ null);
+ mShortcutPreference.setPersistent(false);
+ mShortcutPreference.setKey(getShortcutPreferenceKey());
+ getPreferenceScreen().addPreference(mShortcutPreference);
+ }
+
mShortcutPreference.setOnClickCallback(this);
mShortcutPreference.setTitle(getShortcutTitle());
-
- getPreferenceScreen().addPreference(mShortcutPreference);
-
mTouchExplorationStateChangeListener = isTouchExplorationEnabled -> {
mShortcutPreference.setSummary(getShortcutTypeSummary(getPrefContext()));
};
diff --git a/src/com/android/settings/accessibility/ShortcutPreference.java b/src/com/android/settings/accessibility/ShortcutPreference.java
index c23bc55fcee..612d8874964 100644
--- a/src/com/android/settings/accessibility/ShortcutPreference.java
+++ b/src/com/android/settings/accessibility/ShortcutPreference.java
@@ -24,6 +24,8 @@ import android.view.View;
import android.widget.CompoundButton;
import android.widget.LinearLayout;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import androidx.preference.PreferenceViewHolder;
import com.android.settings.R;
@@ -60,7 +62,7 @@ public class ShortcutPreference extends TwoTargetPreference {
private boolean mChecked = false;
private boolean mSettingsEditable = true;
- ShortcutPreference(Context context, AttributeSet attrs) {
+ public ShortcutPreference(@NonNull Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
setIconSpaceReserved(false);
// Treat onSettingsClicked as this preference's click.
diff --git a/src/com/android/settings/accessibility/ToggleAutoclickPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleAutoclickPreferenceFragment.java
index 9d655a0b851..fadc635532b 100644
--- a/src/com/android/settings/accessibility/ToggleAutoclickPreferenceFragment.java
+++ b/src/com/android/settings/accessibility/ToggleAutoclickPreferenceFragment.java
@@ -20,16 +20,19 @@ import static com.android.internal.accessibility.AccessibilityShortcutController
import android.app.settings.SettingsEnums;
import android.content.ComponentName;
+import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import com.android.internal.annotations.VisibleForTesting;
import com.android.server.accessibility.Flags;
import com.android.settings.R;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settingslib.search.SearchIndexable;
-import com.android.settingslib.widget.SelectorWithWidgetPreference;
+
+import java.util.List;
/**
* Fragment for preference screen for settings related to Automatically click after mouse stops
@@ -41,7 +44,7 @@ public class ToggleAutoclickPreferenceFragment
private static final String TAG = "AutoclickPrefFragment";
- static final String KEY_CONTROL_DEFAULT = "accessibility_control_autoclick_default";
+ @VisibleForTesting
static final String KEY_AUTOCLICK_SHORTCUT_PREFERENCE = "autoclick_shortcut_preference";
/**
@@ -100,15 +103,22 @@ public class ToggleAutoclickPreferenceFragment
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = super.onCreateView(inflater, container, savedInstanceState);
- if (Flags.enableAutoclickIndicator()) {
- SelectorWithWidgetPreference optionDefault = findPreference(KEY_CONTROL_DEFAULT);
- mShortcutPreference.setOrder(optionDefault.getOrder() - 1);
- } else {
+ if (!Flags.enableAutoclickIndicator()) {
getPreferenceScreen().removePreference(mShortcutPreference);
}
return view;
}
public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
- new BaseSearchIndexProvider(R.xml.accessibility_autoclick_settings);
+ new BaseSearchIndexProvider(R.xml.accessibility_autoclick_settings) {
+ @Override
+ public List getNonIndexableKeys(Context context) {
+ List niks = super.getNonIndexableKeys(context);
+
+ if (!Flags.enableAutoclickIndicator()) {
+ niks.add(KEY_AUTOCLICK_SHORTCUT_PREFERENCE);
+ }
+ return niks;
+ }
+ };
}
diff --git a/src/com/android/settings/inputmethod/KeyboardAccessibilityKeysDialogFragment.java b/src/com/android/settings/inputmethod/KeyboardAccessibilityKeysDialogFragment.java
index 252ce54768a..97d5b24b5ef 100644
--- a/src/com/android/settings/inputmethod/KeyboardAccessibilityKeysDialogFragment.java
+++ b/src/com/android/settings/inputmethod/KeyboardAccessibilityKeysDialogFragment.java
@@ -25,6 +25,7 @@ import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.Window;
+import android.widget.Button;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.SeekBar;
@@ -78,36 +79,41 @@ public abstract class KeyboardAccessibilityKeysDialogFragment extends DialogFrag
R.layout.dialog_keyboard_a11y_input_setting_keys, null);
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(activity);
dialogBuilder.setView(dialoglayout);
- dialogBuilder.setPositiveButton(android.R.string.ok,
- (dialog, which) -> {
- RadioGroup radioGroup =
- dialoglayout.findViewById(
- R.id.input_setting_keys_value_group);
- SeekBar seekbar = dialoglayout.findViewById(
- R.id.input_setting_keys_value_custom_slider);
- RadioButton customRadioButton = dialoglayout.findViewById(
- R.id.input_setting_keys_value_custom);
- int threshold;
- if (customRadioButton.isChecked()) {
- threshold = seekbar.getProgress() * CUSTOM_PROGRESS_INTERVAL;
- } else {
- int checkedRadioButtonId = radioGroup.getCheckedRadioButtonId();
- if (checkedRadioButtonId == R.id.input_setting_keys_value_600) {
- threshold = 600;
- } else if (checkedRadioButtonId
- == R.id.input_setting_keys_value_400) {
- threshold = 400;
- } else if (checkedRadioButtonId
- == R.id.input_setting_keys_value_200) {
- threshold = 200;
- } else {
- threshold = 0;
- }
- }
- updateInputSettingKeysValue(threshold);
- onCustomValueUpdated(threshold);
- })
- .setNegativeButton(android.R.string.cancel, (dialog, which) -> dialog.dismiss());
+ Button doneButton = dialoglayout.findViewById(R.id.done_button);
+ doneButton.setOnClickListener(v -> {
+ RadioGroup radioGroup =
+ dialoglayout.findViewById(
+ R.id.input_setting_keys_value_group);
+ SeekBar seekbar = dialoglayout.findViewById(
+ R.id.input_setting_keys_value_custom_slider);
+ RadioButton customRadioButton = dialoglayout.findViewById(
+ R.id.input_setting_keys_value_custom);
+ int threshold;
+ if (customRadioButton.isChecked()) {
+ threshold = seekbar.getProgress() * CUSTOM_PROGRESS_INTERVAL;
+ } else {
+ int checkedRadioButtonId = radioGroup.getCheckedRadioButtonId();
+ if (checkedRadioButtonId == R.id.input_setting_keys_value_600) {
+ threshold = 600;
+ } else if (checkedRadioButtonId
+ == R.id.input_setting_keys_value_400) {
+ threshold = 400;
+ } else if (checkedRadioButtonId
+ == R.id.input_setting_keys_value_200) {
+ threshold = 200;
+ } else {
+ threshold = 0;
+ }
+ }
+ updateInputSettingKeysValue(threshold);
+ onCustomValueUpdated(threshold);
+ dismiss();
+ });
+
+ Button cancelButton = dialoglayout.findViewById(R.id.cancel_button);
+ cancelButton.setOnClickListener(v -> {
+ dismiss();
+ });
AlertDialog accessibilityKeyDialog = dialogBuilder.create();
accessibilityKeyDialog.setOnShowListener(dialog -> {
RadioGroup cannedValueRadioGroup = accessibilityKeyDialog.findViewById(
@@ -162,8 +168,21 @@ public abstract class KeyboardAccessibilityKeysDialogFragment extends DialogFrag
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
- initStateBasedOnThreshold(cannedValueRadioGroup, customRadioButton, customValueTextView,
- customProgressBar);
+ if (cannedValueRadioGroup.getCheckedRadioButtonId() == -1
+ && !customRadioButton.isChecked()) {
+ //if canned radio group and custom are not select, initial check state from input
+ // setting
+ initStateBasedOnThreshold(cannedValueRadioGroup, customRadioButton,
+ customValueTextView,
+ customProgressBar);
+ } else if (customRadioButton.isChecked()) {
+ cannedValueRadioGroup.clearCheck();
+ customRadioButton.setChecked(true);
+ customValueTextView.setVisibility(View.VISIBLE);
+ customValueTextView.setText(
+ progressToThresholdInSecond(customProgressBar.getProgress()));
+ customProgressBar.setVisibility(View.VISIBLE);
+ }
});
final Window window = accessibilityKeyDialog.getWindow();
diff --git a/tests/robotests/src/com/android/settings/accessibility/ToggleAutoclickPreferenceFragmentTest.java b/tests/robotests/src/com/android/settings/accessibility/ToggleAutoclickPreferenceFragmentTest.java
index 4e8ce961e55..4fccdf4af18 100644
--- a/tests/robotests/src/com/android/settings/accessibility/ToggleAutoclickPreferenceFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/ToggleAutoclickPreferenceFragmentTest.java
@@ -16,10 +16,15 @@
package com.android.settings.accessibility;
+import static com.android.settings.accessibility.ToggleAutoclickPreferenceFragment.KEY_AUTOCLICK_SHORTCUT_PREFERENCE;
+
import static com.google.common.truth.Truth.assertThat;
import android.app.settings.SettingsEnums;
import android.content.Context;
+import android.platform.test.annotations.DisableFlags;
+import android.platform.test.annotations.EnableFlags;
+import android.platform.test.flag.junit.SetFlagsRule;
import androidx.test.core.app.ApplicationProvider;
@@ -27,6 +32,7 @@ import com.android.settings.R;
import com.android.settings.testutils.XmlTestUtils;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
@@ -37,6 +43,8 @@ import java.util.List;
@RunWith(RobolectricTestRunner.class)
public class ToggleAutoclickPreferenceFragmentTest {
+ @Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
+
private final Context mContext = ApplicationProvider.getApplicationContext();
private ToggleAutoclickPreferenceFragment mFragment;
@@ -77,4 +85,22 @@ public class ToggleAutoclickPreferenceFragmentTest {
assertThat(keys).containsAtLeastElementsIn(niks);
}
+
+ @Test
+ @DisableFlags(com.android.server.accessibility.Flags.FLAG_ENABLE_AUTOCLICK_INDICATOR)
+ public void getNonIndexableKeys_flagDisabled_doesNotContainShortcut() {
+ final List niks = ToggleAutoclickPreferenceFragment.SEARCH_INDEX_DATA_PROVIDER
+ .getNonIndexableKeys(mContext);
+
+ assertThat(niks).contains(KEY_AUTOCLICK_SHORTCUT_PREFERENCE);
+ }
+
+ @Test
+ @EnableFlags(com.android.server.accessibility.Flags.FLAG_ENABLE_AUTOCLICK_INDICATOR)
+ public void getNonIndexableKeys_returnsOnlyShortcutKey() {
+ final List niks = ToggleAutoclickPreferenceFragment.SEARCH_INDEX_DATA_PROVIDER
+ .getNonIndexableKeys(mContext);
+
+ assertThat(niks).doesNotContain(KEY_AUTOCLICK_SHORTCUT_PREFERENCE);
+ }
}
diff --git a/tests/robotests/src/com/android/settings/inputmethod/KeyboardAccessibilityBounceKeysDialogFragmentTest.java b/tests/robotests/src/com/android/settings/inputmethod/KeyboardAccessibilityBounceKeysDialogFragmentTest.java
index 8e5f84e2191..04e4777308c 100644
--- a/tests/robotests/src/com/android/settings/inputmethod/KeyboardAccessibilityBounceKeysDialogFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/inputmethod/KeyboardAccessibilityBounceKeysDialogFragmentTest.java
@@ -24,6 +24,7 @@ import static com.google.common.truth.Truth.assertThat;
import android.app.AlertDialog;
import android.hardware.input.InputSettings;
import android.os.Bundle;
+import android.widget.Button;
import android.widget.RadioGroup;
import androidx.fragment.app.testing.FragmentScenario;
@@ -70,7 +71,8 @@ public class KeyboardAccessibilityBounceKeysDialogFragmentTest {
RadioGroup radioGroup = mAlertDialog.findViewById(R.id.input_setting_keys_value_group);
radioGroup.check(R.id.input_setting_keys_value_200);
- mAlertDialog.getButton(AlertDialog.BUTTON_POSITIVE).performClick();
+ Button doneButton = mAlertDialog.findViewById(R.id.done_button);
+ doneButton.performClick();
ShadowLooper.idleMainLooper();
assertThat(mAlertDialog.isShowing()).isFalse();
diff --git a/tests/robotests/src/com/android/settings/inputmethod/KeyboardAccessibilitySlowKeysDialogFragmentTest.java b/tests/robotests/src/com/android/settings/inputmethod/KeyboardAccessibilitySlowKeysDialogFragmentTest.java
index 3a3010e7293..145207a08d0 100644
--- a/tests/robotests/src/com/android/settings/inputmethod/KeyboardAccessibilitySlowKeysDialogFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/inputmethod/KeyboardAccessibilitySlowKeysDialogFragmentTest.java
@@ -24,6 +24,7 @@ import static com.google.common.truth.Truth.assertThat;
import android.app.AlertDialog;
import android.hardware.input.InputSettings;
import android.os.Bundle;
+import android.widget.Button;
import android.widget.RadioGroup;
import androidx.fragment.app.testing.FragmentScenario;
@@ -70,7 +71,8 @@ public class KeyboardAccessibilitySlowKeysDialogFragmentTest {
RadioGroup radioGroup = mAlertDialog.findViewById(R.id.input_setting_keys_value_group);
radioGroup.check(R.id.input_setting_keys_value_200);
- mAlertDialog.getButton(AlertDialog.BUTTON_POSITIVE).performClick();
+ Button doneButton = mAlertDialog.findViewById(R.id.done_button);
+ doneButton.performClick();
ShadowLooper.idleMainLooper();
assertThat(mAlertDialog.isShowing()).isFalse();