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

Commit 00a2b0ce authored by PETER LIANG's avatar PETER LIANG Committed by Automerger Merge Worker
Browse files

Merge "Fix the GAR issue of Switch Access user can not move the FAB to the...

Merge "Fix the GAR issue of Switch Access user can not move the FAB to the edge to hide it in half." into sc-dev am: 94424ac4

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14100406

Change-Id: I4313566aa7ace0ebba5bf1135466c8c755207ea5
parents 95c23848 94424ac4
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -173,5 +173,7 @@
    <item type="id" name="action_move_top_right"/>
    <item type="id" name="action_move_bottom_left"/>
    <item type="id" name="action_move_bottom_right"/>
    <item type="id" name="action_move_to_edge_and_hide"/>
    <item type="id" name="action_move_out_edge_and_show"/>
</resources>
+4 −0
Original line number Diff line number Diff line
@@ -2705,6 +2705,10 @@
    <string name="accessibility_floating_button_action_move_bottom_left">Move bottom left</string>
    <!-- Action in accessibility menu to move the accessibility floating button to the bottom right of the screen. [CHAR LIMIT=30]-->
    <string name="accessibility_floating_button_action_move_bottom_right">Move bottom right</string>
    <!-- Action in accessibility menu to move the accessibility floating button to the edge and hide it to half. [CHAR LIMIT=30]-->
    <string name="accessibility_floating_button_action_move_to_edge_and_hide_to_half">Move to edge and hide</string>
    <!-- Action in accessibility menu to move the accessibility floating button out the edge and show. [CHAR LIMIT=30]-->
    <string name="accessibility_floating_button_action_move_out_edge_and_show">Move out edge and show</string>

    <!-- Device Controls strings -->
    <!-- Device Controls empty state, title [CHAR LIMIT=30] -->
+24 −0
Original line number Diff line number Diff line
@@ -303,25 +303,39 @@ public class AccessibilityFloatingMenuView extends FrameLayout

        final Rect bounds = getAvailableBounds();
        if (action == R.id.action_move_top_left) {
            setShapeType(ShapeType.OVAL);
            snapToLocation(bounds.left, bounds.top);
            return true;
        }

        if (action == R.id.action_move_top_right) {
            setShapeType(ShapeType.OVAL);
            snapToLocation(bounds.right, bounds.top);
            return true;
        }

        if (action == R.id.action_move_bottom_left) {
            setShapeType(ShapeType.OVAL);
            snapToLocation(bounds.left, bounds.bottom);
            return true;
        }

        if (action == R.id.action_move_bottom_right) {
            setShapeType(ShapeType.OVAL);
            snapToLocation(bounds.right, bounds.bottom);
            return true;
        }

        if (action == R.id.action_move_to_edge_and_hide) {
            setShapeType(ShapeType.HALF_OVAL);
            return true;
        }

        if (action == R.id.action_move_out_edge_and_show) {
            setShapeType(ShapeType.OVAL);
            return true;
        }

        return false;
    }

