WifiController: correct active state after ap mode am: 24750cd1f8 am: c2a5d4f9e8
am: 947bc70db1
Change-Id: Icdc9fba30c0a4abf8841c8c58f03376eb006518c
diff --git a/service/java/com/android/server/wifi/WifiController.java b/service/java/com/android/server/wifi/WifiController.java
index 94310e9..bfbf449 100644
--- a/service/java/com/android/server/wifi/WifiController.java
+++ b/service/java/com/android/server/wifi/WifiController.java
@@ -703,7 +703,7 @@
case CMD_WIFI_TOGGLED:
if (mSettingsStore.isWifiToggleEnabled()) {
mWifiStateMachine.setHostApRunning(null, false);
- mPendingState = mStaEnabledState;
+ mPendingState = mDeviceActiveState;
}
break;
case CMD_SET_AP:
diff --git a/tests/wifitests/src/com/android/server/wifi/WifiControllerTest.java b/tests/wifitests/src/com/android/server/wifi/WifiControllerTest.java
index b10266e..065ba94 100644
--- a/tests/wifitests/src/com/android/server/wifi/WifiControllerTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/WifiControllerTest.java
@@ -273,6 +273,34 @@
}
/**
+ * When AP mode is enabled and wifi is toggled on, we should transition to
+ * DeviceActiveState after the AP is disabled.
+ * Enter DeviceActiveState, activate AP mode, toggle WiFi.
+ * <p>
+ * Expected: AP should successfully start and exit, then return to DeviceActiveState.
+ */
+ @Test
+ public void testReturnToDeviceActiveStateAfterWifiEnabledShutdown() throws Exception {
+ enableWifi();
+ assertEquals("DeviceActiveState", getCurrentState().getName());
+
+ mWifiController.obtainMessage(CMD_SET_AP, 1, 0).sendToTarget();
+ mLooper.dispatchAll();
+ assertEquals("ApEnabledState", getCurrentState().getName());
+
+ when(mSettingsStore.isWifiToggleEnabled()).thenReturn(true);
+ mWifiController.obtainMessage(CMD_WIFI_TOGGLED).sendToTarget();
+ mWifiController.obtainMessage(CMD_AP_STOPPED).sendToTarget();
+ mLooper.dispatchAll();
+
+ InOrder inOrder = inOrder(mWifiStateMachine);
+ inOrder.verify(mWifiStateMachine).setSupplicantRunning(true);
+ inOrder.verify(mWifiStateMachine).setOperationalMode(WifiStateMachine.CONNECT_MODE);
+ inOrder.verify(mWifiStateMachine).setDriverStart(true);
+ assertEquals("DeviceActiveState", getCurrentState().getName());
+ }
+
+ /**
* When the wifi device is idle, AP mode is enabled and disabled
* we should return to the appropriate Idle state.
* Enter DeviceActiveState, indicate idle device, activate AP mode, disable AP mode.