p2p: add new discoverPeers APIs
Added APIs to run p2p scan on a specific frequency or social channels.
Bug: 159094739
Test: atest FrameworksWifiApiTests
Change-Id: I35c47bf3725bfe93ec8d79c9609847775911b6b2
diff --git a/framework/api/current.txt b/framework/api/current.txt
index d107f58..7d7d0d5 100644
--- a/framework/api/current.txt
+++ b/framework/api/current.txt
@@ -1156,6 +1156,8 @@
method @RequiresPermission(allOf={android.Manifest.permission.NEARBY_WIFI_DEVICES, android.Manifest.permission.ACCESS_FINE_LOCATION}, conditional=true) public void createGroup(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.WifiP2pManager.ActionListener);
method @RequiresPermission(allOf={android.Manifest.permission.NEARBY_WIFI_DEVICES, android.Manifest.permission.ACCESS_FINE_LOCATION}, conditional=true) public void createGroup(@NonNull android.net.wifi.p2p.WifiP2pManager.Channel, @Nullable android.net.wifi.p2p.WifiP2pConfig, @Nullable android.net.wifi.p2p.WifiP2pManager.ActionListener);
method @RequiresPermission(allOf={android.Manifest.permission.NEARBY_WIFI_DEVICES, android.Manifest.permission.ACCESS_FINE_LOCATION}, conditional=true) public void discoverPeers(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.WifiP2pManager.ActionListener);
+ method @RequiresPermission(allOf={android.Manifest.permission.NEARBY_WIFI_DEVICES, android.Manifest.permission.ACCESS_FINE_LOCATION}, conditional=true) public void discoverPeersOnSocialChannels(@NonNull android.net.wifi.p2p.WifiP2pManager.Channel, @Nullable android.net.wifi.p2p.WifiP2pManager.ActionListener);
+ method @RequiresPermission(allOf={android.Manifest.permission.NEARBY_WIFI_DEVICES, android.Manifest.permission.ACCESS_FINE_LOCATION}, conditional=true) public void discoverPeersOnSpecificFrequency(@NonNull android.net.wifi.p2p.WifiP2pManager.Channel, int, @Nullable android.net.wifi.p2p.WifiP2pManager.ActionListener);
method @RequiresPermission(allOf={android.Manifest.permission.NEARBY_WIFI_DEVICES, android.Manifest.permission.ACCESS_FINE_LOCATION}, conditional=true) public void discoverServices(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.WifiP2pManager.ActionListener);
method public android.net.wifi.p2p.WifiP2pManager.Channel initialize(android.content.Context, android.os.Looper, android.net.wifi.p2p.WifiP2pManager.ChannelListener);
method public void removeClient(@NonNull android.net.wifi.p2p.WifiP2pManager.Channel, @NonNull android.net.MacAddress, @Nullable android.net.wifi.p2p.WifiP2pManager.ActionListener);
diff --git a/framework/java/android/net/wifi/p2p/WifiP2pManager.java b/framework/java/android/net/wifi/p2p/WifiP2pManager.java
index 9a12c7d..579cf5e 100644
--- a/framework/java/android/net/wifi/p2p/WifiP2pManager.java
+++ b/framework/java/android/net/wifi/p2p/WifiP2pManager.java
@@ -392,6 +392,26 @@
public static final String CALLING_BINDER =
"android.net.wifi.p2p.CALLING_BINDER";
+ /**
+ * Run P2P scan on all channels.
+ * @hide
+ */
+ public static final int WIFI_P2P_SCAN_FULL = 0;
+
+ /**
+ * Run P2P scan only on social channels.
+ * @hide
+ */
+ public static final int WIFI_P2P_SCAN_SOCIAL = -1;
+
+ /** @hide */
+ @IntDef(prefix = {"WIFI_P2P_SCAN_"}, value = {
+ WIFI_P2P_SCAN_FULL,
+ WIFI_P2P_SCAN_SOCIAL})
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface WifiP2pScanType {
+ }
+
IWifiP2pManager mService;
private static final int BASE = Protocol.BASE_WIFI_P2P_MANAGER;
@@ -1249,7 +1269,7 @@
* determine when the framework notifies of a change as peers are discovered.
*
* <p> Upon receiving a {@link #WIFI_P2P_PEERS_CHANGED_ACTION} intent, an application
- * can request for the list of peers using {@link #requestPeers}.
+ * can request the list of peers using {@link #requestPeers}.
* <p>
* If targeting {@link android.os.Build.VERSION_CODES#TIRAMISU} or later, the application must
* have {@link android.Manifest.permission#NEARBY_WIFI_DEVICES} with
@@ -1270,7 +1290,96 @@
public void discoverPeers(Channel c, ActionListener listener) {
checkChannel(c);
Bundle extras = prepareExtrasBundle(c);
- c.mAsyncChannel.sendMessage(DISCOVER_PEERS, 0, c.putListener(listener), extras);
+ // TODO(b/216723991): Revise to scan type + freq form to avoid overlaying the same field.
+ c.mAsyncChannel.sendMessage(DISCOVER_PEERS, WIFI_P2P_SCAN_FULL,
+ c.putListener(listener), extras);
+ }
+
+ /**
+ * Scan only the social channels.
+ *
+ * A discovery process involves scanning for available Wi-Fi peers
+ * for the purpose of establishing a connection.
+ *
+ * <p> The function call immediately returns after sending a discovery request
+ * to the framework. The application is notified of a success or failure to initiate
+ * discovery through listener callbacks {@link ActionListener#onSuccess} or
+ * {@link ActionListener#onFailure}.
+ *
+ * <p> The discovery remains active until a connection is initiated or
+ * a p2p group is formed. Register for {@link #WIFI_P2P_PEERS_CHANGED_ACTION} intent to
+ * determine when the framework notifies of a change as peers are discovered.
+ *
+ * <p> Upon receiving a {@link #WIFI_P2P_PEERS_CHANGED_ACTION} intent, an application
+ * can request the list of peers using {@link #requestPeers}.
+ * <p>
+ * The application must have {@link android.Manifest.permission#NEARBY_WIFI_DEVICES} with
+ * android:usesPermissionFlags="neverForLocation". If the application does not declare
+ * android:usesPermissionFlags="neverForLocation", then it must also have
+ * {@link android.Manifest.permission#ACCESS_FINE_LOCATION}.
+ *
+ * @param c is the channel created at {@link #initialize}
+ * @param listener for callbacks on success or failure.
+ */
+ @RequiresPermission(allOf = {
+ android.Manifest.permission.NEARBY_WIFI_DEVICES,
+ android.Manifest.permission.ACCESS_FINE_LOCATION
+ }, conditional = true)
+ public void discoverPeersOnSocialChannels(@NonNull Channel c,
+ @Nullable ActionListener listener) {
+ if (!SdkLevel.isAtLeastT()) {
+ throw new UnsupportedOperationException();
+ }
+ checkChannel(c);
+ Bundle extras = prepareExtrasBundle(c);
+ // TODO(b/216723991): Revise to scan type + freq form to avoid overlaying the same field.
+ c.mAsyncChannel.sendMessage(DISCOVER_PEERS, WIFI_P2P_SCAN_SOCIAL,
+ c.putListener(listener), extras);
+ }
+
+ /**
+ * Scan only a single channel specified by frequency.
+ *
+ * A discovery process involves scanning for available Wi-Fi peers
+ * for the purpose of establishing a connection.
+ *
+ * <p> The function call immediately returns after sending a discovery request
+ * to the framework. The application is notified of a success or failure to initiate
+ * discovery through listener callbacks {@link ActionListener#onSuccess} or
+ * {@link ActionListener#onFailure}.
+ *
+ * <p> The discovery remains active until a connection is initiated or
+ * a p2p group is formed. Register for {@link #WIFI_P2P_PEERS_CHANGED_ACTION} intent to
+ * determine when the framework notifies of a change as peers are discovered.
+ *
+ * <p> Upon receiving a {@link #WIFI_P2P_PEERS_CHANGED_ACTION} intent, an application
+ * can request the list of peers using {@link #requestPeers}.
+ * <p>
+ * The application must have {@link android.Manifest.permission#NEARBY_WIFI_DEVICES} with
+ * android:usesPermissionFlags="neverForLocation". If the application does not declare
+ * android:usesPermissionFlags="neverForLocation", then it must also have
+ * {@link android.Manifest.permission#ACCESS_FINE_LOCATION}.
+ *
+ * @param c is the channel created at {@link #initialize}
+ * @param frequencyMhz is the frequency of the channel to use for peer discovery.
+ * @param listener for callbacks on success or failure.
+ */
+ @RequiresPermission(allOf = {
+ android.Manifest.permission.NEARBY_WIFI_DEVICES,
+ android.Manifest.permission.ACCESS_FINE_LOCATION
+ }, conditional = true)
+ public void discoverPeersOnSpecificFrequency(
+ @NonNull Channel c, int frequencyMhz, @Nullable ActionListener listener) {
+ if (!SdkLevel.isAtLeastT()) {
+ throw new UnsupportedOperationException();
+ }
+ checkChannel(c);
+ if (frequencyMhz <= 0) {
+ throw new IllegalArgumentException("This frequency must be a positive value.");
+ }
+ Bundle extras = prepareExtrasBundle(c);
+ // TODO(b/216723991): Revise to scan type + freq form to avoid overlaying the same field.
+ c.mAsyncChannel.sendMessage(DISCOVER_PEERS, frequencyMhz, c.putListener(listener), extras);
}
/**
@@ -2155,7 +2264,7 @@
* broadcast event with extra {@link #EXTRA_WIFI_STATE}.
*
* @param c is the channel created at {@link #initialize}.
- * @param listener for callback when p2p state is available..
+ * @param listener for callback when p2p state is available.
*/
public void requestP2pState(@NonNull Channel c,
@NonNull P2pStateListener listener) {
@@ -2176,7 +2285,7 @@
* broadcast event with extra {@link #EXTRA_DISCOVERY_STATE}.
*
* @param c is the channel created at {@link #initialize}.
- * @param listener for callback when discovery state is available..
+ * @param listener for callback when discovery state is available.
*/
public void requestDiscoveryState(@NonNull Channel c,
@NonNull DiscoveryStateListener listener) {
@@ -2198,7 +2307,7 @@
* broadcast event with extra {@link #EXTRA_NETWORK_INFO}.
*
* @param c is the channel created at {@link #initialize}.
- * @param listener for callback when network info is available..
+ * @param listener for callback when network info is available.
*/
public void requestNetworkInfo(@NonNull Channel c,
@NonNull NetworkInfoListener listener) {
diff --git a/service/java/com/android/server/wifi/p2p/ISupplicantP2pIfaceHal.java b/service/java/com/android/server/wifi/p2p/ISupplicantP2pIfaceHal.java
index 11c7875..65e0344 100644
--- a/service/java/com/android/server/wifi/p2p/ISupplicantP2pIfaceHal.java
+++ b/service/java/com/android/server/wifi/p2p/ISupplicantP2pIfaceHal.java
@@ -72,14 +72,18 @@
boolean isInitializationComplete();
/**
- * Initiate a P2P service discovery with a (optional) timeout.
+ * Initiate a P2P device discovery with a (optional) frequency and a (optional) timeout.
*
+ * @param freq is the frequency to be scanned,
+ * Valid values are {@link WifiP2pManager#WIFI_P2P_SCAN_FULL} for doing full P2P scan,
+ * {@link WifiP2pManager#WIFI_P2P_SCAN_SOCIAL} for scanning social channels,
+ * a non zero valid frequency for scanning a specified frequency.
* @param timeout Max time to be spent is performing discovery.
* Set to 0 to indefinitely continue discovery until an explicit
* |stopFind| is sent.
* @return boolean value indicating whether operation was successful.
*/
- boolean find(int timeout);
+ boolean find(int freq, int timeout);
/**
* Stop an ongoing P2P service discovery.
diff --git a/service/java/com/android/server/wifi/p2p/SupplicantP2pIfaceHal.java b/service/java/com/android/server/wifi/p2p/SupplicantP2pIfaceHal.java
index db6a28b..c798626 100644
--- a/service/java/com/android/server/wifi/p2p/SupplicantP2pIfaceHal.java
+++ b/service/java/com/android/server/wifi/p2p/SupplicantP2pIfaceHal.java
@@ -183,21 +183,14 @@
}
}
- /**
- * Initiate a P2P service discovery with a (optional) timeout.
- *
- * @param timeout Max time to be spent is performing discovery.
- * Set to 0 to indefinitely continue discovery until an explicit
- * |stopFind| is sent.
- * @return boolean value indicating whether operation was successful.
- */
- public boolean find(int timeout) {
+ /** See {@link ISupplicantStaNetwork#find(int, int)} for documentation. */
+ public boolean find(int freq, int timeout) {
synchronized (mLock) {
String methodStr = "find";
if (mP2pIfaceHal == null) {
return handleNullHal(methodStr);
}
- return mP2pIfaceHal.find(timeout);
+ return mP2pIfaceHal.find(freq, timeout);
}
}
diff --git a/service/java/com/android/server/wifi/p2p/SupplicantP2pIfaceHalAidlImpl.java b/service/java/com/android/server/wifi/p2p/SupplicantP2pIfaceHalAidlImpl.java
index b2cbd75..3302100 100644
--- a/service/java/com/android/server/wifi/p2p/SupplicantP2pIfaceHalAidlImpl.java
+++ b/service/java/com/android/server/wifi/p2p/SupplicantP2pIfaceHalAidlImpl.java
@@ -429,15 +429,8 @@
}
}
- /**
- * Initiate a P2P service discovery with a (optional) timeout.
- *
- * @param timeout Max time to be spent is performing discovery.
- * Set to 0 to indefinitely continue discovery until an explicit
- * |stopFind| is sent.
- * @return boolean value indicating whether operation was successful.
- */
- public boolean find(int timeout) {
+ /** See {@link ISupplicantStaNetwork#find(int, int)} for documentation. */
+ public boolean find(int freq, int timeout) {
synchronized (mLock) {
String methodStr = "find";
if (!checkP2pIfaceAndLogFailure(methodStr)) {
@@ -447,8 +440,22 @@
Log.e(TAG, "Invalid timeout value: " + timeout);
return false;
}
+ if (freq < 0 && freq != WifiP2pManager.WIFI_P2P_SCAN_SOCIAL) {
+ Log.e(TAG, "Invalid freq value: " + freq);
+ return false;
+ }
try {
- mISupplicantP2pIface.find(timeout);
+ switch (freq) {
+ case WifiP2pManager.WIFI_P2P_SCAN_FULL:
+ mISupplicantP2pIface.find(timeout);
+ break;
+ case WifiP2pManager.WIFI_P2P_SCAN_SOCIAL:
+ mISupplicantP2pIface.findOnSocialChannels(timeout);
+ break;
+ default:
+ mISupplicantP2pIface.findOnSpecificFrequency(freq, timeout);
+ break;
+ }
return true;
} catch (RemoteException e) {
handleRemoteException(e, methodStr);
diff --git a/service/java/com/android/server/wifi/p2p/SupplicantP2pIfaceHalHidlImpl.java b/service/java/com/android/server/wifi/p2p/SupplicantP2pIfaceHalHidlImpl.java
index 92cf5bd..8a85dcf 100644
--- a/service/java/com/android/server/wifi/p2p/SupplicantP2pIfaceHalHidlImpl.java
+++ b/service/java/com/android/server/wifi/p2p/SupplicantP2pIfaceHalHidlImpl.java
@@ -748,16 +748,8 @@
}
}
-
- /**
- * Initiate a P2P service discovery with a (optional) timeout.
- *
- * @param timeout Max time to be spent is performing discovery.
- * Set to 0 to indefinitely continue discovery until an explicit
- * |stopFind| is sent.
- * @return boolean value indicating whether operation was successful.
- */
- public boolean find(int timeout) {
+ /** See {@link ISupplicantStaNetwork#find(int, int)} for documentation. */
+ public boolean find(int freq, int timeout) {
synchronized (mLock) {
if (!checkSupplicantP2pIfaceAndLogFailure("find")) return false;
diff --git a/service/java/com/android/server/wifi/p2p/WifiP2pNative.java b/service/java/com/android/server/wifi/p2p/WifiP2pNative.java
index b727b47..ec55070 100644
--- a/service/java/com/android/server/wifi/p2p/WifiP2pNative.java
+++ b/service/java/com/android/server/wifi/p2p/WifiP2pNative.java
@@ -24,6 +24,7 @@
import android.net.wifi.p2p.WifiP2pConfig;
import android.net.wifi.p2p.WifiP2pGroup;
import android.net.wifi.p2p.WifiP2pGroupList;
+import android.net.wifi.p2p.WifiP2pManager;
import android.net.wifi.p2p.nsd.WifiP2pServiceInfo;
import android.os.Handler;
import android.os.WorkSource;
@@ -406,13 +407,26 @@
/**
* Initiate a P2P service discovery with a (optional) timeout.
*
- * @param timeout Max time to be spent is peforming discovery.
- * Set to 0 to indefinely continue discovery untill and explicit
+ * @param timeout The maximum amount of time to be spent in performing discovery.
+ * Set to 0 to indefinitely continue discovery until an explicit
* |stopFind| is sent.
* @return boolean value indicating whether operation was successful.
*/
public boolean p2pFind(int timeout) {
- return mSupplicantP2pIfaceHal.find(timeout);
+ return mSupplicantP2pIfaceHal.find(WifiP2pManager.WIFI_P2P_SCAN_FULL, timeout);
+ }
+
+ /**
+ * Initiate a P2P device discovery with a (optional) frequency and a (optional) timeout.
+ *
+ * @param freq is the frequency to be scanned.
+ * @param timeout The maximum amount of time to be spent in performing discovery.
+ * Set to 0 to indefinitely continue discovery until an explicit
+ * |stopFind| is sent.
+ * @return boolean value indicating whether operation was successful.
+ */
+ public boolean p2pFind(int freq, int timeout) {
+ return mSupplicantP2pIfaceHal.find(freq, timeout);
}
/**
diff --git a/service/java/com/android/server/wifi/p2p/WifiP2pServiceImpl.java b/service/java/com/android/server/wifi/p2p/WifiP2pServiceImpl.java
index 3a0d55d..97d734f 100644
--- a/service/java/com/android/server/wifi/p2p/WifiP2pServiceImpl.java
+++ b/service/java/com/android/server/wifi/p2p/WifiP2pServiceImpl.java
@@ -2119,6 +2119,8 @@
WifiP2pManager.ERROR);
break;
}
+ int freq = SdkLevel.isAtLeastT()
+ ? message.arg1 : WifiP2pManager.WIFI_P2P_SCAN_FULL;
int uid = message.sendingUid;
Bundle extras = (Bundle) message.obj;
boolean hasPermission = false;
@@ -2146,7 +2148,7 @@
// do not send service discovery request while normal find operation.
clearSupplicantServiceRequest();
Log.e(TAG, "-------discover_peers before p2pFind");
- if (mWifiNative.p2pFind(DISCOVER_TIMEOUT_S)) {
+ if (mWifiNative.p2pFind(freq, DISCOVER_TIMEOUT_S)) {
mWifiP2pMetrics.incrementPeerScans();
replyToMessage(message, WifiP2pManager.DISCOVER_PEERS_SUCCEEDED);
sendP2pDiscoveryChangedBroadcast(true);
diff --git a/service/tests/wifitests/src/com/android/server/wifi/p2p/SupplicantP2pIfaceHalAidlImplTest.java b/service/tests/wifitests/src/com/android/server/wifi/p2p/SupplicantP2pIfaceHalAidlImplTest.java
index faf97ac..b316544 100644
--- a/service/tests/wifitests/src/com/android/server/wifi/p2p/SupplicantP2pIfaceHalAidlImplTest.java
+++ b/service/tests/wifitests/src/com/android/server/wifi/p2p/SupplicantP2pIfaceHalAidlImplTest.java
@@ -279,11 +279,11 @@
public void testFind_success() throws Exception {
doNothing().when(mISupplicantP2pIfaceMock).find(anyInt());
// Default value when service is not yet initialized.
- assertFalse(mDut.find(1));
+ assertFalse(mDut.find(WifiP2pManager.WIFI_P2P_SCAN_FULL, 1));
executeAndValidateInitializationSequence(false, false);
- assertTrue(mDut.find(1));
- assertFalse(mDut.find(-1));
+ assertTrue(mDut.find(WifiP2pManager.WIFI_P2P_SCAN_FULL, 1));
+ assertFalse(mDut.find(WifiP2pManager.WIFI_P2P_SCAN_FULL, -1));
}
/**
@@ -294,21 +294,64 @@
executeAndValidateInitializationSequence(false, false);
doThrow(new ServiceSpecificException(SupplicantStatusCode.FAILURE_UNKNOWN))
.when(mISupplicantP2pIfaceMock).find(anyInt());
- assertFalse(mDut.find(1));
+ assertFalse(mDut.find(WifiP2pManager.WIFI_P2P_SCAN_FULL, 1));
// Check that service is still alive.
assertTrue(mDut.isInitializationComplete());
}
/**
- * Verify that find disconnects and returns false, if HAL throws a remote exception.
+ * Sunny day scenario for findOnSocialChannels()
*/
@Test
- public void testFind_exception() throws Exception {
+ public void testFindSocialOnly_success() throws Exception {
+ doNothing().when(mISupplicantP2pIfaceMock).findOnSocialChannels(anyInt());
+ // Default value when service is not yet initialized.
+ assertFalse(mDut.find(WifiP2pManager.WIFI_P2P_SCAN_SOCIAL, 1));
+
executeAndValidateInitializationSequence(false, false);
- doThrow(new RemoteException()).when(mISupplicantP2pIfaceMock).find(anyInt());
- assertFalse(mDut.find(0));
- // Check service is dead.
- assertFalse(mDut.isInitializationComplete());
+ assertTrue(mDut.find(WifiP2pManager.WIFI_P2P_SCAN_SOCIAL, 1));
+ assertFalse(mDut.find(WifiP2pManager.WIFI_P2P_SCAN_SOCIAL, -1));
+ }
+
+ /**
+ * Verify that find returns false, if HAL call did not succeed.
+ */
+ @Test
+ public void testFindSocialOnly_failure() throws Exception {
+ executeAndValidateInitializationSequence(false, false);
+ doThrow(new ServiceSpecificException(SupplicantStatusCode.FAILURE_UNKNOWN))
+ .when(mISupplicantP2pIfaceMock).findOnSocialChannels(anyInt());
+ assertFalse(mDut.find(WifiP2pManager.WIFI_P2P_SCAN_SOCIAL, 1));
+ // Check that service is still alive.
+ assertTrue(mDut.isInitializationComplete());
+ }
+
+ /**
+ * Sunny day scenario for findOnSpecificFrequency()
+ */
+ @Test
+ public void testFindSpecificFrequency_success() throws Exception {
+ int freq = 2412;
+ doNothing().when(mISupplicantP2pIfaceMock).findOnSpecificFrequency(anyInt(), anyInt());
+ // Default value when service is not yet initialized.
+ assertFalse(mDut.find(freq, 1));
+
+ executeAndValidateInitializationSequence(false, false);
+ assertTrue(mDut.find(freq, 1));
+ assertFalse(mDut.find(freq, -1));
+ }
+
+ /**
+ * Verify that find returns false, if HAL call did not succeed.
+ */
+ @Test
+ public void testFindSpecificFrequency_failure() throws Exception {
+ executeAndValidateInitializationSequence(false, false);
+ doThrow(new ServiceSpecificException(SupplicantStatusCode.FAILURE_UNKNOWN))
+ .when(mISupplicantP2pIfaceMock).findOnSpecificFrequency(anyInt(), anyInt());
+ assertFalse(mDut.find(2412, 1));
+ // Check that service is still alive.
+ assertTrue(mDut.isInitializationComplete());
}
/**
diff --git a/service/tests/wifitests/src/com/android/server/wifi/p2p/SupplicantP2pIfaceHalHidlImplTest.java b/service/tests/wifitests/src/com/android/server/wifi/p2p/SupplicantP2pIfaceHalHidlImplTest.java
index 3a9cd03..662da17 100644
--- a/service/tests/wifitests/src/com/android/server/wifi/p2p/SupplicantP2pIfaceHalHidlImplTest.java
+++ b/service/tests/wifitests/src/com/android/server/wifi/p2p/SupplicantP2pIfaceHalHidlImplTest.java
@@ -410,11 +410,11 @@
public void testFind_success() throws Exception {
when(mISupplicantP2pIfaceMock.find(anyInt())).thenReturn(mStatusSuccess);
// Default value when service is not yet initialized.
- assertFalse(mDut.find(1));
+ assertFalse(mDut.find(WifiP2pManager.WIFI_P2P_SCAN_FULL, 1));
executeAndValidateInitializationSequence(false, false, false);
- assertTrue(mDut.find(1));
- assertFalse(mDut.find(-1));
+ assertTrue(mDut.find(WifiP2pManager.WIFI_P2P_SCAN_FULL, 1));
+ assertFalse(mDut.find(WifiP2pManager.WIFI_P2P_SCAN_FULL, -1));
}
/**
@@ -424,7 +424,7 @@
public void testFind_failure() throws Exception {
executeAndValidateInitializationSequence(false, false, false);
when(mISupplicantP2pIfaceMock.find(anyInt())).thenReturn(mStatusFailure);
- assertFalse(mDut.find(1));
+ assertFalse(mDut.find(WifiP2pManager.WIFI_P2P_SCAN_FULL, 1));
// Check that service is still alive.
assertTrue(mDut.isInitializationComplete());
}
@@ -436,7 +436,7 @@
public void testFind_exception() throws Exception {
executeAndValidateInitializationSequence(false, false, false);
when(mISupplicantP2pIfaceMock.find(anyInt())).thenThrow(mRemoteException);
- assertFalse(mDut.find(0));
+ assertFalse(mDut.find(WifiP2pManager.WIFI_P2P_SCAN_FULL, 0));
// Check service is dead.
assertFalse(mDut.isInitializationComplete());
}
diff --git a/service/tests/wifitests/src/com/android/server/wifi/p2p/SupplicantP2pIfaceHalTest.java b/service/tests/wifitests/src/com/android/server/wifi/p2p/SupplicantP2pIfaceHalTest.java
index 6258cea..da0557e 100644
--- a/service/tests/wifitests/src/com/android/server/wifi/p2p/SupplicantP2pIfaceHalTest.java
+++ b/service/tests/wifitests/src/com/android/server/wifi/p2p/SupplicantP2pIfaceHalTest.java
@@ -33,6 +33,7 @@
import android.net.wifi.p2p.WifiP2pConfig;
import android.net.wifi.p2p.WifiP2pGroup;
import android.net.wifi.p2p.WifiP2pGroupList;
+import android.net.wifi.p2p.WifiP2pManager;
import android.net.wifi.p2p.nsd.WifiP2pServiceInfo;
import com.android.server.wifi.WifiGlobals;
@@ -232,9 +233,10 @@
public void testFind() {
initializeWithAidlImpl(true);
int timeout = 5;
- when(mP2pIfaceHalAidlMock.find(anyInt())).thenReturn(true);
- assertTrue(mDut.find(timeout));
- verify(mP2pIfaceHalAidlMock).find(eq(timeout));
+ int freq = WifiP2pManager.WIFI_P2P_SCAN_FULL;
+ when(mP2pIfaceHalAidlMock.find(anyInt(), anyInt())).thenReturn(true);
+ assertTrue(mDut.find(freq, timeout));
+ verify(mP2pIfaceHalAidlMock).find(eq(freq), eq(timeout));
}
/**
diff --git a/service/tests/wifitests/src/com/android/server/wifi/p2p/WifiP2pNativeTest.java b/service/tests/wifitests/src/com/android/server/wifi/p2p/WifiP2pNativeTest.java
index 0b133a4..2f93b7c 100644
--- a/service/tests/wifitests/src/com/android/server/wifi/p2p/WifiP2pNativeTest.java
+++ b/service/tests/wifitests/src/com/android/server/wifi/p2p/WifiP2pNativeTest.java
@@ -296,9 +296,10 @@
*/
@Test
public void testP2pFindIndefinitely() {
- when(mSupplicantP2pIfaceHalMock.find(anyInt())).thenReturn(true);
+ when(mSupplicantP2pIfaceHalMock.find(anyInt(), anyInt())).thenReturn(true);
assertTrue(mWifiP2pNative.p2pFind());
- verify(mSupplicantP2pIfaceHalMock).find(eq(0));
+ verify(mSupplicantP2pIfaceHalMock).find(eq(
+ WifiP2pManager.WIFI_P2P_SCAN_FULL), eq(0));
}
/**
@@ -306,9 +307,10 @@
*/
@Test
public void testP2pFindWithTimeout() {
- when(mSupplicantP2pIfaceHalMock.find(anyInt())).thenReturn(true);
+ when(mSupplicantP2pIfaceHalMock.find(anyInt(), anyInt())).thenReturn(true);
assertTrue(mWifiP2pNative.p2pFind(TEST_P2P_FIND_TIMEOUT));
- verify(mSupplicantP2pIfaceHalMock).find(eq(TEST_P2P_FIND_TIMEOUT));
+ verify(mSupplicantP2pIfaceHalMock).find(
+ eq(WifiP2pManager.WIFI_P2P_SCAN_FULL), eq(TEST_P2P_FIND_TIMEOUT));
}
/**
diff --git a/service/tests/wifitests/src/com/android/server/wifi/p2p/WifiP2pServiceImplTest.java b/service/tests/wifitests/src/com/android/server/wifi/p2p/WifiP2pServiceImplTest.java
index 62ba6fb..ae5e11a 100644
--- a/service/tests/wifitests/src/com/android/server/wifi/p2p/WifiP2pServiceImplTest.java
+++ b/service/tests/wifitests/src/com/android/server/wifi/p2p/WifiP2pServiceImplTest.java
@@ -1513,7 +1513,7 @@
public void testDiscoverPeersFailureWhenNoChannelUpdated() throws Exception {
forceP2pEnabled(mClient1);
sendDiscoverPeersMsg(mClientMessenger);
- verify(mWifiNative, never()).p2pFind(anyInt());
+ verify(mWifiNative, never()).p2pFind(anyInt(), anyInt());
assertTrue(mClientHandler.hasMessages(WifiP2pManager.DISCOVER_PEERS_FAILED));
}
@@ -1528,7 +1528,7 @@
.when(mWifiPermissionsUtil).checkPackage(anyInt(), anyString());
sendChannelInfoUpdateMsg("testPkg1", "testFeature", mClient1, mClientMessenger);
sendDiscoverPeersMsg(mClientMessenger);
- verify(mWifiNative, never()).p2pFind(anyInt());
+ verify(mWifiNative, never()).p2pFind(anyInt(), anyInt());
assertTrue(mClientHandler.hasMessages(WifiP2pManager.DISCOVER_PEERS_FAILED));
}
@@ -1550,7 +1550,7 @@
}
sendChannelInfoUpdateMsg("testPkg1", "testFeature", mClient1, mClientMessenger);
sendDiscoverPeersMsg(mClientMessenger);
- verify(mWifiNative, never()).p2pFind(anyInt());
+ verify(mWifiNative, never()).p2pFind(anyInt(), anyInt());
if (SdkLevel.isAtLeastT()) {
verify(mWifiPermissionsUtil, atLeastOnce()).checkNearbyDevicesPermission(
any(), eq(true), any());
@@ -1577,7 +1577,7 @@
eq(true))).thenReturn(false);
sendChannelInfoUpdateMsg("testPkg1", "testFeature", mClient1, mClientMessenger);
sendDiscoverPeersMsg(mClientMessenger);
- verify(mWifiNative, never()).p2pFind(anyInt());
+ verify(mWifiNative, never()).p2pFind(anyInt(), anyInt());
verify(mWifiPermissionsUtil).checkCanAccessWifiDirect(eq("testPkg1"),
eq("testFeature"), anyInt(), eq(true));
assertTrue(mClientHandler.hasMessages(WifiP2pManager.DISCOVER_PEERS_FAILED));
@@ -1590,10 +1590,10 @@
public void testDiscoverPeersSuccess() throws Exception {
setTargetSdkGreaterThanT();
forceP2pEnabled(mClient1);
- when(mWifiNative.p2pFind(anyInt())).thenReturn(true);
+ when(mWifiNative.p2pFind(anyInt(), anyInt())).thenReturn(true);
sendChannelInfoUpdateMsg("testPkg1", "testFeature", mClient1, mClientMessenger);
sendDiscoverPeersMsg(mClientMessenger);
- verify(mWifiNative).p2pFind(anyInt());
+ verify(mWifiNative).p2pFind(anyInt(), anyInt());
if (SdkLevel.isAtLeastT()) {
verify(mWifiPermissionsUtil, atLeastOnce()).checkNearbyDevicesPermission(
any(), eq(true), any());
@@ -1613,10 +1613,10 @@
public void testDiscoverPeersFailureWhenNativeCallFailure() throws Exception {
setTargetSdkGreaterThanT();
forceP2pEnabled(mClient1);
- when(mWifiNative.p2pFind(anyInt())).thenReturn(false);
+ when(mWifiNative.p2pFind(anyInt(), anyInt())).thenReturn(false);
sendChannelInfoUpdateMsg("testPkg1", "testFeature", mClient1, mClientMessenger);
sendDiscoverPeersMsg(mClientMessenger);
- verify(mWifiNative).p2pFind(anyInt());
+ verify(mWifiNative).p2pFind(anyInt(), anyInt());
if (SdkLevel.isAtLeastT()) {
verify(mWifiPermissionsUtil, atLeastOnce()).checkNearbyDevicesPermission(
any(), eq(true), any());
@@ -1685,7 +1685,7 @@
sendAddServiceRequestMsg(mClientMessenger);
sendDiscoverServiceMsg(mClientMessenger);
verify(mWifiNative, never()).p2pServDiscReq(anyString(), anyString());
- verify(mWifiNative, never()).p2pFind(anyInt());
+ verify(mWifiNative, never()).p2pFind(anyInt(), anyInt());
if (SdkLevel.isAtLeastT()) {
verify(mWifiPermissionsUtil, atLeastOnce()).checkNearbyDevicesPermission(
any(), eq(true), any());
@@ -1716,7 +1716,7 @@
sendAddServiceRequestMsg(mClientMessenger);
sendDiscoverServiceMsg(mClientMessenger);
verify(mWifiNative, never()).p2pServDiscReq(anyString(), anyString());
- verify(mWifiNative, never()).p2pFind(anyInt());
+ verify(mWifiNative, never()).p2pFind(anyInt(), anyInt());
verify(mWifiPermissionsUtil).checkCanAccessWifiDirect(eq("testPkg1"),
eq("testFeature"), anyInt(), eq(true));
assertTrue(mClientHandler.hasMessages(WifiP2pManager.DISCOVER_SERVICES_FAILED));
@@ -1761,7 +1761,7 @@
sendAddServiceRequestMsg(mClientMessenger);
sendDiscoverServiceMsg(mClientMessenger);
verify(mWifiNative).p2pServDiscReq(anyString(), anyString());
- verify(mWifiNative, never()).p2pFind(anyInt());
+ verify(mWifiNative, never()).p2pFind(anyInt(), anyInt());
if (SdkLevel.isAtLeastT()) {
verify(mWifiPermissionsUtil, atLeastOnce()).checkNearbyDevicesPermission(
any(), eq(true), any());
@@ -2227,7 +2227,7 @@
public void testPeerScanMetricWhenSendDiscoverPeers() throws Exception {
setTargetSdkGreaterThanT();
forceP2pEnabled(mClient1);
- when(mWifiNative.p2pFind(anyInt())).thenReturn(true);
+ when(mWifiNative.p2pFind(anyInt(), anyInt())).thenReturn(true);
sendChannelInfoUpdateMsg("testPkg1", "testFeature", mClient1, mClientMessenger);
sendDiscoverPeersMsg(mClientMessenger);
verify(mWifiP2pMetrics).incrementPeerScans();
@@ -4262,10 +4262,10 @@
anyInt(), anyBoolean())).thenReturn(false);
when(mWifiPermissionsUtil.checkCanAccessWifiDirect(eq("testPkg1"), eq("testFeature"),
anyInt(), anyBoolean())).thenReturn(true);
- when(mWifiNative.p2pFind(anyInt())).thenReturn(true);
+ when(mWifiNative.p2pFind(anyInt(), anyInt())).thenReturn(true);
sendChannelInfoUpdateMsg("testPkg1", "testFeature", mClient1, mClientMessenger);
sendDiscoverPeersMsg(mClientMessenger);
- verify(mWifiNative).p2pFind(anyInt());
+ verify(mWifiNative).p2pFind(anyInt(), anyInt());
verify(mWifiPermissionsUtil).checkCanAccessWifiDirect(
eq("testPkg1"), eq("testFeature"), anyInt(), eq(true));