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

Commit 9635d1cf authored by Zoey Chen's avatar Zoey Chen Committed by Android (Google) Code Review
Browse files

Merge "[Regional Preference] Add description for checked/not checked" into udc-qpr-dev

parents b40e5c22 1688c572
Loading
Loading
Loading
Loading
+18 −1
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.CompoundButton;

import androidx.annotation.VisibleForTesting;
import androidx.core.view.MotionEventCompat;
import androidx.recyclerview.widget.ItemTouchHelper;
import androidx.recyclerview.widget.RecyclerView;
@@ -178,17 +179,33 @@ class LocaleDragAndDropAdapter
        // clear listener before setChecked() in case another item already bind to
        // current ViewHolder and checked event is triggered on stale listener mistakenly.
        checkbox.setOnCheckedChangeListener(null);
        checkbox.setChecked(mRemoveMode ? feedItem.getChecked() : false);
        boolean isChecked = mRemoveMode ? feedItem.getChecked() : false;
        checkbox.setChecked(isChecked);
        setCheckBoxDescription(dragCell, checkbox, isChecked);

        checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                LocaleStore.LocaleInfo feedItem =
                        (LocaleStore.LocaleInfo) dragCell.getTag();
                feedItem.setChecked(isChecked);
                setCheckBoxDescription(dragCell, checkbox, isChecked);
            }
        });
    }

    @VisibleForTesting
    protected void setCheckBoxDescription(LocaleDragCell dragCell, CheckBox checkbox,
            boolean isChecked) {
        CharSequence checkedStatus = mContext.getText(
                isChecked ? com.android.internal.R.string.checked
                        : com.android.internal.R.string.not_checked);
        // Talkback
        dragCell.setStateDescription(checkedStatus);
        // Select to Speak
        checkbox.setContentDescription(checkedStatus);
    }

    @Override
    public int getItemCount() {
        int itemCount = (null != mFeedItemList ? mFeedItemList.size() : 0);
+51 −4
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import static com.google.common.truth.Truth.assertThat;

import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.anyBoolean;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -34,6 +35,10 @@ import android.os.Bundle;
import android.os.LocaleList;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView;

import androidx.appcompat.app.AlertDialog;
@@ -46,6 +51,7 @@ import com.android.settings.R;
import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.shadow.ShadowActivityManager;
import com.android.settings.testutils.shadow.ShadowAlertDialogCompat;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;

import org.junit.After;
import org.junit.Before;
@@ -58,7 +64,6 @@ import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
import org.robolectric.util.ReflectionHelpers;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;

import java.util.ArrayList;
import java.util.List;
@@ -75,11 +80,12 @@ public class LocaleListEditorTest {
    private static final int REQUEST_CONFIRM_SYSTEM_DEFAULT = 1;

    private LocaleListEditor mLocaleListEditor;

    private Context mContext;
    private FragmentActivity mActivity;
    private List mLocaleList;
    private List<LocaleStore.LocaleInfo> mLocaleList;
    private Intent mIntent = new Intent();
    private LocaleDragCell mLocaleDragCell;
    private LocaleDragAndDropAdapter.CustomViewHolder mCustomViewHolder;

    @Mock
    private LocaleDragAndDropAdapter mAdapter;
@@ -95,11 +101,23 @@ public class LocaleListEditorTest {
    private IActivityManager mActivityService;
    @Mock
    private MetricsFeatureProvider mMetricsFeatureProvider;
    @Mock
    private TextView mLabel;
    @Mock
    private CheckBox mCheckbox;
    @Mock
    private TextView mMiniLabel;
    @Mock
    private TextView mLocalized;
    @Mock
    private TextView mCurrentDefault;
    @Mock
    private ImageView mDragHandle;

    @Before
    public void setUp() throws Exception {
        MockitoAnnotations.initMocks(this);
        mContext = RuntimeEnvironment.application;
        mContext = spy(RuntimeEnvironment.application);
        mLocaleListEditor = spy(new LocaleListEditor());
        when(mLocaleListEditor.getContext()).thenReturn(mContext);
        mActivity = Robolectric.buildActivity(FragmentActivity.class).get();
@@ -300,6 +318,35 @@ public class LocaleListEditorTest {
        verify(mAdapter).doTheUpdate();
    }

    @Test
    public void onBindViewHolder_shouldSetCheckedBoxText() {
        ReflectionHelpers.setField(mLocaleListEditor, "mRemoveMode", true);
        mLocaleList = new ArrayList<>();
        mLocaleList.add(mLocaleInfo);
        when(mLocaleInfo.getFullNameNative()).thenReturn("English");
        when(mLocaleInfo.getLocale()).thenReturn(LocaleList.forLanguageTags("en-US").get(0));

        mAdapter = spy(new LocaleDragAndDropAdapter(mLocaleListEditor, mLocaleList));
        ReflectionHelpers.setField(mAdapter, "mFeedItemList", mLocaleList);
        ReflectionHelpers.setField(mAdapter, "mParent", mLocaleListEditor);
        ReflectionHelpers.setField(mAdapter, "mCacheItemList", new ArrayList<>(mLocaleList));
        ReflectionHelpers.setField(mAdapter, "mContext", mContext);
        ViewGroup view = new FrameLayout(mContext);
        mCustomViewHolder = mAdapter.onCreateViewHolder(view, 0);
        mLocaleDragCell = new LocaleDragCell(mContext, null);
        ReflectionHelpers.setField(mCustomViewHolder, "mLocaleDragCell", mLocaleDragCell);
        ReflectionHelpers.setField(mLocaleDragCell, "mLabel", mLabel);
        ReflectionHelpers.setField(mLocaleDragCell, "mLocalized", mLocalized);
        ReflectionHelpers.setField(mLocaleDragCell, "mCurrentDefault", mCurrentDefault);
        ReflectionHelpers.setField(mLocaleDragCell, "mMiniLabel", mMiniLabel);
        ReflectionHelpers.setField(mLocaleDragCell, "mDragHandle", mDragHandle);
        ReflectionHelpers.setField(mLocaleDragCell, "mCheckbox", mCheckbox);

        mAdapter.onBindViewHolder(mCustomViewHolder, 0);

        verify(mAdapter).setCheckBoxDescription(any(LocaleDragCell.class), any(), anyBoolean());
    }

    private void setUpLocaleConditions() {
        ShadowActivityManager.setService(mActivityService);
        mLocaleList = new ArrayList<>();