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

Commit 72705675 authored by Candice's avatar Candice
Browse files

Add content descriptions for Display size and text previews

Bug: 395882764
Test: manually
Test: atest TextReadingPreviewControllerTest
Test: atest TextReadingPreviewPreferenceTest
Flag: EXEMPT bugfix
Change-Id: Ia8702c3d0bdbbfdd554c945000777fcee6714abe
parent dde80ef8
Loading
Loading
Loading
Loading
+11 −1
Original line number Diff line number Diff line
@@ -810,13 +810,23 @@
    <!-- Allowed packages to show the confirmation dialog for a system locale suggestion  -->
    <string-array name="allowed_packages_for_locale_confirmation_diallog" translatable="false"/>

    <!-- Array of text reading preview layouts. Must contain at least 1 layout -->
    <!-- Array of text reading preview layouts. Must contain at least 1 layout.
        Add content descriptions in the config_text_reading_preview_content_descriptions together
        if adding more sample layouts here -->
    <array name="config_text_reading_preview_samples">
        <item>@layout/accessibility_text_reading_preview_app_grid</item>
        <item>@layout/screen_zoom_preview_1</item>
        <item>@layout/accessibility_text_reading_preview_mail_content</item>
    </array>

    <!-- Array of text reading preview layouts' content descriptions.
        The order should be the same as the layouts in config_text_reading_preview_samples -->
    <array name="config_text_reading_preview_content_descriptions">
        <item>@string/preview_pager_home_content_description</item>
        <item>@string/preview_pager_message_content_description</item>
        <item>@string/preview_pager_email_content_description</item>
    </array>

    <!-- Package responsible for updating Mainline Modules -->
    <string name="config_mainline_module_update_package" translatable="false">com.android.vending</string>

+6 −0
Original line number Diff line number Diff line
@@ -78,6 +78,12 @@
    <!-- Content description for preview pager. [CHAR LIMIT=NONE] -->
    <string name="preview_pager_content_description">Preview</string>
    <!-- Content description for home screen preview. [CHAR LIMIT=NONE] -->
    <string name="preview_pager_home_content_description">Home screen preview</string>
    <!-- Content description for message preview. [CHAR LIMIT=NONE] -->
    <string name="preview_pager_message_content_description">Message preview</string>
    <!-- Content description for email preview. [CHAR LIMIT=NONE] -->
    <string name="preview_pager_email_content_description">Email preview</string>
    <!-- Content description for qrcode image. [CHAR LIMIT=none]-->
    <string name="qr_code_content_description">QR code</string>
    <!-- Previous button for preview pager. [CHAR LIMIT=NONE] -->
+16 −0
Original line number Diff line number Diff line
@@ -104,11 +104,13 @@ class TextReadingPreviewController extends BasePreferenceController implements
        final boolean isLayoutRtl =
                origConfig.getLayoutDirection() == View.LAYOUT_DIRECTION_RTL;
        final int[] previewSamples = getPreviewSampleLayouts(mContext);
        final int[] previewContentDescriptions = getPreviewSampleContentDescriptions(mContext);
        final PreviewPagerAdapter pagerAdapter = new PreviewPagerAdapter(mContext, isLayoutRtl,
                previewSamples, createConfig(origConfig));
        mPreviewPreference.setPreviewAdapter(pagerAdapter);
        mPreviewPreference.setCurrentItem(
                isLayoutRtl ? previewSamples.length - 1 : FRAME_INITIAL_INDEX);
        mPreviewPreference.setContentDescription(previewContentDescriptions);

        final int initialPagerIndex =
                mLastFontProgress * mDisplaySizeData.getValues().size() + mLastDisplayProgress;
