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

Commit 1434640b 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 am: e4ac0f01

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

Change-Id: Id8b964b5de9188b88d56cbdea2ae6874d40d02e8
parents 83dd10af e4ac0f01
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);