Merge "Revert "[VCN01] Add NOT_VCN_MANAGED capability""
This commit is contained in:
@@ -172,7 +172,6 @@ public final class NetworkCapabilities implements Parcelable {
|
|||||||
NET_CAPABILITY_TEMPORARILY_NOT_METERED,
|
NET_CAPABILITY_TEMPORARILY_NOT_METERED,
|
||||||
NET_CAPABILITY_OEM_PRIVATE,
|
NET_CAPABILITY_OEM_PRIVATE,
|
||||||
NET_CAPABILITY_VEHICLE_INTERNAL,
|
NET_CAPABILITY_VEHICLE_INTERNAL,
|
||||||
NET_CAPABILITY_NOT_VCN_MANAGED,
|
|
||||||
})
|
})
|
||||||
public @interface NetCapability { }
|
public @interface NetCapability { }
|
||||||
|
|
||||||
@@ -368,17 +367,8 @@ public final class NetworkCapabilities implements Parcelable {
|
|||||||
@SystemApi
|
@SystemApi
|
||||||
public static final int NET_CAPABILITY_VEHICLE_INTERNAL = 27;
|
public static final int NET_CAPABILITY_VEHICLE_INTERNAL = 27;
|
||||||
|
|
||||||
/**
|
|
||||||
* Indicates that this network is not managed by a Virtual Carrier Network (VCN).
|
|
||||||
*
|
|
||||||
* TODO(b/177299683): Add additional clarifying javadoc.
|
|
||||||
* @hide
|
|
||||||
*/
|
|
||||||
@SystemApi
|
|
||||||
public static final int NET_CAPABILITY_NOT_VCN_MANAGED = 28;
|
|
||||||
|
|
||||||
private static final int MIN_NET_CAPABILITY = NET_CAPABILITY_MMS;
|
private static final int MIN_NET_CAPABILITY = NET_CAPABILITY_MMS;
|
||||||
private static final int MAX_NET_CAPABILITY = NET_CAPABILITY_NOT_VCN_MANAGED;
|
private static final int MAX_NET_CAPABILITY = NET_CAPABILITY_VEHICLE_INTERNAL;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Network capabilities that are expected to be mutable, i.e., can change while a particular
|
* Network capabilities that are expected to be mutable, i.e., can change while a particular
|
||||||
@@ -395,8 +385,7 @@ public final class NetworkCapabilities implements Parcelable {
|
|||||||
| (1 << NET_CAPABILITY_NOT_CONGESTED)
|
| (1 << NET_CAPABILITY_NOT_CONGESTED)
|
||||||
| (1 << NET_CAPABILITY_NOT_SUSPENDED)
|
| (1 << NET_CAPABILITY_NOT_SUSPENDED)
|
||||||
| (1 << NET_CAPABILITY_PARTIAL_CONNECTIVITY)
|
| (1 << NET_CAPABILITY_PARTIAL_CONNECTIVITY)
|
||||||
| (1 << NET_CAPABILITY_TEMPORARILY_NOT_METERED)
|
| (1 << NET_CAPABILITY_TEMPORARILY_NOT_METERED);
|
||||||
| (1 << NET_CAPABILITY_NOT_VCN_MANAGED);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Network capabilities that are not allowed in NetworkRequests. This exists because the
|
* Network capabilities that are not allowed in NetworkRequests. This exists because the
|
||||||
@@ -405,22 +394,16 @@ public final class NetworkCapabilities implements Parcelable {
|
|||||||
* can get into a cycle where the NetworkFactory endlessly churns out NetworkAgents that then
|
* can get into a cycle where the NetworkFactory endlessly churns out NetworkAgents that then
|
||||||
* get immediately torn down because they do not have the requested capability.
|
* get immediately torn down because they do not have the requested capability.
|
||||||
*/
|
*/
|
||||||
// Note that as a historical exception, the TRUSTED and NOT_VCN_MANAGED capabilities
|
|
||||||
// are mutable but requestable. Factories are responsible for not getting
|
|
||||||
// in an infinite loop about these.
|
|
||||||
private static final long NON_REQUESTABLE_CAPABILITIES =
|
private static final long NON_REQUESTABLE_CAPABILITIES =
|
||||||
MUTABLE_CAPABILITIES
|
MUTABLE_CAPABILITIES & ~(1 << NET_CAPABILITY_TRUSTED);
|
||||||
& ~(1 << NET_CAPABILITY_TRUSTED)
|
|
||||||
& ~(1 << NET_CAPABILITY_NOT_VCN_MANAGED);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Capabilities that are set by default when the object is constructed.
|
* Capabilities that are set by default when the object is constructed.
|
||||||
*/
|
*/
|
||||||
private static final long DEFAULT_CAPABILITIES =
|
private static final long DEFAULT_CAPABILITIES =
|
||||||
(1 << NET_CAPABILITY_NOT_RESTRICTED)
|
(1 << NET_CAPABILITY_NOT_RESTRICTED) |
|
||||||
| (1 << NET_CAPABILITY_TRUSTED)
|
(1 << NET_CAPABILITY_TRUSTED) |
|
||||||
| (1 << NET_CAPABILITY_NOT_VPN)
|
(1 << NET_CAPABILITY_NOT_VPN);
|
||||||
| (1 << NET_CAPABILITY_NOT_VCN_MANAGED);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Capabilities that suggest that a network is restricted.
|
* Capabilities that suggest that a network is restricted.
|
||||||
@@ -480,8 +463,7 @@ public final class NetworkCapabilities implements Parcelable {
|
|||||||
| (1 << NET_CAPABILITY_NOT_VPN)
|
| (1 << NET_CAPABILITY_NOT_VPN)
|
||||||
| (1 << NET_CAPABILITY_NOT_ROAMING)
|
| (1 << NET_CAPABILITY_NOT_ROAMING)
|
||||||
| (1 << NET_CAPABILITY_NOT_CONGESTED)
|
| (1 << NET_CAPABILITY_NOT_CONGESTED)
|
||||||
| (1 << NET_CAPABILITY_NOT_SUSPENDED)
|
| (1 << NET_CAPABILITY_NOT_SUSPENDED);
|
||||||
| (1 << NET_CAPABILITY_NOT_VCN_MANAGED);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds the given capability to this {@code NetworkCapability} instance.
|
* Adds the given capability to this {@code NetworkCapability} instance.
|
||||||
@@ -1969,7 +1951,6 @@ public final class NetworkCapabilities implements Parcelable {
|
|||||||
case NET_CAPABILITY_TEMPORARILY_NOT_METERED: return "TEMPORARILY_NOT_METERED";
|
case NET_CAPABILITY_TEMPORARILY_NOT_METERED: return "TEMPORARILY_NOT_METERED";
|
||||||
case NET_CAPABILITY_OEM_PRIVATE: return "OEM_PRIVATE";
|
case NET_CAPABILITY_OEM_PRIVATE: return "OEM_PRIVATE";
|
||||||
case NET_CAPABILITY_VEHICLE_INTERNAL: return "NET_CAPABILITY_VEHICLE_INTERNAL";
|
case NET_CAPABILITY_VEHICLE_INTERNAL: return "NET_CAPABILITY_VEHICLE_INTERNAL";
|
||||||
case NET_CAPABILITY_NOT_VCN_MANAGED: return "NOT_VCN_MANAGED";
|
|
||||||
default: return Integer.toString(capability);
|
default: return Integer.toString(capability);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -242,7 +242,6 @@ class TestNetworkService extends ITestNetworkManager.Stub {
|
|||||||
nc.addTransportType(NetworkCapabilities.TRANSPORT_TEST);
|
nc.addTransportType(NetworkCapabilities.TRANSPORT_TEST);
|
||||||
nc.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_SUSPENDED);
|
nc.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_SUSPENDED);
|
||||||
nc.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED);
|
nc.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED);
|
||||||
nc.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VCN_MANAGED);
|
|
||||||
nc.setNetworkSpecifier(new StringNetworkSpecifier(iface));
|
nc.setNetworkSpecifier(new StringNetworkSpecifier(iface));
|
||||||
nc.setAdministratorUids(administratorUids);
|
nc.setAdministratorUids(administratorUids);
|
||||||
if (!isMetered) {
|
if (!isMetered) {
|
||||||
|
|||||||
@@ -63,7 +63,6 @@ import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_METERED;
|
|||||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED;
|
import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED;
|
||||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING;
|
import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING;
|
||||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_SUSPENDED;
|
import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_SUSPENDED;
|
||||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_VCN_MANAGED;
|
|
||||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_VPN;
|
import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_VPN;
|
||||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_PARTIAL_CONNECTIVITY;
|
import static android.net.NetworkCapabilities.NET_CAPABILITY_PARTIAL_CONNECTIVITY;
|
||||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_RCS;
|
import static android.net.NetworkCapabilities.NET_CAPABILITY_RCS;
|
||||||
@@ -6907,58 +6906,36 @@ public class ConnectivityServiceTest {
|
|||||||
mCm.unregisterNetworkCallback(vpnUidCallback);
|
mCm.unregisterNetworkCallback(vpnUidCallback);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Test mutable and requestable network capabilities such as
|
|
||||||
* {@link NetworkCapabilities#NET_CAPABILITY_TRUSTED} and
|
|
||||||
* {@link NetworkCapabilities#NET_CAPABILITY_NOT_VCN_MANAGED}. Verify that the
|
|
||||||
* {@code ConnectivityService} re-assign the networks accordingly.
|
|
||||||
*/
|
|
||||||
@Test
|
@Test
|
||||||
public final void testLoseMutableAndRequestableCaps() throws Exception {
|
public final void testLoseTrusted() throws Exception {
|
||||||
final int[] testCaps = new int [] {
|
final NetworkRequest trustedRequest = new NetworkRequest.Builder()
|
||||||
NET_CAPABILITY_TRUSTED,
|
.addCapability(NET_CAPABILITY_TRUSTED)
|
||||||
NET_CAPABILITY_NOT_VCN_MANAGED
|
.build();
|
||||||
};
|
final TestNetworkCallback trustedCallback = new TestNetworkCallback();
|
||||||
for (final int testCap : testCaps) {
|
mCm.requestNetwork(trustedRequest, trustedCallback);
|
||||||
// Create requests with and without the testing capability.
|
|
||||||
final TestNetworkCallback callbackWithCap = new TestNetworkCallback();
|
|
||||||
final TestNetworkCallback callbackWithoutCap = new TestNetworkCallback();
|
|
||||||
mCm.requestNetwork(new NetworkRequest.Builder().addCapability(testCap).build(),
|
|
||||||
callbackWithCap);
|
|
||||||
mCm.requestNetwork(new NetworkRequest.Builder().removeCapability(testCap).build(),
|
|
||||||
callbackWithoutCap);
|
|
||||||
|
|
||||||
// Setup networks with testing capability and verify the default network changes.
|
mCellNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_CELLULAR);
|
||||||
mCellNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_CELLULAR);
|
mCellNetworkAgent.connect(true);
|
||||||
mCellNetworkAgent.connect(true);
|
trustedCallback.expectAvailableThenValidatedCallbacks(mCellNetworkAgent);
|
||||||
callbackWithCap.expectAvailableThenValidatedCallbacks(mCellNetworkAgent);
|
verify(mMockNetd).networkSetDefault(eq(mCellNetworkAgent.getNetwork().netId));
|
||||||
callbackWithoutCap.expectAvailableThenValidatedCallbacks(mCellNetworkAgent);
|
reset(mMockNetd);
|
||||||
verify(mMockNetd).networkSetDefault(eq(mCellNetworkAgent.getNetwork().netId));
|
|
||||||
reset(mMockNetd);
|
|
||||||
|
|
||||||
mWiFiNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_WIFI);
|
mWiFiNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_WIFI);
|
||||||
mWiFiNetworkAgent.connect(true);
|
mWiFiNetworkAgent.connect(true);
|
||||||
callbackWithCap.expectAvailableDoubleValidatedCallbacks(mWiFiNetworkAgent);
|
trustedCallback.expectAvailableDoubleValidatedCallbacks(mWiFiNetworkAgent);
|
||||||
callbackWithoutCap.expectAvailableDoubleValidatedCallbacks(mWiFiNetworkAgent);
|
verify(mMockNetd).networkSetDefault(eq(mWiFiNetworkAgent.getNetwork().netId));
|
||||||
verify(mMockNetd).networkSetDefault(eq(mWiFiNetworkAgent.getNetwork().netId));
|
reset(mMockNetd);
|
||||||
reset(mMockNetd);
|
|
||||||
|
|
||||||
// Remove the testing capability on wifi, verify the callback and default network
|
mWiFiNetworkAgent.removeCapability(NET_CAPABILITY_TRUSTED);
|
||||||
// changes back to cellular.
|
trustedCallback.expectAvailableCallbacksValidated(mCellNetworkAgent);
|
||||||
mWiFiNetworkAgent.removeCapability(testCap);
|
verify(mMockNetd).networkSetDefault(eq(mCellNetworkAgent.getNetwork().netId));
|
||||||
callbackWithCap.expectAvailableCallbacksValidated(mCellNetworkAgent);
|
reset(mMockNetd);
|
||||||
callbackWithoutCap.expectCapabilitiesWithout(testCap, mWiFiNetworkAgent);
|
|
||||||
verify(mMockNetd).networkSetDefault(eq(mCellNetworkAgent.getNetwork().netId));
|
|
||||||
reset(mMockNetd);
|
|
||||||
|
|
||||||
mCellNetworkAgent.removeCapability(testCap);
|
mCellNetworkAgent.removeCapability(NET_CAPABILITY_TRUSTED);
|
||||||
callbackWithCap.expectCallback(CallbackEntry.LOST, mCellNetworkAgent);
|
trustedCallback.expectCallback(CallbackEntry.LOST, mCellNetworkAgent);
|
||||||
callbackWithoutCap.assertNoCallback();
|
verify(mMockNetd).networkClearDefault();
|
||||||
verify(mMockNetd).networkClearDefault();
|
|
||||||
|
|
||||||
mCm.unregisterNetworkCallback(callbackWithCap);
|
mCm.unregisterNetworkCallback(trustedCallback);
|
||||||
mCm.unregisterNetworkCallback(callbackWithoutCap);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Ignore // 40%+ flakiness : figure out why and re-enable.
|
@Ignore // 40%+ flakiness : figure out why and re-enable.
|
||||||
|
|||||||
Reference in New Issue
Block a user