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);
|
||||
|
||||
setLayoutResource(R.layout.preference_access_point);
|
||||
setWidgetLayoutResource(R.layout.access_point_friction_widget);
|
||||
mFrictionSld = getFrictionStateListDrawable();
|
||||
mWifiEntry = wifiEntry;
|
||||
mWifiEntry.setListener(this);
|
||||
@@ -280,6 +279,11 @@ public class WifiEntryPreference extends RestrictedPreference implements
|
||||
notifyChanged();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getSecondTargetResId() {
|
||||
return R.layout.access_point_friction_widget;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
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 FAKE_URI_STRING = "fakeuri";
|
||||
|
||||
WifiEntryPreference mPref;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
mContext = RuntimeEnvironment.application;
|
||||
@@ -105,6 +107,8 @@ public class WifiEntryPreferenceTest {
|
||||
.thenReturn(mMockShowXDrawable3);
|
||||
when(mMockIconInjector.getIcon(true /* showX */, 4))
|
||||
.thenReturn(mMockShowXDrawable4);
|
||||
|
||||
mPref = new WifiEntryPreference(mContext, mMockWifiEntry, mMockIconInjector);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -128,52 +132,46 @@ public class WifiEntryPreferenceTest {
|
||||
|
||||
@Test
|
||||
public void titleChanged_refresh_shouldUpdateTitle() {
|
||||
final WifiEntryPreference pref =
|
||||
new WifiEntryPreference(mContext, mMockWifiEntry, mMockIconInjector);
|
||||
final String updatedTitle = "updated title";
|
||||
when(mMockWifiEntry.getTitle()).thenReturn(updatedTitle);
|
||||
|
||||
pref.refresh();
|
||||
mPref.refresh();
|
||||
|
||||
assertThat(pref.getTitle()).isEqualTo(updatedTitle);
|
||||
assertThat(mPref.getTitle().toString()).isEqualTo(updatedTitle);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void summaryChanged_refresh_shouldUpdateSummary() {
|
||||
final WifiEntryPreference pref =
|
||||
new WifiEntryPreference(mContext, mMockWifiEntry, mMockIconInjector);
|
||||
final String updatedSummary = "updated summary";
|
||||
when(mMockWifiEntry.getSummary(false /* concise */)).thenReturn(updatedSummary);
|
||||
|
||||
pref.refresh();
|
||||
mPref.refresh();
|
||||
|
||||
assertThat(pref.getSummary()).isEqualTo(updatedSummary);
|
||||
assertThat(mPref.getSummary().toString()).isEqualTo(updatedSummary);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void levelChanged_refresh_shouldUpdateLevelIcon() {
|
||||
final List<Drawable> iconList = new ArrayList<>();
|
||||
final WifiEntryPreference pref =
|
||||
new WifiEntryPreference(mContext, mMockWifiEntry, mMockIconInjector);
|
||||
|
||||
when(mMockWifiEntry.getLevel()).thenReturn(0);
|
||||
pref.refresh();
|
||||
iconList.add(pref.getIcon());
|
||||
mPref.refresh();
|
||||
iconList.add(mPref.getIcon());
|
||||
when(mMockWifiEntry.getLevel()).thenReturn(1);
|
||||
pref.refresh();
|
||||
iconList.add(pref.getIcon());
|
||||
mPref.refresh();
|
||||
iconList.add(mPref.getIcon());
|
||||
when(mMockWifiEntry.getLevel()).thenReturn(2);
|
||||
pref.refresh();
|
||||
iconList.add(pref.getIcon());
|
||||
mPref.refresh();
|
||||
iconList.add(mPref.getIcon());
|
||||
when(mMockWifiEntry.getLevel()).thenReturn(3);
|
||||
pref.refresh();
|
||||
iconList.add(pref.getIcon());
|
||||
mPref.refresh();
|
||||
iconList.add(mPref.getIcon());
|
||||
when(mMockWifiEntry.getLevel()).thenReturn(4);
|
||||
pref.refresh();
|
||||
iconList.add(pref.getIcon());
|
||||
mPref.refresh();
|
||||
iconList.add(mPref.getIcon());
|
||||
when(mMockWifiEntry.getLevel()).thenReturn(-1);
|
||||
pref.refresh();
|
||||
iconList.add(pref.getIcon());
|
||||
mPref.refresh();
|
||||
iconList.add(mPref.getIcon());
|
||||
|
||||
assertThat(iconList).containsExactly(mMockDrawable0, mMockDrawable1,
|
||||
mMockDrawable2, mMockDrawable3, mMockDrawable4, null);
|
||||
@@ -183,27 +181,25 @@ public class WifiEntryPreferenceTest {
|
||||
public void levelChanged_showXWifiRefresh_shouldUpdateLevelIcon() {
|
||||
final List<Drawable> iconList = new ArrayList<>();
|
||||
when(mMockWifiEntry.shouldShowXLevelIcon()).thenReturn(true);
|
||||
final WifiEntryPreference pref =
|
||||
new WifiEntryPreference(mContext, mMockWifiEntry, mMockIconInjector);
|
||||
|
||||
when(mMockWifiEntry.getLevel()).thenReturn(0);
|
||||
pref.refresh();
|
||||
iconList.add(pref.getIcon());
|
||||
mPref.refresh();
|
||||
iconList.add(mPref.getIcon());
|
||||
when(mMockWifiEntry.getLevel()).thenReturn(1);
|
||||
pref.refresh();
|
||||
iconList.add(pref.getIcon());
|
||||
mPref.refresh();
|
||||
iconList.add(mPref.getIcon());
|
||||
when(mMockWifiEntry.getLevel()).thenReturn(2);
|
||||
pref.refresh();
|
||||
iconList.add(pref.getIcon());
|
||||
mPref.refresh();
|
||||
iconList.add(mPref.getIcon());
|
||||
when(mMockWifiEntry.getLevel()).thenReturn(3);
|
||||
pref.refresh();
|
||||
iconList.add(pref.getIcon());
|
||||
mPref.refresh();
|
||||
iconList.add(mPref.getIcon());
|
||||
when(mMockWifiEntry.getLevel()).thenReturn(4);
|
||||
pref.refresh();
|
||||
iconList.add(pref.getIcon());
|
||||
mPref.refresh();
|
||||
iconList.add(mPref.getIcon());
|
||||
when(mMockWifiEntry.getLevel()).thenReturn(-1);
|
||||
pref.refresh();
|
||||
iconList.add(pref.getIcon());
|
||||
mPref.refresh();
|
||||
iconList.add(mPref.getIcon());
|
||||
|
||||
assertThat(iconList).containsExactly(mMockShowXDrawable0, mMockShowXDrawable1,
|
||||
mMockShowXDrawable2, mMockShowXDrawable3, mMockShowXDrawable4, null);
|
||||
@@ -212,14 +208,12 @@ public class WifiEntryPreferenceTest {
|
||||
@Test
|
||||
public void notNull_whenGetHelpUriString_shouldSetImageButtonVisible() {
|
||||
when(mMockWifiEntry.getHelpUriString()).thenReturn(FAKE_URI_STRING);
|
||||
final WifiEntryPreference pref =
|
||||
new WifiEntryPreference(mContext, mMockWifiEntry, mMockIconInjector);
|
||||
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);
|
||||
final PreferenceViewHolder holder = PreferenceViewHolder.createInstanceForTests(view);
|
||||
|
||||
pref.onBindViewHolder(holder);
|
||||
mPref.onBindViewHolder(holder);
|
||||
|
||||
assertThat(view.findViewById(R.id.icon_button).getVisibility()).isEqualTo(View.VISIBLE);
|
||||
}
|
||||
@@ -227,14 +221,12 @@ public class WifiEntryPreferenceTest {
|
||||
@Test
|
||||
public void helpButton_whenGetHelpUriStringNotNull_shouldSetCorrectContentDescription() {
|
||||
when(mMockWifiEntry.getHelpUriString()).thenReturn(FAKE_URI_STRING);
|
||||
final WifiEntryPreference pref =
|
||||
new WifiEntryPreference(mContext, mMockWifiEntry, mMockIconInjector);
|
||||
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);
|
||||
final PreferenceViewHolder holder = PreferenceViewHolder.createInstanceForTests(view);
|
||||
|
||||
pref.onBindViewHolder(holder);
|
||||
mPref.onBindViewHolder(holder);
|
||||
|
||||
assertThat(view.findViewById(R.id.icon_button).getContentDescription()).isEqualTo(
|
||||
mContext.getString(R.string.help_label));
|
||||
@@ -243,25 +235,25 @@ public class WifiEntryPreferenceTest {
|
||||
@Test
|
||||
public void subscriptionEntry_shouldSetImageButtonGone() {
|
||||
when(mMockWifiEntry.isSubscription()).thenReturn(true);
|
||||
final WifiEntryPreference pref =
|
||||
new WifiEntryPreference(mContext, mMockWifiEntry, mMockIconInjector);
|
||||
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);
|
||||
final PreferenceViewHolder holder = PreferenceViewHolder.createInstanceForTests(view);
|
||||
|
||||
pref.onBindViewHolder(holder);
|
||||
mPref.onBindViewHolder(holder);
|
||||
|
||||
assertThat(view.findViewById(R.id.icon_button).getVisibility()).isEqualTo(View.GONE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updateIcon_ShouldSetTintListForDrawable() {
|
||||
WifiEntryPreference pref =
|
||||
new WifiEntryPreference(mContext, mMockWifiEntry, mMockIconInjector);
|
||||
|
||||
pref.updateIcon(false /* showX */, 4 /* level */);
|
||||
public void updateIcon_shouldSetTintListForDrawable() {
|
||||
mPref.updateIcon(false /* showX */, 4 /* level */);
|
||||
|
||||
verify(mMockDrawable4).setTintList(any());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getSecondTargetResId_shouldNotReturnZero() {
|
||||
assertThat(mPref.getSecondTargetResId()).isNotEqualTo(0);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user