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

Commit 1ee1185b authored by Candice Lo's avatar Candice Lo Committed by Android (Google) Code Review
Browse files

Merge changes If787cf8b,I78267c0b into udc-dev

* changes:
  Fix focus and announcements for Magnification Settings
  Do not close the settings panel on tap
parents 279661f0 77cd7669
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -21,7 +21,9 @@
    android:layout_height="wrap_content"
    android:background="@drawable/accessibility_magnification_setting_view_bg"
    android:orientation="vertical"
    android:padding="@dimen/magnification_setting_background_padding">
    android:padding="@dimen/magnification_setting_background_padding"
    android:focusable="true"
    android:contentDescription="@string/accessibility_magnification_settings_panel_description">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
+4 −0
Original line number Diff line number Diff line
@@ -2337,6 +2337,8 @@
    <string name="magnification_mode_switch_state_window">Magnify part of screen</string>
    <!-- Click action label for magnification switch. [CHAR LIMIT=NONE] -->
    <string name="magnification_mode_switch_click_label">Switch</string>
    <!-- Click action label for magnification settings panel. [CHAR LIMIT=NONE] -->
    <string name="magnification_open_settings_click_label">Open magnification settings</string>
    <!-- Label of the corner of a rectangle that you can tap and drag to resize the magnification area. [CHAR LIMIT=NONE] -->
    <string name="magnification_drag_corner_to_resize">Drag corner to resize</string>

@@ -2358,6 +2360,8 @@
    <!-- Description of the window magnification Bottom handle [CHAR LIMIT=NONE]-->
    <string name="accessibility_magnification_bottom_handle">Bottom handle</string>

    <!-- Description of the window magnification panel [CHAR LIMIT=NONE]-->
    <string name="accessibility_magnification_settings_panel_description">Magnification settings</string>
    <!-- Title of the window magnification panel option Magnifier size [CHAR LIMIT=NONE]-->
    <string name="accessibility_magnifier_size">Magnifier size</string>
    <!-- Title of the window magnification panel option Zoom [CHAR LIMIT=NONE]-->
+1 −1
Original line number Diff line number Diff line
@@ -1468,7 +1468,7 @@ class WindowMagnificationController implements View.OnTouchListener, SurfaceHold
            super.onInitializeAccessibilityNodeInfo(host, info);
            final AccessibilityAction clickAction = new AccessibilityAction(
                    AccessibilityAction.ACTION_CLICK.getId(), mContext.getResources().getString(
                    R.string.magnification_mode_switch_click_label));
                    R.string.magnification_open_settings_click_label));
            info.addAction(clickAction);
            info.setClickable(true);
            info.addAction(
+7 −24
Original line number Diff line number Diff line
@@ -215,9 +215,7 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest

        private boolean performA11yAction(View view, int action) {
            final Rect windowBounds = mWindowManager.getCurrentWindowMetrics().getBounds();
            if (action == AccessibilityAction.ACTION_CLICK.getId()) {
                handleSingleTap(view);
            } else if (action == R.id.accessibility_action_move_up) {
            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());
@@ -264,8 +262,6 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest
            } else if (id == R.id.magnifier_full_button) {
                hideSettingPanel();
                toggleMagnificationMode();
            } else {
                hideSettingPanel();
            }
        }
    };
@@ -273,7 +269,6 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest
    @Override
    public boolean onSingleTap(View view) {
        mSingleTapDetected = true;
        handleSingleTap(view);
        return true;
    }

@@ -358,6 +353,10 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest
            }

            mWindowManager.addView(mSettingView, mParams);
            if (resetPosition) {
                // Request focus on the settings panel when position of the panel is reset.
                mSettingView.requestFocus();
            }

            // Exclude magnification switch button from system gesture area.
            setSystemGestureExclusion();
@@ -385,8 +384,8 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest
        mSettingView = (LinearLayout) View.inflate(mContext,
                R.layout.window_magnification_settings_view, null);

        mSettingView.setClickable(true);
        mSettingView.setFocusable(true);
        mSettingView.setFocusableInTouchMode(true);
        mSettingView.setOnTouchListener(this::onTouch);

        mPanelView = mSettingView.findViewById(R.id.magnifier_panel_view);
@@ -499,22 +498,6 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest
        }
    }

    private void handleSingleTap(View view) {
        int id = view.getId();
        if (id == R.id.magnifier_small_button) {
            setMagnifierSize(MagnificationSize.SMALL);
        } else if (id == R.id.magnifier_medium_button) {
            setMagnifierSize(MagnificationSize.MEDIUM);
        } else if (id == R.id.magnifier_large_button) {
            setMagnifierSize(MagnificationSize.LARGE);
        } else if (id == R.id.magnifier_full_button) {
            hideSettingPanel();
            toggleMagnificationMode();
        } else {
            hideSettingPanel();
        }
    }

    public void editMagnifierSizeMode(boolean enable) {
        setEditMagnifierSizeMode(enable);
        updateSelectedButton(MagnificationSize.NONE);
@@ -551,7 +534,7 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest
                LayoutParams.WRAP_CONTENT,
                LayoutParams.WRAP_CONTENT,
                LayoutParams.TYPE_ACCESSIBILITY_MAGNIFICATION_OVERLAY,
                LayoutParams.FLAG_NOT_FOCUSABLE,
                /* _flags= */ 0,
                PixelFormat.TRANSPARENT);
        params.gravity = Gravity.TOP | Gravity.START;
        params.accessibilityTitle = getAccessibilityWindowTitle(context);
+7 −0
Original line number Diff line number Diff line
@@ -201,6 +201,13 @@ public class WindowMagnificationSettingsTest extends SysuiTestCase {
        assertThat(magnifierMediumButton.isSelected()).isTrue();
    }

    @Test
    public void showSettingPanel_focusOnThePanel() {
        mWindowMagnificationSettings.showSettingPanel();

        assertThat(mSettingView.isFocused()).isTrue();
    }

    private <T extends View> T getInternalView(@IdRes int idRes) {
        T view = mSettingView.findViewById(idRes);
        assertNotNull(view);