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

Commit e4ac0f01 authored by mincheli's avatar mincheli Committed by Automerger Merge Worker
Browse files

Adds accessibility actions for magnification switch button to move layout...

Adds accessibility actions for magnification switch button to move layout position am: f142b5a3 am: e1a613ad

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

Change-Id: Id17d8fa2afc502e25d529e76dda2e93b1a607ff1
parents 60250bec e1a613ad
Loading
Loading
Loading
Loading
+27 −2
Original line number Diff line number Diff line
@@ -108,16 +108,41 @@ class MagnificationModeSwitch implements MagnificationGestureDetector.OnGestureL
                        R.string.magnification_mode_switch_click_label));
                info.addAction(clickAction);
                info.setClickable(true);
                info.addAction(new AccessibilityAction(R.id.accessibility_action_move_up,
                        mContext.getString(R.string.accessibility_control_move_up)));
                info.addAction(new AccessibilityAction(R.id.accessibility_action_move_down,
                        mContext.getString(R.string.accessibility_control_move_down)));
                info.addAction(new AccessibilityAction(R.id.accessibility_action_move_left,
                        mContext.getString(R.string.accessibility_control_move_left)));
                info.addAction(new AccessibilityAction(R.id.accessibility_action_move_right,
                        mContext.getString(R.string.accessibility_control_move_right)));
            }

            @Override
            public boolean performAccessibilityAction(View host, int action, Bundle args) {
                if (action == AccessibilityAction.ACTION_CLICK.getId()) {
                    handleSingleTap();
                if (performA11yAction(action)) {
                    return true;
                }
                return super.performAccessibilityAction(host, action, args);
            }

            private boolean performA11yAction(int action) {
                final Rect windowBounds = mWindowManager.getCurrentWindowMetrics().getBounds();
                if (action == AccessibilityAction.ACTION_CLICK.getId()) {
                    handleSingleTap();
                } else if (action == R.id.accessibility_action_move_up) {
                    moveButton(0, -windowBounds.height());
                } else if (action == R.id.accessibility_action_move_down) {
                    moveButton(0, windowBounds.height());
                } else if (action == R.id.accessibility_action_move_left) {
                    moveButton(-windowBounds.width(), 0);
                } else if (action == R.id.accessibility_action_move_right) {
                    moveButton(windowBounds.width(), 0);
                } else {
                    return false;
                }
                return true;
            }
        });
        mWindowInsetChangeRunnable = this::onWindowInsetChanged;
        mImageView.setOnApplyWindowInsetsListener((v, insets) -> {
+27 −1
Original line number Diff line number Diff line
@@ -394,10 +394,26 @@ public class MagnificationModeSwitchTest extends SysuiTestCase {
                hasItems(new AccessibilityNodeInfo.AccessibilityAction(
                        ACTION_CLICK.getId(), mContext.getResources().getString(
                        R.string.magnification_mode_switch_click_label))));
        assertThat(nodeInfo.getActionList(),
                hasItems(new AccessibilityNodeInfo.AccessibilityAction(
                        R.id.accessibility_action_move_up, mContext.getResources().getString(
                        R.string.accessibility_control_move_up))));
        assertThat(nodeInfo.getActionList(),
                hasItems(new AccessibilityNodeInfo.AccessibilityAction(
                        R.id.accessibility_action_move_down, mContext.getResources().getString(
                        R.string.accessibility_control_move_down))));
        assertThat(nodeInfo.getActionList(),
                hasItems(new AccessibilityNodeInfo.AccessibilityAction(
                        R.id.accessibility_action_move_left, mContext.getResources().getString(
                        R.string.accessibility_control_move_left))));
        assertThat(nodeInfo.getActionList(),
                hasItems(new AccessibilityNodeInfo.AccessibilityAction(
                        R.id.accessibility_action_move_right, mContext.getResources().getString(
                        R.string.accessibility_control_move_right))));
    }

    @Test
    public void performA11yActions_showWindowModeButton_verifyTapAction() {
    public void performClickA11yActions_showWindowModeButton_verifyTapAction() {
        mMagnificationModeSwitch.showButton(ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW);
        resetAndStubMockImageViewAndAnimator();

@@ -407,6 +423,16 @@ public class MagnificationModeSwitchTest extends SysuiTestCase {
        verifyTapAction(ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN);
    }

    @Test
    public void performMoveLeftA11yAction_showButtonAtRightEdge_moveToLeftEdge() {
        mMagnificationModeSwitch.showButton(ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW);

        mSpyImageView.performAccessibilityAction(
                R.id.accessibility_action_move_left, null);

        assertLayoutPosition(/* toLeftScreenEdge= */true);
    }

    @Test
    public void showButton_showFadeOutAnimation_fadeOutAnimationCanceled() {
        mMagnificationModeSwitch.showButton(ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN);