Update detail icon only if its signal level changed.
Changes behavior to only render the wifi pie icon if the new rssi has resulted in a new signal level. Bug: 64712237 Test: make -j40 ROBOTEST_FILTER=WifiDetailPreferenceControllerTest RunSettingsRoboTests Change-Id: I01be2f87d61489242d646ff2003db13c9268ea14
This commit is contained in:
@@ -117,7 +117,7 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
|
|||||||
private Network mNetwork;
|
private Network mNetwork;
|
||||||
private NetworkInfo mNetworkInfo;
|
private NetworkInfo mNetworkInfo;
|
||||||
private NetworkCapabilities mNetworkCapabilities;
|
private NetworkCapabilities mNetworkCapabilities;
|
||||||
private int mRssi;
|
private int mRssiSignalLevel = -1;
|
||||||
private String[] mSignalStr;
|
private String[] mSignalStr;
|
||||||
private final WifiConfiguration mWifiConfig;
|
private final WifiConfiguration mWifiConfig;
|
||||||
private WifiInfo mWifiInfo;
|
private WifiInfo mWifiInfo;
|
||||||
@@ -338,7 +338,6 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
|
|||||||
refreshNetworkState();
|
refreshNetworkState();
|
||||||
|
|
||||||
// Update Connection Header icon and Signal Strength Preference
|
// Update Connection Header icon and Signal Strength Preference
|
||||||
mRssi = mWifiInfo.getRssi();
|
|
||||||
refreshRssiViews();
|
refreshRssiViews();
|
||||||
|
|
||||||
// MAC Address Pref
|
// MAC Address Pref
|
||||||
@@ -381,9 +380,13 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void refreshRssiViews() {
|
private void refreshRssiViews() {
|
||||||
int iconSignalLevel = WifiManager.calculateSignalLevel(
|
int signalLevel = mAccessPoint.getLevel();
|
||||||
mRssi, WifiManager.RSSI_LEVELS);
|
|
||||||
Drawable wifiIcon = mIconInjector.getIcon(iconSignalLevel);
|
if (mRssiSignalLevel == signalLevel) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
mRssiSignalLevel = signalLevel;
|
||||||
|
Drawable wifiIcon = mIconInjector.getIcon(mRssiSignalLevel);
|
||||||
|
|
||||||
wifiIcon.setTint(Utils.getColorAccent(mContext));
|
wifiIcon.setTint(Utils.getColorAccent(mContext));
|
||||||
mEntityHeaderController.setIcon(wifiIcon).done(mFragment.getActivity(), true /* rebind */);
|
mEntityHeaderController.setIcon(wifiIcon).done(mFragment.getActivity(), true /* rebind */);
|
||||||
@@ -393,8 +396,7 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
|
|||||||
R.color.wifi_details_icon_color, mContext.getTheme()));
|
R.color.wifi_details_icon_color, mContext.getTheme()));
|
||||||
mSignalStrengthPref.setIcon(wifiIconDark);
|
mSignalStrengthPref.setIcon(wifiIconDark);
|
||||||
|
|
||||||
int summarySignalLevel = mAccessPoint.getLevel();
|
mSignalStrengthPref.setDetailText(mSignalStr[mRssiSignalLevel]);
|
||||||
mSignalStrengthPref.setDetailText(mSignalStr[summarySignalLevel]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updatePreference(WifiDetailPreference pref, String detailText) {
|
private void updatePreference(WifiDetailPreference pref, String detailText) {
|
||||||
|
@@ -745,4 +745,24 @@ public class WifiDetailPreferenceControllerTest {
|
|||||||
verify(mockMetricsFeatureProvider)
|
verify(mockMetricsFeatureProvider)
|
||||||
.action(mockActivity, MetricsProto.MetricsEvent.ACTION_WIFI_SIGNIN);
|
.action(mockActivity, MetricsProto.MetricsEvent.ACTION_WIFI_SIGNIN);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testRefreshRssiViews_shouldNotUpdateIfLevelIsSame() {
|
||||||
|
displayAndResume();
|
||||||
|
|
||||||
|
mContext.sendBroadcast(new Intent(WifiManager.RSSI_CHANGED_ACTION));
|
||||||
|
|
||||||
|
verify(mockAccessPoint, times(2)).getLevel();
|
||||||
|
verify(mockIconInjector, times(1)).getIcon(anyInt());
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
public void testRefreshRssiViews_shouldUpdateOnLevelChange() {
|
||||||
|
displayAndResume();
|
||||||
|
|
||||||
|
when(mockAccessPoint.getLevel()).thenReturn(0);
|
||||||
|
mContext.sendBroadcast(new Intent(WifiManager.RSSI_CHANGED_ACTION));
|
||||||
|
|
||||||
|
verify(mockAccessPoint, times(2)).getLevel();
|
||||||
|
verify(mockIconInjector, times(2)).getIcon(anyInt());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user