[Regional Preference] Add description for checked/not checked
Bug: 288223637 Test: make RunSettingsRoboTests -j128 ROBOTEST_FILTER=LocaleListEditorTest Change-Id: I0d1a2de93ad2911c555acef2f4e00cd715c62f17
This commit is contained in:
@@ -31,6 +31,7 @@ import android.view.ViewGroup;
|
|||||||
import android.widget.CheckBox;
|
import android.widget.CheckBox;
|
||||||
import android.widget.CompoundButton;
|
import android.widget.CompoundButton;
|
||||||
|
|
||||||
|
import androidx.annotation.VisibleForTesting;
|
||||||
import androidx.core.view.MotionEventCompat;
|
import androidx.core.view.MotionEventCompat;
|
||||||
import androidx.recyclerview.widget.ItemTouchHelper;
|
import androidx.recyclerview.widget.ItemTouchHelper;
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
@@ -178,17 +179,33 @@ class LocaleDragAndDropAdapter
|
|||||||
// clear listener before setChecked() in case another item already bind to
|
// clear listener before setChecked() in case another item already bind to
|
||||||
// current ViewHolder and checked event is triggered on stale listener mistakenly.
|
// current ViewHolder and checked event is triggered on stale listener mistakenly.
|
||||||
checkbox.setOnCheckedChangeListener(null);
|
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() {
|
checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
||||||
LocaleStore.LocaleInfo feedItem =
|
LocaleStore.LocaleInfo feedItem =
|
||||||
(LocaleStore.LocaleInfo) dragCell.getTag();
|
(LocaleStore.LocaleInfo) dragCell.getTag();
|
||||||
feedItem.setChecked(isChecked);
|
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
|
@Override
|
||||||
public int getItemCount() {
|
public int getItemCount() {
|
||||||
int itemCount = (null != mFeedItemList ? mFeedItemList.size() : 0);
|
int itemCount = (null != mFeedItemList ? mFeedItemList.size() : 0);
|
||||||
|
@@ -23,6 +23,7 @@ import static com.google.common.truth.Truth.assertThat;
|
|||||||
|
|
||||||
import static org.mockito.ArgumentMatchers.any;
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
import static org.mockito.ArgumentMatchers.eq;
|
import static org.mockito.ArgumentMatchers.eq;
|
||||||
|
import static org.mockito.Mockito.anyBoolean;
|
||||||
import static org.mockito.Mockito.doReturn;
|
import static org.mockito.Mockito.doReturn;
|
||||||
import static org.mockito.Mockito.never;
|
import static org.mockito.Mockito.never;
|
||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
@@ -42,7 +43,11 @@ import android.os.LocaleList;
|
|||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.MotionEvent;
|
import android.view.MotionEvent;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
import android.widget.Button;
|
import android.widget.Button;
|
||||||
|
import android.widget.CheckBox;
|
||||||
|
import android.widget.FrameLayout;
|
||||||
|
import android.widget.ImageView;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import androidx.appcompat.app.AlertDialog;
|
import androidx.appcompat.app.AlertDialog;
|
||||||
@@ -55,6 +60,7 @@ import com.android.settings.R;
|
|||||||
import com.android.settings.testutils.FakeFeatureFactory;
|
import com.android.settings.testutils.FakeFeatureFactory;
|
||||||
import com.android.settings.testutils.shadow.ShadowActivityManager;
|
import com.android.settings.testutils.shadow.ShadowActivityManager;
|
||||||
import com.android.settings.testutils.shadow.ShadowAlertDialogCompat;
|
import com.android.settings.testutils.shadow.ShadowAlertDialogCompat;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
|
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
@@ -67,7 +73,6 @@ import org.robolectric.RobolectricTestRunner;
|
|||||||
import org.robolectric.RuntimeEnvironment;
|
import org.robolectric.RuntimeEnvironment;
|
||||||
import org.robolectric.annotation.Config;
|
import org.robolectric.annotation.Config;
|
||||||
import org.robolectric.util.ReflectionHelpers;
|
import org.robolectric.util.ReflectionHelpers;
|
||||||
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -84,11 +89,12 @@ public class LocaleListEditorTest {
|
|||||||
private static final int REQUEST_CONFIRM_SYSTEM_DEFAULT = 1;
|
private static final int REQUEST_CONFIRM_SYSTEM_DEFAULT = 1;
|
||||||
|
|
||||||
private LocaleListEditor mLocaleListEditor;
|
private LocaleListEditor mLocaleListEditor;
|
||||||
|
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
private FragmentActivity mActivity;
|
private FragmentActivity mActivity;
|
||||||
private List mLocaleList;
|
private List<LocaleStore.LocaleInfo> mLocaleList;
|
||||||
private Intent mIntent = new Intent();
|
private Intent mIntent = new Intent();
|
||||||
|
private LocaleDragCell mLocaleDragCell;
|
||||||
|
private LocaleDragAndDropAdapter.CustomViewHolder mCustomViewHolder;
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private LocaleDragAndDropAdapter mAdapter;
|
private LocaleDragAndDropAdapter mAdapter;
|
||||||
@@ -108,6 +114,18 @@ public class LocaleListEditorTest {
|
|||||||
private IActivityManager mActivityService;
|
private IActivityManager mActivityService;
|
||||||
@Mock
|
@Mock
|
||||||
private MetricsFeatureProvider mMetricsFeatureProvider;
|
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
|
@Before
|
||||||
public void setUp() throws Exception {
|
public void setUp() throws Exception {
|
||||||
@@ -417,6 +435,35 @@ public class LocaleListEditorTest {
|
|||||||
when(mLocaleListEditor.getSupportedLocales()).thenReturn(supportedLocales);
|
when(mLocaleListEditor.getSupportedLocales()).thenReturn(supportedLocales);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@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() {
|
private void setUpLocaleConditions() {
|
||||||
ShadowActivityManager.setService(mActivityService);
|
ShadowActivityManager.setService(mActivityService);
|
||||||
mLocaleList = new ArrayList<>();
|
mLocaleList = new ArrayList<>();
|
||||||
|
Reference in New Issue
Block a user