Accessibility shortcut secondary action - improve shortcutPreference

1. Use setWidgetLayoutResource() for the controllable widget at the
right side.
2. Improve listener structure.
3. Extend checkbox clickable area.

Bug: 142530063
Test: make -j52 RunSettingsRoboTests ROBOTEST_FILTER=ShortcutPreferenceTest
Change-Id: Iebb9f62653914a0d7200c627f01cf7953d576960
This commit is contained in:
jasonwshsu
2019-12-20 13:06:01 +08:00
parent 506b40078e
commit 0dd53520a5
7 changed files with 239 additions and 134 deletions

View File

@@ -19,7 +19,13 @@ package com.android.settings.accessibility;
import static com.google.common.truth.Truth.assertThat;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.LinearLayout;
import androidx.preference.PreferenceViewHolder;
import com.android.settings.R;
import org.junit.Before;
import org.junit.Test;
@@ -31,23 +37,64 @@ import org.robolectric.RuntimeEnvironment;
@RunWith(RobolectricTestRunner.class)
public class ShortcutPreferenceTest {
private static final String CHECKBOX_CLICKED = "checkbox_clicked";
private static final String SETTINGS_CLICKED = "settings_clicked";
private ShortcutPreference mShortcutPreference;
private View.OnClickListener mSettingButtonListener;
private View.OnClickListener mCheckBoxListener;
private PreferenceViewHolder mPreferenceViewHolder;
private String mResult;
private ShortcutPreference.OnClickListener mListener =
new ShortcutPreference.OnClickListener() {
@Override
public void onCheckboxClicked(ShortcutPreference preference) {
mResult = CHECKBOX_CLICKED;
}
@Override
public void onSettingsClicked(ShortcutPreference preference) {
mResult = SETTINGS_CLICKED;
}
};
@Before
public void setUp() {
final Context mContext = RuntimeEnvironment.application;
mShortcutPreference = new ShortcutPreference(mContext, null);
final Context context = RuntimeEnvironment.application;
mShortcutPreference = new ShortcutPreference(context, null);
final LayoutInflater inflater = LayoutInflater.from(context);
final View view =
inflater.inflate(R.layout.accessibility_shortcut_secondary_action, null);
mPreferenceViewHolder = PreferenceViewHolder.createInstanceForTests(view);
}
@Test
public void testClickLinearLayout_checkboxClicked() {
mShortcutPreference.onBindViewHolder(mPreferenceViewHolder);
mShortcutPreference.setOnClickListener(mListener);
LinearLayout mainFrame = mPreferenceViewHolder.itemView.findViewById(R.id.main_frame);
mainFrame.performClick();
assertThat(mResult).isEqualTo(CHECKBOX_CLICKED);
assertThat(mShortcutPreference.getChecked()).isTrue();
}
@Test
public void setOnClickListeners_shouldSetListeners() {
mShortcutPreference.setSettingButtonListener(mSettingButtonListener);
mShortcutPreference.setCheckBoxListener(mCheckBoxListener);
public void testClickSettings_settingsClicked() {
mShortcutPreference.onBindViewHolder(mPreferenceViewHolder);
mShortcutPreference.setOnClickListener(mListener);
assertThat(mShortcutPreference.getCheckBoxListener()).isEqualTo(mCheckBoxListener);
assertThat(mShortcutPreference.getSettingButtonListener()).isEqualTo(
mSettingButtonListener);
View settings = mPreferenceViewHolder.itemView.findViewById(android.R.id.widget_frame);
settings.performClick();
assertThat(mResult).isEqualTo(SETTINGS_CLICKED);
}
@Test
public void testSetCheckedTrue_getCheckedIsTrue() {
mShortcutPreference.setChecked(true);
assertThat(mShortcutPreference.getChecked()).isEqualTo(true);
}
}