summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--service/java/com/android/server/wifi/WifiInjector.java6
-rw-r--r--service/java/com/android/server/wifi/p2p/WifiP2pNative.java22
-rw-r--r--tests/wifitests/src/com/android/server/wifi/p2p/WifiP2pNativeInterfaceManagementTest.java4
-rw-r--r--tests/wifitests/src/com/android/server/wifi/p2p/WifiP2pNativeTest.java24
4 files changed, 53 insertions, 3 deletions
diff --git a/service/java/com/android/server/wifi/WifiInjector.java b/service/java/com/android/server/wifi/WifiInjector.java
index 080b76d9e..3fbd58ed5 100644
--- a/service/java/com/android/server/wifi/WifiInjector.java
+++ b/service/java/com/android/server/wifi/WifiInjector.java
@@ -228,7 +228,7 @@ public class WifiInjector {
wifiHandler, new Random(), this);
mWifiP2pMonitor = new WifiP2pMonitor(this);
mSupplicantP2pIfaceHal = new SupplicantP2pIfaceHal(mWifiP2pMonitor);
- mWifiP2pNative = new WifiP2pNative(
+ mWifiP2pNative = new WifiP2pNative(this,
mWifiVendorHal, mSupplicantP2pIfaceHal, mHalDeviceManager,
mPropertyService);
@@ -786,4 +786,8 @@ public class WifiInjector {
}
return mNetdWrapper;
}
+
+ public WifiCondManager getWifiCondManager() {
+ return mWifiCondManager;
+ }
}
diff --git a/service/java/com/android/server/wifi/p2p/WifiP2pNative.java b/service/java/com/android/server/wifi/p2p/WifiP2pNative.java
index 7eba9d34c..0732510b3 100644
--- a/service/java/com/android/server/wifi/p2p/WifiP2pNative.java
+++ b/service/java/com/android/server/wifi/p2p/WifiP2pNative.java
@@ -24,14 +24,19 @@ import android.net.wifi.p2p.WifiP2pConfig;
import android.net.wifi.p2p.WifiP2pGroup;
import android.net.wifi.p2p.WifiP2pGroupList;
import android.net.wifi.p2p.nsd.WifiP2pServiceInfo;
+import android.net.wifi.wificond.WifiCondManager;
import android.os.Handler;
import android.text.TextUtils;
import android.util.Log;
import com.android.server.wifi.HalDeviceManager;
import com.android.server.wifi.PropertyService;
+import com.android.server.wifi.WifiInjector;
+import com.android.server.wifi.WifiNative;
import com.android.server.wifi.WifiVendorHal;
+import java.util.Set;
+
/**
* Native calls for bring up/shut down of the supplicant daemon and for
* sending requests to the supplicant daemon
@@ -42,6 +47,7 @@ public class WifiP2pNative {
private static final String TAG = "WifiP2pNative";
private boolean mVerboseLoggingEnabled = false;
private final SupplicantP2pIfaceHal mSupplicantP2pIfaceHal;
+ private final WifiInjector mWifiInjector;
private final HalDeviceManager mHalDeviceManager;
private final PropertyService mPropertyService;
private final WifiVendorHal mWifiVendorHal;
@@ -108,9 +114,10 @@ public class WifiP2pNative {
}
}
- public WifiP2pNative(WifiVendorHal wifiVendorHal,
+ public WifiP2pNative(WifiInjector wifiInjector, WifiVendorHal wifiVendorHal,
SupplicantP2pIfaceHal p2pIfaceHal, HalDeviceManager halDeviceManager,
PropertyService propertyService) {
+ mWifiInjector = wifiInjector;
mWifiVendorHal = wifiVendorHal;
mSupplicantP2pIfaceHal = p2pIfaceHal;
mHalDeviceManager = halDeviceManager;
@@ -597,6 +604,7 @@ public class WifiP2pNative {
default:
freq = config.groupOwnerBand;
}
+ abortWifiRunningScanIfNeeded(join);
return mSupplicantP2pIfaceHal.groupAdd(
config.networkName,
config.passphrase,
@@ -604,6 +612,18 @@ public class WifiP2pNative {
freq, config.deviceAddress, join);
}
+ private void abortWifiRunningScanIfNeeded(boolean isJoin) {
+ if (!isJoin) return;
+
+ WifiCondManager wifiCondManager = mWifiInjector.getWifiCondManager();
+ WifiNative wifiNative = mWifiInjector.getWifiNative();
+ Set<String> wifiClientInterfaces = wifiNative.getClientInterfaceNames();
+
+ for (String interfaceName: wifiClientInterfaces) {
+ wifiCondManager.abortScan(interfaceName);
+ }
+ }
+
/**
* Terminate a P2P group. If a new virtual network interface was used for
* the group, it must also be removed. The network interface name of the
diff --git a/tests/wifitests/src/com/android/server/wifi/p2p/WifiP2pNativeInterfaceManagementTest.java b/tests/wifitests/src/com/android/server/wifi/p2p/WifiP2pNativeInterfaceManagementTest.java
index eb48b71c7..48a4334cb 100644
--- a/tests/wifitests/src/com/android/server/wifi/p2p/WifiP2pNativeInterfaceManagementTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/p2p/WifiP2pNativeInterfaceManagementTest.java
@@ -42,6 +42,7 @@ import com.android.server.wifi.HalDeviceManager.InterfaceDestroyedListener;
import com.android.server.wifi.HalDeviceManager.ManagerStatusListener;
import com.android.server.wifi.PropertyService;
import com.android.server.wifi.WifiBaseTest;
+import com.android.server.wifi.WifiInjector;
import com.android.server.wifi.WifiVendorHal;
import org.junit.Before;
@@ -68,6 +69,7 @@ public class WifiP2pNativeInterfaceManagementTest extends WifiBaseTest {
@Mock private IWifiP2pIface mIWifiP2pIface;
@Mock private IWifiIface mIWifiIface;
@Mock private WifiVendorHal mWifiVendorHal;
+ @Mock private WifiInjector mWifiInjector;
private WifiP2pNative mWifiP2pNative;
private WifiStatus mWifiStatusSuccess;
private ManagerStatusListener mManagerStatusListener;
@@ -98,7 +100,7 @@ public class WifiP2pNativeInterfaceManagementTest extends WifiBaseTest {
when(mPropertyService.getString(P2P_INTERFACE_PROPERTY, P2P_IFACE_NAME))
.thenReturn(P2P_IFACE_NAME);
- mWifiP2pNative = new WifiP2pNative(
+ mWifiP2pNative = new WifiP2pNative(mWifiInjector,
mWifiVendorHal, mSupplicantP2pIfaceHal, mHalDeviceManager,
mPropertyService);
}
diff --git a/tests/wifitests/src/com/android/server/wifi/p2p/WifiP2pNativeTest.java b/tests/wifitests/src/com/android/server/wifi/p2p/WifiP2pNativeTest.java
index 045b1752f..41952d71b 100644
--- a/tests/wifitests/src/com/android/server/wifi/p2p/WifiP2pNativeTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/p2p/WifiP2pNativeTest.java
@@ -37,6 +37,7 @@ import android.net.wifi.p2p.WifiP2pGroupList;
import android.net.wifi.p2p.WifiP2pManager;
import android.net.wifi.p2p.nsd.WifiP2pDnsSdServiceInfo;
import android.net.wifi.p2p.nsd.WifiP2pServiceInfo;
+import android.net.wifi.wificond.WifiCondManager;
import android.os.Handler;
import androidx.test.filters.SmallTest;
@@ -44,6 +45,8 @@ import androidx.test.filters.SmallTest;
import com.android.server.wifi.HalDeviceManager;
import com.android.server.wifi.PropertyService;
import com.android.server.wifi.WifiBaseTest;
+import com.android.server.wifi.WifiInjector;
+import com.android.server.wifi.WifiNative;
import com.android.server.wifi.WifiVendorHal;
import org.junit.Before;
@@ -52,6 +55,9 @@ import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
+import java.util.HashSet;
+import java.util.Set;
+
/**
* Unit tests for {@link com.android.server.wifi.WifiP2pMonitor}.
*/
@@ -77,6 +83,9 @@ public class WifiP2pNativeTest extends WifiBaseTest {
private static final String TEST_NFC_SELECT_MSG = "select";
private static final String TEST_CLIENT_LIST = "aa:bb:cc:dd:ee:ff 11:22:33:44:55:66";
+ @Mock private WifiInjector mWifiInjector;
+ @Mock private WifiCondManager mWifiCondManager;
+ @Mock private WifiNative mWifiNative;
@Mock private WifiVendorHal mWifiVendorHalMock;
@Mock private SupplicantP2pIfaceHal mSupplicantP2pIfaceHalMock;
@Mock private HalDeviceManager mHalDeviceManagerMock;
@@ -85,6 +94,7 @@ public class WifiP2pNativeTest extends WifiBaseTest {
private WifiP2pNative mWifiP2pNative;
private WifiP2pGroupList mWifiP2pGroupList = new WifiP2pGroupList();
+ private Set<String> mWifiClientInterfaceNames = new HashSet<String>();
private WifiP2pGroup createP2pGroup(
int networkId, String networkName, String passphrase, boolean isGo, String goAddr) {
@@ -100,12 +110,22 @@ public class WifiP2pNativeTest extends WifiBaseTest {
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
+
+ mWifiClientInterfaceNames.add("wlan0");
+ mWifiClientInterfaceNames.add("wlan1");
+
mWifiP2pNative = new WifiP2pNative(
+ mWifiInjector,
mWifiVendorHalMock,
mSupplicantP2pIfaceHalMock,
mHalDeviceManagerMock,
mPropertyServiceMock);
+ when(mWifiInjector.getWifiCondManager()).thenReturn(mWifiCondManager);
+ when(mWifiInjector.getWifiNative()).thenReturn(mWifiNative);
+
+ when(mWifiNative.getClientInterfaceNames()).thenReturn(mWifiClientInterfaceNames);
+
mWifiP2pGroupList.add(
createP2pGroup(1, "testGroup1", "passphrase", true, "aa:bb:cc:dd:ee:f0"));
mWifiP2pGroupList.add(
@@ -423,6 +443,10 @@ public class WifiP2pNativeTest extends WifiBaseTest {
.build();
assertTrue(mWifiP2pNative.p2pGroupAdd(config, true));
+ for (String intf: mWifiClientInterfaceNames) {
+ verify(mWifiCondManager).abortScan(eq(intf));
+ }
+
verify(mSupplicantP2pIfaceHalMock).groupAdd(
eq(TEST_NETWORK_NAME),
eq(TEST_PASSPHRASE),