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

Commit 65dbc739 authored by Roy Chou's avatar Roy Chou
Browse files

fix(#MagSettingsPanel): modify content desription for buttons

For WindoeMagnificationSettings, originally the description for fullscreen button is "Switch Mode" not "FullScreen". Therefore, we modify the content description to "FullScreen". Besides, for b/271216561, the accessibility move actions should be binded to settings panel view. Originally it was binded to buttons. Therefore we modify the accessibilityDelegate and set it as the mSettingsView's accessibilityDelegate. Also, we add content description for buttons.

For MagnificationModeSwitch, since we changed to open the settings panel when tapping on the switch button, we modify the button click accessibility action description from "Switch" to "Open magnification settings".

Bug: 22092166, 271216561
Test: manually check with Talkback output
Change-Id: I39c0ddf11ce307923af3459ce3155bc7e6d6cfbb
parent 9ea42913
Loading
Loading
Loading
Loading
+8 −4
Original line number Original line Diff line number Diff line
@@ -63,7 +63,8 @@
            android:background="@drawable/accessibility_magnification_setting_view_image_btn_bg"
            android:background="@drawable/accessibility_magnification_setting_view_image_btn_bg"
            android:src="@drawable/ic_magnification_menu_small"
            android:src="@drawable/ic_magnification_menu_small"
            android:tint="@color/accessibility_magnification_image_button_tint"
            android:tint="@color/accessibility_magnification_image_button_tint"
            android:tintMode="src_atop" />
            android:tintMode="src_atop"
            android:contentDescription="@string/accessibility_magnification_small" />


        <ImageButton
        <ImageButton
            android:id="@+id/magnifier_medium_button"
            android:id="@+id/magnifier_medium_button"
@@ -74,7 +75,8 @@
            android:background="@drawable/accessibility_magnification_setting_view_image_btn_bg"
            android:background="@drawable/accessibility_magnification_setting_view_image_btn_bg"
            android:src="@drawable/ic_magnification_menu_medium"
            android:src="@drawable/ic_magnification_menu_medium"
            android:tint="@color/accessibility_magnification_image_button_tint"
            android:tint="@color/accessibility_magnification_image_button_tint"
            android:tintMode="src_atop" />
            android:tintMode="src_atop"
            android:contentDescription="@string/accessibility_magnification_medium" />


        <ImageButton
        <ImageButton
            android:id="@+id/magnifier_large_button"
            android:id="@+id/magnifier_large_button"
@@ -85,7 +87,8 @@
            android:background="@drawable/accessibility_magnification_setting_view_image_btn_bg"
            android:background="@drawable/accessibility_magnification_setting_view_image_btn_bg"
            android:src="@drawable/ic_magnification_menu_large"
            android:src="@drawable/ic_magnification_menu_large"
            android:tint="@color/accessibility_magnification_image_button_tint"
            android:tint="@color/accessibility_magnification_image_button_tint"
            android:tintMode="src_atop" />
            android:tintMode="src_atop"
            android:contentDescription="@string/accessibility_magnification_large" />


        <ImageButton
        <ImageButton
            android:id="@+id/magnifier_full_button"
            android:id="@+id/magnifier_full_button"
@@ -96,7 +99,8 @@
            android:background="@drawable/accessibility_magnification_setting_view_image_btn_bg"
            android:background="@drawable/accessibility_magnification_setting_view_image_btn_bg"
            android:src="@drawable/ic_open_in_full"
            android:src="@drawable/ic_open_in_full"
            android:tint="@color/accessibility_magnification_image_button_tint"
            android:tint="@color/accessibility_magnification_image_button_tint"
            android:tintMode="src_atop" />
            android:tintMode="src_atop"
            android:contentDescription="@string/accessibility_magnification_fullscreen" />
    </LinearLayout>
    </LinearLayout>


    <LinearLayout
    <LinearLayout
+2 −2
Original line number Original line Diff line number Diff line
@@ -2335,8 +2335,6 @@
    <string name="magnification_mode_switch_state_full_screen">Magnify full screen</string>
    <string name="magnification_mode_switch_state_full_screen">Magnify full screen</string>
    <!-- A11y state description for magnification mode switch that device is in window mode. [CHAR LIMIT=NONE] -->
    <!-- A11y state description for magnification mode switch that device is in window mode. [CHAR LIMIT=NONE] -->
    <string name="magnification_mode_switch_state_window">Magnify part of screen</string>
    <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] -->
    <!-- Click action label for magnification settings panel. [CHAR LIMIT=NONE] -->
    <string name="magnification_open_settings_click_label">Open magnification settings</string>
    <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] -->
    <!-- Label of the corner of a rectangle that you can tap and drag to resize the magnification area. [CHAR LIMIT=NONE] -->
