diff --git a/src/com/android/settings/wifi/details2/WifiDetailPreferenceController2.java b/src/com/android/settings/wifi/details2/WifiDetailPreferenceController2.java index ef57e541423..7ef950f0a02 100644 --- a/src/com/android/settings/wifi/details2/WifiDetailPreferenceController2.java +++ b/src/com/android/settings/wifi/details2/WifiDetailPreferenceController2.java @@ -166,6 +166,7 @@ public class WifiDetailPreferenceController2 extends AbstractPreferenceControlle private NetworkInfo mNetworkInfo; private NetworkCapabilities mNetworkCapabilities; private int mRssiSignalLevel = -1; + @VisibleForTesting boolean mShowX; // Shows the Wi-Fi signal icon of Pie+x when it's true. private String[] mSignalStr; private WifiInfo mWifiInfo; private final WifiManager mWifiManager; @@ -555,7 +556,7 @@ public class WifiDetailPreferenceController2 extends AbstractPreferenceControlle } private void refreshRssiViews() { - int signalLevel = mWifiEntry.getLevel(); + final int signalLevel = mWifiEntry.getLevel(); // Disappears signal view if not in range. e.g. for saved networks. if (signalLevel == WifiEntry.WIFI_LEVEL_UNREACHABLE) { @@ -564,11 +565,14 @@ public class WifiDetailPreferenceController2 extends AbstractPreferenceControlle return; } - if (mRssiSignalLevel == signalLevel) { + final boolean showX = mWifiEntry.shouldShowXLevelIcon(); + + if (mRssiSignalLevel == signalLevel && mShowX == showX) { return; } mRssiSignalLevel = signalLevel; - Drawable wifiIcon = mIconInjector.getIcon(mRssiSignalLevel); + mShowX = showX; + Drawable wifiIcon = mIconInjector.getIcon(mShowX, mRssiSignalLevel); if (mEntityHeaderController != null) { mEntityHeaderController @@ -1006,8 +1010,8 @@ public class WifiDetailPreferenceController2 extends AbstractPreferenceControlle mContext = context; } - public Drawable getIcon(int level) { - return mContext.getDrawable(Utils.getWifiIconResource(level)).mutate(); + public Drawable getIcon(boolean showX, int level) { + return mContext.getDrawable(Utils.getWifiIconResource(showX, level)).mutate(); } } diff --git a/tests/robotests/src/com/android/settings/wifi/details2/WifiDetailPreferenceController2Test.java b/tests/robotests/src/com/android/settings/wifi/details2/WifiDetailPreferenceController2Test.java index 9aaaa43cd72..1f4254e4c4a 100644 --- a/tests/robotests/src/com/android/settings/wifi/details2/WifiDetailPreferenceController2Test.java +++ b/tests/robotests/src/com/android/settings/wifi/details2/WifiDetailPreferenceController2Test.java @@ -299,7 +299,7 @@ public class WifiDetailPreferenceController2Test { .thenReturn(mMockHeaderController); when(mMockHeaderController.setSecondSummary(nullable(String.class))) .thenReturn(mMockHeaderController); - when(mMockIconInjector.getIcon(anyInt())).thenReturn(new ColorDrawable()); + when(mMockIconInjector.getIcon(anyBoolean(), anyInt())).thenReturn(new ColorDrawable()); setupMockedPreferenceScreen(); } @@ -500,7 +500,7 @@ public class WifiDetailPreferenceController2Test { public void entityHeader_shouldHaveIconSetForConnectedNetwork() { setUpForConnectedNetwork(); setUpSpyController(); - Drawable expectedIcon = mMockIconInjector.getIcon(LEVEL); + Drawable expectedIcon = mMockIconInjector.getIcon(false /* showX */, LEVEL); displayAndResume(); @@ -510,7 +510,7 @@ public class WifiDetailPreferenceController2Test { @Test public void entityHeader_shouldHaveIconSetForDisconnectedNetwork() { setUpForDisconnectedNetwork(); - Drawable expectedIcon = mMockIconInjector.getIcon(LEVEL); + Drawable expectedIcon = mMockIconInjector.getIcon(false /* showX */, LEVEL); displayAndResume(); @@ -615,6 +615,7 @@ public class WifiDetailPreferenceController2Test { displayAndResume(); + assertThat(mController.mShowX).isFalse(); verify(mMockSignalStrengthPref).setIcon(any(Drawable.class)); } @@ -624,6 +625,7 @@ public class WifiDetailPreferenceController2Test { displayAndResume(); + assertThat(mController.mShowX).isFalse(); verify(mMockSignalStrengthPref).setIcon(any(Drawable.class)); } @@ -633,6 +635,7 @@ public class WifiDetailPreferenceController2Test { displayAndResume(); + assertThat(mController.mShowX).isFalse(); verify(mMockSignalStrengthPref, never()).setIcon(any(Drawable.class)); } @@ -645,6 +648,7 @@ public class WifiDetailPreferenceController2Test { displayAndResume(); + assertThat(mController.mShowX).isFalse(); verify(mMockSignalStrengthPref).setSummary(expectedStrength); } @@ -656,6 +660,7 @@ public class WifiDetailPreferenceController2Test { displayAndResume(); + assertThat(mController.mShowX).isFalse(); verify(mMockSignalStrengthPref).setSummary(expectedStrength); } @@ -665,9 +670,24 @@ public class WifiDetailPreferenceController2Test { displayAndResume(); + assertThat(mController.mShowX).isFalse(); verify(mMockSignalStrengthPref, never()).setSummary(any(String.class)); } + @Test + public void signalStrengthPref_shouldShowXLevelIcon_showXTrue() { + setUpForConnectedNetwork(); + setUpSpyController(); + final String expectedStrength = + mContext.getResources().getStringArray(R.array.wifi_signal)[LEVEL]; + when(mMockWifiEntry.shouldShowXLevelIcon()).thenReturn(true); + + displayAndResume(); + + assertThat(mController.mShowX).isTrue(); + verify(mMockSignalStrengthPref).setSummary(expectedStrength); + } + @Test public void linkSpeedPref_shouldNotShowIfNotSet() { setUpForConnectedNetwork(); @@ -1529,7 +1549,7 @@ public class WifiDetailPreferenceController2Test { ArgumentCaptor drawableCaptor = ArgumentCaptor.forClass(BitmapDrawable.class); Drawable original = mContext.getDrawable(Utils.getWifiIconResource(LEVEL)).mutate(); - when(mMockIconInjector.getIcon(anyInt())).thenReturn(original); + when(mMockIconInjector.getIcon(anyBoolean(), anyInt())).thenReturn(original); displayAndResume(); @@ -1548,7 +1568,7 @@ public class WifiDetailPreferenceController2Test { ArgumentCaptor drawableCaptor = ArgumentCaptor.forClass(BitmapDrawable.class); Drawable original = mContext.getDrawable(Utils.getWifiIconResource(LEVEL)).mutate(); - when(mMockIconInjector.getIcon(anyInt())).thenReturn(original); + when(mMockIconInjector.getIcon(anyBoolean(), anyInt())).thenReturn(original); displayAndResume();