summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/unit/WifiClientTest.java42
-rw-r--r--wifi/java/android/net/wifi/WifiConfigStore.java19
-rw-r--r--wifi/java/android/net/wifi/WifiStateMachine.java5
3 files changed, 65 insertions, 1 deletions
diff --git a/core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/unit/WifiClientTest.java b/core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/unit/WifiClientTest.java
index e22b0189f1dc..e44023bff472 100644
--- a/core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/unit/WifiClientTest.java
+++ b/core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/unit/WifiClientTest.java
@@ -271,4 +271,46 @@ public class WifiClientTest extends AndroidTestCase {
}
+ // Test case 6: test configured network status
+ @LargeTest
+ public void testWifiConfiguredNetworkStatus() {
+
+ /* Initialize */
+ mWifiManager.setWifiEnabled(false);
+ sleepAfterWifiEnable();
+
+ /* Ensure no network is CURRENT */
+ List<WifiConfiguration> configList = mWifiManager.getConfiguredNetworks();
+ for (WifiConfiguration c : configList) {
+ assertTrue(c.status != WifiConfiguration.Status.CURRENT);
+ }
+
+ /* Enable wifi */
+ mWifiManager.setWifiEnabled(true);
+ sleepAfterWifiEnable();
+
+ /* Ensure connected network is CURRENT */
+ String connectedSSID = mWifiManager.getConnectionInfo().getSSID();
+ configList = mWifiManager.getConfiguredNetworks();
+ for (WifiConfiguration c : configList) {
+ if (c.SSID.contains(connectedSSID)) {
+ assertTrue(c.status == WifiConfiguration.Status.CURRENT);
+ } else {
+ assertTrue(c.status != WifiConfiguration.Status.CURRENT);
+ }
+ }
+
+ /* Disable wifi */
+ mWifiManager.setWifiEnabled(false);
+ sleepAfterWifiEnable();
+
+ /* Ensure no network is CURRENT */
+ configList = mWifiManager.getConfiguredNetworks();
+ for (WifiConfiguration c : configList) {
+ assertTrue(c.status != WifiConfiguration.Status.CURRENT);
+ }
+ }
+
+
+
}
diff --git a/wifi/java/android/net/wifi/WifiConfigStore.java b/wifi/java/android/net/wifi/WifiConfigStore.java
index af48c7c870e2..d34541195d40 100644
--- a/wifi/java/android/net/wifi/WifiConfigStore.java
+++ b/wifi/java/android/net/wifi/WifiConfigStore.java
@@ -22,6 +22,7 @@ import android.net.DhcpInfoInternal;
import android.net.LinkAddress;
import android.net.LinkProperties;
import android.net.NetworkUtils;
+import android.net.NetworkInfo.DetailedState;
import android.net.ProxyProperties;
import android.net.RouteInfo;
import android.net.wifi.WifiConfiguration.IpAssignment;
@@ -276,6 +277,24 @@ class WifiConfigStore {
return result;
}
+ static void updateStatus(int netId, DetailedState state) {
+ if (netId != INVALID_NETWORK_ID) {
+ WifiConfiguration config = sConfiguredNetworks.get(netId);
+ if (config == null) return;
+ switch (state) {
+ case CONNECTED:
+ config.status = Status.CURRENT;
+ break;
+ case DISCONNECTED:
+ config.status = Status.ENABLED;
+ break;
+ default:
+ //do nothing, retain the existing state
+ break;
+ }
+ }
+ }
+
/**
* Forget the specified network and save config
*
diff --git a/wifi/java/android/net/wifi/WifiStateMachine.java b/wifi/java/android/net/wifi/WifiStateMachine.java
index 21dad82a3808..71d7c01e52de 100644
--- a/wifi/java/android/net/wifi/WifiStateMachine.java
+++ b/wifi/java/android/net/wifi/WifiStateMachine.java
@@ -1642,8 +1642,10 @@ public class WifiStateMachine extends StateMachine {
mWifiInfo.setRssi(MIN_RSSI);
mWifiInfo.setLinkSpeed(-1);
- /* send event to CM & network change broadcast */
setNetworkDetailedState(DetailedState.DISCONNECTED);
+ WifiConfigStore.updateStatus(mLastNetworkId, DetailedState.DISCONNECTED);
+
+ /* send event to CM & network change broadcast */
sendNetworkStateChangeBroadcast(mLastBssid);
/* Clear network properties */
@@ -1726,6 +1728,7 @@ public class WifiStateMachine extends StateMachine {
} else {
configureLinkProperties();
setNetworkDetailedState(DetailedState.CONNECTED);
+ WifiConfigStore.updateStatus(mLastNetworkId, DetailedState.CONNECTED);
sendNetworkStateChangeBroadcast(mLastBssid);
}
}