Merge changes I90bf7957,If58524b0 am: 029ba17cb0
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1646972 Change-Id: I1c3de9d738a294e9d21314de84384fa89745285d
This commit is contained in:
@@ -6117,10 +6117,15 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
||||
private NetworkCapabilities copyDefaultNetworkCapabilitiesForUid(
|
||||
@NonNull final NetworkCapabilities netCapToCopy, @NonNull final int requestorUid,
|
||||
@NonNull final String requestorPackageName) {
|
||||
// These capabilities are for a TRACK_DEFAULT callback, so:
|
||||
// 1. Remove NET_CAPABILITY_VPN, because it's (currently!) the only difference between
|
||||
// mDefaultRequest and a per-UID default request.
|
||||
// TODO: stop depending on the fact that these two unrelated things happen to be the same
|
||||
// 2. Always set the UIDs to mAsUid. restrictRequestUidsForCallerAndSetRequestorInfo will
|
||||
// not do this in the case of a privileged application.
|
||||
final NetworkCapabilities netCap = new NetworkCapabilities(netCapToCopy);
|
||||
netCap.removeCapability(NET_CAPABILITY_NOT_VPN);
|
||||
netCap.setSingleUid(requestorUid);
|
||||
netCap.setUids(new ArraySet<>());
|
||||
restrictRequestUidsForCallerAndSetRequestorInfo(
|
||||
netCap, requestorUid, requestorPackageName);
|
||||
return netCap;
|
||||
|
||||
@@ -7481,6 +7481,9 @@ public class ConnectivityServiceTest {
|
||||
final NetworkRequest vpnUidRequest = new NetworkRequest.Builder().build();
|
||||
registerNetworkCallbackAsUid(vpnUidRequest, vpnUidCallback, VPN_UID);
|
||||
|
||||
final TestNetworkCallback vpnUidDefaultCallback = new TestNetworkCallback();
|
||||
registerDefaultNetworkCallbackAsUid(vpnUidDefaultCallback, VPN_UID);
|
||||
|
||||
final int uid = Process.myUid();
|
||||
final int userId = UserHandle.getUserId(uid);
|
||||
final ArrayList<String> allowList = new ArrayList<>();
|
||||
@@ -7499,6 +7502,7 @@ public class ConnectivityServiceTest {
|
||||
callback.expectAvailableCallbacksUnvalidatedAndBlocked(mWiFiNetworkAgent);
|
||||
defaultCallback.expectAvailableCallbacksUnvalidatedAndBlocked(mWiFiNetworkAgent);
|
||||
vpnUidCallback.expectAvailableCallbacksUnvalidated(mWiFiNetworkAgent);
|
||||
vpnUidDefaultCallback.expectAvailableCallbacksUnvalidated(mWiFiNetworkAgent);
|
||||
assertEquals(mWiFiNetworkAgent.getNetwork(), mCm.getActiveNetworkForUid(VPN_UID));
|
||||
assertNull(mCm.getActiveNetwork());
|
||||
assertActiveNetworkInfo(TYPE_WIFI, DetailedState.BLOCKED);
|
||||
@@ -7511,6 +7515,7 @@ public class ConnectivityServiceTest {
|
||||
callback.expectBlockedStatusCallback(false, mWiFiNetworkAgent);
|
||||
defaultCallback.expectBlockedStatusCallback(false, mWiFiNetworkAgent);
|
||||
vpnUidCallback.assertNoCallback();
|
||||
vpnUidDefaultCallback.assertNoCallback();
|
||||
expectNetworkRejectNonSecureVpn(inOrder, false, firstHalf, secondHalf);
|
||||
assertEquals(mWiFiNetworkAgent.getNetwork(), mCm.getActiveNetworkForUid(VPN_UID));
|
||||
assertEquals(mWiFiNetworkAgent.getNetwork(), mCm.getActiveNetwork());
|
||||
@@ -7525,6 +7530,7 @@ public class ConnectivityServiceTest {
|
||||
callback.assertNoCallback();
|
||||
defaultCallback.assertNoCallback();
|
||||
vpnUidCallback.assertNoCallback();
|
||||
vpnUidDefaultCallback.assertNoCallback();
|
||||
|
||||
// The following requires that the UID of this test package is greater than VPN_UID. This
|
||||
// is always true in practice because a plain AOSP build with no apps installed has almost
|
||||
@@ -7545,6 +7551,7 @@ public class ConnectivityServiceTest {
|
||||
callback.expectAvailableCallbacksUnvalidated(mCellNetworkAgent);
|
||||
defaultCallback.assertNoCallback();
|
||||
vpnUidCallback.expectAvailableCallbacksUnvalidated(mCellNetworkAgent);
|
||||
vpnUidDefaultCallback.assertNoCallback();
|
||||
assertEquals(mWiFiNetworkAgent.getNetwork(), mCm.getActiveNetworkForUid(VPN_UID));
|
||||
assertEquals(mWiFiNetworkAgent.getNetwork(), mCm.getActiveNetwork());
|
||||
assertActiveNetworkInfo(TYPE_WIFI, DetailedState.CONNECTED);
|
||||
@@ -7565,6 +7572,7 @@ public class ConnectivityServiceTest {
|
||||
defaultCallback.expectBlockedStatusCallback(true, mWiFiNetworkAgent);
|
||||
assertBlockedCallbackInAnyOrder(callback, true, mWiFiNetworkAgent, mCellNetworkAgent);
|
||||
vpnUidCallback.assertNoCallback();
|
||||
vpnUidDefaultCallback.assertNoCallback();
|
||||
assertEquals(mWiFiNetworkAgent.getNetwork(), mCm.getActiveNetworkForUid(VPN_UID));
|
||||
assertNull(mCm.getActiveNetwork());
|
||||
assertActiveNetworkInfo(TYPE_WIFI, DetailedState.BLOCKED);
|
||||
@@ -7576,6 +7584,7 @@ public class ConnectivityServiceTest {
|
||||
defaultCallback.expectBlockedStatusCallback(false, mWiFiNetworkAgent);
|
||||
assertBlockedCallbackInAnyOrder(callback, false, mWiFiNetworkAgent, mCellNetworkAgent);
|
||||
vpnUidCallback.assertNoCallback();
|
||||
vpnUidDefaultCallback.assertNoCallback();
|
||||
assertEquals(mWiFiNetworkAgent.getNetwork(), mCm.getActiveNetworkForUid(VPN_UID));
|
||||
assertEquals(mWiFiNetworkAgent.getNetwork(), mCm.getActiveNetwork());
|
||||
assertActiveNetworkInfo(TYPE_WIFI, DetailedState.CONNECTED);
|
||||
@@ -7590,6 +7599,7 @@ public class ConnectivityServiceTest {
|
||||
callback.assertNoCallback();
|
||||
defaultCallback.assertNoCallback();
|
||||
vpnUidCallback.assertNoCallback();
|
||||
vpnUidDefaultCallback.assertNoCallback();
|
||||
assertEquals(mWiFiNetworkAgent.getNetwork(), mCm.getActiveNetworkForUid(VPN_UID));
|
||||
assertEquals(mWiFiNetworkAgent.getNetwork(), mCm.getActiveNetwork());
|
||||
assertActiveNetworkInfo(TYPE_WIFI, DetailedState.CONNECTED);
|
||||
@@ -7601,6 +7611,7 @@ public class ConnectivityServiceTest {
|
||||
callback.assertNoCallback();
|
||||
defaultCallback.assertNoCallback();
|
||||
vpnUidCallback.assertNoCallback();
|
||||
vpnUidDefaultCallback.assertNoCallback();
|
||||
assertEquals(mWiFiNetworkAgent.getNetwork(), mCm.getActiveNetworkForUid(VPN_UID));
|
||||
assertEquals(mWiFiNetworkAgent.getNetwork(), mCm.getActiveNetwork());
|
||||
assertActiveNetworkInfo(TYPE_WIFI, DetailedState.CONNECTED);
|
||||
@@ -7613,6 +7624,7 @@ public class ConnectivityServiceTest {
|
||||
defaultCallback.expectBlockedStatusCallback(true, mWiFiNetworkAgent);
|
||||
assertBlockedCallbackInAnyOrder(callback, true, mWiFiNetworkAgent, mCellNetworkAgent);
|
||||
vpnUidCallback.assertNoCallback();
|
||||
vpnUidDefaultCallback.assertNoCallback();
|
||||
assertEquals(mWiFiNetworkAgent.getNetwork(), mCm.getActiveNetworkForUid(VPN_UID));
|
||||
assertNull(mCm.getActiveNetwork());
|
||||
assertActiveNetworkInfo(TYPE_WIFI, DetailedState.BLOCKED);
|
||||
@@ -7623,6 +7635,7 @@ public class ConnectivityServiceTest {
|
||||
assertUidRangesUpdatedForMyUid(true);
|
||||
defaultCallback.expectAvailableThenValidatedCallbacks(mMockVpn);
|
||||
vpnUidCallback.assertNoCallback(); // vpnUidCallback has NOT_VPN capability.
|
||||
vpnUidDefaultCallback.assertNoCallback(); // VPN does not apply to VPN_UID
|
||||
assertEquals(mMockVpn.getNetwork(), mCm.getActiveNetwork());
|
||||
assertEquals(mWiFiNetworkAgent.getNetwork(), mCm.getActiveNetworkForUid(VPN_UID));
|
||||
assertActiveNetworkInfo(TYPE_WIFI, DetailedState.CONNECTED);
|
||||
@@ -7633,11 +7646,14 @@ public class ConnectivityServiceTest {
|
||||
mMockVpn.disconnect();
|
||||
defaultCallback.expectCallback(CallbackEntry.LOST, mMockVpn);
|
||||
defaultCallback.expectAvailableCallbacksUnvalidatedAndBlocked(mWiFiNetworkAgent);
|
||||
vpnUidCallback.assertNoCallback();
|
||||
vpnUidDefaultCallback.assertNoCallback();
|
||||
assertNull(mCm.getActiveNetwork());
|
||||
|
||||
mCm.unregisterNetworkCallback(callback);
|
||||
mCm.unregisterNetworkCallback(defaultCallback);
|
||||
mCm.unregisterNetworkCallback(vpnUidCallback);
|
||||
mCm.unregisterNetworkCallback(vpnUidDefaultCallback);
|
||||
}
|
||||
|
||||
private void setupLegacyLockdownVpn() {
|
||||
|
||||
Reference in New Issue
Block a user