summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/accessibility/java/com/android/server/accessibility/autoclick/AutoclickTypePanel.java32
-rw-r--r--services/tests/servicestests/src/com/android/server/accessibility/autoclick/AutoclickTypePanelTest.java66
2 files changed, 92 insertions, 6 deletions
diff --git a/services/accessibility/java/com/android/server/accessibility/autoclick/AutoclickTypePanel.java b/services/accessibility/java/com/android/server/accessibility/autoclick/AutoclickTypePanel.java
index 90ddc43ae3ed..57fa77d73729 100644
--- a/services/accessibility/java/com/android/server/accessibility/autoclick/AutoclickTypePanel.java
+++ b/services/accessibility/java/com/android/server/accessibility/autoclick/AutoclickTypePanel.java
@@ -266,13 +266,21 @@ public class AutoclickTypePanel {
}
private void initializeButtonState() {
- mLeftClickButton.setOnClickListener(v -> togglePanelExpansion(AUTOCLICK_TYPE_LEFT_CLICK));
- mRightClickButton.setOnClickListener(v -> togglePanelExpansion(AUTOCLICK_TYPE_RIGHT_CLICK));
+ // Use `createButtonListener()` to append extra pause logic to each button's click.
+ mLeftClickButton.setOnClickListener(
+ wrapWithTogglePauseListener(v -> togglePanelExpansion(AUTOCLICK_TYPE_LEFT_CLICK)));
+ mRightClickButton.setOnClickListener(
+ wrapWithTogglePauseListener(v -> togglePanelExpansion(AUTOCLICK_TYPE_RIGHT_CLICK)));
mDoubleClickButton.setOnClickListener(
- v -> togglePanelExpansion(AUTOCLICK_TYPE_DOUBLE_CLICK));
- mScrollButton.setOnClickListener(v -> togglePanelExpansion(AUTOCLICK_TYPE_SCROLL));
- mDragButton.setOnClickListener(v -> togglePanelExpansion(AUTOCLICK_TYPE_DRAG));
- mPositionButton.setOnClickListener(v -> moveToNextCorner());
+ wrapWithTogglePauseListener(
+ v -> togglePanelExpansion(AUTOCLICK_TYPE_DOUBLE_CLICK)));
+ mScrollButton.setOnClickListener(
+ wrapWithTogglePauseListener(v -> togglePanelExpansion(AUTOCLICK_TYPE_SCROLL)));
+ mDragButton.setOnClickListener(
+ wrapWithTogglePauseListener(v -> togglePanelExpansion(AUTOCLICK_TYPE_DRAG)));
+ mPositionButton.setOnClickListener(wrapWithTogglePauseListener(v -> moveToNextCorner()));
+
+ // The pause button calls `togglePause()` directly so it does not need extra logic.
mPauseButton.setOnClickListener(v -> togglePause());
// Initializes panel as collapsed state and only displays the left click button.
@@ -517,6 +525,18 @@ public class AutoclickTypePanel {
return true;
}
+ /* Appends a check of the pause state to the button's listener. */
+ private View.OnClickListener wrapWithTogglePauseListener(View.OnClickListener listener) {
+ return v -> {
+ listener.onClick(v);
+
+ // Resumes autoclick if the button is clicked while in a paused state.
+ if (mPaused) {
+ togglePause();
+ }
+ };
+ }
+
@VisibleForTesting
boolean getExpansionStateForTesting() {
return mExpanded;
diff --git a/services/tests/servicestests/src/com/android/server/accessibility/autoclick/AutoclickTypePanelTest.java b/services/tests/servicestests/src/com/android/server/accessibility/autoclick/AutoclickTypePanelTest.java
index dd089fcb1d70..8bbbca0b7ed4 100644
--- a/services/tests/servicestests/src/com/android/server/accessibility/autoclick/AutoclickTypePanelTest.java
+++ b/services/tests/servicestests/src/com/android/server/accessibility/autoclick/AutoclickTypePanelTest.java
@@ -198,6 +198,72 @@ public class AutoclickTypePanelTest {
}
@Test
+ public void clickLeftClickButton_resumeAutoClick() {
+ // Pause autoclick.
+ mPauseButton.callOnClick();
+ assertThat(mAutoclickTypePanel.isPaused()).isTrue();
+
+ // Click the button and verify autoclick resumes.
+ mLeftClickButton.callOnClick();
+ assertThat(mAutoclickTypePanel.isPaused()).isFalse();
+ }
+
+ @Test
+ public void clickRightClickButton_resumeAutoClick() {
+ // Pause autoclick.
+ mPauseButton.callOnClick();
+ assertThat(mAutoclickTypePanel.isPaused()).isTrue();
+
+ // Click the button and verify autoclick resumes.
+ mRightClickButton.callOnClick();
+ assertThat(mAutoclickTypePanel.isPaused()).isFalse();
+ }
+
+ @Test
+ public void clickDoubleClickButton_resumeAutoClick() {
+ // Pause autoclick.
+ mPauseButton.callOnClick();
+ assertThat(mAutoclickTypePanel.isPaused()).isTrue();
+
+ // Click the button and verify autoclick resumes.
+ mDoubleClickButton.callOnClick();
+ assertThat(mAutoclickTypePanel.isPaused()).isFalse();
+ }
+
+ @Test
+ public void clickDragButton_resumeAutoClick() {
+ // Pause autoclick.
+ mPauseButton.callOnClick();
+ assertThat(mAutoclickTypePanel.isPaused()).isTrue();
+
+ // Click the button and verify autoclick resumes.
+ mDragButton.callOnClick();
+ assertThat(mAutoclickTypePanel.isPaused()).isFalse();
+ }
+
+ @Test
+ public void clickScrollButton_resumeAutoClick() {
+ // Pause autoclick.
+ mPauseButton.callOnClick();
+ assertThat(mAutoclickTypePanel.isPaused()).isTrue();
+
+ // Click the button and verify autoclick resumes.
+ mScrollButton.callOnClick();
+ assertThat(mAutoclickTypePanel.isPaused()).isFalse();
+ }
+
+ @Test
+ public void clickPositionButton_resumeAutoClick() {
+ // Pause autoclick.
+ mPauseButton.callOnClick();
+ assertThat(mAutoclickTypePanel.isPaused()).isTrue();
+
+ // Click the button and verify autoclick resumes.
+ mPositionButton.callOnClick();
+ assertThat(mAutoclickTypePanel.isPaused()).isFalse();
+ }
+
+ @Test
public void moveToNextCorner_positionButton_rotatesThroughAllPositions() {
// Define all positions in sequence
int[][] expectedPositions = {