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

Commit 3318e414 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add divider swap for a11y voice access" into main

parents fe5ebfec 170cb017
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@
    <item type="id" name="action_move_tl_50" />
    <item type="id" name="action_move_tl_30" />
    <item type="id" name="action_move_rb_full" />
    <item type="id" name="action_swap_apps" />

    <!-- For saving PhysicsAnimationLayout animations/animators as view tags. -->
    <item type="id" name="translation_x_dynamicanimation_tag"/>
+2 −0
Original line number Diff line number Diff line
@@ -90,6 +90,8 @@
    <string name="accessibility_action_divider_left_30">Left 30%</string>
    <!-- Accessibility action for moving docked stack divider to make the right screen full screen [CHAR LIMIT=NONE] -->
    <string name="accessibility_action_divider_right_full">Right full screen</string>
    <!-- Accessibility action for swapping the apps around the divider (double tap action) [CHAR LIMIT=NONE] -->
    <string name="accessibility_action_divider_swap">Swap Apps</string>

    <!-- Accessibility action for moving docked stack divider to make the top screen full screen [CHAR LIMIT=NONE] -->
    <string name="accessibility_action_divider_top_full">Top full screen</string>
+8 −1
Original line number Diff line number Diff line
@@ -125,11 +125,13 @@ public class DividerView extends FrameLayout implements View.OnTouchListener {
        }
    };

    private final AccessibilityDelegate mHandleDelegate = new AccessibilityDelegate() {
    final AccessibilityDelegate mHandleDelegate = new AccessibilityDelegate() {
        @Override
        public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info) {
            super.onInitializeAccessibilityNodeInfo(host, info);
            final DividerSnapAlgorithm snapAlgorithm = mSplitLayout.mDividerSnapAlgorithm;
            info.addAction(new AccessibilityAction(R.id.action_swap_apps,
                    mContext.getString(R.string.accessibility_action_divider_swap)));
            if (mSplitLayout.isLeftRightSplit()) {
                info.addAction(new AccessibilityAction(R.id.action_move_tl_full,
                        mContext.getString(R.string.accessibility_action_divider_left_full)));
@@ -172,6 +174,11 @@ public class DividerView extends FrameLayout implements View.OnTouchListener {
        @Override
        public boolean performAccessibilityAction(@NonNull View host, int action,
                @Nullable Bundle args) {
            if (action == R.id.action_swap_apps) {
                mSplitLayout.onDoubleTappedDivider();
                return true;
            }

            DividerSnapAlgorithm.SnapTarget nextTarget = null;
            DividerSnapAlgorithm snapAlgorithm = mSplitLayout.mDividerSnapAlgorithm;
            if (action == R.id.action_move_tl_full) {
+11 −2
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ import androidx.test.annotation.UiThreadTest;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;

import com.android.wm.shell.R;
import com.android.wm.shell.ShellTaskOrganizer;
import com.android.wm.shell.ShellTestCase;
import com.android.wm.shell.common.DisplayController;
@@ -66,9 +67,9 @@ public class DividerViewTest extends ShellTestCase {
    public void setup() {
        MockitoAnnotations.initMocks(this);
        Configuration configuration = getConfiguration();
        mSplitLayout = new SplitLayout("TestSplitLayout", mContext, configuration,
        mSplitLayout = spy(new SplitLayout("TestSplitLayout", mContext, configuration,
                mSplitLayoutHandler, mCallbacks, mDisplayController, mDisplayImeController,
                mTaskOrganizer, SplitLayout.PARALLAX_NONE, mSplitState, mHandler);
                mTaskOrganizer, SplitLayout.PARALLAX_NONE, mSplitState, mHandler));
        SplitWindowManager splitWindowManager = new SplitWindowManager("TestSplitWindowManager",
                mContext,
                configuration, mCallbacks);
@@ -98,6 +99,14 @@ public class DividerViewTest extends ShellTestCase {
                "false", false);
    }

    @Test
    public void swapDividerActionForA11y() {
        mDividerView.setAccessibilityDelegate(mDividerView.mHandleDelegate);
        mDividerView.getAccessibilityDelegate().performAccessibilityAction(mDividerView,
                R.id.action_swap_apps, null);
        verify(mSplitLayout, times(1)).onDoubleTappedDivider();
    }

    private static MotionEvent getMotionEvent(long eventTime, int action, float x, float y) {
        MotionEvent.PointerProperties properties = new MotionEvent.PointerProperties();
        properties.id = 0;