summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--framework/java/android/net/wifi/WifiNetworkSpecifier.java44
-rw-r--r--framework/tests/src/android/net/wifi/WifiNetworkAgentSpecifierTest.java32
-rw-r--r--framework/tests/src/android/net/wifi/WifiNetworkSpecifierTest.java40
-rw-r--r--service/java/com/android/server/wifi/ActiveModeWarden.java16
-rw-r--r--service/java/com/android/server/wifi/MultiInternetWifiNetworkFactory.java3
-rw-r--r--service/java/com/android/server/wifi/WifiNetworkFactory.java16
-rw-r--r--service/tests/wifitests/src/com/android/server/wifi/ActiveModeWardenTest.java55
-rw-r--r--service/tests/wifitests/src/com/android/server/wifi/WifiConfigurationUtilTest.java20
-rw-r--r--service/tests/wifitests/src/com/android/server/wifi/WifiNetworkFactoryTest.java20
9 files changed, 152 insertions, 94 deletions
diff --git a/framework/java/android/net/wifi/WifiNetworkSpecifier.java b/framework/java/android/net/wifi/WifiNetworkSpecifier.java
index 199969d9c7..e00e7e6b7b 100644
--- a/framework/java/android/net/wifi/WifiNetworkSpecifier.java
+++ b/framework/java/android/net/wifi/WifiNetworkSpecifier.java
@@ -192,6 +192,8 @@ public final class WifiNetworkSpecifier extends NetworkSpecifier implements Parc
private int[] mChannels;
+ private boolean mPreferSecondarySta;
+
public Builder() {
mSsidPatternMatcher = null;
mBssidPatternMatcher = null;
@@ -480,6 +482,19 @@ public final class WifiNetworkSpecifier extends NetworkSpecifier implements Parc
return this;
}
+ /**
+ * Hint the Wifi service to prefer using secondary STA for this connection.
+ *
+ * @param value - true to prefer this connection to be started on a secondary STA.
+ * false to let the wifi framework decide
+ * @return Instance of {@link Builder} to enable chaining of the builder method.
+ * @hide
+ */
+ @NonNull public Builder setPreferSecondarySta(boolean value) {
+ mPreferSecondarySta = value;
+ return this;
+ }
+
private void setSecurityParamsInWifiConfiguration(
@NonNull WifiConfiguration configuration) {
if (!TextUtils.isEmpty(mWpa2PskPassphrase)) { // WPA-PSK network.
@@ -684,7 +699,8 @@ public final class WifiNetworkSpecifier extends NetworkSpecifier implements Parc
mBssidPatternMatcher,
mBand,
buildWifiConfiguration(),
- mChannels);
+ mChannels,
+ mPreferSecondarySta);
}
}
@@ -707,6 +723,7 @@ public final class WifiNetworkSpecifier extends NetworkSpecifier implements Parc
@WifiBand private final int mBand;
private final int[] mChannelFreqs;
+ private boolean mPreferSecondarySta;
/**
* Security credentials for the network.
@@ -729,7 +746,8 @@ public final class WifiNetworkSpecifier extends NetworkSpecifier implements Parc
@NonNull Pair<MacAddress, MacAddress> bssidPatternMatcher,
@WifiBand int band,
@NonNull WifiConfiguration wifiConfiguration,
- @NonNull int[] channelFreqs) {
+ @NonNull int[] channelFreqs,
+ boolean preferSecondarySta) {
checkNotNull(ssidPatternMatcher);
checkNotNull(bssidPatternMatcher);
checkNotNull(wifiConfiguration);
@@ -739,6 +757,7 @@ public final class WifiNetworkSpecifier extends NetworkSpecifier implements Parc
this.mBand = band;
this.wifiConfiguration = wifiConfiguration;
this.mChannelFreqs = channelFreqs;
+ this.mPreferSecondarySta = preferSecondarySta;
}
/**
@@ -756,6 +775,14 @@ public final class WifiNetworkSpecifier extends NetworkSpecifier implements Parc
return mChannelFreqs.clone();
}
+ /**
+ * @see Builder#setPreferSecondarySta(boolean)
+ * @hide
+ */
+ public boolean isPreferSecondarySta() {
+ return mPreferSecondarySta;
+ }
+
public static final @NonNull Creator<WifiNetworkSpecifier> CREATOR =
new Creator<WifiNetworkSpecifier>() {
@Override
@@ -767,9 +794,10 @@ public final class WifiNetworkSpecifier extends NetworkSpecifier implements Parc
Pair.create(baseAddress, mask);
int band = in.readInt();
WifiConfiguration wifiConfiguration = in.readParcelable(null);
- int[] mChannels = in.createIntArray();
+ int[] channels = in.createIntArray();
+ boolean preferSecondarySta = in.readBoolean();
return new WifiNetworkSpecifier(ssidPatternMatcher, bssidPatternMatcher, band,
- wifiConfiguration, mChannels);
+ wifiConfiguration, channels, preferSecondarySta);
}
@Override
@@ -791,13 +819,15 @@ public final class WifiNetworkSpecifier extends NetworkSpecifier implements Parc
dest.writeInt(mBand);
dest.writeParcelable(wifiConfiguration, flags);
dest.writeIntArray(mChannelFreqs);
+ dest.writeBoolean(mPreferSecondarySta);
}
@Override
public int hashCode() {
return Objects.hash(
ssidPatternMatcher.getPath(), ssidPatternMatcher.getType(), bssidPatternMatcher,
- mBand, wifiConfiguration.allowedKeyManagement, Arrays.hashCode(mChannelFreqs));
+ mBand, wifiConfiguration.allowedKeyManagement, Arrays.hashCode(mChannelFreqs),
+ mPreferSecondarySta);
}
@Override
@@ -818,7 +848,8 @@ public final class WifiNetworkSpecifier extends NetworkSpecifier implements Parc
&& this.mBand == lhs.mBand
&& Objects.equals(this.wifiConfiguration.allowedKeyManagement,
lhs.wifiConfiguration.allowedKeyManagement)
- && Arrays.equals(mChannelFreqs, lhs.mChannelFreqs);
+ && Arrays.equals(mChannelFreqs, lhs.mChannelFreqs)
+ && mPreferSecondarySta == lhs.mPreferSecondarySta;
}
@Override
@@ -831,6 +862,7 @@ public final class WifiNetworkSpecifier extends NetworkSpecifier implements Parc
.append(", BSSID=").append(wifiConfiguration.BSSID)
.append(", channels=").append(Arrays.toString(mChannelFreqs))
.append(", band=").append(mBand)
+ .append(", preferSecondarySta=").append(mPreferSecondarySta)
.append("]")
.toString();
}
diff --git a/framework/tests/src/android/net/wifi/WifiNetworkAgentSpecifierTest.java b/framework/tests/src/android/net/wifi/WifiNetworkAgentSpecifierTest.java
index bc22b808c5..a6718c1f11 100644
--- a/framework/tests/src/android/net/wifi/WifiNetworkAgentSpecifierTest.java
+++ b/framework/tests/src/android/net/wifi/WifiNetworkAgentSpecifierTest.java
@@ -195,7 +195,7 @@ public class WifiNetworkAgentSpecifierTest {
ssidPattern,
bssidPattern,
ScanResult.WIFI_BAND_5_GHZ,
- wificonfigurationNetworkSpecifier, new int[0]);
+ wificonfigurationNetworkSpecifier, new int[0], false);
assertTrue(wifiNetworkSpecifier.canBeSatisfiedBy(wifiNetworkAgentSpecifier));
assertTrue(wifiNetworkAgentSpecifier.canBeSatisfiedBy(wifiNetworkSpecifier));
@@ -224,7 +224,7 @@ public class WifiNetworkAgentSpecifierTest {
ssidPattern,
bssidPattern,
ScanResult.WIFI_BAND_5_GHZ,
- wificonfigurationNetworkSpecifier, new int[0]);
+ wificonfigurationNetworkSpecifier, new int[0], false);
assertTrue(wifiNetworkSpecifier.canBeSatisfiedBy(wifiNetworkAgentSpecifier));
assertTrue(wifiNetworkAgentSpecifier.canBeSatisfiedBy(wifiNetworkSpecifier));
@@ -253,7 +253,7 @@ public class WifiNetworkAgentSpecifierTest {
ssidPattern,
bssidPattern,
ScanResult.WIFI_BAND_5_GHZ,
- wificonfigurationNetworkSpecifier, new int[0]);
+ wificonfigurationNetworkSpecifier, new int[0], false);
assertTrue(wifiNetworkSpecifier.canBeSatisfiedBy(wifiNetworkAgentSpecifier));
assertTrue(wifiNetworkAgentSpecifier.canBeSatisfiedBy(wifiNetworkSpecifier));
@@ -285,7 +285,7 @@ public class WifiNetworkAgentSpecifierTest {
ssidPattern,
bssidPattern,
ScanResult.WIFI_BAND_24_GHZ,
- wificonfigurationNetworkSpecifier, new int[0]);
+ wificonfigurationNetworkSpecifier, new int[0], false);
assertFalse(wifiNetworkSpecifier.canBeSatisfiedBy(wifiNetworkAgentSpecifier));
assertFalse(wifiNetworkAgentSpecifier.canBeSatisfiedBy(wifiNetworkSpecifier));
@@ -316,7 +316,7 @@ public class WifiNetworkAgentSpecifierTest {
ssidPattern,
bssidPattern,
ScanResult.WIFI_BAND_5_GHZ,
- wificonfigurationNetworkSpecifier, new int[0]);
+ wificonfigurationNetworkSpecifier, new int[0], false);
assertTrue(wifiNetworkSpecifier.canBeSatisfiedBy(wifiNetworkAgentSpecifier));
assertTrue(wifiNetworkAgentSpecifier.canBeSatisfiedBy(wifiNetworkSpecifier));
@@ -325,7 +325,7 @@ public class WifiNetworkAgentSpecifierTest {
ssidPattern,
bssidPattern,
ScanResult.WIFI_BAND_24_GHZ,
- wificonfigurationNetworkSpecifier, new int[0]);
+ wificonfigurationNetworkSpecifier, new int[0], false);
assertFalse(wifiNetworkSpecifier.canBeSatisfiedBy(wifiNetworkAgentSpecifier));
assertFalse(wifiNetworkAgentSpecifier.canBeSatisfiedBy(wifiNetworkSpecifier));
@@ -334,7 +334,7 @@ public class WifiNetworkAgentSpecifierTest {
ssidPattern,
bssidPattern,
ScanResult.UNSPECIFIED,
- wificonfigurationNetworkSpecifier, new int[0]);
+ wificonfigurationNetworkSpecifier, new int[0], false);
assertTrue(wifiNetworkSpecifier.canBeSatisfiedBy(wifiNetworkAgentSpecifier));
assertTrue(wifiNetworkAgentSpecifier.canBeSatisfiedBy(wifiNetworkSpecifier));
}
@@ -373,17 +373,17 @@ public class WifiNetworkAgentSpecifierTest {
ssidPattern,
bssidPattern,
ScanResult.WIFI_BAND_5_GHZ,
- wificonfigurationNetworkSpecifier, new int[0]);
+ wificonfigurationNetworkSpecifier, new int[0], false);
WifiNetworkSpecifier wifi5GLowNetworkSpecifier = new WifiNetworkSpecifier(
ssidPattern,
bssidPattern,
ScanResult.WIFI_BAND_5_GHZ_LOW,
- wificonfigurationNetworkSpecifier, new int[0]);
+ wificonfigurationNetworkSpecifier, new int[0], false);
WifiNetworkSpecifier wifi5GHighNetworkSpecifier = new WifiNetworkSpecifier(
ssidPattern,
bssidPattern,
ScanResult.WIFI_BAND_5_GHZ_HIGH,
- wificonfigurationNetworkSpecifier, new int[0]);
+ wificonfigurationNetworkSpecifier, new int[0], false);
// mBand = WIFI_BAND_5_GHZ_LOW
// Same band matches.
@@ -435,7 +435,7 @@ public class WifiNetworkAgentSpecifierTest {
ssidPattern,
bssidPattern,
ScanResult.WIFI_BAND_5_GHZ,
- wificonfigurationNetworkSpecifier, new int[0]);
+ wificonfigurationNetworkSpecifier, new int[0], false);
assertFalse(wifiNetworkSpecifier.canBeSatisfiedBy(wifiNetworkAgentSpecifier));
assertFalse(wifiNetworkAgentSpecifier.canBeSatisfiedBy(wifiNetworkSpecifier));
@@ -454,7 +454,7 @@ public class WifiNetworkAgentSpecifierTest {
ssidPattern,
bssidPattern,
ScanResult.WIFI_BAND_24_GHZ,
- wificonfigurationNetworkSpecifier, new int[0]);
+ wificonfigurationNetworkSpecifier, new int[0], false);
assertFalse(wifiNetworkSpecifier.canBeSatisfiedBy(wifiNetworkAgentSpecifier));
assertFalse(wifiNetworkAgentSpecifier.canBeSatisfiedBy(wifiNetworkSpecifier));
@@ -464,7 +464,7 @@ public class WifiNetworkAgentSpecifierTest {
ssidPattern,
bssidPattern,
ScanResult.UNSPECIFIED,
- wificonfigurationNetworkSpecifier, new int[0]);
+ wificonfigurationNetworkSpecifier, new int[0], false);
assertFalse(wifiNetworkSpecifier.canBeSatisfiedBy(wifiNetworkAgentSpecifier));
assertFalse(wifiNetworkAgentSpecifier.canBeSatisfiedBy(wifiNetworkSpecifier));
}
@@ -496,7 +496,7 @@ public class WifiNetworkAgentSpecifierTest {
ssidPattern,
bssidPattern,
ScanResult.WIFI_BAND_5_GHZ,
- wificonfigurationNetworkSpecifier, new int[0]);
+ wificonfigurationNetworkSpecifier, new int[0], false);
assertFalse(wifiNetworkSpecifier.canBeSatisfiedBy(wifiNetworkAgentSpecifier));
assertFalse(wifiNetworkAgentSpecifier.canBeSatisfiedBy(wifiNetworkSpecifier));
@@ -529,7 +529,7 @@ public class WifiNetworkAgentSpecifierTest {
ssidPattern,
bssidPattern,
ScanResult.WIFI_BAND_24_GHZ,
- wificonfigurationNetworkSpecifier, new int[0]);
+ wificonfigurationNetworkSpecifier, new int[0], false);
assertFalse(wifiNetworkSpecifier.canBeSatisfiedBy(wifiNetworkAgentSpecifier));
assertFalse(wifiNetworkAgentSpecifier.canBeSatisfiedBy(wifiNetworkSpecifier));
@@ -557,7 +557,7 @@ public class WifiNetworkAgentSpecifierTest {
ssidPattern,
bssidPattern,
ScanResult.UNSPECIFIED,
- wificonfigurationNetworkSpecifier, new int[0]);
+ wificonfigurationNetworkSpecifier, new int[0], false);
assertFalse(wifiNetworkSpecifier.canBeSatisfiedBy(wifiNetworkAgentSpecifier));
assertFalse(wifiNetworkAgentSpecifier.canBeSatisfiedBy(wifiNetworkSpecifier));
diff --git a/framework/tests/src/android/net/wifi/WifiNetworkSpecifierTest.java b/framework/tests/src/android/net/wifi/WifiNetworkSpecifierTest.java
index 12dfd6e9a5..cc6d008cb2 100644
--- a/framework/tests/src/android/net/wifi/WifiNetworkSpecifierTest.java
+++ b/framework/tests/src/android/net/wifi/WifiNetworkSpecifierTest.java
@@ -657,7 +657,7 @@ public class WifiNetworkSpecifierTest {
Pair.create(MacAddress.fromString(TEST_BSSID_OUI_BASE_ADDRESS),
MacAddress.fromString(TEST_BSSID_OUI_MASK)),
WIFI_BAND_5_GHZ,
- wifiConfiguration, new int[0]);
+ wifiConfiguration, new int[0], false);
Parcel parcelW = Parcel.obtain();
specifier.writeToParcel(parcelW, 0);
@@ -689,7 +689,7 @@ public class WifiNetworkSpecifierTest {
Pair.create(MacAddress.fromString(TEST_BSSID_OUI_BASE_ADDRESS),
MacAddress.fromString(TEST_BSSID_OUI_MASK)),
ScanResult.UNSPECIFIED, /* band */
- wifiConfiguration, new int[0]);
+ wifiConfiguration, new int[0], false);
assertFalse(specifier.canBeSatisfiedBy(null));
assertFalse(specifier.canBeSatisfiedBy(new MatchAllNetworkSpecifier()));
@@ -712,14 +712,14 @@ public class WifiNetworkSpecifierTest {
Pair.create(MacAddress.fromString(TEST_BSSID_OUI_BASE_ADDRESS),
MacAddress.fromString(TEST_BSSID_OUI_MASK)),
WIFI_BAND_5_GHZ,
- wifiConfiguration, new int[0]);
+ wifiConfiguration, new int[0], false);
WifiNetworkSpecifier specifier2 =
new WifiNetworkSpecifier(new PatternMatcher(TEST_SSID, PATTERN_LITERAL),
Pair.create(MacAddress.fromString(TEST_BSSID_OUI_BASE_ADDRESS),
MacAddress.fromString(TEST_BSSID_OUI_MASK)),
WIFI_BAND_5_GHZ,
- wifiConfiguration, new int[0]);
+ wifiConfiguration, new int[0], false);
assertTrue(specifier2.canBeSatisfiedBy(specifier1));
}
@@ -741,7 +741,7 @@ public class WifiNetworkSpecifierTest {
Pair.create(MacAddress.fromString(TEST_BSSID_OUI_BASE_ADDRESS),
MacAddress.fromString(TEST_BSSID_OUI_MASK)),
ScanResult.WIFI_BAND_24_GHZ,
- wifiConfiguration1, new int[0]);
+ wifiConfiguration1, new int[0], false);
WifiConfiguration wifiConfiguration2 = new WifiConfiguration();
wifiConfiguration2.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
@@ -750,7 +750,7 @@ public class WifiNetworkSpecifierTest {
Pair.create(MacAddress.fromString(TEST_BSSID_OUI_BASE_ADDRESS),
MacAddress.fromString(TEST_BSSID_OUI_MASK)),
ScanResult.WIFI_BAND_24_GHZ,
- wifiConfiguration2, new int[0]);
+ wifiConfiguration2, new int[0], false);
assertFalse(specifier2.canBeSatisfiedBy(specifier1));
}
@@ -772,14 +772,14 @@ public class WifiNetworkSpecifierTest {
Pair.create(MacAddress.fromString(TEST_BSSID_OUI_BASE_ADDRESS),
MacAddress.fromString(TEST_BSSID_OUI_MASK)),
WIFI_BAND_5_GHZ,
- wifiConfiguration, new int[0]);
+ wifiConfiguration, new int[0], false);
WifiNetworkSpecifier specifier2 =
new WifiNetworkSpecifier(new PatternMatcher(TEST_SSID, PATTERN_LITERAL),
Pair.create(MacAddress.fromString(TEST_BSSID_OUI_BASE_ADDRESS),
MacAddress.fromString(TEST_BSSID_OUI_MASK)),
WIFI_BAND_5_GHZ,
- wifiConfiguration, new int[0]);
+ wifiConfiguration, new int[0], false);
assertFalse(specifier2.canBeSatisfiedBy(specifier1));
}
@@ -801,14 +801,14 @@ public class WifiNetworkSpecifierTest {
Pair.create(MacAddress.fromString(TEST_BSSID_OUI_BASE_ADDRESS),
MacAddress.fromString(TEST_BSSID_OUI_MASK)),
ScanResult.WIFI_BAND_24_GHZ,
- wifiConfiguration, new int[0]);
+ wifiConfiguration, new int[0], false);
WifiNetworkSpecifier specifier2 =
new WifiNetworkSpecifier(new PatternMatcher(TEST_SSID, PATTERN_LITERAL),
Pair.create(WifiManager.ALL_ZEROS_MAC_ADDRESS,
WifiManager.ALL_ZEROS_MAC_ADDRESS),
ScanResult.WIFI_BAND_24_GHZ,
- wifiConfiguration, new int[0]);
+ wifiConfiguration, new int[0], false);
assertFalse(specifier2.canBeSatisfiedBy(specifier1));
}
@@ -827,14 +827,14 @@ public class WifiNetworkSpecifierTest {
Pair.create(MacAddress.fromString(TEST_BSSID_OUI_BASE_ADDRESS),
MacAddress.fromString(TEST_BSSID_OUI_MASK)),
ScanResult.WIFI_BAND_24_GHZ,
- wifiConfiguration, new int[0]);
+ wifiConfiguration, new int[0], false);
WifiNetworkSpecifier specifier2 =
new WifiNetworkSpecifier(new PatternMatcher(TEST_SSID, PATTERN_LITERAL),
Pair.create(MacAddress.fromString(TEST_BSSID_OUI_BASE_ADDRESS),
MacAddress.fromString(TEST_BSSID_OUI_MASK)),
ScanResult.WIFI_BAND_24_GHZ,
- wifiConfiguration, new int[0]);
+ wifiConfiguration, new int[0], false);
// Same band matches.
assertTrue(specifier2.canBeSatisfiedBy(specifier1));
@@ -845,7 +845,7 @@ public class WifiNetworkSpecifierTest {
Pair.create(WifiManager.ALL_ZEROS_MAC_ADDRESS,
WifiManager.ALL_ZEROS_MAC_ADDRESS),
WIFI_BAND_5_GHZ,
- wifiConfiguration, new int[0]);
+ wifiConfiguration, new int[0], false);
// Different band does not match.
assertFalse(specifier2.canBeSatisfiedBy(specifier1));
@@ -856,7 +856,7 @@ public class WifiNetworkSpecifierTest {
Pair.create(WifiManager.ALL_ZEROS_MAC_ADDRESS,
WifiManager.ALL_ZEROS_MAC_ADDRESS),
ScanResult.UNSPECIFIED,
- wifiConfiguration, new int[0]);
+ wifiConfiguration, new int[0], false);
// An UNSPECIFIED band does not match a specified band, because a WifiNetworkSpecifier
// satisfies another only if they are equal.
@@ -878,7 +878,7 @@ public class WifiNetworkSpecifierTest {
Pair.create(MacAddress.fromString(TEST_BSSID_OUI_BASE_ADDRESS),
MacAddress.fromString(TEST_BSSID_OUI_MASK)),
WIFI_BAND_5_GHZ,
- wifiConfiguration, new int[0]);
+ wifiConfiguration, new int[0], false);
final NetworkSpecifier redacted = specifier.redact();
if (SdkLevel.isAtLeastS()) {
@@ -902,4 +902,14 @@ public class WifiNetworkSpecifierTest {
builder.setBand(WIFI_BAND_5_GHZ);
assertThrows(IllegalStateException.class, builder::build);
}
+
+ @Test
+ public void testSetPreferSecondarySta() {
+ WifiNetworkSpecifier.Builder builder = new WifiNetworkSpecifier.Builder()
+ .setSsidPattern(new PatternMatcher(TEST_SSID, PATTERN_PREFIX));
+ // By default this should be false
+ assertEquals(false, builder.build().isPreferSecondarySta());
+ // It should be true if set to true
+ assertEquals(true, builder.setPreferSecondarySta(true).build().isPreferSecondarySta());
+ }
}
diff --git a/service/java/com/android/server/wifi/ActiveModeWarden.java b/service/java/com/android/server/wifi/ActiveModeWarden.java
index 9e6845f47b..7f16ec46d7 100644
--- a/service/java/com/android/server/wifi/ActiveModeWarden.java
+++ b/service/java/com/android/server/wifi/ActiveModeWarden.java
@@ -932,6 +932,7 @@ public class ActiveModeWarden {
@NonNull public final String ssid;
@Nullable public final String bssid;
public final boolean didUserApprove;
+ public boolean preferSecondarySta = false;
AdditionalClientModeManagerRequestInfo(
@NonNull ExternalClientModeManagerRequestListener listener,
@@ -947,7 +948,6 @@ public class ActiveModeWarden {
this.ssid = ssid;
this.bssid = bssid;
this.didUserApprove = didUserApprove;
-
}
}
@@ -960,11 +960,12 @@ public class ActiveModeWarden {
* 3. The new ClientModeManager - if it was created successfully.
* @param requestorWs the WorkSource for this request
* @param didUserApprove if user explicitly approve on this request
+ * @param preferSecondarySta prefer to use secondary CMM for this request if possible
*/
public void requestLocalOnlyClientModeManager(
@NonNull ExternalClientModeManagerRequestListener listener,
@NonNull WorkSource requestorWs, @NonNull String ssid, @NonNull String bssid,
- boolean didUserApprove) {
+ boolean didUserApprove, boolean preferSecondarySta) {
if (listener == null) {
Log.wtf(TAG, "Cannot provide a null ExternalClientModeManagerRequestListener");
return;
@@ -974,10 +975,14 @@ public class ActiveModeWarden {
return;
}
+ AdditionalClientModeManagerRequestInfo additionalClientModeManagerRequestInfo =
+ new AdditionalClientModeManagerRequestInfo(listener, requestorWs,
+ ROLE_CLIENT_LOCAL_ONLY, ssid, bssid, didUserApprove);
+ additionalClientModeManagerRequestInfo.preferSecondarySta = preferSecondarySta;
+
mWifiController.sendMessage(
WifiController.CMD_REQUEST_ADDITIONAL_CLIENT_MODE_MANAGER,
- new AdditionalClientModeManagerRequestInfo(listener, requestorWs,
- ROLE_CLIENT_LOCAL_ONLY, ssid, bssid, didUserApprove));
+ additionalClientModeManagerRequestInfo);
}
/**
@@ -2487,7 +2492,8 @@ public class ActiveModeWarden {
// Special case for holders with ENTER_CAR_MODE_PRIORITIZED. Only give them the
// primary STA to avoid the device getting into STA+STA state.
// In STA+STA wifi scans will result in high latency in the secondary STA.
- if (requestInfo.clientRole == ROLE_CLIENT_LOCAL_ONLY
+ if (!requestInfo.preferSecondarySta
+ && requestInfo.clientRole == ROLE_CLIENT_LOCAL_ONLY
&& requestInfo.requestorWs != null) {
WorkSource workSource = requestInfo.requestorWs;
for (int i = 0; i < workSource.size(); i++) {
diff --git a/service/java/com/android/server/wifi/MultiInternetWifiNetworkFactory.java b/service/java/com/android/server/wifi/MultiInternetWifiNetworkFactory.java
index cb149b7bc5..88aa3c6e29 100644
--- a/service/java/com/android/server/wifi/MultiInternetWifiNetworkFactory.java
+++ b/service/java/com/android/server/wifi/MultiInternetWifiNetworkFactory.java
@@ -182,7 +182,8 @@ public class MultiInternetWifiNetworkFactory extends NetworkFactory {
NetworkRequestState nrs = new NetworkRequestState(networkRequest,
new WifiNetworkSpecifier(
wns.ssidPatternMatcher, wns.bssidPatternMatcher, wns.getBand(),
- wns.wifiConfiguration, wns.getPreferredChannelFrequenciesMhz()),
+ wns.wifiConfiguration, wns.getPreferredChannelFrequenciesMhz(),
+ wns.isPreferSecondarySta()),
isFromSetting,
isFromForegroundApp,
isFromForegroundAppOrService);
diff --git a/service/java/com/android/server/wifi/WifiNetworkFactory.java b/service/java/com/android/server/wifi/WifiNetworkFactory.java
index 6deb4bd6b5..a4b876dfb0 100644
--- a/service/java/com/android/server/wifi/WifiNetworkFactory.java
+++ b/service/java/com/android/server/wifi/WifiNetworkFactory.java
@@ -909,7 +909,8 @@ public class WifiNetworkFactory extends NetworkFactory {
WifiNetworkSpecifier wns = (WifiNetworkSpecifier) ns;
mActiveSpecificNetworkRequestSpecifier = new WifiNetworkSpecifier(
wns.ssidPatternMatcher, wns.bssidPatternMatcher, wns.getBand(),
- wns.wifiConfiguration, wns.getPreferredChannelFrequenciesMhz());
+ wns.wifiConfiguration, wns.getPreferredChannelFrequenciesMhz(),
+ wns.isPreferSecondarySta());
mSkipUserDialogue = false;
mWifiMetrics.incrementNetworkRequestApiNumRequest();
@@ -1156,7 +1157,7 @@ public class WifiNetworkFactory extends NetworkFactory {
}
private void handleConnectToNetworkUserSelectionInternal(WifiConfiguration network,
- boolean didUserSeeUi) {
+ boolean didUserSeeUi, boolean preferSecondarySta) {
// Copy over the credentials from the app's request and then copy the ssid from user
// selection.
WifiConfiguration networkToConnect =
@@ -1202,8 +1203,10 @@ public class WifiNetworkFactory extends NetworkFactory {
}
WorkSource ws = new WorkSource(mActiveSpecificNetworkRequest.getRequestorUid(),
mActiveSpecificNetworkRequest.getRequestorPackageName());
+ // mPreferSecondarySta
mActiveModeWarden.requestLocalOnlyClientModeManager(new ClientModeManagerRequestListener(),
- ws, networkToConnect.SSID, networkToConnect.BSSID, didUserSeeUi);
+ ws, networkToConnect.SSID, networkToConnect.BSSID, didUserSeeUi,
+ preferSecondarySta);
}
private boolean hasNetworkForInternet(WifiConfiguration network) {
@@ -1222,9 +1225,11 @@ public class WifiNetworkFactory extends NetworkFactory {
// Cancel the ongoing scans after user selection.
cancelPeriodicScans();
mIsPeriodicScanEnabled = false;
+ boolean preferSecondarySta = mActiveSpecificNetworkRequestSpecifier == null
+ ? false : mActiveSpecificNetworkRequestSpecifier.isPreferSecondarySta();
// Trigger connection attempts.
- handleConnectToNetworkUserSelectionInternal(network, didUserSeeUi);
+ handleConnectToNetworkUserSelectionInternal(network, didUserSeeUi, preferSecondarySta);
// Add the network to the approved access point map for the app.
addNetworkToUserApprovedAccessPointMap(mUserSelectedNetwork);
@@ -1996,7 +2001,8 @@ public class WifiNetworkFactory extends NetworkFactory {
WifiConfiguration config = mActiveSpecificNetworkRequestSpecifier.wifiConfiguration;
config.SSID = "\"" + ssid + "\"";
config.BSSID = bssid.toString();
- handleConnectToNetworkUserSelectionInternal(config, false);
+ handleConnectToNetworkUserSelectionInternal(config, false,
+ mActiveSpecificNetworkRequestSpecifier.isPreferSecondarySta());
mWifiMetrics.incrementNetworkRequestApiNumUserApprovalBypass();
return true;
}
diff --git a/service/tests/wifitests/src/com/android/server/wifi/ActiveModeWardenTest.java b/service/tests/wifitests/src/com/android/server/wifi/ActiveModeWardenTest.java
index 424ceb69ed..a093a85f11 100644
--- a/service/tests/wifitests/src/com/android/server/wifi/ActiveModeWardenTest.java
+++ b/service/tests/wifitests/src/com/android/server/wifi/ActiveModeWardenTest.java
@@ -3192,7 +3192,7 @@ public class ActiveModeWardenTest extends WifiBaseTest {
// request for ssid2/bssid2
if (additionaClientModeManagerRole == ROLE_CLIENT_LOCAL_ONLY) {
mActiveModeWarden.requestLocalOnlyClientModeManager(
- externalRequestListener, TEST_WORKSOURCE, ssid, bssid, false);
+ externalRequestListener, TEST_WORKSOURCE, ssid, bssid, false, false);
} else if (additionaClientModeManagerRole == ROLE_CLIENT_SECONDARY_LONG_LIVED) {
mActiveModeWarden.requestSecondaryLongLivedClientModeManager(
externalRequestListener, TEST_WORKSOURCE, ssid, bssid);
@@ -3307,7 +3307,8 @@ public class ActiveModeWardenTest extends WifiBaseTest {
// request for ssid2/bssid2
if (role == ROLE_CLIENT_LOCAL_ONLY) {
mActiveModeWarden.requestLocalOnlyClientModeManager(
- externalRequestListener, TEST_WORKSOURCE, TEST_SSID_2, TEST_BSSID_2, false);
+ externalRequestListener, TEST_WORKSOURCE, TEST_SSID_2, TEST_BSSID_2, false,
+ false);
} else if (role == ROLE_CLIENT_SECONDARY_LONG_LIVED) {
mActiveModeWarden.requestSecondaryLongLivedClientModeManager(
externalRequestListener, TEST_WORKSOURCE, TEST_SSID_2, TEST_BSSID_2);
@@ -3338,7 +3339,8 @@ public class ActiveModeWardenTest extends WifiBaseTest {
ExternalClientModeManagerRequestListener.class);
if (role == ROLE_CLIENT_LOCAL_ONLY) {
mActiveModeWarden.requestLocalOnlyClientModeManager(
- externalRequestListener, TEST_WORKSOURCE, TEST_SSID_1, TEST_BSSID_1, false);
+ externalRequestListener, TEST_WORKSOURCE, TEST_SSID_1, TEST_BSSID_1, false,
+ false);
} else if (role == ROLE_CLIENT_SECONDARY_LONG_LIVED) {
mActiveModeWarden.requestSecondaryLongLivedClientModeManager(
externalRequestListener, TEST_WORKSOURCE, TEST_SSID_1, TEST_BSSID_1);
@@ -3370,7 +3372,8 @@ public class ActiveModeWardenTest extends WifiBaseTest {
// request for one more CMM (returns the existing one).
if (role == ROLE_CLIENT_LOCAL_ONLY) {
mActiveModeWarden.requestLocalOnlyClientModeManager(
- externalRequestListener, TEST_WORKSOURCE, TEST_SSID_3, TEST_BSSID_3, false);
+ externalRequestListener, TEST_WORKSOURCE, TEST_SSID_3, TEST_BSSID_3, false,
+ false);
} else if (role == ROLE_CLIENT_SECONDARY_LONG_LIVED) {
mActiveModeWarden.requestSecondaryLongLivedClientModeManager(
externalRequestListener, TEST_WORKSOURCE, TEST_SSID_3, TEST_BSSID_3);
@@ -3413,7 +3416,8 @@ public class ActiveModeWardenTest extends WifiBaseTest {
// request for the same SSID/BSSID and expect the existing CMM to get returned twice.
if (role == ROLE_CLIENT_LOCAL_ONLY) {
mActiveModeWarden.requestLocalOnlyClientModeManager(
- externalRequestListener, TEST_WORKSOURCE, TEST_SSID_2, TEST_BSSID_2, false);
+ externalRequestListener, TEST_WORKSOURCE, TEST_SSID_2, TEST_BSSID_2, false,
+ false);
} else if (role == ROLE_CLIENT_SECONDARY_LONG_LIVED) {
mActiveModeWarden.requestSecondaryLongLivedClientModeManager(
externalRequestListener, TEST_WORKSOURCE, TEST_SSID_2, TEST_BSSID_2);
@@ -3460,7 +3464,8 @@ public class ActiveModeWardenTest extends WifiBaseTest {
// request for same ssid1/bssid1
if (role == ROLE_CLIENT_LOCAL_ONLY) {
mActiveModeWarden.requestLocalOnlyClientModeManager(
- externalRequestListener, TEST_WORKSOURCE, TEST_SSID_1, TEST_BSSID_1, false);
+ externalRequestListener, TEST_WORKSOURCE, TEST_SSID_1, TEST_BSSID_1, false,
+ false);
} else if (role == ROLE_CLIENT_SECONDARY_LONG_LIVED) {
mActiveModeWarden.requestSecondaryLongLivedClientModeManager(
externalRequestListener, TEST_WORKSOURCE, TEST_SSID_1, TEST_BSSID_1);
@@ -3526,7 +3531,7 @@ public class ActiveModeWardenTest extends WifiBaseTest {
ExternalClientModeManagerRequestListener externalRequestListener = mock(
ExternalClientModeManagerRequestListener.class);
mActiveModeWarden.requestLocalOnlyClientModeManager(
- externalRequestListener, TEST_WORKSOURCE, TEST_SSID_1, TEST_BSSID_1, false);
+ externalRequestListener, TEST_WORKSOURCE, TEST_SSID_1, TEST_BSSID_1, false, false);
mLooper.dispatchAll();
verify(externalRequestListener).onAnswer(null);
@@ -3901,7 +3906,7 @@ public class ActiveModeWardenTest extends WifiBaseTest {
ExternalClientModeManagerRequestListener.class);
// request for ssid2/bssid2
mActiveModeWarden.requestLocalOnlyClientModeManager(
- externalRequestListener, TEST_WORKSOURCE, TEST_SSID_2, TEST_BSSID_2, false);
+ externalRequestListener, TEST_WORKSOURCE, TEST_SSID_2, TEST_BSSID_2, false, false);
mLooper.dispatchAll();
verify(mWifiInjector).makeClientModeManager(
any(), eq(TEST_WORKSOURCE), eq(ROLE_CLIENT_LOCAL_ONLY), anyBoolean());
@@ -3986,7 +3991,7 @@ public class ActiveModeWardenTest extends WifiBaseTest {
ExternalClientModeManagerRequestListener.class);
// request for ssid2/bssid2
mActiveModeWarden.requestLocalOnlyClientModeManager(
- externalRequestListener, TEST_WORKSOURCE, TEST_SSID_2, TEST_BSSID_2, false);
+ externalRequestListener, TEST_WORKSOURCE, TEST_SSID_2, TEST_BSSID_2, false, false);
mLooper.dispatchAll();
verify(mWifiInjector).makeClientModeManager(
any(), eq(TEST_WORKSOURCE), eq(ROLE_CLIENT_LOCAL_ONLY), anyBoolean());
@@ -4124,7 +4129,7 @@ public class ActiveModeWardenTest extends WifiBaseTest {
// mock requesting local only secondary
mActiveModeWarden.requestLocalOnlyClientModeManager(
- externalRequestListener, TEST_WORKSOURCE, TEST_SSID_2, TEST_BSSID_2, false);
+ externalRequestListener, TEST_WORKSOURCE, TEST_SSID_2, TEST_BSSID_2, false, false);
mLooper.dispatchAll();
// Verify the primary is given to the externalRequestListener
verify(externalRequestListener).onAnswer(requestedClientModeManager.capture());
@@ -4132,20 +4137,18 @@ public class ActiveModeWardenTest extends WifiBaseTest {
any(), any(), eq(ROLE_CLIENT_LOCAL_ONLY), anyBoolean());
assertEquals(ROLE_CLIENT_PRIMARY, requestedClientModeManager.getValue().getRole());
- // Request for non local-only STA and verify the secondary STA is provided instead.
- when(additionalClientModeManager.getRole()).thenReturn(ROLE_CLIENT_SECONDARY_LONG_LIVED);
- mActiveModeWarden.requestSecondaryLongLivedClientModeManager(
- externalRequestListener, TEST_WORKSOURCE, TEST_SSID_2, TEST_BSSID_2);
+ // mock requesting local only secondary, but with preference for secondary STA.
+ // This should bypass the enterCarMode permission check and still give secondary STA.
+ mActiveModeWarden.requestLocalOnlyClientModeManager(
+ externalRequestListener, TEST_WORKSOURCE, TEST_SSID_2, TEST_BSSID_2, false, true);
mLooper.dispatchAll();
- verify(mWifiInjector).makeClientModeManager(any(), any(),
- eq(ROLE_CLIENT_SECONDARY_LONG_LIVED), anyBoolean());
-
additionalClientListener.value.onStarted(additionalClientModeManager);
mLooper.dispatchAll();
- verify(externalRequestListener, times(2)).onAnswer(
- requestedClientModeManager.capture());
- assertEquals(ROLE_CLIENT_SECONDARY_LONG_LIVED,
- requestedClientModeManager.getValue().getRole());
+ // Verify secondary is given to the externalRequestListener
+ verify(externalRequestListener, times(2)).onAnswer(requestedClientModeManager.capture());
+ verify(mWifiInjector).makeClientModeManager(
+ any(), any(), eq(ROLE_CLIENT_LOCAL_ONLY), anyBoolean());
+ assertEquals(ROLE_CLIENT_LOCAL_ONLY, requestedClientModeManager.getValue().getRole());
}
@Test
@@ -4182,10 +4185,10 @@ public class ActiveModeWardenTest extends WifiBaseTest {
when(additionalClientModeManager.getInterfaceName()).thenReturn(WIFI_IFACE_NAME_1);
when(additionalClientModeManager.getRole()).thenReturn(ROLE_CLIENT_LOCAL_ONLY);
- // Request will shell uid for local-only STA and verify the secondary is provided instead.
+ // Request with shell uid for local-only STA and verify the secondary is provided instead.
WorkSource shellWs = new WorkSource(0, "shell");
mActiveModeWarden.requestLocalOnlyClientModeManager(
- externalRequestListener, shellWs, TEST_SSID_2, TEST_BSSID_2, false);
+ externalRequestListener, shellWs, TEST_SSID_2, TEST_BSSID_2, false, false);
mLooper.dispatchAll();
verify(mWifiInjector).makeClientModeManager(any(), any(),
eq(ROLE_CLIENT_LOCAL_ONLY), anyBoolean());
@@ -4567,7 +4570,7 @@ public class ActiveModeWardenTest extends WifiBaseTest {
mActiveModeWarden.requestLocalOnlyClientModeManager(
mock(ExternalClientModeManagerRequestListener.class),
- TEST_WORKSOURCE, TEST_SSID_2, TEST_BSSID_2, false);
+ TEST_WORKSOURCE, TEST_SSID_2, TEST_BSSID_2, false, false);
mLooper.dispatchAll();
// No role set, should be ignored.
@@ -4898,7 +4901,7 @@ public class ActiveModeWardenTest extends WifiBaseTest {
// mock requesting local only secondary
mActiveModeWarden.requestLocalOnlyClientModeManager(
- externalRequestListener, TEST_WORKSOURCE, TEST_SSID_2, TEST_BSSID_2, true);
+ externalRequestListener, TEST_WORKSOURCE, TEST_SSID_2, TEST_BSSID_2, true, false);
mLooper.dispatchAll();
// Verify the primary is given to the externalRequestListener
verify(externalRequestListener).onAnswer(requestedClientModeManager.capture());
@@ -4956,7 +4959,7 @@ public class ActiveModeWardenTest extends WifiBaseTest {
// mock requesting local only secondary
mActiveModeWarden.requestLocalOnlyClientModeManager(
- externalRequestListener, TEST_WORKSOURCE, TEST_SSID_2, TEST_BSSID_2, true);
+ externalRequestListener, TEST_WORKSOURCE, TEST_SSID_2, TEST_BSSID_2, true, false);
mLooper.dispatchAll();
WorkSource ws = new WorkSource(TEST_WORKSOURCE);
ws.add(SETTINGS_WORKSOURCE);
diff --git a/service/tests/wifitests/src/com/android/server/wifi/WifiConfigurationUtilTest.java b/service/tests/wifitests/src/com/android/server/wifi/WifiConfigurationUtilTest.java
index 5aa28c451b..0ff24270f1 100644
--- a/service/tests/wifitests/src/com/android/server/wifi/WifiConfigurationUtilTest.java
+++ b/service/tests/wifitests/src/com/android/server/wifi/WifiConfigurationUtilTest.java
@@ -773,7 +773,7 @@ public class WifiConfigurationUtilTest extends WifiBaseTest {
new PatternMatcher(TEST_SSID, PatternMatcher.PATTERN_LITERAL),
Pair.create(WifiManager.ALL_ZEROS_MAC_ADDRESS, WifiManager.ALL_ZEROS_MAC_ADDRESS),
ScanResult.UNSPECIFIED,
- WifiConfigurationTestUtil.createOpenNetwork(), new int[0]);
+ WifiConfigurationTestUtil.createOpenNetwork(), new int[0], false);
assertTrue(WifiConfigurationUtil.validateNetworkSpecifier(specifier, 5));
}
@@ -787,7 +787,7 @@ public class WifiConfigurationUtilTest extends WifiBaseTest {
new PatternMatcher(".*", PatternMatcher.PATTERN_SIMPLE_GLOB),
Pair.create(MacAddress.fromString(TEST_BSSID), MacAddress.BROADCAST_ADDRESS),
ScanResult.UNSPECIFIED,
- WifiConfigurationTestUtil.createOpenNetwork(), new int[0]);
+ WifiConfigurationTestUtil.createOpenNetwork(), new int[0], false);
assertTrue(WifiConfigurationUtil.validateNetworkSpecifier(specifier, 5));
}
@@ -801,7 +801,7 @@ public class WifiConfigurationUtilTest extends WifiBaseTest {
new PatternMatcher(TEST_SSID, PatternMatcher.PATTERN_LITERAL),
Pair.create(MacAddress.fromString(TEST_BSSID), MacAddress.BROADCAST_ADDRESS),
ScanResult.UNSPECIFIED,
- WifiConfigurationTestUtil.createOpenNetwork(), new int[0]);
+ WifiConfigurationTestUtil.createOpenNetwork(), new int[0], false);
assertTrue(WifiConfigurationUtil.validateNetworkSpecifier(specifier, 5));
}
@@ -816,7 +816,7 @@ public class WifiConfigurationUtilTest extends WifiBaseTest {
new PatternMatcher(TEST_SSID, PatternMatcher.PATTERN_LITERAL),
Pair.create(MacAddress.fromString(TEST_BSSID), MacAddress.BROADCAST_ADDRESS),
ScanResult.WIFI_BAND_5_GHZ,
- WifiConfigurationTestUtil.createOpenNetwork(), new int[0]);
+ WifiConfigurationTestUtil.createOpenNetwork(), new int[0], false);
assertTrue(WifiConfigurationUtil.validateNetworkSpecifier(specifier, 5));
}
@@ -831,7 +831,7 @@ public class WifiConfigurationUtilTest extends WifiBaseTest {
new PatternMatcher(".*", PatternMatcher.PATTERN_SIMPLE_GLOB),
Pair.create(WifiManager.ALL_ZEROS_MAC_ADDRESS, WifiManager.ALL_ZEROS_MAC_ADDRESS),
ScanResult.UNSPECIFIED,
- WifiConfigurationTestUtil.createOpenNetwork(), new int[0]);
+ WifiConfigurationTestUtil.createOpenNetwork(), new int[0], false);
assertFalse(WifiConfigurationUtil.validateNetworkSpecifier(specifier, 5));
}
@@ -845,7 +845,7 @@ public class WifiConfigurationUtilTest extends WifiBaseTest {
new PatternMatcher("", PatternMatcher.PATTERN_LITERAL),
Pair.create(WifiManager.ALL_ZEROS_MAC_ADDRESS, WifiManager.ALL_ZEROS_MAC_ADDRESS),
ScanResult.UNSPECIFIED,
- WifiConfigurationTestUtil.createOpenNetwork(), new int[0]);
+ WifiConfigurationTestUtil.createOpenNetwork(), new int[0], false);
assertFalse(WifiConfigurationUtil.validateNetworkSpecifier(specifier, 5));
}
@@ -859,7 +859,7 @@ public class WifiConfigurationUtilTest extends WifiBaseTest {
new PatternMatcher(TEST_SSID, PatternMatcher.PATTERN_LITERAL),
Pair.create(MacAddress.BROADCAST_ADDRESS, MacAddress.BROADCAST_ADDRESS),
ScanResult.UNSPECIFIED,
- WifiConfigurationTestUtil.createOpenNetwork(), new int[0]);
+ WifiConfigurationTestUtil.createOpenNetwork(), new int[0], false);
assertFalse(WifiConfigurationUtil.validateNetworkSpecifier(specifier, 5));
}
@@ -873,7 +873,7 @@ public class WifiConfigurationUtilTest extends WifiBaseTest {
new PatternMatcher(TEST_SSID, PatternMatcher.PATTERN_LITERAL),
Pair.create(MacAddress.fromString(TEST_BSSID), WifiManager.ALL_ZEROS_MAC_ADDRESS),
ScanResult.UNSPECIFIED,
- WifiConfigurationTestUtil.createOpenNetwork(), new int[0]);
+ WifiConfigurationTestUtil.createOpenNetwork(), new int[0], false);
assertFalse(WifiConfigurationUtil.validateNetworkSpecifier(specifier, 5));
}
@@ -887,7 +887,7 @@ public class WifiConfigurationUtilTest extends WifiBaseTest {
new PatternMatcher(TEST_SSID, PatternMatcher.PATTERN_PREFIX),
Pair.create(WifiManager.ALL_ZEROS_MAC_ADDRESS, WifiManager.ALL_ZEROS_MAC_ADDRESS),
ScanResult.UNSPECIFIED,
- WifiConfigurationTestUtil.createOpenHiddenNetwork(), new int[0]);
+ WifiConfigurationTestUtil.createOpenHiddenNetwork(), new int[0], false);
assertFalse(WifiConfigurationUtil.validateNetworkSpecifier(specifier, 5));
}
@@ -900,7 +900,7 @@ public class WifiConfigurationUtilTest extends WifiBaseTest {
new PatternMatcher(TEST_SSID, PatternMatcher.PATTERN_LITERAL),
Pair.create(MacAddress.fromString(TEST_BSSID), MacAddress.BROADCAST_ADDRESS),
42, // invalid
- WifiConfigurationTestUtil.createOpenNetwork(), new int[0]);
+ WifiConfigurationTestUtil.createOpenNetwork(), new int[0], false);
assertFalse(WifiConfigurationUtil.validateNetworkSpecifier(specifier, 5));
}
diff --git a/service/tests/wifitests/src/com/android/server/wifi/WifiNetworkFactoryTest.java b/service/tests/wifitests/src/com/android/server/wifi/WifiNetworkFactoryTest.java
index 24aa961169..cebb2b6864 100644
--- a/service/tests/wifitests/src/com/android/server/wifi/WifiNetworkFactoryTest.java
+++ b/service/tests/wifitests/src/com/android/server/wifi/WifiNetworkFactoryTest.java
@@ -294,7 +294,7 @@ public class WifiNetworkFactoryTest extends WifiBaseTest {
requestListener.onAnswer(mClientModeManager);
return null;
}).when(mActiveModeWarden).requestLocalOnlyClientModeManager(any(), any(), any(), any(),
- anyBoolean());
+ anyBoolean(), anyBoolean());
when(mClientModeManager.getRole()).thenReturn(ActiveModeManager.ROLE_CLIENT_PRIMARY);
when(mFrameworkFacade.getSettingsWorkSource(any())).thenReturn(
new WorkSource(Process.SYSTEM_UID, "system-service"));
@@ -2444,7 +2444,7 @@ public class WifiNetworkFactoryTest extends WifiBaseTest {
@Test
public void testHandleNewNetworkRequestWithSpecifierWhenAwaitingCmRetrieval() throws Exception {
doNothing().when(mActiveModeWarden).requestLocalOnlyClientModeManager(
- any(), any(), any(), any(), anyBoolean());
+ any(), any(), any(), any(), anyBoolean(), anyBoolean());
WorkSource ws = new WorkSource(TEST_UID_1, TEST_PACKAGE_NAME_1);
when(mClock.getElapsedSinceBootMillis()).thenReturn(0L);
@@ -2466,7 +2466,7 @@ public class WifiNetworkFactoryTest extends WifiBaseTest {
ActiveModeWarden.ExternalClientModeManagerRequestListener.class);
verify(mActiveModeWarden).requestLocalOnlyClientModeManager(
cmListenerCaptor.capture(), eq(ws),
- eq("\"" + TEST_SSID_1 + "\""), eq(TEST_BSSID_1), eq(true));
+ eq("\"" + TEST_SSID_1 + "\""), eq(TEST_BSSID_1), eq(true), eq(false));
assertNotNull(cmListenerCaptor.getValue());
NetworkRequest oldRequest = new NetworkRequest(mNetworkRequest);
@@ -2491,7 +2491,7 @@ public class WifiNetworkFactoryTest extends WifiBaseTest {
// Ensure we request a new ClientModeManager.
verify(mActiveModeWarden, times(2)).requestLocalOnlyClientModeManager(
- any(), any(), any(), any(), anyBoolean());
+ any(), any(), any(), any(), anyBoolean(), anyBoolean());
// Now return the CM instance for the previous request.
cmListenerCaptor.getValue().onAnswer(mClientModeManager);
@@ -2559,7 +2559,7 @@ public class WifiNetworkFactoryTest extends WifiBaseTest {
// Ensure we don't request a new ClientModeManager.
verify(mActiveModeWarden, never()).requestLocalOnlyClientModeManager(
- any(), any(), any(), any(), anyBoolean());
+ any(), any(), any(), any(), anyBoolean(), anyBoolean());
// Ignore stale callbacks.
WifiConfiguration selectedNetwork = WifiConfigurationTestUtil.createOpenNetwork();
@@ -2600,7 +2600,7 @@ public class WifiNetworkFactoryTest extends WifiBaseTest {
// Ensure we don't request a new ClientModeManager.
verify(mActiveModeWarden, times(1)).requestLocalOnlyClientModeManager(
- any(), any(), any(), any(), anyBoolean());
+ any(), any(), any(), any(), anyBoolean(), anyBoolean());
verify(mNetworkRequestMatchCallback).onAbort();
verify(mNetworkRequestMatchCallback, atLeastOnce()).asBinder();
@@ -2648,7 +2648,7 @@ public class WifiNetworkFactoryTest extends WifiBaseTest {
// Ensure we do request a new ClientModeManager.
verify(mActiveModeWarden, times(1)).requestLocalOnlyClientModeManager(
- any(), any(), any(), any(), anyBoolean());
+ any(), any(), any(), any(), anyBoolean(), anyBoolean());
verify(mWifiConnectivityManager, times(1)).setSpecificNetworkRequestInProgress(true);
verify(mWifiScanner, times(2)).getSingleScanResults();
@@ -3734,7 +3734,7 @@ public class WifiNetworkFactoryTest extends WifiBaseTest {
mLooper.dispatchAll();
verify(mActiveModeWarden, never()).requestLocalOnlyClientModeManager(
- any(), any(), any(), any(), anyBoolean());
+ any(), any(), any(), any(), anyBoolean(), anyBoolean());
verify(mActiveModeWarden, atLeastOnce()).getPrimaryClientModeManager();
if (SdkLevel.isAtLeastS()) {
verify(mPrimaryClientModeManager, atLeastOnce()).getConnectedWifiConfiguration();
@@ -3797,7 +3797,7 @@ public class WifiNetworkFactoryTest extends WifiBaseTest {
mLooper.dispatchAll();
verify(mActiveModeWarden, atLeastOnce()).requestLocalOnlyClientModeManager(
- any(), any(), any(), any(), anyBoolean());
+ any(), any(), any(), any(), anyBoolean(), anyBoolean());
if (SdkLevel.isAtLeastS()) {
verify(mClientModeManager, atLeastOnce()).getConnectedWifiConfiguration();
verify(mClientModeManager, atLeastOnce()).getConnectingWifiConfiguration();
@@ -3975,7 +3975,7 @@ public class WifiNetworkFactoryTest extends WifiBaseTest {
mNetworkCapabilities.setRequestorPackageName(packageName);
mNetworkCapabilities.setNetworkSpecifier(
new WifiNetworkSpecifier(ssidPatternMatch, bssidPatternMatch,
- ScanResult.UNSPECIFIED, wifiConfiguration, channels));
+ ScanResult.UNSPECIFIED, wifiConfiguration, channels, false));
mNetworkRequest = new NetworkRequest.Builder()
.setCapabilities(mNetworkCapabilities)
.build();