summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--service/java/com/android/server/wifi/SupplicantStaIfaceHal.java176
-rw-r--r--service/java/com/android/server/wifi/SupplicantStateTracker.java2
-rw-r--r--service/java/com/android/server/wifi/WifiMetrics.java2
-rw-r--r--service/java/com/android/server/wifi/WifiMonitor.java6
-rw-r--r--service/java/com/android/server/wifi/WifiNative.java5
-rw-r--r--service/java/com/android/server/wifi/WifiStateMachine.java2
-rw-r--r--tests/wifitests/src/com/android/server/wifi/SupplicantStaIfaceHalTest.java55
-rw-r--r--tests/wifitests/src/com/android/server/wifi/SupplicantStateTrackerTest.java4
-rw-r--r--tests/wifitests/src/com/android/server/wifi/WifiMetricsTest.java18
-rw-r--r--tests/wifitests/src/com/android/server/wifi/WifiMonitorTest.java23
-rw-r--r--tests/wifitests/src/com/android/server/wifi/WifiStateMachineTest.java6
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();