Fix the end-icon missing issue for Wi-Fi networks
- Because WifiEntryPreference needs to support policy transparency, the inherited class is changed from Preference to RestrictedPreference. - The RestrictedPreference will hides the end icon as default, causing this issue to happen. - Override the getSecondTargetResId() function with necessary resource id to avoid the end-icon being hidden. - Remove the redundant setWidgetLayoutResource, because it will be initialized in the extended class. Bug: 262456749 Test: manual test make RunSettingsRoboTests ROBOTEST_FILTER=WifiEntryPreferenceTest Change-Id: Ie3d3a649d3137dc705d7887c8e74592437d9ce61
This commit is contained in:
@@ -82,7 +82,6 @@ public class WifiEntryPreference extends RestrictedPreference implements
|
|||||||
super(context);
|
super(context);
|
||||||
|
|
||||||
setLayoutResource(R.layout.preference_access_point);
|
setLayoutResource(R.layout.preference_access_point);
|
||||||
setWidgetLayoutResource(R.layout.access_point_friction_widget);
|
|
||||||
mFrictionSld = getFrictionStateListDrawable();
|
mFrictionSld = getFrictionStateListDrawable();
|
||||||
mWifiEntry = wifiEntry;
|
mWifiEntry = wifiEntry;
|
||||||
mWifiEntry.setListener(this);
|
mWifiEntry.setListener(this);
|
||||||
@@ -280,6 +279,11 @@ public class WifiEntryPreference extends RestrictedPreference implements
|
|||||||
notifyChanged();
|
notifyChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected int getSecondTargetResId() {
|
||||||
|
return R.layout.access_point_friction_widget;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View view) {
|
public void onClick(View view) {
|
||||||
if (view.getId() == R.id.icon_button) {
|
if (view.getId() == R.id.icon_button) {
|
||||||
|
@@ -80,6 +80,8 @@ public class WifiEntryPreferenceTest {
|
|||||||
private static final String MOCK_SUMMARY = "summary";
|
private static final String MOCK_SUMMARY = "summary";
|
||||||
private static final String FAKE_URI_STRING = "fakeuri";
|
private static final String FAKE_URI_STRING = "fakeuri";
|
||||||
|
|
||||||
|
WifiEntryPreference mPref;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
mContext = RuntimeEnvironment.application;
|
mContext = RuntimeEnvironment.application;
|
||||||
@@ -105,6 +107,8 @@ public class WifiEntryPreferenceTest {
|
|||||||
.thenReturn(mMockShowXDrawable3);
|
.thenReturn(mMockShowXDrawable3);
|
||||||
when(mMockIconInjector.getIcon(true /* showX */, 4))
|
when(mMockIconInjector.getIcon(true /* showX */, 4))
|
||||||
.thenReturn(mMockShowXDrawable4);
|
.thenReturn(mMockShowXDrawable4);
|
||||||
|
|
||||||
|
mPref = new WifiEntryPreference(mContext, mMockWifiEntry, mMockIconInjector);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -128,52 +132,46 @@ public class WifiEntryPreferenceTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void titleChanged_refresh_shouldUpdateTitle() {
|
public void titleChanged_refresh_shouldUpdateTitle() {
|
||||||
final WifiEntryPreference pref =
|
|
||||||
new WifiEntryPreference(mContext, mMockWifiEntry, mMockIconInjector);
|
|
||||||
final String updatedTitle = "updated title";
|
final String updatedTitle = "updated title";
|
||||||
when(mMockWifiEntry.getTitle()).thenReturn(updatedTitle);
|
when(mMockWifiEntry.getTitle()).thenReturn(updatedTitle);
|
||||||
|
|
||||||
pref.refresh();
|
mPref.refresh();
|
||||||
|
|
||||||
assertThat(pref.getTitle()).isEqualTo(updatedTitle);
|
assertThat(mPref.getTitle().toString()).isEqualTo(updatedTitle);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void summaryChanged_refresh_shouldUpdateSummary() {
|
public void summaryChanged_refresh_shouldUpdateSummary() {
|
||||||
final WifiEntryPreference pref =
|
|
||||||
new WifiEntryPreference(mContext, mMockWifiEntry, mMockIconInjector);
|
|
||||||
final String updatedSummary = "updated summary";
|
final String updatedSummary = "updated summary";
|
||||||
when(mMockWifiEntry.getSummary(false /* concise */)).thenReturn(updatedSummary);
|
when(mMockWifiEntry.getSummary(false /* concise */)).thenReturn(updatedSummary);
|
||||||
|
|
||||||
pref.refresh();
|
mPref.refresh();
|
||||||
|
|
||||||
assertThat(pref.getSummary()).isEqualTo(updatedSummary);
|
assertThat(mPref.getSummary().toString()).isEqualTo(updatedSummary);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void levelChanged_refresh_shouldUpdateLevelIcon() {
|
public void levelChanged_refresh_shouldUpdateLevelIcon() {
|
||||||
final List<Drawable> iconList = new ArrayList<>();
|
final List<Drawable> iconList = new ArrayList<>();
|
||||||
final WifiEntryPreference pref =
|
|
||||||
new WifiEntryPreference(mContext, mMockWifiEntry, mMockIconInjector);
|
|
||||||
|
|
||||||
when(mMockWifiEntry.getLevel()).thenReturn(0);
|
when(mMockWifiEntry.getLevel()).thenReturn(0);
|
||||||
pref.refresh();
|
mPref.refresh();
|
||||||
iconList.add(pref.getIcon());
|
iconList.add(mPref.getIcon());
|
||||||
when(mMockWifiEntry.getLevel()).thenReturn(1);
|
when(mMockWifiEntry.getLevel()).thenReturn(1);
|
||||||
pref.refresh();
|
mPref.refresh();
|
||||||
iconList.add(pref.getIcon());
|
iconList.add(mPref.getIcon());
|
||||||
when(mMockWifiEntry.getLevel()).thenReturn(2);
|
when(mMockWifiEntry.getLevel()).thenReturn(2);
|
||||||
pref.refresh();
|
mPref.refresh();
|
||||||
iconList.add(pref.getIcon());
|
iconList.add(mPref.getIcon());
|
||||||
when(mMockWifiEntry.getLevel()).thenReturn(3);
|
when(mMockWifiEntry.getLevel()).thenReturn(3);
|
||||||
pref.refresh();
|
mPref.refresh();
|
||||||
iconList.add(pref.getIcon());
|
iconList.add(mPref.getIcon());
|
||||||
when(mMockWifiEntry.getLevel()).thenReturn(4);
|
when(mMockWifiEntry.getLevel()).thenReturn(4);
|
||||||
pref.refresh();
|
mPref.refresh();
|
||||||
iconList.add(pref.getIcon());
|
iconList.add(mPref.getIcon());
|
||||||
when(mMockWifiEntry.getLevel()).thenReturn(-1);
|
when(mMockWifiEntry.getLevel()).thenReturn(-1);
|
||||||
pref.refresh();
|
mPref.refresh();
|
||||||
iconList.add(pref.getIcon());
|
iconList.add(mPref.getIcon());
|
||||||
|
|
||||||
assertThat(iconList).containsExactly(mMockDrawable0, mMockDrawable1,
|
assertThat(iconList).containsExactly(mMockDrawable0, mMockDrawable1,
|
||||||
mMockDrawable2, mMockDrawable3, mMockDrawable4, null);
|
mMockDrawable2, mMockDrawable3, mMockDrawable4, null);
|
||||||
@@ -183,27 +181,25 @@ public class WifiEntryPreferenceTest {
|
|||||||
public void levelChanged_showXWifiRefresh_shouldUpdateLevelIcon() {
|
public void levelChanged_showXWifiRefresh_shouldUpdateLevelIcon() {
|
||||||
final List<Drawable> iconList = new ArrayList<>();
|
final List<Drawable> iconList = new ArrayList<>();
|
||||||
when(mMockWifiEntry.shouldShowXLevelIcon()).thenReturn(true);
|
when(mMockWifiEntry.shouldShowXLevelIcon()).thenReturn(true);
|
||||||
final WifiEntryPreference pref =
|
|
||||||
new WifiEntryPreference(mContext, mMockWifiEntry, mMockIconInjector);
|
|
||||||
|
|
||||||
when(mMockWifiEntry.getLevel()).thenReturn(0);
|
when(mMockWifiEntry.getLevel()).thenReturn(0);
|
||||||
pref.refresh();
|
mPref.refresh();
|
||||||
iconList.add(pref.getIcon());
|
iconList.add(mPref.getIcon());
|
||||||
when(mMockWifiEntry.getLevel()).thenReturn(1);
|
when(mMockWifiEntry.getLevel()).thenReturn(1);
|
||||||
pref.refresh();
|
mPref.refresh();
|
||||||
iconList.add(pref.getIcon());
|
iconList.add(mPref.getIcon());
|
||||||
when(mMockWifiEntry.getLevel()).thenReturn(2);
|
when(mMockWifiEntry.getLevel()).thenReturn(2);
|
||||||
pref.refresh();
|
mPref.refresh();
|
||||||
iconList.add(pref.getIcon());
|
iconList.add(mPref.getIcon());
|
||||||
when(mMockWifiEntry.getLevel()).thenReturn(3);
|
when(mMockWifiEntry.getLevel()).thenReturn(3);
|
||||||
pref.refresh();
|
mPref.refresh();
|
||||||
iconList.add(pref.getIcon());
|
iconList.add(mPref.getIcon());
|
||||||
when(mMockWifiEntry.getLevel()).thenReturn(4);
|
when(mMockWifiEntry.getLevel()).thenReturn(4);
|
||||||
pref.refresh();
|
mPref.refresh();
|
||||||
iconList.add(pref.getIcon());
|
iconList.add(mPref.getIcon());
|
||||||
when(mMockWifiEntry.getLevel()).thenReturn(-1);
|
when(mMockWifiEntry.getLevel()).thenReturn(-1);
|
||||||
pref.refresh();
|
mPref.refresh();
|
||||||
iconList.add(pref.getIcon());
|
iconList.add(mPref.getIcon());
|
||||||
|
|
||||||
assertThat(iconList).containsExactly(mMockShowXDrawable0, mMockShowXDrawable1,
|
assertThat(iconList).containsExactly(mMockShowXDrawable0, mMockShowXDrawable1,
|
||||||
mMockShowXDrawable2, mMockShowXDrawable3, mMockShowXDrawable4, null);
|
mMockShowXDrawable2, mMockShowXDrawable3, mMockShowXDrawable4, null);
|
||||||
@@ -212,14 +208,12 @@ public class WifiEntryPreferenceTest {
|
|||||||
@Test
|
@Test
|
||||||
public void notNull_whenGetHelpUriString_shouldSetImageButtonVisible() {
|
public void notNull_whenGetHelpUriString_shouldSetImageButtonVisible() {
|
||||||
when(mMockWifiEntry.getHelpUriString()).thenReturn(FAKE_URI_STRING);
|
when(mMockWifiEntry.getHelpUriString()).thenReturn(FAKE_URI_STRING);
|
||||||
final WifiEntryPreference pref =
|
|
||||||
new WifiEntryPreference(mContext, mMockWifiEntry, mMockIconInjector);
|
|
||||||
final LayoutInflater inflater = LayoutInflater.from(mContext);
|
final LayoutInflater inflater = LayoutInflater.from(mContext);
|
||||||
final View view = inflater.inflate(pref.getLayoutResource(), new LinearLayout(mContext),
|
final View view = inflater.inflate(mPref.getLayoutResource(), new LinearLayout(mContext),
|
||||||
false);
|
false);
|
||||||
final PreferenceViewHolder holder = PreferenceViewHolder.createInstanceForTests(view);
|
final PreferenceViewHolder holder = PreferenceViewHolder.createInstanceForTests(view);
|
||||||
|
|
||||||
pref.onBindViewHolder(holder);
|
mPref.onBindViewHolder(holder);
|
||||||
|
|
||||||
assertThat(view.findViewById(R.id.icon_button).getVisibility()).isEqualTo(View.VISIBLE);
|
assertThat(view.findViewById(R.id.icon_button).getVisibility()).isEqualTo(View.VISIBLE);
|
||||||
}
|
}
|
||||||
@@ -227,14 +221,12 @@ public class WifiEntryPreferenceTest {
|
|||||||
@Test
|
@Test
|
||||||
public void helpButton_whenGetHelpUriStringNotNull_shouldSetCorrectContentDescription() {
|
public void helpButton_whenGetHelpUriStringNotNull_shouldSetCorrectContentDescription() {
|
||||||
when(mMockWifiEntry.getHelpUriString()).thenReturn(FAKE_URI_STRING);
|
when(mMockWifiEntry.getHelpUriString()).thenReturn(FAKE_URI_STRING);
|
||||||
final WifiEntryPreference pref =
|
|
||||||
new WifiEntryPreference(mContext, mMockWifiEntry, mMockIconInjector);
|
|
||||||
final LayoutInflater inflater = LayoutInflater.from(mContext);
|
final LayoutInflater inflater = LayoutInflater.from(mContext);
|
||||||
final View view = inflater.inflate(pref.getLayoutResource(), new LinearLayout(mContext),
|
final View view = inflater.inflate(mPref.getLayoutResource(), new LinearLayout(mContext),
|
||||||
false);
|
false);
|
||||||
final PreferenceViewHolder holder = PreferenceViewHolder.createInstanceForTests(view);
|
final PreferenceViewHolder holder = PreferenceViewHolder.createInstanceForTests(view);
|
||||||
|
|
||||||
pref.onBindViewHolder(holder);
|
mPref.onBindViewHolder(holder);
|
||||||
|
|
||||||
assertThat(view.findViewById(R.id.icon_button).getContentDescription()).isEqualTo(
|
assertThat(view.findViewById(R.id.icon_button).getContentDescription()).isEqualTo(
|
||||||
mContext.getString(R.string.help_label));
|
mContext.getString(R.string.help_label));
|
||||||
@@ -243,25 +235,25 @@ public class WifiEntryPreferenceTest {
|
|||||||
@Test
|
@Test
|
||||||
public void subscriptionEntry_shouldSetImageButtonGone() {
|
public void subscriptionEntry_shouldSetImageButtonGone() {
|
||||||
when(mMockWifiEntry.isSubscription()).thenReturn(true);
|
when(mMockWifiEntry.isSubscription()).thenReturn(true);
|
||||||
final WifiEntryPreference pref =
|
|
||||||
new WifiEntryPreference(mContext, mMockWifiEntry, mMockIconInjector);
|
|
||||||
final LayoutInflater inflater = LayoutInflater.from(mContext);
|
final LayoutInflater inflater = LayoutInflater.from(mContext);
|
||||||
final View view = inflater.inflate(pref.getLayoutResource(), new LinearLayout(mContext),
|
final View view = inflater.inflate(mPref.getLayoutResource(), new LinearLayout(mContext),
|
||||||
false);
|
false);
|
||||||
final PreferenceViewHolder holder = PreferenceViewHolder.createInstanceForTests(view);
|
final PreferenceViewHolder holder = PreferenceViewHolder.createInstanceForTests(view);
|
||||||
|
|
||||||
pref.onBindViewHolder(holder);
|
mPref.onBindViewHolder(holder);
|
||||||
|
|
||||||
assertThat(view.findViewById(R.id.icon_button).getVisibility()).isEqualTo(View.GONE);
|
assertThat(view.findViewById(R.id.icon_button).getVisibility()).isEqualTo(View.GONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void updateIcon_ShouldSetTintListForDrawable() {
|
public void updateIcon_shouldSetTintListForDrawable() {
|
||||||
WifiEntryPreference pref =
|
mPref.updateIcon(false /* showX */, 4 /* level */);
|
||||||
new WifiEntryPreference(mContext, mMockWifiEntry, mMockIconInjector);
|
|
||||||
|
|
||||||
pref.updateIcon(false /* showX */, 4 /* level */);
|
|
||||||
|
|
||||||
verify(mMockDrawable4).setTintList(any());
|
verify(mMockDrawable4).setTintList(any());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getSecondTargetResId_shouldNotReturnZero() {
|
||||||
|
assertThat(mPref.getSecondTargetResId()).isNotEqualTo(0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user