Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fb75ed92 authored by Gavin Williams's avatar Gavin Williams Committed by Android (Google) Code Review
Browse files

Merge "a11y: Resume autoclick when any button is clicked" into main

parents 55d8b4bf 8f3a4ffd
Loading
Loading
Loading
Loading
+26 −6
Original line number Diff line number Diff line
@@ -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;
+66 −0
Original line number Diff line number Diff line
@@ -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