@@ -446,6 +460,16 @@ public class AccessibilityFloatingMenuView extends FrameLayout
                        res.getString(
                                R.string.accessibility_floating_button_action_move_bottom_right));
        info.addAction(moveBottomRight);

        final int moveEdgeId = mShapeType == ShapeType.OVAL
                ? R.id.action_move_to_edge_and_hide
                : R.id.action_move_out_edge_and_show;
        final int moveEdgeTextResId = mShapeType == ShapeType.OVAL
                ? R.string.accessibility_floating_button_action_move_to_edge_and_hide_to_half
                : R.string.accessibility_floating_button_action_move_out_edge_and_show;
        final AccessibilityAction moveToOrOutEdge =
                new AccessibilityAction(moveEdgeId, res.getString(moveEdgeTextResId));
        info.addAction(moveToOrOutEdge);
    }

    private boolean onTouched(MotionEvent event) {
+39 −5
Original line number Diff line number Diff line
@@ -348,61 +348,95 @@ public class AccessibilityFloatingMenuViewTest extends SysuiTestCase {
        final AccessibilityNodeInfo infos = new AccessibilityNodeInfo();
        mMenuView.onInitializeAccessibilityNodeInfo(infos);

        assertThat(infos.getActionList().size()).isEqualTo(4);
        assertThat(infos.getActionList().size()).isEqualTo(5);
    }

    @Test
    public void accessibilityActionMove_moveTopLeft_success() {
    public void accessibilityActionMove_halfOval_moveTopLeft_success() {
        final AccessibilityFloatingMenuView menuView =
                spy(new AccessibilityFloatingMenuView(mContext));
        doReturn(mAvailableBounds).when(menuView).getAvailableBounds();
        menuView.setShapeType(/* halfOvalShape */ 1);

        final boolean isActionPerformed =
                menuView.performAccessibilityAction(R.id.action_move_top_left, null);

        assertThat(isActionPerformed).isTrue();
        assertThat(menuView.mShapeType).isEqualTo(/* ovalShape */ 0);
        verify(menuView).snapToLocation(mAvailableBounds.left, mAvailableBounds.top);
    }

    @Test
    public void accessibilityActionMove_moveTopRight_success() {
    public void accessibilityActionMove_halfOval_moveTopRight_success() {
        final AccessibilityFloatingMenuView menuView =
                spy(new AccessibilityFloatingMenuView(mContext));
        doReturn(mAvailableBounds).when(menuView).getAvailableBounds();
        menuView.setShapeType(/* halfOvalShape */ 1);

        final boolean isActionPerformed =
                menuView.performAccessibilityAction(R.id.action_move_top_right, null);

        assertThat(isActionPerformed).isTrue();
        assertThat(menuView.mShapeType).isEqualTo(/* ovalShape */ 0);
        verify(menuView).snapToLocation(mAvailableBounds.right, mAvailableBounds.top);
    }

    @Test
    public void accessibilityActionMove_moveBottomLeft_success() {
    public void accessibilityActionMove_halfOval_moveBottomLeft_success() {
        final AccessibilityFloatingMenuView menuView =
                spy(new AccessibilityFloatingMenuView(mContext));
        doReturn(mAvailableBounds).when(menuView).getAvailableBounds();
        menuView.setShapeType(/* halfOvalShape */ 1);

        final boolean isActionPerformed =
                menuView.performAccessibilityAction(R.id.action_move_bottom_left, null);

        assertThat(isActionPerformed).isTrue();
        assertThat(menuView.mShapeType).isEqualTo(/* ovalShape */ 0);
        verify(menuView).snapToLocation(mAvailableBounds.left, mAvailableBounds.bottom);
    }

    @Test
    public void accessibilityActionMove_moveBottomRight_success() {
    public void accessibilityActionMove_halfOval_moveBottomRight_success() {
        final AccessibilityFloatingMenuView menuView =
                spy(new AccessibilityFloatingMenuView(mContext));
        doReturn(mAvailableBounds).when(menuView).getAvailableBounds();
        menuView.setShapeType(/* halfOvalShape */ 1);

        final boolean isActionPerformed =
                menuView.performAccessibilityAction(R.id.action_move_bottom_right, null);

        assertThat(isActionPerformed).isTrue();
        assertThat(menuView.mShapeType).isEqualTo(/* ovalShape */ 0);
        verify(menuView).snapToLocation(mAvailableBounds.right, mAvailableBounds.bottom);
    }

    @Test
    public void accessibilityActionMove_halfOval_moveOutEdgeAndShow_success() {
        final AccessibilityFloatingMenuView menuView =
                spy(new AccessibilityFloatingMenuView(mContext));
        doReturn(mAvailableBounds).when(menuView).getAvailableBounds();
        menuView.setShapeType(/* halfOvalShape */ 1);

        final boolean isActionPerformed =
                menuView.performAccessibilityAction(R.id.action_move_out_edge_and_show, null);

        assertThat(isActionPerformed).isTrue();
        assertThat(menuView.mShapeType).isEqualTo(/* ovalShape */ 0);
    }

    @Test
    public void setupAccessibilityActions_oval_hasActionMoveToEdgeAndHide() {
        final AccessibilityFloatingMenuView menuView = new AccessibilityFloatingMenuView(mContext);
        menuView.setShapeType(/* ovalShape */ 0);

        final AccessibilityNodeInfo infos = new AccessibilityNodeInfo();
        menuView.onInitializeAccessibilityNodeInfo(infos);

        assertThat(infos.getActionList().stream().anyMatch(
                action -> action.getId() == R.id.action_move_to_edge_and_hide)).isTrue();
    }

    @After
    public void tearDown() {
        mInterceptMotionEvent = null;