Merge changes I24580ea4,Id48b8eab am: 07a238ab02 am: e4f241500c am: 463d2f3f27

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1657763

Change-Id: I9d304c35374670eb0e4dcfb9caf6b065878d97e6
This commit is contained in:
Lorenzo Colitti
2021-03-30 18:33:04 +00:00
committed by Automerger Merge Worker
2 changed files with 98 additions and 39 deletions

View File

@@ -320,6 +320,9 @@ public class ConnectivityService extends IConnectivityManager.Stub
// The maximum number of network request allowed per uid before an exception is thrown. // The maximum number of network request allowed per uid before an exception is thrown.
private static final int MAX_NETWORK_REQUESTS_PER_UID = 100; private static final int MAX_NETWORK_REQUESTS_PER_UID = 100;
// The maximum number of network request allowed for system UIDs before an exception is thrown.
private static final int MAX_NETWORK_REQUESTS_PER_SYSTEM_UID = 250;
@VisibleForTesting @VisibleForTesting
protected int mLingerDelayMs; // Can't be final, or test subclass constructors can't change it. protected int mLingerDelayMs; // Can't be final, or test subclass constructors can't change it.
@VisibleForTesting @VisibleForTesting
@@ -335,6 +338,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
protected final PermissionMonitor mPermissionMonitor; protected final PermissionMonitor mPermissionMonitor;
private final PerUidCounter mNetworkRequestCounter; private final PerUidCounter mNetworkRequestCounter;
private final PerUidCounter mSystemNetworkRequestCounter;
private volatile boolean mLockdownEnabled; private volatile boolean mLockdownEnabled;
@@ -1215,6 +1219,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
mContext = Objects.requireNonNull(context, "missing Context"); mContext = Objects.requireNonNull(context, "missing Context");
mResources = deps.getResources(mContext); mResources = deps.getResources(mContext);
mNetworkRequestCounter = new PerUidCounter(MAX_NETWORK_REQUESTS_PER_UID); mNetworkRequestCounter = new PerUidCounter(MAX_NETWORK_REQUESTS_PER_UID);
mSystemNetworkRequestCounter = new PerUidCounter(MAX_NETWORK_REQUESTS_PER_SYSTEM_UID);
mMetricsLog = logger; mMetricsLog = logger;
mNetworkRanker = new NetworkRanker(); mNetworkRanker = new NetworkRanker();
@@ -4047,7 +4052,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
} }
} }
} }
mNetworkRequestCounter.decrementCount(nri.mUid); decrementRequestCount(nri);
mNetworkRequestInfoLogs.log("RELEASE " + nri); mNetworkRequestInfoLogs.log("RELEASE " + nri);
if (null != nri.getActiveRequest()) { if (null != nri.getActiveRequest()) {
@@ -4152,6 +4157,20 @@ public class ConnectivityService extends IConnectivityManager.Stub
} }
} }
private PerUidCounter getRequestCounter(NetworkRequestInfo nri) {
return checkAnyPermissionOf(
nri.mPid, nri.mUid, NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK)
? mSystemNetworkRequestCounter : mNetworkRequestCounter;
}
private void incrementRequestCountOrThrow(NetworkRequestInfo nri) {
getRequestCounter(nri).incrementCountOrThrow(nri.mUid);
}
private void decrementRequestCount(NetworkRequestInfo nri) {
getRequestCounter(nri).decrementCount(nri.mUid);
}
@Override @Override
public void setAcceptUnvalidated(Network network, boolean accept, boolean always) { public void setAcceptUnvalidated(Network network, boolean accept, boolean always) {
enforceNetworkStackSettingsOrSetup(); enforceNetworkStackSettingsOrSetup();
@@ -5487,7 +5506,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
mPid = getCallingPid(); mPid = getCallingPid();
mUid = mDeps.getCallingUid(); mUid = mDeps.getCallingUid();
mAsUid = asUid; mAsUid = asUid;
mNetworkRequestCounter.incrementCountOrThrow(mUid); incrementRequestCountOrThrow(this);
/** /**
* Location sensitive data not included in pending intent. Only included in * Location sensitive data not included in pending intent. Only included in
* {@link NetworkCallback}. * {@link NetworkCallback}.
@@ -5519,7 +5538,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
mUid = mDeps.getCallingUid(); mUid = mDeps.getCallingUid();
mAsUid = asUid; mAsUid = asUid;
mPendingIntent = null; mPendingIntent = null;
mNetworkRequestCounter.incrementCountOrThrow(mUid); incrementRequestCountOrThrow(this);
mCallbackFlags = callbackFlags; mCallbackFlags = callbackFlags;
mCallingAttributionTag = callingAttributionTag; mCallingAttributionTag = callingAttributionTag;
@@ -5562,7 +5581,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
mUid = nri.mUid; mUid = nri.mUid;
mAsUid = nri.mAsUid; mAsUid = nri.mAsUid;
mPendingIntent = nri.mPendingIntent; mPendingIntent = nri.mPendingIntent;
mNetworkRequestCounter.incrementCountOrThrow(mUid); incrementRequestCountOrThrow(this);
mCallbackFlags = nri.mCallbackFlags; mCallbackFlags = nri.mCallbackFlags;
mCallingAttributionTag = nri.mCallingAttributionTag; mCallingAttributionTag = nri.mCallingAttributionTag;
} }
@@ -8849,7 +8868,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
// Decrement the reference count for this NetworkRequestInfo. The reference count is // Decrement the reference count for this NetworkRequestInfo. The reference count is
// incremented when the NetworkRequestInfo is created as part of // incremented when the NetworkRequestInfo is created as part of
// enforceRequestCountLimit(). // enforceRequestCountLimit().
mNetworkRequestCounter.decrementCount(nri.mUid); decrementRequestCount(nri);
return; return;
} }
@@ -8915,7 +8934,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
// Decrement the reference count for this NetworkRequestInfo. The reference count is // Decrement the reference count for this NetworkRequestInfo. The reference count is
// incremented when the NetworkRequestInfo is created as part of // incremented when the NetworkRequestInfo is created as part of
// enforceRequestCountLimit(). // enforceRequestCountLimit().
mNetworkRequestCounter.decrementCount(nri.mUid); decrementRequestCount(nri);
iCb.unlinkToDeath(cbInfo, 0); iCb.unlinkToDeath(cbInfo, 0);
} }

View File

@@ -18,6 +18,7 @@ package com.android.server;
import static android.Manifest.permission.CHANGE_NETWORK_STATE; import static android.Manifest.permission.CHANGE_NETWORK_STATE;
import static android.Manifest.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS; import static android.Manifest.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS;
import static android.Manifest.permission.NETWORK_SETTINGS;
import static android.app.PendingIntent.FLAG_IMMUTABLE; import static android.app.PendingIntent.FLAG_IMMUTABLE;
import static android.content.Intent.ACTION_USER_ADDED; import static android.content.Intent.ACTION_USER_ADDED;
import static android.content.Intent.ACTION_USER_REMOVED; import static android.content.Intent.ACTION_USER_REMOVED;
@@ -2474,8 +2475,7 @@ public class ConnectivityServiceTest {
public void networkCallbacksSanitizationTest_Sanitize() throws Exception { public void networkCallbacksSanitizationTest_Sanitize() throws Exception {
mServiceContext.setPermission(NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, mServiceContext.setPermission(NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK,
PERMISSION_DENIED); PERMISSION_DENIED);
mServiceContext.setPermission(Manifest.permission.NETWORK_SETTINGS, mServiceContext.setPermission(NETWORK_SETTINGS, PERMISSION_DENIED);
PERMISSION_DENIED);
doNetworkCallbacksSanitizationTest(true /* sanitized */); doNetworkCallbacksSanitizationTest(true /* sanitized */);
} }
@@ -2483,7 +2483,7 @@ public class ConnectivityServiceTest {
public void networkCallbacksSanitizationTest_NoSanitize_NetworkStack() throws Exception { public void networkCallbacksSanitizationTest_NoSanitize_NetworkStack() throws Exception {
mServiceContext.setPermission(NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, mServiceContext.setPermission(NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK,
PERMISSION_GRANTED); PERMISSION_GRANTED);
mServiceContext.setPermission(Manifest.permission.NETWORK_SETTINGS, PERMISSION_DENIED); mServiceContext.setPermission(NETWORK_SETTINGS, PERMISSION_DENIED);
doNetworkCallbacksSanitizationTest(false /* sanitized */); doNetworkCallbacksSanitizationTest(false /* sanitized */);
} }
@@ -2491,7 +2491,7 @@ public class ConnectivityServiceTest {
public void networkCallbacksSanitizationTest_NoSanitize_Settings() throws Exception { public void networkCallbacksSanitizationTest_NoSanitize_Settings() throws Exception {
mServiceContext.setPermission(NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, mServiceContext.setPermission(NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK,
PERMISSION_DENIED); PERMISSION_DENIED);
mServiceContext.setPermission(Manifest.permission.NETWORK_SETTINGS, PERMISSION_GRANTED); mServiceContext.setPermission(NETWORK_SETTINGS, PERMISSION_GRANTED);
doNetworkCallbacksSanitizationTest(false /* sanitized */); doNetworkCallbacksSanitizationTest(false /* sanitized */);
} }
@@ -3615,8 +3615,7 @@ public class ConnectivityServiceTest {
@Test @Test
public void testCaptivePortalApi() throws Exception { public void testCaptivePortalApi() throws Exception {
mServiceContext.setPermission( mServiceContext.setPermission(NETWORK_SETTINGS, PERMISSION_GRANTED);
android.Manifest.permission.NETWORK_SETTINGS, PERMISSION_GRANTED);
final TestNetworkCallback captivePortalCallback = new TestNetworkCallback(); final TestNetworkCallback captivePortalCallback = new TestNetworkCallback();
final NetworkRequest captivePortalRequest = new NetworkRequest.Builder() final NetworkRequest captivePortalRequest = new NetworkRequest.Builder()
@@ -3650,8 +3649,7 @@ public class ConnectivityServiceTest {
private TestNetworkCallback setupNetworkCallbackAndConnectToWifi() throws Exception { private TestNetworkCallback setupNetworkCallbackAndConnectToWifi() throws Exception {
// Grant NETWORK_SETTINGS permission to be able to receive LinkProperties change callbacks // Grant NETWORK_SETTINGS permission to be able to receive LinkProperties change callbacks
// with sensitive (captive portal) data // with sensitive (captive portal) data
mServiceContext.setPermission( mServiceContext.setPermission(NETWORK_SETTINGS, PERMISSION_GRANTED);
android.Manifest.permission.NETWORK_SETTINGS, PERMISSION_GRANTED);
final TestNetworkCallback captivePortalCallback = new TestNetworkCallback(); final TestNetworkCallback captivePortalCallback = new TestNetworkCallback();
final NetworkRequest captivePortalRequest = new NetworkRequest.Builder() final NetworkRequest captivePortalRequest = new NetworkRequest.Builder()
@@ -4085,8 +4083,7 @@ public class ConnectivityServiceTest {
@Test @Test
public void testRegisterDefaultNetworkCallback() throws Exception { public void testRegisterDefaultNetworkCallback() throws Exception {
// NETWORK_SETTINGS is necessary to call registerSystemDefaultNetworkCallback. // NETWORK_SETTINGS is necessary to call registerSystemDefaultNetworkCallback.
mServiceContext.setPermission(Manifest.permission.NETWORK_SETTINGS, mServiceContext.setPermission(NETWORK_SETTINGS, PERMISSION_GRANTED);
PERMISSION_GRANTED);
final TestNetworkCallback defaultNetworkCallback = new TestNetworkCallback(); final TestNetworkCallback defaultNetworkCallback = new TestNetworkCallback();
mCm.registerDefaultNetworkCallback(defaultNetworkCallback); mCm.registerDefaultNetworkCallback(defaultNetworkCallback);
@@ -4245,8 +4242,7 @@ public class ConnectivityServiceTest {
() -> mCm.registerDefaultNetworkCallbackAsUid(APP1_UID, callback, handler)); () -> mCm.registerDefaultNetworkCallbackAsUid(APP1_UID, callback, handler));
callback.assertNoCallback(); callback.assertNoCallback();
mServiceContext.setPermission(Manifest.permission.NETWORK_SETTINGS, mServiceContext.setPermission(NETWORK_SETTINGS, PERMISSION_GRANTED);
PERMISSION_GRANTED);
mCm.registerSystemDefaultNetworkCallback(callback, handler); mCm.registerSystemDefaultNetworkCallback(callback, handler);
callback.expectAvailableCallbacksUnvalidated(mCellNetworkAgent); callback.expectAvailableCallbacksUnvalidated(mCellNetworkAgent);
mCm.unregisterNetworkCallback(callback); mCm.unregisterNetworkCallback(callback);
@@ -5616,10 +5612,11 @@ public class ConnectivityServiceTest {
} }
@Test @Test
public void testNetworkCallbackMaximum() { public void testNetworkCallbackMaximum() throws Exception {
final int MAX_REQUESTS = 100; final int MAX_REQUESTS = 100;
final int CALLBACKS = 89; final int CALLBACKS = 89;
final int INTENTS = 11; final int INTENTS = 11;
final int SYSTEM_ONLY_MAX_REQUESTS = 250;
assertEquals(MAX_REQUESTS, CALLBACKS + INTENTS); assertEquals(MAX_REQUESTS, CALLBACKS + INTENTS);
NetworkRequest networkRequest = new NetworkRequest.Builder().build(); NetworkRequest networkRequest = new NetworkRequest.Builder().build();
@@ -5668,6 +5665,33 @@ public class ConnectivityServiceTest {
new Intent("d"), FLAG_IMMUTABLE)) new Intent("d"), FLAG_IMMUTABLE))
); );
// The system gets another SYSTEM_ONLY_MAX_REQUESTS slots.
final Handler handler = new Handler(ConnectivityThread.getInstanceLooper());
withPermission(NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, () -> {
ArrayList<NetworkCallback> systemRegistered = new ArrayList<>();
for (int i = 0; i < SYSTEM_ONLY_MAX_REQUESTS - 1; i++) {
NetworkCallback cb = new NetworkCallback();
if (i % 2 == 0) {
mCm.registerDefaultNetworkCallbackAsUid(1000000 + i, cb, handler);
} else {
mCm.registerNetworkCallback(networkRequest, cb);
}
systemRegistered.add(cb);
}
waitForIdle();
assertThrows(TooManyRequestsException.class, () ->
mCm.registerDefaultNetworkCallbackAsUid(1001042, new NetworkCallback(),
handler));
assertThrows(TooManyRequestsException.class, () ->
mCm.registerNetworkCallback(networkRequest, new NetworkCallback()));
for (NetworkCallback callback : systemRegistered) {
mCm.unregisterNetworkCallback(callback);
}
waitForIdle(); // Wait for requests to be unregistered before giving up the permission.
});
for (Object o : registered) { for (Object o : registered) {
if (o instanceof NetworkCallback) { if (o instanceof NetworkCallback) {
mCm.unregisterNetworkCallback((NetworkCallback)o); mCm.unregisterNetworkCallback((NetworkCallback)o);
@@ -5693,6 +5717,30 @@ public class ConnectivityServiceTest {
} }
waitForIdle(); waitForIdle();
for (int i = 0; i < MAX_REQUESTS; i++) {
NetworkCallback networkCallback = new NetworkCallback();
mCm.registerDefaultNetworkCallback(networkCallback);
mCm.unregisterNetworkCallback(networkCallback);
}
waitForIdle();
for (int i = 0; i < MAX_REQUESTS; i++) {
NetworkCallback networkCallback = new NetworkCallback();
mCm.registerDefaultNetworkCallback(networkCallback);
mCm.unregisterNetworkCallback(networkCallback);
}
waitForIdle();
withPermission(NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, () -> {
for (int i = 0; i < MAX_REQUESTS; i++) {
NetworkCallback networkCallback = new NetworkCallback();
mCm.registerDefaultNetworkCallbackAsUid(1000000 + i, networkCallback,
new Handler(ConnectivityThread.getInstanceLooper()));
mCm.unregisterNetworkCallback(networkCallback);
}
});
waitForIdle();
for (int i = 0; i < MAX_REQUESTS; i++) { for (int i = 0; i < MAX_REQUESTS; i++) {
final PendingIntent pendingIntent = PendingIntent.getBroadcast( final PendingIntent pendingIntent = PendingIntent.getBroadcast(
mContext, 0 /* requestCode */, new Intent("e" + i), FLAG_IMMUTABLE); mContext, 0 /* requestCode */, new Intent("e" + i), FLAG_IMMUTABLE);
@@ -6686,8 +6734,7 @@ public class ConnectivityServiceTest {
@Test @Test
public void testVpnNetworkActive() throws Exception { public void testVpnNetworkActive() throws Exception {
// NETWORK_SETTINGS is necessary to call registerSystemDefaultNetworkCallback. // NETWORK_SETTINGS is necessary to call registerSystemDefaultNetworkCallback.
mServiceContext.setPermission(Manifest.permission.NETWORK_SETTINGS, mServiceContext.setPermission(NETWORK_SETTINGS, PERMISSION_GRANTED);
PERMISSION_GRANTED);
final int uid = Process.myUid(); final int uid = Process.myUid();
@@ -7179,8 +7226,7 @@ public class ConnectivityServiceTest {
@Test @Test
public void testRestrictedProfileAffectsVpnUidRanges() throws Exception { public void testRestrictedProfileAffectsVpnUidRanges() throws Exception {
// NETWORK_SETTINGS is necessary to see the UID ranges in NetworkCapabilities. // NETWORK_SETTINGS is necessary to see the UID ranges in NetworkCapabilities.
mServiceContext.setPermission(Manifest.permission.NETWORK_SETTINGS, mServiceContext.setPermission(NETWORK_SETTINGS, PERMISSION_GRANTED);
PERMISSION_GRANTED);
final NetworkRequest request = new NetworkRequest.Builder() final NetworkRequest request = new NetworkRequest.Builder()
.removeCapability(NET_CAPABILITY_NOT_VPN) .removeCapability(NET_CAPABILITY_NOT_VPN)
@@ -7266,8 +7312,7 @@ public class ConnectivityServiceTest {
mServiceContext.setPermission( mServiceContext.setPermission(
Manifest.permission.CONTROL_VPN, PERMISSION_GRANTED); Manifest.permission.CONTROL_VPN, PERMISSION_GRANTED);
// Necessary to see the UID ranges in NetworkCapabilities. // Necessary to see the UID ranges in NetworkCapabilities.
mServiceContext.setPermission( mServiceContext.setPermission(NETWORK_SETTINGS, PERMISSION_GRANTED);
Manifest.permission.NETWORK_SETTINGS, PERMISSION_GRANTED);
final NetworkRequest request = new NetworkRequest.Builder() final NetworkRequest request = new NetworkRequest.Builder()
.removeCapability(NET_CAPABILITY_NOT_VPN) .removeCapability(NET_CAPABILITY_NOT_VPN)
@@ -7755,8 +7800,7 @@ public class ConnectivityServiceTest {
Manifest.permission.CONTROL_ALWAYS_ON_VPN, PERMISSION_GRANTED); Manifest.permission.CONTROL_ALWAYS_ON_VPN, PERMISSION_GRANTED);
mServiceContext.setPermission( mServiceContext.setPermission(
Manifest.permission.CONTROL_VPN, PERMISSION_GRANTED); Manifest.permission.CONTROL_VPN, PERMISSION_GRANTED);
mServiceContext.setPermission( mServiceContext.setPermission(NETWORK_SETTINGS, PERMISSION_GRANTED);
Manifest.permission.NETWORK_SETTINGS, PERMISSION_GRANTED);
final TestNetworkCallback callback = new TestNetworkCallback(); final TestNetworkCallback callback = new TestNetworkCallback();
final NetworkRequest request = new NetworkRequest.Builder() final NetworkRequest request = new NetworkRequest.Builder()
@@ -7992,8 +8036,7 @@ public class ConnectivityServiceTest {
mServiceContext.setPermission( mServiceContext.setPermission(
Manifest.permission.CONTROL_VPN, PERMISSION_GRANTED); Manifest.permission.CONTROL_VPN, PERMISSION_GRANTED);
// For LockdownVpnTracker to call registerSystemDefaultNetworkCallback. // For LockdownVpnTracker to call registerSystemDefaultNetworkCallback.
mServiceContext.setPermission( mServiceContext.setPermission(NETWORK_SETTINGS, PERMISSION_GRANTED);
Manifest.permission.NETWORK_SETTINGS, PERMISSION_GRANTED);
final NetworkRequest request = new NetworkRequest.Builder().clearCapabilities().build(); final NetworkRequest request = new NetworkRequest.Builder().clearCapabilities().build();
final TestNetworkCallback callback = new TestNetworkCallback(); final TestNetworkCallback callback = new TestNetworkCallback();
@@ -9123,8 +9166,7 @@ public class ConnectivityServiceTest {
private void denyAllLocationPrivilegedPermissions() { private void denyAllLocationPrivilegedPermissions() {
mServiceContext.setPermission(NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, mServiceContext.setPermission(NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK,
PERMISSION_DENIED); PERMISSION_DENIED);
mServiceContext.setPermission(Manifest.permission.NETWORK_SETTINGS, mServiceContext.setPermission(NETWORK_SETTINGS, PERMISSION_DENIED);
PERMISSION_DENIED);
mServiceContext.setPermission(Manifest.permission.NETWORK_STACK, mServiceContext.setPermission(Manifest.permission.NETWORK_STACK,
PERMISSION_DENIED); PERMISSION_DENIED);
mServiceContext.setPermission(Manifest.permission.NETWORK_SETUP_WIZARD, mServiceContext.setPermission(Manifest.permission.NETWORK_SETUP_WIZARD,
@@ -9380,7 +9422,7 @@ public class ConnectivityServiceTest {
@Test @Test
public void testCreateForCallerWithLocalMacAddressSanitizedWithSettingsPermission() public void testCreateForCallerWithLocalMacAddressSanitizedWithSettingsPermission()
throws Exception { throws Exception {
mServiceContext.setPermission(Manifest.permission.NETWORK_SETTINGS, PERMISSION_GRANTED); mServiceContext.setPermission(NETWORK_SETTINGS, PERMISSION_GRANTED);
final TransportInfo transportInfo = mock(TransportInfo.class); final TransportInfo transportInfo = mock(TransportInfo.class);
when(transportInfo.getApplicableRedactions()) when(transportInfo.getApplicableRedactions())
@@ -10776,8 +10818,7 @@ public class ConnectivityServiceTest {
private void registerDefaultNetworkCallbacks() { private void registerDefaultNetworkCallbacks() {
// Using Manifest.permission.NETWORK_SETTINGS for registerSystemDefaultNetworkCallback() // Using Manifest.permission.NETWORK_SETTINGS for registerSystemDefaultNetworkCallback()
mServiceContext.setPermission( mServiceContext.setPermission(NETWORK_SETTINGS, PERMISSION_GRANTED);
Manifest.permission.NETWORK_SETTINGS, PERMISSION_GRANTED);
mSystemDefaultNetworkCallback = new TestNetworkCallback(); mSystemDefaultNetworkCallback = new TestNetworkCallback();
mDefaultNetworkCallback = new TestNetworkCallback(); mDefaultNetworkCallback = new TestNetworkCallback();
mProfileDefaultNetworkCallback = new TestNetworkCallback(); mProfileDefaultNetworkCallback = new TestNetworkCallback();
@@ -10787,8 +10828,7 @@ public class ConnectivityServiceTest {
registerDefaultNetworkCallbackAsUid(mProfileDefaultNetworkCallback, registerDefaultNetworkCallbackAsUid(mProfileDefaultNetworkCallback,
TEST_WORK_PROFILE_APP_UID); TEST_WORK_PROFILE_APP_UID);
// TODO: test using ConnectivityManager#registerDefaultNetworkCallbackAsUid as well. // TODO: test using ConnectivityManager#registerDefaultNetworkCallbackAsUid as well.
mServiceContext.setPermission( mServiceContext.setPermission(NETWORK_SETTINGS, PERMISSION_DENIED);
Manifest.permission.NETWORK_SETTINGS, PERMISSION_DENIED);
} }
private void unregisterDefaultNetworkCallbacks() { private void unregisterDefaultNetworkCallbacks() {
@@ -10943,7 +10983,7 @@ public class ConnectivityServiceTest {
defaultNetworkCallback.assertNoCallback(); defaultNetworkCallback.assertNoCallback();
final TestNetworkCallback otherUidDefaultCallback = new TestNetworkCallback(); final TestNetworkCallback otherUidDefaultCallback = new TestNetworkCallback();
withPermission(Manifest.permission.NETWORK_SETTINGS, () -> withPermission(NETWORK_SETTINGS, () ->
mCm.registerDefaultNetworkCallbackAsUid(TEST_PACKAGE_UID, otherUidDefaultCallback, mCm.registerDefaultNetworkCallbackAsUid(TEST_PACKAGE_UID, otherUidDefaultCallback,
new Handler(ConnectivityThread.getInstanceLooper()))); new Handler(ConnectivityThread.getInstanceLooper())));
@@ -10991,7 +11031,7 @@ public class ConnectivityServiceTest {
defaultNetworkCallback.assertNoCallback(); defaultNetworkCallback.assertNoCallback();
final TestNetworkCallback otherUidDefaultCallback = new TestNetworkCallback(); final TestNetworkCallback otherUidDefaultCallback = new TestNetworkCallback();
withPermission(Manifest.permission.NETWORK_SETTINGS, () -> withPermission(NETWORK_SETTINGS, () ->
mCm.registerDefaultNetworkCallbackAsUid(TEST_PACKAGE_UID, otherUidDefaultCallback, mCm.registerDefaultNetworkCallbackAsUid(TEST_PACKAGE_UID, otherUidDefaultCallback,
new Handler(ConnectivityThread.getInstanceLooper()))); new Handler(ConnectivityThread.getInstanceLooper())));
@@ -11033,7 +11073,7 @@ public class ConnectivityServiceTest {
defaultNetworkCallback.assertNoCallback(); defaultNetworkCallback.assertNoCallback();
final TestNetworkCallback otherUidDefaultCallback = new TestNetworkCallback(); final TestNetworkCallback otherUidDefaultCallback = new TestNetworkCallback();
withPermission(Manifest.permission.NETWORK_SETTINGS, () -> withPermission(NETWORK_SETTINGS, () ->
mCm.registerDefaultNetworkCallbackAsUid(TEST_PACKAGE_UID, otherUidDefaultCallback, mCm.registerDefaultNetworkCallbackAsUid(TEST_PACKAGE_UID, otherUidDefaultCallback,
new Handler(ConnectivityThread.getInstanceLooper()))); new Handler(ConnectivityThread.getInstanceLooper())));