diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java b/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java index 4a54451636509..ec4141518f827 100644 --- a/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java +++ b/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java @@ -1053,7 +1053,8 @@ public class AccessPoint implements Comparable { } /** Attempt to update the AccessPoint and return true if an update occurred. */ - public boolean update(WifiConfiguration config, WifiInfo info, NetworkInfo networkInfo) { + public boolean update( + @Nullable WifiConfiguration config, WifiInfo info, NetworkInfo networkInfo) { boolean updated = false; final int oldLevel = getLevel(); if (info != null && isInfoForThisAccessPoint(config, info)) { @@ -1088,9 +1089,9 @@ public class AccessPoint implements Comparable { return updated; } - void update(WifiConfiguration config) { + void update(@Nullable WifiConfiguration config) { mConfig = config; - networkId = config.networkId; + networkId = config != null ? config.networkId : WifiConfiguration.INVALID_NETWORK_ID; if (mAccessPointListener != null) { mAccessPointListener.onAccessPointChanged(this); } diff --git a/packages/SettingsLib/tests/integ/src/com/android/settingslib/wifi/AccessPointTest.java b/packages/SettingsLib/tests/integ/src/com/android/settingslib/wifi/AccessPointTest.java index 5c64cff78a884..c08dd6ed97cd2 100644 --- a/packages/SettingsLib/tests/integ/src/com/android/settingslib/wifi/AccessPointTest.java +++ b/packages/SettingsLib/tests/integ/src/com/android/settingslib/wifi/AccessPointTest.java @@ -656,4 +656,28 @@ public class AccessPointTest { assertThat(ap.update(newConfig, wifiInfo, networkInfo)).isFalse(); verify(mockListener).onAccessPointChanged(ap); } + + @Test + public void testUpdateWithNullWifiConfiguration_doesNotThrowNPE() { + int networkId = 123; + int rssi = -55; + WifiConfiguration config = new WifiConfiguration(); + config.networkId = networkId; + WifiInfo wifiInfo = new WifiInfo(); + wifiInfo.setNetworkId(networkId); + wifiInfo.setRssi(rssi); + + NetworkInfo networkInfo = + new NetworkInfo(ConnectivityManager.TYPE_WIFI, 0 /* subtype */, "WIFI", ""); + networkInfo.setDetailedState(NetworkInfo.DetailedState.CONNECTING, "", ""); + + AccessPoint ap = new TestAccessPointBuilder(mContext) + .setNetworkInfo(networkInfo) + .setNetworkId(networkId) + .setRssi(rssi) + .setWifiInfo(wifiInfo) + .build(); + + ap.update(null, wifiInfo, networkInfo); + } }