diff options
11 files changed, 244 insertions, 55 deletions
diff --git a/service/java/com/android/server/wifi/SupplicantStaIfaceHal.java b/service/java/com/android/server/wifi/SupplicantStaIfaceHal.java index 8ceb2caf4..08a953e6f 100644 --- a/service/java/com/android/server/wifi/SupplicantStaIfaceHal.java +++ b/service/java/com/android/server/wifi/SupplicantStaIfaceHal.java @@ -286,13 +286,28 @@ public class SupplicantStaIfaceHal { Log.e(TAG, "setupIface got null iface"); return false; } - ISupplicantStaIface iface = getStaIfaceMockable(ifaceHwBinder); - ISupplicantStaIfaceCallback callback = new SupplicantStaIfaceHalCallback(ifaceName); - if (!registerCallback(iface, callback)) { - return false; + SupplicantStaIfaceHalCallback callback = new SupplicantStaIfaceHalCallback(ifaceName); + + if (isV1_1()) { + android.hardware.wifi.supplicant.V1_1.ISupplicantStaIface iface = + getStaIfaceMockableV1_1(ifaceHwBinder); + SupplicantStaIfaceHalCallbackV1_1 callbackV1_1 = + new SupplicantStaIfaceHalCallbackV1_1(ifaceName, callback); + + if (!registerCallbackV1_1(iface, callbackV1_1)) { + return false; + } + mISupplicantStaIfaces.put(ifaceName, iface); + mISupplicantStaIfaceCallbacks.put(ifaceName, callbackV1_1); + } else { + ISupplicantStaIface iface = getStaIfaceMockable(ifaceHwBinder); + + if (!registerCallback(iface, callback)) { + return false; + } + mISupplicantStaIfaces.put(ifaceName, iface); + mISupplicantStaIfaceCallbacks.put(ifaceName, callback); } - mISupplicantStaIfaces.put(ifaceName, iface); - mISupplicantStaIfaceCallbacks.put(ifaceName, callback); return true; } @@ -557,6 +572,14 @@ public class SupplicantStaIfaceHal { } } + protected android.hardware.wifi.supplicant.V1_1.ISupplicantStaIface + getStaIfaceMockableV1_1(ISupplicantIface iface) { + synchronized (mLock) { + return android.hardware.wifi.supplicant.V1_1.ISupplicantStaIface. + asInterface(iface.asBinder()); + } + } + /** * Check if the device is running V1_1 supplicant service. * @return @@ -1093,6 +1116,23 @@ public class SupplicantStaIfaceHal { } } + private boolean registerCallbackV1_1( + android.hardware.wifi.supplicant.V1_1.ISupplicantStaIface iface, + android.hardware.wifi.supplicant.V1_1.ISupplicantStaIfaceCallback callback) { + synchronized (mLock) { + String methodStr = "registerCallback_1_1"; + + if (iface == null) return false; + try { + SupplicantStatus status = iface.registerCallback_1_1(callback); + return checkStatusAndLogFailure(status, methodStr); + } catch (RemoteException e) { + handleRemoteException(e, methodStr); + return false; + } + } + } + /** * @return a list of SupplicantNetworkID ints for all networks controlled by supplicant, returns * null if the call fails @@ -2398,11 +2438,7 @@ public class SupplicantStaIfaceHal { if (mStateIsFourway && (!locallyGenerated || reasonCode != ReasonCode.IE_IN_4WAY_DIFFERS)) { mWifiMonitor.broadcastAuthenticationFailureEvent( - mIfaceName, WifiManager.ERROR_AUTH_FAILURE_WRONG_PSWD); - } - if (reasonCode == ReasonCode.IEEE_802_1X_AUTH_FAILED) { - mWifiMonitor.broadcastAuthenticationFailureEvent( - mIfaceName, WifiManager.ERROR_AUTH_FAILURE_EAP_FAILURE); + mIfaceName, WifiManager.ERROR_AUTH_FAILURE_WRONG_PSWD, -1); } mWifiMonitor.broadcastNetworkDisconnectionEvent( mIfaceName, locallyGenerated ? 1 : 0, reasonCode, @@ -2424,7 +2460,7 @@ public class SupplicantStaIfaceHal { synchronized (mLock) { logCallback("onAuthenticationTimeout"); mWifiMonitor.broadcastAuthenticationFailureEvent( - mIfaceName, WifiManager.ERROR_AUTH_FAILURE_TIMEOUT); + mIfaceName, WifiManager.ERROR_AUTH_FAILURE_TIMEOUT, -1); } } @@ -2447,7 +2483,7 @@ public class SupplicantStaIfaceHal { synchronized (mLock) { logCallback("onEapFailure"); mWifiMonitor.broadcastAuthenticationFailureEvent( - mIfaceName, WifiManager.ERROR_AUTH_FAILURE_EAP_FAILURE); + mIfaceName, WifiManager.ERROR_AUTH_FAILURE_EAP_FAILURE, -1); } } @@ -2495,6 +2531,120 @@ public class SupplicantStaIfaceHal { } } + private class SupplicantStaIfaceHalCallbackV1_1 extends + android.hardware.wifi.supplicant.V1_1.ISupplicantStaIfaceCallback.Stub { + private String mIfaceName; + private SupplicantStaIfaceHalCallback mCallbackV1_0; + + SupplicantStaIfaceHalCallbackV1_1(@NonNull String ifaceName, + @NonNull SupplicantStaIfaceHalCallback callback) { + mIfaceName = ifaceName; + mCallbackV1_0 = callback; + } + + @Override + public void onNetworkAdded(int id) { + mCallbackV1_0.onNetworkAdded(id); + } + + @Override + public void onNetworkRemoved(int id) { + mCallbackV1_0.onNetworkRemoved(id); + } + + @Override + public void onStateChanged(int newState, byte[/* 6 */] bssid, int id, + ArrayList<Byte> ssid) { + mCallbackV1_0.onStateChanged(newState, bssid, id, ssid); + } + + @Override + public void onAnqpQueryDone(byte[/* 6 */] bssid, + ISupplicantStaIfaceCallback.AnqpData data, + ISupplicantStaIfaceCallback.Hs20AnqpData hs20Data) { + mCallbackV1_0.onAnqpQueryDone(bssid, data, hs20Data); + } + + @Override + public void onHs20IconQueryDone(byte[/* 6 */] bssid, String fileName, + ArrayList<Byte> data) { + mCallbackV1_0.onHs20IconQueryDone(bssid, fileName, data); + } + + @Override + public void onHs20SubscriptionRemediation(byte[/* 6 */] bssid, + byte osuMethod, String url) { + mCallbackV1_0.onHs20SubscriptionRemediation(bssid, osuMethod, url); + } + + @Override + public void onHs20DeauthImminentNotice(byte[/* 6 */] bssid, int reasonCode, + int reAuthDelayInSec, String url) { + mCallbackV1_0.onHs20DeauthImminentNotice(bssid, reasonCode, reAuthDelayInSec, url); + } + + @Override + public void onDisconnected(byte[/* 6 */] bssid, boolean locallyGenerated, + int reasonCode) { + mCallbackV1_0.onDisconnected(bssid, locallyGenerated, reasonCode); + } + + @Override + public void onAssociationRejected(byte[/* 6 */] bssid, int statusCode, + boolean timedOut) { + mCallbackV1_0.onAssociationRejected(bssid, statusCode, timedOut); + } + + @Override + public void onAuthenticationTimeout(byte[/* 6 */] bssid) { + mCallbackV1_0.onAuthenticationTimeout(bssid); + } + + @Override + public void onBssidChanged(byte reason, byte[/* 6 */] bssid) { + mCallbackV1_0.onBssidChanged(reason, bssid); + } + + @Override + public void onEapFailure() { + mCallbackV1_0.onEapFailure(); + } + + @Override + public void onEapFailure_1_1(int code) { + synchronized (mLock) { + logCallback("onEapFailure_1_1"); + mWifiMonitor.broadcastAuthenticationFailureEvent( + mIfaceName, WifiManager.ERROR_AUTH_FAILURE_EAP_FAILURE, code); + } + } + + @Override + public void onWpsEventSuccess() { + mCallbackV1_0.onWpsEventSuccess(); + } + + @Override + public void onWpsEventFail(byte[/* 6 */] bssid, short configError, short errorInd) { + mCallbackV1_0.onWpsEventFail(bssid, configError, errorInd); + } + + @Override + public void onWpsEventPbcOverlap() { + mCallbackV1_0.onWpsEventPbcOverlap(); + } + + @Override + public void onExtRadioWorkStart(int id) { + mCallbackV1_0.onExtRadioWorkStart(id); + } + + @Override + public void onExtRadioWorkTimeout(int id) { + mCallbackV1_0.onExtRadioWorkTimeout(id); + } + } + private static void logd(String s) { Log.d(TAG, s); } diff --git a/service/java/com/android/server/wifi/SupplicantStateTracker.java b/service/java/com/android/server/wifi/SupplicantStateTracker.java index cac7f06df..db4e5cece 100644 --- a/service/java/com/android/server/wifi/SupplicantStateTracker.java +++ b/service/java/com/android/server/wifi/SupplicantStateTracker.java @@ -241,7 +241,7 @@ public class SupplicantStateTracker extends StateMachine { switch (message.what) { case WifiMonitor.AUTHENTICATION_FAILURE_EVENT: mAuthFailureInSupplicantBroadcast = true; - mAuthFailureReason = message.arg2; + mAuthFailureReason = message.arg1; break; case WifiMonitor.SUPPLICANT_STATE_CHANGE_EVENT: StateChangeResult stateChangeResult = (StateChangeResult) message.obj; diff --git a/service/java/com/android/server/wifi/WifiMetrics.java b/service/java/com/android/server/wifi/WifiMetrics.java index cfc30badc..99cbdb0c3 100644 --- a/service/java/com/android/server/wifi/WifiMetrics.java +++ b/service/java/com/android/server/wifi/WifiMetrics.java @@ -2316,7 +2316,7 @@ public class WifiMetrics { break; case WifiMonitor.AUTHENTICATION_FAILURE_EVENT: event.type = StaEvent.TYPE_AUTHENTICATION_FAILURE_EVENT; - switch (msg.arg2) { + switch (msg.arg1) { case WifiManager.ERROR_AUTH_FAILURE_NONE: event.authFailureReason = StaEvent.AUTH_FAILURE_NONE; break; diff --git a/service/java/com/android/server/wifi/WifiMonitor.java b/service/java/com/android/server/wifi/WifiMonitor.java index 58f318c4a..8599a5914 100644 --- a/service/java/com/android/server/wifi/WifiMonitor.java +++ b/service/java/com/android/server/wifi/WifiMonitor.java @@ -449,9 +449,11 @@ public class WifiMonitor { * {@link android.net.wifi.WifiManager#ERROR_AUTH_FAILURE_TIMEOUT}, * {@link android.net.wifi.WifiManager#ERROR_AUTH_FAILURE_WRONG_PSWD}, * {@link android.net.wifi.WifiManager#ERROR_AUTH_FAILURE_EAP_FAILURE} + * @param errorCode Error code associated with the authentication failure event. + * A value of -1 is used when no error code is reported. */ - public void broadcastAuthenticationFailureEvent(String iface, int reason) { - sendMessage(iface, AUTHENTICATION_FAILURE_EVENT, 0, reason); + public void broadcastAuthenticationFailureEvent(String iface, int reason, int errorCode) { + sendMessage(iface, AUTHENTICATION_FAILURE_EVENT, reason, errorCode); } /** diff --git a/service/java/com/android/server/wifi/WifiNative.java b/service/java/com/android/server/wifi/WifiNative.java index 66dcbae75..5d838b0fd 100644 --- a/service/java/com/android/server/wifi/WifiNative.java +++ b/service/java/com/android/server/wifi/WifiNative.java @@ -1507,6 +1507,11 @@ public class WifiNative { public static final String SIM_AUTH_RESP_TYPE_UMTS_AUTS = "UMTS-AUTS"; /** + * EAP-SIM Error Codes + */ + public static final int EAP_SIM_VENDOR_SPECIFIC_CERT_EXPIRED = 16385; + + /** * Send the sim auth response for the currently configured network. * * @param ifaceName Name of the interface. diff --git a/service/java/com/android/server/wifi/WifiStateMachine.java b/service/java/com/android/server/wifi/WifiStateMachine.java index d22e4fb61..b24d89519 100644 --- a/service/java/com/android/server/wifi/WifiStateMachine.java +++ b/service/java/com/android/server/wifi/WifiStateMachine.java @@ -4307,7 +4307,7 @@ public class WifiStateMachine extends StateMachine { int disableReason = WifiConfiguration.NetworkSelectionStatus .DISABLED_AUTHENTICATION_FAILURE; // Check if this is a permanent wrong password failure. - if (isPermanentWrongPasswordFailure(mTargetNetworkId, message.arg2)) { + if (isPermanentWrongPasswordFailure(mTargetNetworkId, message.arg1)) { disableReason = WifiConfiguration.NetworkSelectionStatus .DISABLED_BY_WRONG_PASSWORD; WifiConfiguration targetedNetwork = diff --git a/tests/wifitests/src/com/android/server/wifi/SupplicantStaIfaceHalTest.java b/tests/wifitests/src/com/android/server/wifi/SupplicantStaIfaceHalTest.java index 5e49cc257..04af83263 100644 --- a/tests/wifitests/src/com/android/server/wifi/SupplicantStaIfaceHalTest.java +++ b/tests/wifitests/src/com/android/server/wifi/SupplicantStaIfaceHalTest.java @@ -97,6 +97,8 @@ public class SupplicantStaIfaceHalTest { private android.hardware.wifi.supplicant.V1_1.ISupplicant mISupplicantMockV1_1; private @Mock ISupplicantIface mISupplicantIfaceMock; private @Mock ISupplicantStaIface mISupplicantStaIfaceMock; + private @Mock android.hardware.wifi.supplicant.V1_1.ISupplicantStaIface + mISupplicantStaIfaceMockV1_1; private @Mock Context mContext; private @Mock WifiMonitor mWifiMonitor; private @Mock SupplicantStaNetworkHal mSupplicantStaNetworkMock; @@ -108,6 +110,8 @@ public class SupplicantStaIfaceHalTest { ISupplicant.IfaceInfo mP2pIface; ArrayList<ISupplicant.IfaceInfo> mIfaceInfoList; ISupplicantStaIfaceCallback mISupplicantStaIfaceCallback; + android.hardware.wifi.supplicant.V1_1.ISupplicantStaIfaceCallback + mISupplicantStaIfaceCallbackV1_1; private SupplicantStaIfaceHal mDut; private ArgumentCaptor<IHwBinder.DeathRecipient> mServiceManagerDeathCaptor = ArgumentCaptor.forClass(IHwBinder.DeathRecipient.class); @@ -146,6 +150,12 @@ public class SupplicantStaIfaceHalTest { } @Override + protected android.hardware.wifi.supplicant.V1_1.ISupplicantStaIface + getStaIfaceMockableV1_1(ISupplicantIface iface) { + return mISupplicantStaIfaceMockV1_1; + } + + @Override protected SupplicantStaNetworkHal getStaNetworkMockable( @NonNull String ifaceName, ISupplicantStaNetwork iSupplicantStaNetwork) { @@ -1171,11 +1181,11 @@ public class SupplicantStaIfaceHalTest { int reasonCode = 3; mISupplicantStaIfaceCallback.onDisconnected( NativeUtil.macAddressToByteArray(BSSID), true, reasonCode); - verify(mWifiMonitor, times(0)).broadcastAuthenticationFailureEvent(any(), anyInt()); + verify(mWifiMonitor, times(0)).broadcastAuthenticationFailureEvent(any(), anyInt(), anyInt()); mISupplicantStaIfaceCallback.onDisconnected( NativeUtil.macAddressToByteArray(BSSID), false, reasonCode); - verify(mWifiMonitor, times(0)).broadcastAuthenticationFailureEvent(any(), anyInt()); + verify(mWifiMonitor, times(0)).broadcastAuthenticationFailureEvent(any(), anyInt(), anyInt()); mISupplicantStaIfaceCallback.onStateChanged( ISupplicantStaIfaceCallback.State.FOURWAY_HANDSHAKE, @@ -1188,8 +1198,7 @@ public class SupplicantStaIfaceHalTest { NativeUtil.macAddressToByteArray(BSSID), false, reasonCode); verify(mWifiMonitor, times(2)).broadcastAuthenticationFailureEvent(eq(WLAN0_IFACE_NAME), - eq(WifiManager.ERROR_AUTH_FAILURE_WRONG_PSWD)); - + eq(WifiManager.ERROR_AUTH_FAILURE_WRONG_PSWD), eq(-1)); } /** @@ -1211,7 +1220,8 @@ public class SupplicantStaIfaceHalTest { NativeUtil.decodeSsid(SUPPLICANT_SSID)); mISupplicantStaIfaceCallback.onDisconnected( NativeUtil.macAddressToByteArray(BSSID), true, reasonCode); - verify(mWifiMonitor, times(0)).broadcastAuthenticationFailureEvent(any(), anyInt()); + verify(mWifiMonitor, times(0)).broadcastAuthenticationFailureEvent(any(), anyInt(), + anyInt()); } /** @@ -1225,8 +1235,8 @@ public class SupplicantStaIfaceHalTest { int reasonCode = ISupplicantStaIfaceCallback.ReasonCode.IEEE_802_1X_AUTH_FAILED; mISupplicantStaIfaceCallback.onDisconnected( NativeUtil.macAddressToByteArray(BSSID), false, reasonCode); - verify(mWifiMonitor).broadcastAuthenticationFailureEvent(eq(WLAN0_IFACE_NAME), - eq(WifiManager.ERROR_AUTH_FAILURE_EAP_FAILURE)); + verify(mWifiMonitor, times(0)).broadcastAuthenticationFailureEvent(any(), anyInt(), + anyInt()); } /** @@ -1255,7 +1265,7 @@ public class SupplicantStaIfaceHalTest { mISupplicantStaIfaceCallback.onAuthenticationTimeout( NativeUtil.macAddressToByteArray(BSSID)); verify(mWifiMonitor).broadcastAuthenticationFailureEvent(eq(WLAN0_IFACE_NAME), - eq(WifiManager.ERROR_AUTH_FAILURE_TIMEOUT)); + eq(WifiManager.ERROR_AUTH_FAILURE_TIMEOUT), eq(-1)); } /** @@ -1291,12 +1301,14 @@ public class SupplicantStaIfaceHalTest { */ @Test public void testEapFailureCallback() throws Exception { - executeAndValidateInitializationSequence(); - assertNotNull(mISupplicantStaIfaceCallback); + int eapFailureCode = WifiNative.EAP_SIM_VENDOR_SPECIFIC_CERT_EXPIRED; + testInitialize_successV1_1(); + assertNotNull(mISupplicantStaIfaceCallbackV1_1); - mISupplicantStaIfaceCallback.onEapFailure(); - verify(mWifiMonitor).broadcastAuthenticationFailureEvent(eq(WLAN0_IFACE_NAME), - eq(WifiManager.ERROR_AUTH_FAILURE_EAP_FAILURE)); + mISupplicantStaIfaceCallbackV1_1.onEapFailure_1_1(eapFailureCode); + verify(mWifiMonitor).broadcastAuthenticationFailureEvent( + eq(WLAN0_IFACE_NAME), eq(WifiManager.ERROR_AUTH_FAILURE_EAP_FAILURE), + eq(eapFailureCode)); } /** @@ -1611,16 +1623,18 @@ public class SupplicantStaIfaceHalTest { } /** Callback registeration */ doAnswer(new MockAnswerUtil.AnswerWithArguments() { - public SupplicantStatus answer(ISupplicantStaIfaceCallback cb) + public SupplicantStatus answer( + android.hardware.wifi.supplicant.V1_1.ISupplicantStaIfaceCallback cb) throws RemoteException { - mISupplicantStaIfaceCallback = cb; + mISupplicantStaIfaceCallbackV1_1 = cb; return mStatusSuccess; } - }).when(mISupplicantStaIfaceMock) - .registerCallback(any(ISupplicantStaIfaceCallback.class)); + }).when(mISupplicantStaIfaceMockV1_1) + .registerCallback_1_1( + any(android.hardware.wifi.supplicant.V1_1.ISupplicantStaIfaceCallback.class)); mInOrder = inOrder(mServiceManagerMock, mISupplicantMock, mISupplicantMockV1_1, - mISupplicantStaIfaceMock, mWifiMonitor); + mISupplicantStaIfaceMockV1_1, mWifiMonitor); // Initialize SupplicantStaIfaceHal, should call serviceManager.registerForNotifications assertTrue(mDut.initialize()); // verify: service manager initialization sequence @@ -1645,8 +1659,9 @@ public class SupplicantStaIfaceHalTest { eq(WLAN0_IFACE_NAME)); } if (!causeRemoteException && !getNullInterface) { - mInOrder.verify(mISupplicantStaIfaceMock) - .registerCallback(any(ISupplicantStaIfaceCallback.class)); + mInOrder.verify(mISupplicantStaIfaceMockV1_1) + .registerCallback_1_1( + any(android.hardware.wifi.supplicant.V1_1.ISupplicantStaIfaceCallback.class)); } // Ensure we don't try to use the listInterfaces method from 1.0 version. diff --git a/tests/wifitests/src/com/android/server/wifi/SupplicantStateTrackerTest.java b/tests/wifitests/src/com/android/server/wifi/SupplicantStateTrackerTest.java index 98fa80046..a780da287 100644 --- a/tests/wifitests/src/com/android/server/wifi/SupplicantStateTrackerTest.java +++ b/tests/wifitests/src/com/android/server/wifi/SupplicantStateTrackerTest.java @@ -176,8 +176,8 @@ public class SupplicantStateTrackerTest { IntentFilter mIntentFilter = new IntentFilter(); mIntentFilter.addAction(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION); mContext.registerReceiver(wifiBroadcastReceiver, mIntentFilter); - mSupplicantStateTracker.sendMessage(WifiMonitor.AUTHENTICATION_FAILURE_EVENT, 0, - WifiManager.ERROR_AUTH_FAILURE_WRONG_PSWD); + mSupplicantStateTracker.sendMessage(WifiMonitor.AUTHENTICATION_FAILURE_EVENT, + WifiManager.ERROR_AUTH_FAILURE_WRONG_PSWD, -1); mSupplicantStateTracker.sendMessage(getSupplicantStateChangeMessage(0, sWifiSsid, sBSSID, SupplicantState.AUTHENTICATING)); } diff --git a/tests/wifitests/src/com/android/server/wifi/WifiMetricsTest.java b/tests/wifitests/src/com/android/server/wifi/WifiMetricsTest.java index 7071a5102..128041836 100644 --- a/tests/wifitests/src/com/android/server/wifi/WifiMetricsTest.java +++ b/tests/wifitests/src/com/android/server/wifi/WifiMetricsTest.java @@ -1220,15 +1220,15 @@ public class WifiMetricsTest { private final WifiConfiguration mTestWifiConfig = createComplexWifiConfig(); // <msg.what> <msg.arg1> <msg.arg2> private int[][] mTestStaMessageInts = { - {WifiMonitor.ASSOCIATION_REJECTION_EVENT, ASSOC_TIMEOUT, ASSOC_STATUS}, - {WifiMonitor.AUTHENTICATION_FAILURE_EVENT, 0, AUTH_FAILURE_REASON}, - {WifiMonitor.NETWORK_CONNECTION_EVENT, 0, 0}, - {WifiMonitor.NETWORK_DISCONNECTION_EVENT, LOCAL_GEN, DEAUTH_REASON}, - {WifiMonitor.SUPPLICANT_STATE_CHANGE_EVENT, 0, 0}, - {WifiStateMachine.CMD_ASSOCIATED_BSSID, 0, 0}, - {WifiStateMachine.CMD_TARGET_BSSID, 0, 0}, - {WifiMonitor.SUPPLICANT_STATE_CHANGE_EVENT, 0, 0}, - {WifiMonitor.SUPPLICANT_STATE_CHANGE_EVENT, 0, 0} + {WifiMonitor.ASSOCIATION_REJECTION_EVENT, ASSOC_TIMEOUT, ASSOC_STATUS}, + {WifiMonitor.AUTHENTICATION_FAILURE_EVENT, AUTH_FAILURE_REASON, -1}, + {WifiMonitor.NETWORK_CONNECTION_EVENT, 0, 0}, + {WifiMonitor.NETWORK_DISCONNECTION_EVENT, LOCAL_GEN, DEAUTH_REASON}, + {WifiMonitor.SUPPLICANT_STATE_CHANGE_EVENT, 0, 0}, + {WifiStateMachine.CMD_ASSOCIATED_BSSID, 0, 0}, + {WifiStateMachine.CMD_TARGET_BSSID, 0, 0}, + {WifiMonitor.SUPPLICANT_STATE_CHANGE_EVENT, 0, 0}, + {WifiMonitor.SUPPLICANT_STATE_CHANGE_EVENT, 0, 0} }; private Object[] mTestStaMessageObjs = { null, diff --git a/tests/wifitests/src/com/android/server/wifi/WifiMonitorTest.java b/tests/wifitests/src/com/android/server/wifi/WifiMonitorTest.java index eb57da39e..c3e08cb2f 100644 --- a/tests/wifitests/src/com/android/server/wifi/WifiMonitorTest.java +++ b/tests/wifitests/src/com/android/server/wifi/WifiMonitorTest.java @@ -348,16 +348,33 @@ public class WifiMonitorTest { mWifiMonitor.registerHandler( WLAN_IFACE_NAME, WifiMonitor.AUTHENTICATION_FAILURE_EVENT, mHandlerSpy); int reason = WifiManager.ERROR_AUTH_FAILURE_WRONG_PSWD; - mWifiMonitor.broadcastAuthenticationFailureEvent(WLAN_IFACE_NAME, reason); + mWifiMonitor.broadcastAuthenticationFailureEvent(WLAN_IFACE_NAME, reason, -1); mLooper.dispatchAll(); ArgumentCaptor<Message> messageCaptor = ArgumentCaptor.forClass(Message.class); verify(mHandlerSpy).handleMessage(messageCaptor.capture()); assertEquals(WifiMonitor.AUTHENTICATION_FAILURE_EVENT, messageCaptor.getValue().what); - assertEquals(reason, messageCaptor.getValue().arg2); - + assertEquals(reason, messageCaptor.getValue().arg1); } + /** + * Broadcast authentication failure test (EAP Error). + */ + @Test + public void testBroadcastAuthenticationFailureEapErrorEvent() { + mWifiMonitor.registerHandler( + WLAN_IFACE_NAME, WifiMonitor.AUTHENTICATION_FAILURE_EVENT, mHandlerSpy); + int reason = WifiManager.ERROR_AUTH_FAILURE_EAP_FAILURE; + int errorCode = WifiNative.EAP_SIM_VENDOR_SPECIFIC_CERT_EXPIRED; + mWifiMonitor.broadcastAuthenticationFailureEvent(WLAN_IFACE_NAME, reason, errorCode); + mLooper.dispatchAll(); + + ArgumentCaptor<Message> messageCaptor = ArgumentCaptor.forClass(Message.class); + verify(mHandlerSpy).handleMessage(messageCaptor.capture()); + assertEquals(WifiMonitor.AUTHENTICATION_FAILURE_EVENT, messageCaptor.getValue().what); + assertEquals(reason, messageCaptor.getValue().arg1); + assertEquals(errorCode, messageCaptor.getValue().arg2); + } /** * Broadcast association rejection test. diff --git a/tests/wifitests/src/com/android/server/wifi/WifiStateMachineTest.java b/tests/wifitests/src/com/android/server/wifi/WifiStateMachineTest.java index 5d5ef3d9f..cf6ff8e53 100644 --- a/tests/wifitests/src/com/android/server/wifi/WifiStateMachineTest.java +++ b/tests/wifitests/src/com/android/server/wifi/WifiStateMachineTest.java @@ -1208,7 +1208,7 @@ public class WifiStateMachineTest { config.getNetworkSelectionStatus().setHasEverConnected(true); when(mWifiConfigManager.getConfiguredNetwork(anyInt())).thenReturn(config); - mWsm.sendMessage(WifiMonitor.AUTHENTICATION_FAILURE_EVENT, 0, + mWsm.sendMessage(WifiMonitor.AUTHENTICATION_FAILURE_EVENT, WifiManager.ERROR_AUTH_FAILURE_WRONG_PSWD); mLooper.dispatchAll(); @@ -1240,7 +1240,7 @@ public class WifiStateMachineTest { config.getNetworkSelectionStatus().setHasEverConnected(false); when(mWifiConfigManager.getConfiguredNetwork(anyInt())).thenReturn(config); - mWsm.sendMessage(WifiMonitor.AUTHENTICATION_FAILURE_EVENT, 0, + mWsm.sendMessage(WifiMonitor.AUTHENTICATION_FAILURE_EVENT, WifiManager.ERROR_AUTH_FAILURE_WRONG_PSWD); mLooper.dispatchAll(); @@ -1267,7 +1267,7 @@ public class WifiStateMachineTest { when(mWifiConfigManager.getConfiguredNetwork(anyInt())).thenReturn(null); - mWsm.sendMessage(WifiMonitor.AUTHENTICATION_FAILURE_EVENT, 0, + mWsm.sendMessage(WifiMonitor.AUTHENTICATION_FAILURE_EVENT, WifiManager.ERROR_AUTH_FAILURE_WRONG_PSWD); mLooper.dispatchAll(); |