summaryrefslogtreecommitdiff
path: root/framework
diff options
context:
space:
mode:
Diffstat (limited to 'framework')
-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
3 files changed, 79 insertions, 37 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());
+ }
}