@@ -188,6 +190,20 @@ class TextReadingPreviewController extends BasePreferenceController implements
        return previewSamples;
    }

    @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
    static int[] getPreviewSampleContentDescriptions(Context context) {
        TypedArray typedArray = context.getResources().obtainTypedArray(
                R.array.config_text_reading_preview_content_descriptions);
        int previewCount = typedArray.length();
        int[] previewContentDescriptions = new int[previewCount];
        for (int i = 0; i < previewCount; i++) {
            previewContentDescriptions[i] =
                    typedArray.getResourceId(i, R.string.preview_pager_content_description);
        }
        typedArray.recycle();
        return previewContentDescriptions;
    }

    private int getPagerIndex() {
        final int displayDataSize = mDisplaySizeData.getValues().size();
        final int fontSizeProgress = mFontSizePreference.getProgress();
+26 −19
Original line number Diff line number Diff line
@@ -43,28 +43,11 @@ public class TextReadingPreviewPreference extends Preference {
    private int mCurrentItem;
    private int mLastLayerIndex;
    private PreviewPagerAdapter mPreviewAdapter;
    private int[] mContentDescriptions;

    private int mLayoutMinHorizontalPadding = 0;
    private int mBackgroundMinHorizontalPadding = 0;

    private final ViewPager.OnPageChangeListener mPageChangeListener =
            new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int i, float v, int i1) {
            // Do nothing
        }

        @Override
        public void onPageSelected(int i) {
            mCurrentItem = i;
        }

        @Override
        public void onPageScrollStateChanged(int i) {
            // Do nothing
        }
    };

    TextReadingPreviewPreference(Context context) {
        super(context);
        init();
@@ -95,7 +78,23 @@ public class TextReadingPreviewPreference extends Preference {
        adjustPaddings(previewLayout, backgroundView);

        final ViewPager viewPager = (ViewPager) holder.findViewById(R.id.preview_pager);
        viewPager.addOnPageChangeListener(mPageChangeListener);
        viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int i, float v, int i1) {
                // Do nothing
            }

            @Override
            public void onPageSelected(int i) {
                mCurrentItem = i;
                viewPager.setContentDescription(getContext().getString(mContentDescriptions[i]));
            }

            @Override
            public void onPageScrollStateChanged(int i) {
                // Do nothing
            }
        });
        final DotsPageIndicator pageIndicator =
                (DotsPageIndicator) holder.findViewById(R.id.page_indicator);
        updateAdapterIfNeeded(viewPager, pageIndicator, mPreviewAdapter);
@@ -122,6 +121,10 @@ public class TextReadingPreviewPreference extends Preference {
                viewPager.setCurrentItem(getCurrentItem() + 1));
        previousButton.setContentDescription(getContext().getString(
                R.string.preview_pager_next_button));

        // Initialize the content description since the OnPageChangeListener#onPageSelected won't
        // be called during setup.
        viewPager.setContentDescription(getContext().getString(mContentDescriptions[0]));
    }

    @Override
@@ -170,6 +173,10 @@ public class TextReadingPreviewPreference extends Preference {
        );
    }

    void setContentDescription(int[] stringIds) {
        mContentDescriptions = stringIds;
    }

    void setPreviewAdapter(PreviewPagerAdapter previewAdapter) {
        if (previewAdapter != mPreviewAdapter) {
            mPreviewAdapter = previewAdapter;
+11 −0
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

package com.android.settings.accessibility;

import static com.google.common.truth.Truth.assertThat;

import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
@@ -76,6 +78,15 @@ public class TextReadingPreviewControllerTest {
        mDisplaySizePreference = new AccessibilitySeekBarPreference(mContext, /* attr= */ null);
    }

    @Test
    public void numberOfPreviewSamples_numberOfPreviewContentDescription_isEqual() {
        int[] previewSamples = TextReadingPreviewController.getPreviewSampleLayouts(mContext);
        int[] previewContentDescriptions =
                TextReadingPreviewController.getPreviewSampleContentDescriptions(mContext);

        assertThat(previewSamples.length).isEqualTo(previewContentDescriptions.length);
    }

    @Test
    public void initPreviewerAdapter_verifyAction() {
        when(mPreferenceScreen.findPreference(PREVIEW_KEY)).thenReturn(mPreviewPreference);
Loading