summaryrefslogtreecommitdiffstats
path: root/core/tests/ConnectivityManagerTest/src
diff options
context:
space:
mode:
authorIrfan Sheriff <isheriff@google.com>2010-12-21 09:44:15 -0800
committerIrfan Sheriff <isheriff@google.com>2010-12-22 14:43:13 -0800
commitb45e726bf5df9650e8a67a7c05bf2f41f414c07d (patch)
tree4adb26cf1c76f1295b42a194b59eebc5fa9aae03 /core/tests/ConnectivityManagerTest/src
parent3d808115791f85a3f0fc9c070ec48b2df41d70a9 (diff)
downloadframeworks_base-b45e726bf5df9650e8a67a7c05bf2f41f414c07d.zip
frameworks_base-b45e726bf5df9650e8a67a7c05bf2f41f414c07d.tar.gz
frameworks_base-b45e726bf5df9650e8a67a7c05bf2f41f414c07d.tar.bz2
Fix wifi broadcasts
Add the missing wifi disable broadcast and also send out supplicant disconnect on shutdown. Added unit test cases. Bug: 3294055 Change-Id: Ia56a8ec9d17784c5aac5b8b369c04837f9057c54
Diffstat (limited to 'core/tests/ConnectivityManagerTest/src')
-rw-r--r--core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/unit/WifiClientTest.java88
1 files changed, 88 insertions, 0 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 e0a3ee6..e22b018 100644
--- a/core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/unit/WifiClientTest.java
+++ b/core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/unit/WifiClientTest.java
@@ -18,14 +18,17 @@ package com.android.connectivitymanagertest.unit;
import android.content.BroadcastReceiver;
import android.content.Intent;
+import android.content.IntentFilter;
import android.content.Context;
import android.app.Instrumentation;
import android.os.Handler;
import android.os.Message;
+import android.net.NetworkInfo;
import android.net.wifi.WifiManager;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiConfiguration.KeyMgmt;
import android.net.wifi.WifiConfiguration.Status;
+import android.net.wifi.SupplicantState;
import android.test.suitebuilder.annotation.LargeTest;
import android.test.AndroidTestCase;
@@ -45,10 +48,62 @@ public class WifiClientTest extends AndroidTestCase {
//10s delay for turning on wifi
private static final int DELAY = 10000;
+ private WifiStateListener mWifiStateListener;
+ int mWifiState;
+ int mDisableBroadcastCounter = 0;
+ int mEnableBroadcastCounter = 0;
+ NetworkInfo mNetworkInfo;
+ boolean mSupplicantConnection;
+ SupplicantState mSupplicantState;
+
+ private class WifiStateListener extends BroadcastReceiver {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ String action = intent.getAction();
+ if (action.equals(WifiManager.WIFI_STATE_CHANGED_ACTION)) {
+ mWifiState = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE,
+ WifiManager.WIFI_STATE_UNKNOWN);
+ switch (mWifiState) {
+ case WifiManager.WIFI_STATE_DISABLING:
+ if (mDisableBroadcastCounter == 0) mDisableBroadcastCounter++;
+ break;
+ case WifiManager.WIFI_STATE_DISABLED:
+ if (mDisableBroadcastCounter == 1) mDisableBroadcastCounter++;
+ break;
+ case WifiManager.WIFI_STATE_ENABLING:
+ if (mEnableBroadcastCounter == 0) mEnableBroadcastCounter++;
+ break;
+ case WifiManager.WIFI_STATE_ENABLED:
+ if (mEnableBroadcastCounter == 1) mEnableBroadcastCounter++;
+ break;
+ }
+ } else if (action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) {
+ mNetworkInfo = (NetworkInfo)
+ intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
+ } else if (action.equals(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION)) {
+ mSupplicantState = (SupplicantState)
+ intent.getParcelableExtra(WifiManager.EXTRA_NEW_STATE);
+ } else if (action.equals(WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION)) {
+ mSupplicantConnection =
+ intent.getBooleanExtra(WifiManager.EXTRA_SUPPLICANT_CONNECTED, false);
+ }
+ }
+ }
@Override
protected void setUp() throws Exception {
super.setUp();
+
+ // register a connectivity receiver for CONNECTIVITY_ACTION;
+
+ mWifiStateListener = new WifiStateListener();
+ IntentFilter mIntentFilter = new IntentFilter();
+ mIntentFilter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
+ mIntentFilter.addAction(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION);
+ mIntentFilter.addAction(WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION);
+ mIntentFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
+ getContext().registerReceiver(mWifiStateListener, mIntentFilter);
+
mWifiManager = (WifiManager) getContext().getSystemService(Context.WIFI_SERVICE);
mWifiManager.setWifiEnabled(true);
assertNotNull(mWifiManager);
@@ -183,4 +238,37 @@ public class WifiClientTest extends AndroidTestCase {
assertTrue(ret);
mWifiManager.saveConfiguration();
}
+
+ // Test case 5: test wifi state change broadcasts
+ @LargeTest
+ public void testWifiBroadcasts() {
+
+ /* Initialize */
+ mWifiManager.setWifiEnabled(false);
+ sleepAfterWifiEnable();
+ mDisableBroadcastCounter = 0;
+ mEnableBroadcastCounter = 0;
+ mSupplicantConnection = false;
+ mNetworkInfo = null;
+ mSupplicantState = null;
+
+ /* Enable wifi */
+ mWifiManager.setWifiEnabled(true);
+ sleepAfterWifiEnable();
+ assertTrue(mEnableBroadcastCounter == 2);
+ assertTrue(mSupplicantConnection == true);
+ assertTrue(mNetworkInfo.isConnected());
+ assertTrue(mSupplicantState == SupplicantState.COMPLETED);
+
+
+ /* Disable wifi */
+ mWifiManager.setWifiEnabled(false);
+ sleepAfterWifiEnable();
+ assertTrue(mDisableBroadcastCounter == 2);
+ assertTrue(mSupplicantConnection == false);
+ assertTrue(!mNetworkInfo.isConnected());
+ assertTrue(mSupplicantState != SupplicantState.COMPLETED);
+
+ }
+
}