Merge "Fix setCapabilities." into pi-dev
am: cb42feb502
Change-Id: I13d7782a6c0c7b1f94137995bbb0d257a58d89c1
This commit is contained in:
@@ -63,16 +63,7 @@ public final class NetworkCapabilities implements Parcelable {
|
|||||||
|
|
||||||
public NetworkCapabilities(NetworkCapabilities nc) {
|
public NetworkCapabilities(NetworkCapabilities nc) {
|
||||||
if (nc != null) {
|
if (nc != null) {
|
||||||
mNetworkCapabilities = nc.mNetworkCapabilities;
|
set(nc);
|
||||||
mTransportTypes = nc.mTransportTypes;
|
|
||||||
mLinkUpBandwidthKbps = nc.mLinkUpBandwidthKbps;
|
|
||||||
mLinkDownBandwidthKbps = nc.mLinkDownBandwidthKbps;
|
|
||||||
mNetworkSpecifier = nc.mNetworkSpecifier;
|
|
||||||
mSignalStrength = nc.mSignalStrength;
|
|
||||||
mUids = nc.mUids;
|
|
||||||
mEstablishingVpnAppUid = nc.mEstablishingVpnAppUid;
|
|
||||||
mUnwantedNetworkCapabilities = nc.mUnwantedNetworkCapabilities;
|
|
||||||
mSSID = nc.mSSID;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -91,6 +82,23 @@ public final class NetworkCapabilities implements Parcelable {
|
|||||||
mSSID = null;
|
mSSID = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set all contents of this object to the contents of a NetworkCapabilities.
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
public void set(NetworkCapabilities nc) {
|
||||||
|
mNetworkCapabilities = nc.mNetworkCapabilities;
|
||||||
|
mTransportTypes = nc.mTransportTypes;
|
||||||
|
mLinkUpBandwidthKbps = nc.mLinkUpBandwidthKbps;
|
||||||
|
mLinkDownBandwidthKbps = nc.mLinkDownBandwidthKbps;
|
||||||
|
mNetworkSpecifier = nc.mNetworkSpecifier;
|
||||||
|
mSignalStrength = nc.mSignalStrength;
|
||||||
|
setUids(nc.mUids); // Will make the defensive copy
|
||||||
|
mEstablishingVpnAppUid = nc.mEstablishingVpnAppUid;
|
||||||
|
mUnwantedNetworkCapabilities = nc.mUnwantedNetworkCapabilities;
|
||||||
|
mSSID = nc.mSSID;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents the network's capabilities. If any are specified they will be satisfied
|
* Represents the network's capabilities. If any are specified they will be satisfied
|
||||||
* by any Network that matches all of them.
|
* by any Network that matches all of them.
|
||||||
|
|||||||
@@ -198,8 +198,7 @@ public class NetworkRequest implements Parcelable {
|
|||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
public Builder setCapabilities(NetworkCapabilities nc) {
|
public Builder setCapabilities(NetworkCapabilities nc) {
|
||||||
mNetworkCapabilities.clearAll();
|
mNetworkCapabilities.set(nc);
|
||||||
mNetworkCapabilities.combineCapabilities(nc);
|
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ import java.util.Set;
|
|||||||
@SmallTest
|
@SmallTest
|
||||||
public class NetworkCapabilitiesTest {
|
public class NetworkCapabilitiesTest {
|
||||||
private static final String TEST_SSID = "TEST_SSID";
|
private static final String TEST_SSID = "TEST_SSID";
|
||||||
|
private static final String DIFFERENT_TEST_SSID = "DIFFERENT_TEST_SSID";
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testMaybeMarkCapabilitiesRestricted() {
|
public void testMaybeMarkCapabilitiesRestricted() {
|
||||||
@@ -373,6 +374,12 @@ public class NetworkCapabilitiesTest {
|
|||||||
assertFalse(nc1.satisfiedByNetworkCapabilities(nc2));
|
assertFalse(nc1.satisfiedByNetworkCapabilities(nc2));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private ArraySet<UidRange> uidRange(int from, int to) {
|
||||||
|
final ArraySet<UidRange> range = new ArraySet<>(1);
|
||||||
|
range.add(new UidRange(from, to));
|
||||||
|
return range;
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testCombineCapabilities() {
|
public void testCombineCapabilities() {
|
||||||
NetworkCapabilities nc1 = new NetworkCapabilities();
|
NetworkCapabilities nc1 = new NetworkCapabilities();
|
||||||
@@ -399,14 +406,30 @@ public class NetworkCapabilitiesTest {
|
|||||||
nc2.combineCapabilities(nc1);
|
nc2.combineCapabilities(nc1);
|
||||||
assertTrue(TEST_SSID.equals(nc2.getSSID()));
|
assertTrue(TEST_SSID.equals(nc2.getSSID()));
|
||||||
|
|
||||||
// Because they now have the same SSID, the folllowing call should not throw
|
// Because they now have the same SSID, the following call should not throw
|
||||||
nc2.combineCapabilities(nc1);
|
nc2.combineCapabilities(nc1);
|
||||||
|
|
||||||
nc1.setSSID("different " + TEST_SSID);
|
nc1.setSSID(DIFFERENT_TEST_SSID);
|
||||||
try {
|
try {
|
||||||
nc2.combineCapabilities(nc1);
|
nc2.combineCapabilities(nc1);
|
||||||
fail("Expected IllegalStateException: can't combine different SSIDs");
|
fail("Expected IllegalStateException: can't combine different SSIDs");
|
||||||
} catch (IllegalStateException expected) {}
|
} catch (IllegalStateException expected) {}
|
||||||
|
nc1.setSSID(TEST_SSID);
|
||||||
|
|
||||||
|
nc1.setUids(uidRange(10, 13));
|
||||||
|
assertNotEquals(nc1, nc2);
|
||||||
|
nc2.combineCapabilities(nc1); // Everything + 10~13 is still everything.
|
||||||
|
assertNotEquals(nc1, nc2);
|
||||||
|
nc1.combineCapabilities(nc2); // 10~13 + everything is everything.
|
||||||
|
assertEquals(nc1, nc2);
|
||||||
|
nc1.setUids(uidRange(10, 13));
|
||||||
|
nc2.setUids(uidRange(20, 23));
|
||||||
|
assertNotEquals(nc1, nc2);
|
||||||
|
nc1.combineCapabilities(nc2);
|
||||||
|
assertTrue(nc1.appliesToUid(12));
|
||||||
|
assertFalse(nc2.appliesToUid(12));
|
||||||
|
assertTrue(nc1.appliesToUid(22));
|
||||||
|
assertTrue(nc2.appliesToUid(22));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -445,4 +468,38 @@ public class NetworkCapabilitiesTest {
|
|||||||
p.setDataPosition(0);
|
p.setDataPosition(0);
|
||||||
assertEquals(NetworkCapabilities.CREATOR.createFromParcel(p), netCap);
|
assertEquals(NetworkCapabilities.CREATOR.createFromParcel(p), netCap);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testSet() {
|
||||||
|
NetworkCapabilities nc1 = new NetworkCapabilities();
|
||||||
|
NetworkCapabilities nc2 = new NetworkCapabilities();
|
||||||
|
|
||||||
|
nc1.addUnwantedCapability(NET_CAPABILITY_CAPTIVE_PORTAL);
|
||||||
|
nc1.addCapability(NET_CAPABILITY_NOT_ROAMING);
|
||||||
|
assertNotEquals(nc1, nc2);
|
||||||
|
nc2.set(nc1);
|
||||||
|
assertEquals(nc1, nc2);
|
||||||
|
assertTrue(nc2.hasCapability(NET_CAPABILITY_NOT_ROAMING));
|
||||||
|
assertTrue(nc2.hasUnwantedCapability(NET_CAPABILITY_CAPTIVE_PORTAL));
|
||||||
|
|
||||||
|
// This will effectively move NOT_ROAMING capability from required to unwanted for nc1.
|
||||||
|
nc1.addUnwantedCapability(NET_CAPABILITY_NOT_ROAMING);
|
||||||
|
nc1.setSSID(TEST_SSID);
|
||||||
|
nc2.set(nc1);
|
||||||
|
assertEquals(nc1, nc2);
|
||||||
|
// Contrary to combineCapabilities, set() will have removed the NOT_ROAMING capability
|
||||||
|
// from nc2.
|
||||||
|
assertFalse(nc2.hasCapability(NET_CAPABILITY_NOT_ROAMING));
|
||||||
|
assertTrue(nc2.hasUnwantedCapability(NET_CAPABILITY_NOT_ROAMING));
|
||||||
|
assertTrue(TEST_SSID.equals(nc2.getSSID()));
|
||||||
|
|
||||||
|
nc1.setSSID(DIFFERENT_TEST_SSID);
|
||||||
|
nc2.set(nc1);
|
||||||
|
assertEquals(nc1, nc2);
|
||||||
|
assertTrue(DIFFERENT_TEST_SSID.equals(nc2.getSSID()));
|
||||||
|
|
||||||
|
nc1.setUids(uidRange(10, 13));
|
||||||
|
nc2.set(nc1); // Overwrites, as opposed to combineCapabilities
|
||||||
|
assertEquals(nc1, nc2);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user