diff options
6 files changed, 306 insertions, 101 deletions
diff --git a/service/java/com/android/server/wifi/DppManager.java b/service/java/com/android/server/wifi/DppManager.java index e990f9cfb..1f228bcb5 100644 --- a/service/java/com/android/server/wifi/DppManager.java +++ b/service/java/com/android/server/wifi/DppManager.java @@ -20,9 +20,10 @@ import static android.net.wifi.WifiManager.EASY_CONNECT_NETWORK_ROLE_AP; import android.content.Context; import android.hardware.wifi.supplicant.V1_2.DppAkm; -import android.hardware.wifi.supplicant.V1_2.DppFailureCode; import android.hardware.wifi.supplicant.V1_2.DppNetRole; -import android.hardware.wifi.supplicant.V1_2.DppProgressCode; +import android.hardware.wifi.supplicant.V1_3.DppFailureCode; +import android.hardware.wifi.supplicant.V1_3.DppProgressCode; +import android.hardware.wifi.supplicant.V1_3.DppSuccessCode; import android.net.wifi.EasyConnectStatusCallback; import android.net.wifi.IDppCallback; import android.net.wifi.WifiConfiguration; @@ -66,9 +67,9 @@ public class DppManager { } @Override - public void onSuccessConfigSent() { + public void onSuccess(int dppStatusCode) { mHandler.post(() -> { - DppManager.this.onSuccessConfigSent(); + DppManager.this.onSuccess(dppStatusCode); }); } @@ -80,9 +81,9 @@ public class DppManager { } @Override - public void onFailure(int dppStatusCode) { + public void onFailure(int dppStatusCode, String ssid, String channelList, int[] bandList) { mHandler.post(() -> { - DppManager.this.onFailure(dppStatusCode); + DppManager.this.onFailure(dppStatusCode, ssid, channelList, bandList); }); } }; @@ -161,7 +162,8 @@ public class DppManager { mDppMetrics.updateDppFailure(EasyConnectStatusCallback .EASY_CONNECT_EVENT_FAILURE_BUSY); // On going DPP. Call the failure callback directly - callback.onFailure(EasyConnectStatusCallback.EASY_CONNECT_EVENT_FAILURE_BUSY); + callback.onFailure(EasyConnectStatusCallback.EASY_CONNECT_EVENT_FAILURE_BUSY, null, + null, new int[0]); } catch (RemoteException e) { // Empty } @@ -175,7 +177,8 @@ public class DppManager { // On going DPP. Call the failure callback directly mDppMetrics.updateDppFailure(EasyConnectStatusCallback .EASY_CONNECT_EVENT_FAILURE_GENERIC); - callback.onFailure(EasyConnectStatusCallback.EASY_CONNECT_EVENT_FAILURE_GENERIC); + callback.onFailure(EasyConnectStatusCallback.EASY_CONNECT_EVENT_FAILURE_GENERIC, + null, null, new int[0]); } catch (RemoteException e) { // Empty } @@ -192,7 +195,7 @@ public class DppManager { mDppMetrics.updateDppFailure(EasyConnectStatusCallback .EASY_CONNECT_EVENT_FAILURE_INVALID_NETWORK); callback.onFailure(EasyConnectStatusCallback - .EASY_CONNECT_EVENT_FAILURE_INVALID_NETWORK); + .EASY_CONNECT_EVENT_FAILURE_INVALID_NETWORK, null, null, new int[0]); } catch (RemoteException e) { // Empty } @@ -224,7 +227,8 @@ public class DppManager { mDppMetrics.updateDppFailure(EasyConnectStatusCallback .EASY_CONNECT_EVENT_FAILURE_INVALID_NETWORK); callback.onFailure( - EasyConnectStatusCallback.EASY_CONNECT_EVENT_FAILURE_INVALID_NETWORK); + EasyConnectStatusCallback.EASY_CONNECT_EVENT_FAILURE_INVALID_NETWORK, null, + null, new int[0]); } catch (RemoteException e) { // Empty } @@ -306,7 +310,8 @@ public class DppManager { mDppMetrics.updateDppFailure(EasyConnectStatusCallback .EASY_CONNECT_EVENT_FAILURE_BUSY); // On going DPP. Call the failure callback directly - callback.onFailure(EasyConnectStatusCallback.EASY_CONNECT_EVENT_FAILURE_BUSY); + callback.onFailure(EasyConnectStatusCallback.EASY_CONNECT_EVENT_FAILURE_BUSY, null, + null, new int[0]); } catch (RemoteException e) { // Empty } @@ -448,7 +453,7 @@ public class DppManager { mDppMetrics.updateDppFailure(EasyConnectStatusCallback .EASY_CONNECT_EVENT_FAILURE_CONFIGURATION); mDppRequestInfo.callback.onFailure(EasyConnectStatusCallback - .EASY_CONNECT_EVENT_FAILURE_CONFIGURATION); + .EASY_CONNECT_EVENT_FAILURE_CONFIGURATION, null, null, new int[0]); } } else { Log.e(TAG, "Unexpected null Wi-Fi configuration object"); @@ -461,22 +466,40 @@ public class DppManager { cleanupDppResources(); } - private void onSuccessConfigSent() { + private void onSuccess(int dppStatusCode) { try { if (mDppRequestInfo == null) { - Log.e(TAG, "onDppSuccessConfigSent event without a request information object"); + Log.e(TAG, "onSuccess event without a request information object"); return; } - logd("onSuccessConfigSent"); - + logd("onSuccess: " + dppStatusCode); long now = mClock.getElapsedSinceBootMillis(); mDppMetrics.updateDppOperationTime((int) (now - mDppRequestInfo.startTime)); - mDppMetrics.updateDppConfiguratorSuccess( - EasyConnectStatusCallback.EASY_CONNECT_EVENT_SUCCESS_CONFIGURATION_SENT); - mDppRequestInfo.callback.onSuccess( - EasyConnectStatusCallback.EASY_CONNECT_EVENT_SUCCESS_CONFIGURATION_SENT); + int dppSuccessCode; + + // Convert from HAL codes to WifiManager/user codes + switch (dppStatusCode) { + case DppSuccessCode.CONFIGURATION_SENT: + dppSuccessCode = EasyConnectStatusCallback + .EASY_CONNECT_EVENT_SUCCESS_CONFIGURATION_SENT; + break; + + case DppSuccessCode.CONFIGURATION_APPLIED: + dppSuccessCode = EasyConnectStatusCallback + .EASY_CONNECT_EVENT_SUCCESS_CONFIGURATION_APPLIED; + break; + + default: + Log.e(TAG, "onSuccess: unknown code " + dppStatusCode); + // Success, DPP is complete. Clear the DPP session automatically + cleanupDppResources(); + return; + } + + mDppMetrics.updateDppConfiguratorSuccess(dppSuccessCode); + mDppRequestInfo.callback.onSuccess(dppSuccessCode); } catch (RemoteException e) { Log.e(TAG, "Callback failure"); @@ -509,6 +532,16 @@ public class DppManager { .EASY_CONNECT_EVENT_PROGRESS_RESPONSE_PENDING; break; + case DppProgressCode.CONFIGURATION_SENT_WAITING_RESPONSE: + dppProgressCode = EasyConnectStatusCallback + .EASY_CONNECT_EVENT_PROGRESS_CONFIGURATION_SENT_WAITING_RESPONSE; + break; + + case DppProgressCode.CONFIGURATION_ACCEPTED: + dppProgressCode = EasyConnectStatusCallback + .EASY_CONNECT_EVENT_PROGRESS_CONFIGURATION_ACCEPTED; + break; + default: Log.e(TAG, "onProgress: unknown code " + dppStatusCode); return; @@ -522,6 +555,10 @@ public class DppManager { } private void onFailure(int dppStatusCode) { + onFailure(dppStatusCode, null, null, null); + } + + private void onFailure(int dppStatusCode, String ssid, String channelList, int[] bandList) { try { if (mDppRequestInfo == null) { Log.e(TAG, "onFailure event without a request information object"); @@ -570,6 +607,23 @@ public class DppManager { EasyConnectStatusCallback.EASY_CONNECT_EVENT_FAILURE_NOT_SUPPORTED; break; + case DppFailureCode.CANNOT_FIND_NETWORK: + // This is the only case where channel list is populated, according to the + // DPP spec section 6.3.5.2 DPP Connection Status Object + dppFailureCode = EasyConnectStatusCallback + .EASY_CONNECT_EVENT_FAILURE_CANNOT_FIND_NETWORK; + break; + + case DppFailureCode.ENROLLEE_AUTHENTICATION: + dppFailureCode = EasyConnectStatusCallback + .EASY_CONNECT_EVENT_FAILURE_ENROLLEE_AUTHENTICATION; + break; + + case DppFailureCode.CONFIGURATION_REJECTED: + dppFailureCode = EasyConnectStatusCallback + .EASY_CONNECT_EVENT_FAILURE_ENROLLEE_REJECTED_CONFIGURATION; + break; + case DppFailureCode.FAILURE: default: dppFailureCode = EasyConnectStatusCallback.EASY_CONNECT_EVENT_FAILURE_GENERIC; @@ -577,7 +631,10 @@ public class DppManager { } mDppMetrics.updateDppFailure(dppFailureCode); - mDppRequestInfo.callback.onFailure(dppFailureCode); + if (bandList == null) { + bandList = new int[0]; + } + mDppRequestInfo.callback.onFailure(dppFailureCode, ssid, channelList, bandList); } catch (RemoteException e) { Log.e(TAG, "Callback failure"); diff --git a/service/java/com/android/server/wifi/SupplicantStaIfaceCallbackV1_2Impl.java b/service/java/com/android/server/wifi/SupplicantStaIfaceCallbackV1_2Impl.java index b80911736..2c3dc61b8 100644 --- a/service/java/com/android/server/wifi/SupplicantStaIfaceCallbackV1_2Impl.java +++ b/service/java/com/android/server/wifi/SupplicantStaIfaceCallbackV1_2Impl.java @@ -20,6 +20,7 @@ import android.content.Context; import android.hardware.wifi.supplicant.V1_0.ISupplicantStaIfaceCallback; import android.hardware.wifi.supplicant.V1_2.DppAkm; import android.hardware.wifi.supplicant.V1_2.DppFailureCode; +import android.hardware.wifi.supplicant.V1_3.DppSuccessCode; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiSsid; import android.os.Process; @@ -195,7 +196,7 @@ abstract class SupplicantStaIfaceCallbackV1_2Impl extends @Override public void onDppSuccessConfigSent() { if (mStaIfaceHal.getDppCallback() != null) { - mStaIfaceHal.getDppCallback().onSuccessConfigSent(); + mStaIfaceHal.getDppCallback().onSuccess(DppSuccessCode.CONFIGURATION_SENT); } else { Log.e(TAG, "onSuccessConfigSent callback is null"); } @@ -213,7 +214,7 @@ abstract class SupplicantStaIfaceCallbackV1_2Impl extends @Override public void onDppFailure(int code) { if (mStaIfaceHal.getDppCallback() != null) { - mStaIfaceHal.getDppCallback().onFailure(code); + mStaIfaceHal.getDppCallback().onFailure(code, null, null, null); } else { Log.e(TAG, "onDppFailure callback is null"); } diff --git a/service/java/com/android/server/wifi/SupplicantStaIfaceCallbackV1_3Impl.java b/service/java/com/android/server/wifi/SupplicantStaIfaceCallbackV1_3Impl.java index 97b984a7a..32f04d6e7 100644 --- a/service/java/com/android/server/wifi/SupplicantStaIfaceCallbackV1_3Impl.java +++ b/service/java/com/android/server/wifi/SupplicantStaIfaceCallbackV1_3Impl.java @@ -17,6 +17,7 @@ package com.android.server.wifi; import android.annotation.NonNull; import android.hardware.wifi.supplicant.V1_0.ISupplicantStaIfaceCallback; +import android.util.Log; import java.util.ArrayList; @@ -163,4 +164,42 @@ abstract class SupplicantStaIfaceCallbackV1_3Impl extends mStaIfaceHal.logCallback( "onPmkCacheAdded: update pmk cache for config id " + curNetworkId); } + + @Override + public void onDppProgress_1_3(int code) { + if (mStaIfaceHal.getDppCallback() != null) { + mStaIfaceHal.getDppCallback().onProgress(code); + } else { + Log.e(TAG, "onDppProgress callback is null"); + } + } + + @Override + public void onDppFailure_1_3(int code, String ssid, String channelList, + ArrayList<Short> bandList) { + if (mStaIfaceHal.getDppCallback() != null) { + int[] bandListArray = null; + + // Convert operating class list to a primitive array + if (bandList != null) { + bandListArray = new int[bandList.size()]; + + for (int i = 0; i < bandList.size(); i++) { + bandListArray[i] = bandList.get(i).intValue(); + } + } + mStaIfaceHal.getDppCallback().onFailure(code, ssid, channelList, bandListArray); + } else { + Log.e(TAG, "onDppFailure callback is null"); + } + } + + @Override + public void onDppSuccess(int code) { + if (mStaIfaceHal.getDppCallback() != null) { + mStaIfaceHal.getDppCallback().onSuccess(code); + } else { + Log.e(TAG, "onDppFailure callback is null"); + } + } } diff --git a/service/java/com/android/server/wifi/WifiNative.java b/service/java/com/android/server/wifi/WifiNative.java index 6225a6134..b38f8b99a 100644 --- a/service/java/com/android/server/wifi/WifiNative.java +++ b/service/java/com/android/server/wifi/WifiNative.java @@ -2419,7 +2419,7 @@ public class WifiNative { */ public interface DppEventCallback { /** - * Called when local DPP Enrollee successfully receives a new Wi-Fi configuratrion from the + * Called when local DPP Enrollee successfully receives a new Wi-Fi configuration from the * peer DPP configurator. * * @param newWifiConfiguration New Wi-Fi configuration received from the configurator @@ -2427,10 +2427,11 @@ public class WifiNative { void onSuccessConfigReceived(WifiConfiguration newWifiConfiguration); /** - * Called when local DPP configurator successfully sends Wi-Fi configuration to a remote - * Enrollee. + * DPP Success event. + * + * @param dppStatusCode Status code of the success event. */ - void onSuccessConfigSent(); + void onSuccess(int dppStatusCode); /** * DPP Progress event. @@ -2443,8 +2444,11 @@ public class WifiNative { * DPP Failure event. * * @param dppStatusCode Status code of the failure event. + * @param ssid SSID of the network the Enrollee tried to connect to. + * @param channelList List of channels the Enrollee scanned for the network. + * @param bandList List of bands the Enrollee supports. */ - void onFailure(int dppStatusCode); + void onFailure(int dppStatusCode, String ssid, String channelList, int[] bandList); } /** diff --git a/tests/wifitests/src/com/android/server/wifi/DppManagerTest.java b/tests/wifitests/src/com/android/server/wifi/DppManagerTest.java index 9aaaca28a..9bfa9b6a2 100644 --- a/tests/wifitests/src/com/android/server/wifi/DppManagerTest.java +++ b/tests/wifitests/src/com/android/server/wifi/DppManagerTest.java @@ -18,25 +18,38 @@ package com.android.server.wifi; import static android.hardware.wifi.supplicant.V1_2.DppAkm.PSK; import static android.hardware.wifi.supplicant.V1_2.DppAkm.SAE; -import static android.hardware.wifi.supplicant.V1_2.DppFailureCode.AUTHENTICATION; -import static android.hardware.wifi.supplicant.V1_2.DppFailureCode.BUSY; -import static android.hardware.wifi.supplicant.V1_2.DppFailureCode.CONFIGURATION; -import static android.hardware.wifi.supplicant.V1_2.DppFailureCode.FAILURE; -import static android.hardware.wifi.supplicant.V1_2.DppFailureCode.NOT_COMPATIBLE; -import static android.hardware.wifi.supplicant.V1_2.DppFailureCode.NOT_SUPPORTED; -import static android.hardware.wifi.supplicant.V1_2.DppFailureCode.TIMEOUT; -import static android.hardware.wifi.supplicant.V1_2.DppProgressCode.AUTHENTICATION_SUCCESS; -import static android.hardware.wifi.supplicant.V1_2.DppProgressCode.RESPONSE_PENDING; +import static android.hardware.wifi.supplicant.V1_3.DppFailureCode.AUTHENTICATION; +import static android.hardware.wifi.supplicant.V1_3.DppFailureCode.BUSY; +import static android.hardware.wifi.supplicant.V1_3.DppFailureCode.CANNOT_FIND_NETWORK; +import static android.hardware.wifi.supplicant.V1_3.DppFailureCode.CONFIGURATION; +import static android.hardware.wifi.supplicant.V1_3.DppFailureCode.CONFIGURATION_REJECTED; +import static android.hardware.wifi.supplicant.V1_3.DppFailureCode.ENROLLEE_AUTHENTICATION; +import static android.hardware.wifi.supplicant.V1_3.DppFailureCode.FAILURE; +import static android.hardware.wifi.supplicant.V1_3.DppFailureCode.NOT_COMPATIBLE; +import static android.hardware.wifi.supplicant.V1_3.DppFailureCode.NOT_SUPPORTED; +import static android.hardware.wifi.supplicant.V1_3.DppFailureCode.TIMEOUT; +import static android.hardware.wifi.supplicant.V1_3.DppProgressCode.AUTHENTICATION_SUCCESS; +import static android.hardware.wifi.supplicant.V1_3.DppProgressCode.CONFIGURATION_ACCEPTED; +import static android.hardware.wifi.supplicant.V1_3.DppProgressCode.CONFIGURATION_SENT_WAITING_RESPONSE; +import static android.hardware.wifi.supplicant.V1_3.DppProgressCode.RESPONSE_PENDING; +import static android.hardware.wifi.supplicant.V1_3.DppSuccessCode.CONFIGURATION_APPLIED; +import static android.hardware.wifi.supplicant.V1_3.DppSuccessCode.CONFIGURATION_SENT; import static android.net.wifi.EasyConnectStatusCallback.EASY_CONNECT_EVENT_FAILURE_AUTHENTICATION; import static android.net.wifi.EasyConnectStatusCallback.EASY_CONNECT_EVENT_FAILURE_BUSY; +import static android.net.wifi.EasyConnectStatusCallback.EASY_CONNECT_EVENT_FAILURE_CANNOT_FIND_NETWORK; import static android.net.wifi.EasyConnectStatusCallback.EASY_CONNECT_EVENT_FAILURE_CONFIGURATION; +import static android.net.wifi.EasyConnectStatusCallback.EASY_CONNECT_EVENT_FAILURE_ENROLLEE_AUTHENTICATION; +import static android.net.wifi.EasyConnectStatusCallback.EASY_CONNECT_EVENT_FAILURE_ENROLLEE_REJECTED_CONFIGURATION; import static android.net.wifi.EasyConnectStatusCallback.EASY_CONNECT_EVENT_FAILURE_GENERIC; import static android.net.wifi.EasyConnectStatusCallback.EASY_CONNECT_EVENT_FAILURE_INVALID_NETWORK; import static android.net.wifi.EasyConnectStatusCallback.EASY_CONNECT_EVENT_FAILURE_NOT_COMPATIBLE; import static android.net.wifi.EasyConnectStatusCallback.EASY_CONNECT_EVENT_FAILURE_NOT_SUPPORTED; import static android.net.wifi.EasyConnectStatusCallback.EASY_CONNECT_EVENT_FAILURE_TIMEOUT; import static android.net.wifi.EasyConnectStatusCallback.EASY_CONNECT_EVENT_PROGRESS_AUTHENTICATION_SUCCESS; +import static android.net.wifi.EasyConnectStatusCallback.EASY_CONNECT_EVENT_PROGRESS_CONFIGURATION_ACCEPTED; +import static android.net.wifi.EasyConnectStatusCallback.EASY_CONNECT_EVENT_PROGRESS_CONFIGURATION_SENT_WAITING_RESPONSE; import static android.net.wifi.EasyConnectStatusCallback.EASY_CONNECT_EVENT_PROGRESS_RESPONSE_PENDING; +import static android.net.wifi.EasyConnectStatusCallback.EASY_CONNECT_EVENT_SUCCESS_CONFIGURATION_APPLIED; import static android.net.wifi.EasyConnectStatusCallback.EASY_CONNECT_EVENT_SUCCESS_CONFIGURATION_SENT; import static android.net.wifi.WifiManager.EASY_CONNECT_NETWORK_ROLE_STA; @@ -153,12 +166,13 @@ public class DppManagerTest extends WifiBaseTest { EASY_CONNECT_NETWORK_ROLE_STA, mDppCallback); verify(mDppCallback).onFailure( - EasyConnectStatusCallback.EASY_CONNECT_EVENT_FAILURE_INVALID_NETWORK); + eq(EasyConnectStatusCallback.EASY_CONNECT_EVENT_FAILURE_INVALID_NETWORK), eq(null), + eq(null), eq(new int[0])); verify(mDppCallback, never()).onSuccess(anyInt()); verify(mDppCallback, never()).onSuccessConfigReceived(anyInt()); verify(mDppMetrics).updateDppConfiguratorInitiatorRequests(); - verify(mDppMetrics).updateDppFailure(EasyConnectStatusCallback - .EASY_CONNECT_EVENT_FAILURE_INVALID_NETWORK); + verify(mDppMetrics).updateDppFailure(eq(EasyConnectStatusCallback + .EASY_CONNECT_EVENT_FAILURE_INVALID_NETWORK)); verifyNoMoreInteractions(mDppMetrics); } @@ -181,12 +195,13 @@ public class DppManagerTest extends WifiBaseTest { EASY_CONNECT_NETWORK_ROLE_STA, mDppCallback); verify(mDppCallback).onFailure( - EasyConnectStatusCallback.EASY_CONNECT_EVENT_FAILURE_INVALID_URI); + eq(EasyConnectStatusCallback.EASY_CONNECT_EVENT_FAILURE_INVALID_URI), eq(null), + eq(null), eq(new int[0])); verify(mDppCallback, never()).onSuccess(anyInt()); verify(mDppCallback, never()).onSuccessConfigReceived(anyInt()); verify(mDppMetrics).updateDppConfiguratorInitiatorRequests(); - verify(mDppMetrics).updateDppFailure(EasyConnectStatusCallback - .EASY_CONNECT_EVENT_FAILURE_INVALID_URI); + verify(mDppMetrics).updateDppFailure(eq(EasyConnectStatusCallback + .EASY_CONNECT_EVENT_FAILURE_INVALID_URI)); verify(mDppMetrics).updateDppOperationTime(anyInt()); verifyNoMoreInteractions(mDppMetrics); } @@ -198,12 +213,13 @@ public class DppManagerTest extends WifiBaseTest { mDppManager.startDppAsEnrolleeInitiator(0, mBinder, mUri, mDppCallback); verify(mDppCallback).onFailure( - EasyConnectStatusCallback.EASY_CONNECT_EVENT_FAILURE_INVALID_URI); + eq(EasyConnectStatusCallback.EASY_CONNECT_EVENT_FAILURE_INVALID_URI), eq(null), + eq(null), eq(new int[0])); verify(mDppCallback, never()).onSuccess(anyInt()); verify(mDppCallback, never()).onSuccessConfigReceived(anyInt()); verify(mDppMetrics).updateDppEnrolleeInitiatorRequests(); - verify(mDppMetrics).updateDppFailure(EasyConnectStatusCallback - .EASY_CONNECT_EVENT_FAILURE_INVALID_URI); + verify(mDppMetrics).updateDppFailure(eq(EasyConnectStatusCallback + .EASY_CONNECT_EVENT_FAILURE_INVALID_URI)); verify(mDppMetrics).updateDppOperationTime(anyInt()); verifyNoMoreInteractions(mDppMetrics); } @@ -227,11 +243,12 @@ public class DppManagerTest extends WifiBaseTest { mDppManager.startDppAsConfiguratorInitiator(0, mBinder, mUri, 1, EASY_CONNECT_NETWORK_ROLE_STA, mDppCallback); - verify(mDppCallback).onFailure(EASY_CONNECT_EVENT_FAILURE_GENERIC); + verify(mDppCallback).onFailure(eq(EASY_CONNECT_EVENT_FAILURE_GENERIC), eq(null), + eq(null), eq(new int[0])); verify(mDppCallback, never()).onSuccess(anyInt()); verify(mDppCallback, never()).onSuccessConfigReceived(anyInt()); verify(mDppMetrics).updateDppConfiguratorInitiatorRequests(); - verify(mDppMetrics).updateDppFailure(EASY_CONNECT_EVENT_FAILURE_GENERIC); + verify(mDppMetrics).updateDppFailure(eq(EASY_CONNECT_EVENT_FAILURE_GENERIC)); verify(mDppMetrics).updateDppOperationTime(anyInt()); verifyNoMoreInteractions(mDppMetrics); } @@ -243,11 +260,12 @@ public class DppManagerTest extends WifiBaseTest { false); mDppManager.startDppAsEnrolleeInitiator(0, mBinder, mUri, mDppCallback); - verify(mDppCallback).onFailure(EASY_CONNECT_EVENT_FAILURE_GENERIC); + verify(mDppCallback).onFailure(eq(EASY_CONNECT_EVENT_FAILURE_GENERIC), eq(null), + eq(null), eq(new int[0])); verify(mDppCallback, never()).onSuccess(anyInt()); verify(mDppCallback, never()).onSuccessConfigReceived(anyInt()); verify(mDppMetrics).updateDppEnrolleeInitiatorRequests(); - verify(mDppMetrics).updateDppFailure(EASY_CONNECT_EVENT_FAILURE_GENERIC); + verify(mDppMetrics).updateDppFailure(eq(EASY_CONNECT_EVENT_FAILURE_GENERIC)); verify(mDppMetrics).updateDppOperationTime(anyInt()); verifyNoMoreInteractions(mDppMetrics); } @@ -267,7 +285,7 @@ public class DppManagerTest extends WifiBaseTest { mDppManager.startDppAsConfiguratorInitiator(0, mBinder, mUri, 1, EASY_CONNECT_NETWORK_ROLE_STA, mDppCallback); - verify(mDppCallback, never()).onFailure(anyInt()); + verify(mDppCallback, never()).onFailure(anyInt(), anyString(), anyString(), any()); verify(mDppCallback, never()).onSuccess(anyInt()); verify(mDppCallback, never()).onSuccessConfigReceived(anyInt()); verify(mWifiNative).startDppConfiguratorInitiator(eq(TEST_INTERFACE_NAME), @@ -292,7 +310,7 @@ public class DppManagerTest extends WifiBaseTest { mDppManager.startDppAsConfiguratorInitiator(0, mBinder, mUri, 1, EASY_CONNECT_NETWORK_ROLE_STA, mDppCallback); - verify(mDppCallback, never()).onFailure(anyInt()); + verify(mDppCallback, never()).onFailure(anyInt(), anyString(), anyString(), any()); verify(mDppCallback, never()).onSuccess(anyInt()); verify(mDppCallback, never()).onSuccessConfigReceived(anyInt()); verify(mWifiNative).startDppConfiguratorInitiator(eq(TEST_INTERFACE_NAME), @@ -316,12 +334,13 @@ public class DppManagerTest extends WifiBaseTest { mDppManager.startDppAsConfiguratorInitiator(0, mBinder, mUri, 1, EASY_CONNECT_NETWORK_ROLE_STA, mDppCallback); - verify(mDppCallback).onFailure(EASY_CONNECT_EVENT_FAILURE_INVALID_NETWORK); + verify(mDppCallback).onFailure(eq(EASY_CONNECT_EVENT_FAILURE_INVALID_NETWORK), eq(null), + eq(null), eq(new int[0])); verify(mDppCallback, never()).onSuccess(anyInt()); verify(mDppCallback, never()).onSuccessConfigReceived(anyInt()); verify(mDppMetrics).updateDppConfiguratorInitiatorRequests(); - verify(mDppMetrics).updateDppFailure(EasyConnectStatusCallback - .EASY_CONNECT_EVENT_FAILURE_INVALID_NETWORK); + verify(mDppMetrics).updateDppFailure(eq(EasyConnectStatusCallback + .EASY_CONNECT_EVENT_FAILURE_INVALID_NETWORK)); verifyNoMoreInteractions(mDppMetrics); } @@ -339,19 +358,20 @@ public class DppManagerTest extends WifiBaseTest { mDppManager.startDppAsConfiguratorInitiator(0, mBinder, mUri, 1, EASY_CONNECT_NETWORK_ROLE_STA, mDppCallback); - verify(mDppCallback).onFailure(EASY_CONNECT_EVENT_FAILURE_INVALID_NETWORK); + verify(mDppCallback).onFailure(eq(EASY_CONNECT_EVENT_FAILURE_INVALID_NETWORK), eq(null), + eq(null), eq(new int[0])); verify(mDppCallback, never()).onSuccess(anyInt()); verify(mDppCallback, never()).onSuccessConfigReceived(anyInt()); verify(mDppMetrics).updateDppConfiguratorInitiatorRequests(); - verify(mDppMetrics).updateDppFailure(EasyConnectStatusCallback - .EASY_CONNECT_EVENT_FAILURE_INVALID_NETWORK); + verify(mDppMetrics).updateDppFailure(eq(EasyConnectStatusCallback + .EASY_CONNECT_EVENT_FAILURE_INVALID_NETWORK)); verifyNoMoreInteractions(mDppMetrics); } @Test public void testStartDppAsEnrolleeInitiatorStartCorrectly() throws Exception { mDppManager.startDppAsEnrolleeInitiator(0, mBinder, mUri, mDppCallback); - verify(mDppCallback, never()).onFailure(anyInt()); + verify(mDppCallback, never()).onFailure(anyInt(), anyString(), anyString(), any()); verify(mDppCallback, never()).onSuccess(anyInt()); verify(mDppCallback, never()).onSuccessConfigReceived(anyInt()); verify(mWifiNative).startDppEnrolleeInitiator(eq(TEST_INTERFACE_NAME), @@ -374,9 +394,8 @@ public class DppManagerTest extends WifiBaseTest { selectedNetwork); mDppManager.startDppAsConfiguratorInitiator(0, mBinder, mUri, 1, - EASY_CONNECT_NETWORK_ROLE_STA, - mDppCallback); - verify(mDppCallback, never()).onFailure(anyInt()); + EASY_CONNECT_NETWORK_ROLE_STA, mDppCallback); + verify(mDppCallback, never()).onFailure(anyInt(), anyString(), anyString(), any()); verify(mDppCallback, never()).onSuccess(anyInt()); verify(mDppCallback, never()).onSuccessConfigReceived(anyInt()); verify(mWifiNative).startDppConfiguratorInitiator(eq(TEST_INTERFACE_NAME), @@ -386,11 +405,12 @@ public class DppManagerTest extends WifiBaseTest { mDppManager.startDppAsConfiguratorInitiator(1, mBinder, mUri, 1, EASY_CONNECT_NETWORK_ROLE_STA, mDppCallbackConcurrent); - verify(mDppCallbackConcurrent).onFailure(EASY_CONNECT_EVENT_FAILURE_BUSY); + verify(mDppCallbackConcurrent).onFailure(eq(EASY_CONNECT_EVENT_FAILURE_BUSY), eq(null), + eq(null), eq(new int[0])); verify(mDppCallbackConcurrent, never()).onSuccess(anyInt()); verify(mDppCallbackConcurrent, never()).onSuccessConfigReceived(anyInt()); verify(mDppMetrics, times(2)).updateDppConfiguratorInitiatorRequests(); - verify(mDppMetrics).updateDppFailure(EASY_CONNECT_EVENT_FAILURE_BUSY); + verify(mDppMetrics).updateDppFailure(eq(EASY_CONNECT_EVENT_FAILURE_BUSY)); verifyNoMoreInteractions(mDppMetrics); } @@ -398,18 +418,19 @@ public class DppManagerTest extends WifiBaseTest { public void testStartDppAsEnrolleeInitiatorStartCorrectlyAndRejectConcurrentRequest() throws Exception { mDppManager.startDppAsEnrolleeInitiator(0, mBinder, mUri, mDppCallback); - verify(mDppCallback, never()).onFailure(anyInt()); + verify(mDppCallback, never()).onFailure(anyInt(), anyString(), anyString(), any()); verify(mDppCallback, never()).onSuccess(anyInt()); verify(mDppCallback, never()).onSuccessConfigReceived(anyInt()); verify(mWifiNative).startDppEnrolleeInitiator(eq(TEST_INTERFACE_NAME), eq(TEST_PEER_ID), anyInt()); mDppManager.startDppAsEnrolleeInitiator(1, mBinder, mUri, mDppCallbackConcurrent); - verify(mDppCallbackConcurrent).onFailure(EASY_CONNECT_EVENT_FAILURE_BUSY); + verify(mDppCallbackConcurrent).onFailure(eq(EASY_CONNECT_EVENT_FAILURE_BUSY), eq(null), + eq(null), eq(new int[0])); verify(mDppCallbackConcurrent, never()).onSuccess(anyInt()); verify(mDppCallbackConcurrent, never()).onSuccessConfigReceived(anyInt()); verify(mDppMetrics, times(2)).updateDppEnrolleeInitiatorRequests(); - verify(mDppMetrics).updateDppFailure(EASY_CONNECT_EVENT_FAILURE_BUSY); + verify(mDppMetrics).updateDppFailure(eq(EASY_CONNECT_EVENT_FAILURE_BUSY)); verifyNoMoreInteractions(mDppMetrics); } @@ -432,7 +453,7 @@ public class DppManagerTest extends WifiBaseTest { mDppManager.startDppAsConfiguratorInitiator(0, mBinder, mUri, 1, EASY_CONNECT_NETWORK_ROLE_STA, mDppCallback); verify(mWifiNative).registerDppEventCallback(dppEventCallbackCaptor.capture()); - verify(mDppCallback, never()).onFailure(anyInt()); + verify(mDppCallback, never()).onFailure(anyInt(), anyString(), anyString(), any()); verify(mDppCallback, never()).onSuccess(anyInt()); verify(mDppCallback, never()).onSuccessConfigReceived(anyInt()); verify(mWifiNative).startDppConfiguratorInitiator(eq(TEST_INTERFACE_NAME), @@ -445,17 +466,17 @@ public class DppManagerTest extends WifiBaseTest { // Generate a progress event dppEventCallback.onProgress(AUTHENTICATION_SUCCESS); mLooper.dispatchAll(); - verify(mDppCallback).onProgress(EASY_CONNECT_EVENT_PROGRESS_AUTHENTICATION_SUCCESS); + verify(mDppCallback).onProgress(eq(EASY_CONNECT_EVENT_PROGRESS_AUTHENTICATION_SUCCESS)); // Generate an onSuccess callback - dppEventCallback.onSuccessConfigSent(); + dppEventCallback.onSuccess(CONFIGURATION_SENT); mLooper.dispatchAll(); - verify(mDppCallback).onSuccess(EASY_CONNECT_EVENT_SUCCESS_CONFIGURATION_SENT); + verify(mDppCallback).onSuccess(eq(EASY_CONNECT_EVENT_SUCCESS_CONFIGURATION_SENT)); verify(mDppCallback, never()).onSuccessConfigReceived(anyInt()); - verify(mDppCallback, never()).onFailure(anyInt()); + verify(mDppCallback, never()).onFailure(anyInt(), anyString(), anyString(), any()); verify(mDppMetrics).updateDppConfiguratorInitiatorRequests(); - verify(mDppMetrics).updateDppConfiguratorSuccess(EasyConnectStatusCallback - .EASY_CONNECT_EVENT_SUCCESS_CONFIGURATION_SENT); + verify(mDppMetrics).updateDppConfiguratorSuccess(eq(EasyConnectStatusCallback + .EASY_CONNECT_EVENT_SUCCESS_CONFIGURATION_SENT)); verify(mDppMetrics).updateDppOperationTime(anyInt()); verifyNoMoreInteractions(mDppMetrics); } @@ -468,7 +489,7 @@ public class DppManagerTest extends WifiBaseTest { mDppManager.startDppAsEnrolleeInitiator(0, mBinder, mUri, mDppCallback); verify(mWifiNative).registerDppEventCallback(dppEventCallbackCaptor.capture()); - verify(mDppCallback, never()).onFailure(anyInt()); + verify(mDppCallback, never()).onFailure(anyInt(), anyString(), anyString(), any()); verify(mDppCallback, never()).onSuccess(anyInt()); verify(mDppCallback, never()).onSuccessConfigReceived(anyInt()); verify(mWifiNative).startDppEnrolleeInitiator(eq(TEST_INTERFACE_NAME), @@ -487,7 +508,7 @@ public class DppManagerTest extends WifiBaseTest { // Generate a progress event dppEventCallback.onProgress(AUTHENTICATION_SUCCESS); mLooper.dispatchAll(); - verify(mDppCallback).onProgress(EASY_CONNECT_EVENT_PROGRESS_AUTHENTICATION_SUCCESS); + verify(mDppCallback).onProgress(eq(EASY_CONNECT_EVENT_PROGRESS_AUTHENTICATION_SUCCESS)); // Generate result NetworkUpdateResult networkUpdateResult = new NetworkUpdateResult(TEST_NETWORK_ID); @@ -496,9 +517,9 @@ public class DppManagerTest extends WifiBaseTest { dppEventCallback.onSuccessConfigReceived(selectedNetwork); mLooper.dispatchAll(); - verify(mDppCallback).onSuccessConfigReceived(TEST_NETWORK_ID); + verify(mDppCallback).onSuccessConfigReceived(eq(TEST_NETWORK_ID)); verify(mDppCallback, never()).onSuccess(anyInt()); - verify(mDppCallback, never()).onFailure(anyInt()); + verify(mDppCallback, never()).onFailure(anyInt(), anyString(), anyString(), any()); verify(mDppMetrics).updateDppEnrolleeInitiatorRequests(); verify(mDppMetrics).updateDppEnrolleeSuccess(); verify(mDppMetrics).updateDppOperationTime(anyInt()); @@ -525,7 +546,7 @@ public class DppManagerTest extends WifiBaseTest { EASY_CONNECT_NETWORK_ROLE_STA, mDppCallback); verify(mWifiNative).registerDppEventCallback(dppEventCallbackCaptor.capture()); - verify(mDppCallback, never()).onFailure(anyInt()); + verify(mDppCallback, never()).onFailure(anyInt(), anyString(), anyString(), any()); verify(mDppCallback, never()).onSuccess(anyInt()); verify(mDppCallback, never()).onSuccessConfigReceived(anyInt()); verify(mWifiNative).startDppConfiguratorInitiator(eq(TEST_INTERFACE_NAME), @@ -538,17 +559,18 @@ public class DppManagerTest extends WifiBaseTest { // Generate a progress event dppEventCallback.onProgress(RESPONSE_PENDING); mLooper.dispatchAll(); - verify(mDppCallback).onProgress(EASY_CONNECT_EVENT_PROGRESS_RESPONSE_PENDING); + verify(mDppCallback).onProgress(eq(EASY_CONNECT_EVENT_PROGRESS_RESPONSE_PENDING)); // Generate an onFailure callback - dppEventCallback.onFailure(AUTHENTICATION); + dppEventCallback.onFailure(AUTHENTICATION, null, null, null); mLooper.dispatchAll(); - verify(mDppCallback).onFailure(EASY_CONNECT_EVENT_FAILURE_AUTHENTICATION); + verify(mDppCallback).onFailure(eq(EASY_CONNECT_EVENT_FAILURE_AUTHENTICATION), eq(null), + eq(null), eq(new int[0])); verify(mDppCallback, never()).onSuccess(anyInt()); verify(mDppCallback, never()).onSuccessConfigReceived(anyInt()); verify(mDppMetrics).updateDppConfiguratorInitiatorRequests(); - verify(mDppMetrics).updateDppFailure(EasyConnectStatusCallback - .EASY_CONNECT_EVENT_FAILURE_AUTHENTICATION); + verify(mDppMetrics).updateDppFailure(eq(EasyConnectStatusCallback + .EASY_CONNECT_EVENT_FAILURE_AUTHENTICATION)); verify(mDppMetrics).updateDppOperationTime(anyInt()); verifyNoMoreInteractions(mDppMetrics); verifyCleanUpResources(); @@ -575,7 +597,7 @@ public class DppManagerTest extends WifiBaseTest { mDppManager.startDppAsEnrolleeInitiator(0, mBinder, mUri, mDppCallback); verify(mWifiNative).registerDppEventCallback(dppEventCallbackCaptor.capture()); - verify(mDppCallback, never()).onFailure(anyInt()); + verify(mDppCallback, never()).onFailure(anyInt(), anyString(), anyString(), any()); verify(mDppCallback, never()).onSuccess(anyInt()); verify(mDppCallback, never()).onSuccessConfigReceived(anyInt()); verify(mWifiNative).startDppEnrolleeInitiator(eq(TEST_INTERFACE_NAME), @@ -586,17 +608,18 @@ public class DppManagerTest extends WifiBaseTest { // Generate a progress event dppEventCallback.onProgress(RESPONSE_PENDING); mLooper.dispatchAll(); - verify(mDppCallback).onProgress(EASY_CONNECT_EVENT_PROGRESS_RESPONSE_PENDING); + verify(mDppCallback).onProgress(eq(EASY_CONNECT_EVENT_PROGRESS_RESPONSE_PENDING)); // Generate an onFailure callback - dppEventCallback.onFailure(AUTHENTICATION); + dppEventCallback.onFailure(AUTHENTICATION, null, null, null); mLooper.dispatchAll(); - verify(mDppCallback).onFailure(EASY_CONNECT_EVENT_FAILURE_AUTHENTICATION); + verify(mDppCallback).onFailure(eq(EASY_CONNECT_EVENT_FAILURE_AUTHENTICATION), eq(null), + eq(null), eq(new int[0])); verify(mDppCallback, never()).onSuccess(anyInt()); verify(mDppCallback, never()).onSuccessConfigReceived(anyInt()); verify(mDppMetrics).updateDppEnrolleeInitiatorRequests(); - verify(mDppMetrics).updateDppFailure(EasyConnectStatusCallback - .EASY_CONNECT_EVENT_FAILURE_AUTHENTICATION); + verify(mDppMetrics).updateDppFailure(eq(EasyConnectStatusCallback + .EASY_CONNECT_EVENT_FAILURE_AUTHENTICATION)); verify(mDppMetrics).updateDppOperationTime(anyInt()); verifyNoMoreInteractions(mDppMetrics); verifyCleanUpResources(); @@ -636,7 +659,7 @@ public class DppManagerTest extends WifiBaseTest { // Start with UID 10 mDppManager.startDppAsEnrolleeInitiator(10, mBinder, mUri, mDppCallback); verify(mWifiNative).registerDppEventCallback(dppEventCallbackCaptor.capture()); - verify(mDppCallback, never()).onFailure(anyInt()); + verify(mDppCallback, never()).onFailure(anyInt(), anyString(), anyString(), any()); verify(mDppCallback, never()).onSuccess(anyInt()); verify(mDppCallback, never()).onSuccessConfigReceived(anyInt()); verify(mWifiNative).startDppEnrolleeInitiator(eq(TEST_INTERFACE_NAME), @@ -671,7 +694,7 @@ public class DppManagerTest extends WifiBaseTest { // Start with UID 10 mDppManager.startDppAsEnrolleeInitiator(10, mBinder, mUri, mDppCallback); verify(mWifiNative).registerDppEventCallback(dppEventCallbackCaptor.capture()); - verify(mDppCallback, never()).onFailure(anyInt()); + verify(mDppCallback, never()).onFailure(anyInt(), anyString(), anyString(), any()); verify(mDppCallback, never()).onSuccess(anyInt()); verify(mDppCallback, never()).onSuccessConfigReceived(anyInt()); verify(mWifiNative).startDppEnrolleeInitiator(eq(TEST_INTERFACE_NAME), @@ -679,7 +702,7 @@ public class DppManagerTest extends WifiBaseTest { // Check that WifiNative is called to stop the DPP session mDppManager.stopDppSession(10); - verify(mWifiNative).stopDppInitiator(TEST_INTERFACE_NAME); + verify(mWifiNative).stopDppInitiator(eq(TEST_INTERFACE_NAME)); verifyCleanUpResources(); } @@ -718,25 +741,46 @@ public class DppManagerTest extends WifiBaseTest { testOnFailureCallback(FAILURE, EASY_CONNECT_EVENT_FAILURE_GENERIC); } - private void testOnFailureCallback(int internalFailure, int appFailure) throws Exception { + @Test + public void testOnFailureCallbackCannotFindNetwork() throws Exception { + int[] bandList = new int[]{1, 6, 11}; + testOnFailureCallback(CANNOT_FIND_NETWORK, "SSID", "1, 3, 6, 8, 11", + bandList, EASY_CONNECT_EVENT_FAILURE_CANNOT_FIND_NETWORK); + } + + @Test + public void testOnFailureCallbackConfigurationRejected() throws Exception { + testOnFailureCallback(CONFIGURATION_REJECTED, + EASY_CONNECT_EVENT_FAILURE_ENROLLEE_REJECTED_CONFIGURATION); + } + + @Test + public void testOnFailureCallbackEnrolleeAuthentication() throws Exception { + int[] bandList = new int[]{1, 6, 11}; + testOnFailureCallback(ENROLLEE_AUTHENTICATION, new String("SSID"), null, + bandList, EASY_CONNECT_EVENT_FAILURE_ENROLLEE_AUTHENTICATION); + } + + @Test + public void testStartDppAsConfiguratorInitiatorStartOnSuccessCallbackR2() throws Exception { // Generate a mock WifiConfiguration object WifiConfiguration selectedNetwork = new WifiConfiguration(); selectedNetwork.SSID = TEST_SSID; - selectedNetwork.networkId = TEST_NETWORK_ID; + selectedNetwork.networkId = 1; selectedNetwork.preSharedKey = TEST_PASSWORD; selectedNetwork.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.SAE); when(mWifiConfigManager.getConfiguredNetworkWithoutMasking(anyInt())).thenReturn( selectedNetwork); + ArgumentCaptor<WifiNative.DppEventCallback> dppEventCallbackCaptor = ArgumentCaptor.forClass( WifiNative.DppEventCallback.class); mDppManager.startDppAsConfiguratorInitiator(0, mBinder, mUri, 1, - EASY_CONNECT_NETWORK_ROLE_STA, - mDppCallback); + EASY_CONNECT_NETWORK_ROLE_STA, mDppCallback); verify(mWifiNative).registerDppEventCallback(dppEventCallbackCaptor.capture()); - verify(mDppCallback, never()).onFailure(anyInt()); + verify(mDppCallback, never()).onFailure(anyInt(), anyString(), anyString(), any()); verify(mDppCallback, never()).onSuccess(anyInt()); verify(mDppCallback, never()).onSuccessConfigReceived(anyInt()); verify(mWifiNative).startDppConfiguratorInitiator(eq(TEST_INTERFACE_NAME), @@ -746,10 +790,65 @@ public class DppManagerTest extends WifiBaseTest { WifiNative.DppEventCallback dppEventCallback = dppEventCallbackCaptor.getValue(); + // Generate a progress events + dppEventCallback.onProgress(AUTHENTICATION_SUCCESS); + mLooper.dispatchAll(); + verify(mDppCallback).onProgress(eq(EASY_CONNECT_EVENT_PROGRESS_AUTHENTICATION_SUCCESS)); + + dppEventCallback.onProgress(CONFIGURATION_ACCEPTED); + mLooper.dispatchAll(); + verify(mDppCallback).onProgress(eq(EASY_CONNECT_EVENT_PROGRESS_CONFIGURATION_ACCEPTED)); + + dppEventCallback.onProgress(CONFIGURATION_SENT_WAITING_RESPONSE); + mLooper.dispatchAll(); + verify(mDppCallback) + .onProgress(eq(EASY_CONNECT_EVENT_PROGRESS_CONFIGURATION_SENT_WAITING_RESPONSE)); + + // Generate an onSuccess callback + dppEventCallback.onSuccess(CONFIGURATION_APPLIED); + mLooper.dispatchAll(); + verify(mDppCallback).onSuccess(eq(EASY_CONNECT_EVENT_SUCCESS_CONFIGURATION_APPLIED)); + verify(mDppCallback, never()).onSuccessConfigReceived(anyInt()); + verify(mDppCallback, never()).onFailure(anyInt(), anyString(), anyString(), any()); + verify(mDppMetrics).updateDppConfiguratorInitiatorRequests(); + verify(mDppMetrics).updateDppConfiguratorSuccess(eq(EasyConnectStatusCallback + .EASY_CONNECT_EVENT_SUCCESS_CONFIGURATION_APPLIED)); + verify(mDppMetrics).updateDppOperationTime(anyInt()); + verifyNoMoreInteractions(mDppMetrics); + } + + private void testOnFailureCallback(int internalFailure, String ssid, String channelList, + int[] bandList, int appFailure) throws Exception { + // Generate a mock WifiConfiguration object + WifiConfiguration selectedNetwork = new WifiConfiguration(); + selectedNetwork.SSID = TEST_SSID; + selectedNetwork.networkId = TEST_NETWORK_ID; + selectedNetwork.preSharedKey = TEST_PASSWORD; + selectedNetwork.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.SAE); + + when(mWifiConfigManager.getConfiguredNetworkWithoutMasking(anyInt())).thenReturn( + selectedNetwork); + ArgumentCaptor<WifiNative.DppEventCallback> dppEventCallbackCaptor = + ArgumentCaptor.forClass( + WifiNative.DppEventCallback.class); + + mDppManager.startDppAsConfiguratorInitiator(0, mBinder, mUri, 1, + EASY_CONNECT_NETWORK_ROLE_STA, mDppCallback); + verify(mWifiNative).registerDppEventCallback(dppEventCallbackCaptor.capture()); + verify(mDppCallback, never()).onFailure(anyInt(), anyString(), anyString(), any()); + verify(mDppCallback, never()).onSuccess(anyInt()); + verify(mDppCallback, never()).onSuccessConfigReceived(anyInt()); + verify(mWifiNative).startDppConfiguratorInitiator(eq(TEST_INTERFACE_NAME), + eq(TEST_PEER_ID), anyInt(), eq(TEST_SSID_ENCODED), eq(TEST_PASSWORD_ENCODED), any(), + eq(EASY_CONNECT_NETWORK_ROLE_STA), eq(SAE)); + + WifiNative.DppEventCallback dppEventCallback = dppEventCallbackCaptor.getValue(); + // Generate an onFailure callback - dppEventCallback.onFailure(internalFailure); + dppEventCallback.onFailure(internalFailure, ssid, channelList, bandList); mLooper.dispatchAll(); - verify(mDppCallback).onFailure(eq(appFailure)); + verify(mDppCallback).onFailure(eq(appFailure), eq(ssid), eq(channelList), + eq(bandList)); verify(mDppCallback, never()).onSuccess(anyInt()); verify(mDppCallback, never()).onSuccessConfigReceived(anyInt()); verify(mDppMetrics).updateDppConfiguratorInitiatorRequests(); @@ -758,4 +857,8 @@ public class DppManagerTest extends WifiBaseTest { verifyNoMoreInteractions(mDppMetrics); verifyCleanUpResources(); } + + private void testOnFailureCallback(int internalFailure, int appFailure) throws Exception { + testOnFailureCallback(internalFailure, null, null, new int[0], appFailure); + } } diff --git a/tests/wifitests/src/com/android/server/wifi/WifiServiceImplTest.java b/tests/wifitests/src/com/android/server/wifi/WifiServiceImplTest.java index f3cf19fd6..e2c954cdb 100644 --- a/tests/wifitests/src/com/android/server/wifi/WifiServiceImplTest.java +++ b/tests/wifitests/src/com/android/server/wifi/WifiServiceImplTest.java @@ -380,7 +380,8 @@ public class WifiServiceImplTest extends WifiBaseTest { } @Override - public void onFailure(int status) throws RemoteException { + public void onFailure(int status, String ssid, String channelList, int[] bandList) + throws RemoteException { } |