Loading services/accessibility/java/com/android/server/accessibility/autoclick/AutoclickTypePanel.java +26 −6 Original line number Diff line number Diff line Loading @@ -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. Loading Loading @@ -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; Loading services/tests/servicestests/src/com/android/server/accessibility/autoclick/AutoclickTypePanelTest.java +66 −0 Original line number Diff line number Diff line Loading @@ -197,6 +197,72 @@ public class AutoclickTypePanelTest { assertThat(mActiveClickType).isEqualTo(AUTOCLICK_TYPE_SCROLL); } @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 Loading Loading
services/accessibility/java/com/android/server/accessibility/autoclick/AutoclickTypePanel.java +26 −6 Original line number Diff line number Diff line Loading @@ -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. Loading Loading @@ -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; Loading
services/tests/servicestests/src/com/android/server/accessibility/autoclick/AutoclickTypePanelTest.java +66 −0 Original line number Diff line number Diff line Loading @@ -197,6 +197,72 @@ public class AutoclickTypePanelTest { assertThat(mActiveClickType).isEqualTo(AUTOCLICK_TYPE_SCROLL); } @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 Loading