@@ -2372,6 +2370,8 @@
    <string name="accessibility_magnification_small">Small</string>
    <string name="accessibility_magnification_small">Small</string>
    <!-- Click action label for magnification panel large size [CHAR LIMIT=NONE]-->
    <!-- Click action label for magnification panel large size [CHAR LIMIT=NONE]-->
    <string name="accessibility_magnification_large">Large</string>
    <string name="accessibility_magnification_large">Large</string>
    <!-- Click action label for magnification panel full screen size [CHAR LIMIT=NONE]-->
    <string name="accessibility_magnification_fullscreen">Full screen</string>
    <!-- Click action label for magnification panel Done [CHAR LIMIT=20]-->
    <!-- Click action label for magnification panel Done [CHAR LIMIT=20]-->
    <string name="accessibility_magnification_done">Done</string>
    <string name="accessibility_magnification_done">Done</string>
    <!-- Click action label for edit magnification size [CHAR LIMIT=20]-->
    <!-- Click action label for edit magnification size [CHAR LIMIT=20]-->
+1 −1
Original line number Original line Diff line number Diff line
@@ -120,7 +120,7 @@ class MagnificationModeSwitch implements MagnificationGestureDetector.OnGestureL
                        R.string.magnification_mode_switch_description));
                        R.string.magnification_mode_switch_description));
                final AccessibilityAction clickAction = new AccessibilityAction(
                final AccessibilityAction clickAction = new AccessibilityAction(
                        AccessibilityAction.ACTION_CLICK.getId(), mContext.getResources().getString(
                        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.addAction(clickAction);
                info.setClickable(true);
                info.setClickable(true);
                info.addAction(new AccessibilityAction(R.id.accessibility_action_move_up,
                info.addAction(new AccessibilityAction(R.id.accessibility_action_move_up,
+3 −40
Original line number Original line Diff line number Diff line
@@ -170,39 +170,11 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest
        }
        }
    }
    }


    private CharSequence formatContentDescription(int viewId) {
    private final AccessibilityDelegate mPanelDelegate = new AccessibilityDelegate() {
        if (viewId == R.id.magnifier_small_button) {
            return mContext.getResources().getString(
                    R.string.accessibility_magnification_small);
        } else if (viewId == R.id.magnifier_medium_button) {
            return mContext.getResources().getString(
                    R.string.accessibility_magnification_medium);
        } else if (viewId == R.id.magnifier_large_button) {
            return mContext.getResources().getString(
                    R.string.accessibility_magnification_large);
        } else if (viewId == R.id.magnifier_done_button) {
            return mContext.getResources().getString(
                    R.string.accessibility_magnification_done);
        } else if (viewId == R.id.magnifier_edit_button) {
            return mContext.getResources().getString(
                    R.string.accessibility_resize);
        } else {
            return mContext.getResources().getString(
                    R.string.magnification_mode_switch_description);
        }
    }

    private final AccessibilityDelegate mButtonDelegate = new AccessibilityDelegate() {
        @Override
        @Override
        public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info) {
        public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info) {
            super.onInitializeAccessibilityNodeInfo(host, info);
            super.onInitializeAccessibilityNodeInfo(host, info);


            info.setContentDescription(formatContentDescription(host.getId()));
            final AccessibilityAction clickAction = new AccessibilityAction(
                    AccessibilityAction.ACTION_CLICK.getId(), mContext.getResources().getString(
                    R.string.magnification_mode_switch_click_label));
            info.addAction(clickAction);
            info.setClickable(true);
            info.addAction(new AccessibilityAction(R.id.accessibility_action_move_up,
            info.addAction(new AccessibilityAction(R.id.accessibility_action_move_up,
                    mContext.getString(R.string.accessibility_control_move_up)));
                    mContext.getString(R.string.accessibility_control_move_up)));
            info.addAction(new AccessibilityAction(R.id.accessibility_action_move_down,
            info.addAction(new AccessibilityAction(R.id.accessibility_action_move_down,
@@ -432,6 +404,8 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest
        mSettingView.setFocusableInTouchMode(true);
        mSettingView.setFocusableInTouchMode(true);
        mSettingView.setOnTouchListener(this::onTouch);
        mSettingView.setOnTouchListener(this::onTouch);


        mSettingView.setAccessibilityDelegate(mPanelDelegate);

        mPanelView = mSettingView.findViewById(R.id.magnifier_panel_view);
        mPanelView = mSettingView.findViewById(R.id.magnifier_panel_view);
        mSmallButton = mSettingView.findViewById(R.id.magnifier_small_button);
        mSmallButton = mSettingView.findViewById(R.id.magnifier_small_button);
        mMediumButton = mSettingView.findViewById(R.id.magnifier_medium_button);
        mMediumButton = mSettingView.findViewById(R.id.magnifier_medium_button);
@@ -456,22 +430,11 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest
            toggleDiagonalScrolling();
            toggleDiagonalScrolling();
        });
        });


        mSmallButton.setAccessibilityDelegate(mButtonDelegate);
        mSmallButton.setOnClickListener(mButtonClickListener);
        mSmallButton.setOnClickListener(mButtonClickListener);

        mMediumButton.setAccessibilityDelegate(mButtonDelegate);
        mMediumButton.setOnClickListener(mButtonClickListener);
        mMediumButton.setOnClickListener(mButtonClickListener);

        mLargeButton.setAccessibilityDelegate(mButtonDelegate);
        mLargeButton.setOnClickListener(mButtonClickListener);
        mLargeButton.setOnClickListener(mButtonClickListener);

        mDoneButton.setAccessibilityDelegate(mButtonDelegate);
        mDoneButton.setOnClickListener(mButtonClickListener);
        mDoneButton.setOnClickListener(mButtonClickListener);

        mFullScreenButton.setAccessibilityDelegate(mButtonDelegate);
        mFullScreenButton.setOnClickListener(mButtonClickListener);
        mFullScreenButton.setOnClickListener(mButtonClickListener);

        mEditButton.setAccessibilityDelegate(mButtonDelegate);
        mEditButton.setOnClickListener(mButtonClickListener);
        mEditButton.setOnClickListener(mButtonClickListener);


        mSettingView.setOnApplyWindowInsetsListener((v, insets) -> {
        mSettingView.setOnApplyWindowInsetsListener((v, insets) -> {
+1 −1
Original line number Original line Diff line number Diff line
@@ -400,7 +400,7 @@ public class MagnificationModeSwitchTest extends SysuiTestCase {
        assertThat(nodeInfo.getActionList(),
        assertThat(nodeInfo.getActionList(),
                hasItems(new AccessibilityNodeInfo.AccessibilityAction(
                hasItems(new AccessibilityNodeInfo.AccessibilityAction(
                        ACTION_CLICK.getId(), mContext.getResources().getString(
                        ACTION_CLICK.getId(), mContext.getResources().getString(
                        R.string.magnification_mode_switch_click_label))));
                        R.string.magnification_open_settings_click_label))));
        assertThat(nodeInfo.getActionList(),
        assertThat(nodeInfo.getActionList(),
                hasItems(new AccessibilityNodeInfo.AccessibilityAction(
                hasItems(new AccessibilityNodeInfo.AccessibilityAction(
                        R.id.accessibility_action_move_up, mContext.getResources().getString(
                        R.id.accessibility_action_move_up, mContext.getResources().getString(