Merge "Use Netd new added/removed uid range methods"

This commit is contained in:
Paul Hu
2021-07-07 03:07:10 +00:00
committed by Gerrit Code Review
2 changed files with 107 additions and 84 deletions

View File

@@ -178,6 +178,7 @@ import android.net.VpnManager;
import android.net.VpnTransportInfo; import android.net.VpnTransportInfo;
import android.net.metrics.IpConnectivityLog; import android.net.metrics.IpConnectivityLog;
import android.net.metrics.NetworkEvent; import android.net.metrics.NetworkEvent;
import android.net.netd.aidl.NativeUidRangeConfig;
import android.net.netlink.InetDiagMessage; import android.net.netlink.InetDiagMessage;
import android.net.networkstack.ModuleNetworkStackClient; import android.net.networkstack.ModuleNetworkStackClient;
import android.net.networkstack.NetworkStackClientBase; import android.net.networkstack.NetworkStackClientBase;
@@ -4223,10 +4224,10 @@ public class ConnectivityService extends IConnectivityManager.Stub
final NetworkAgentInfo satisfier = nri.getSatisfier(); final NetworkAgentInfo satisfier = nri.getSatisfier();
if (null != satisfier) { if (null != satisfier) {
try { try {
// TODO: Passing default network priority to netd. mNetd.networkRemoveUidRangesParcel(new NativeUidRangeConfig(
mNetd.networkRemoveUidRanges(satisfier.network.getNetId(), satisfier.network.getNetId(),
toUidRangeStableParcels(nri.getUids()) toUidRangeStableParcels(nri.getUids()),
/* nri.getDefaultNetworkPriority() */); nri.getDefaultNetworkPriority()));
} catch (RemoteException e) { } catch (RemoteException e) {
loge("Exception setting network preference default network", e); loge("Exception setting network preference default network", e);
} }
@@ -7496,13 +7497,11 @@ public class ConnectivityService extends IConnectivityManager.Stub
maybeCloseSockets(nai, ranges, exemptUids); maybeCloseSockets(nai, ranges, exemptUids);
try { try {
if (add) { if (add) {
// TODO: Passing default network priority to netd. mNetd.networkAddUidRangesParcel(new NativeUidRangeConfig(
mNetd.networkAddUidRanges(nai.network.netId, ranges nai.network.netId, ranges, DEFAULT_NETWORK_PRIORITY_NONE));
/* DEFAULT_NETWORK_PRIORITY_NONE */);
} else { } else {
// TODO: Passing default network priority to netd. mNetd.networkRemoveUidRangesParcel(new NativeUidRangeConfig(
mNetd.networkRemoveUidRanges(nai.network.netId, ranges nai.network.netId, ranges, DEFAULT_NETWORK_PRIORITY_NONE));
/* DEFAULT_NETWORK_PRIORITY_NONE */);
} }
} catch (Exception e) { } catch (Exception e) {
loge("Exception while " + (add ? "adding" : "removing") + " uid ranges " + uidRanges + loge("Exception while " + (add ? "adding" : "removing") + " uid ranges " + uidRanges +
@@ -7844,18 +7843,16 @@ public class ConnectivityService extends IConnectivityManager.Stub
+ " any applications to set as the default." + nri); + " any applications to set as the default." + nri);
} }
if (null != newDefaultNetwork) { if (null != newDefaultNetwork) {
// TODO: Passing default network priority to netd. mNetd.networkAddUidRangesParcel(new NativeUidRangeConfig(
mNetd.networkAddUidRanges(
newDefaultNetwork.network.getNetId(), newDefaultNetwork.network.getNetId(),
toUidRangeStableParcels(nri.getUids()) toUidRangeStableParcels(nri.getUids()),
/* nri.getDefaultNetworkPriority() */); nri.getDefaultNetworkPriority()));
} }
if (null != oldDefaultNetwork) { if (null != oldDefaultNetwork) {
// TODO: Passing default network priority to netd. mNetd.networkRemoveUidRangesParcel(new NativeUidRangeConfig(
mNetd.networkRemoveUidRanges(
oldDefaultNetwork.network.getNetId(), oldDefaultNetwork.network.getNetId(),
toUidRangeStableParcels(nri.getUids()) toUidRangeStableParcels(nri.getUids()),
/* nri.getDefaultNetworkPriority() */); nri.getDefaultNetworkPriority()));
} }
} catch (RemoteException | ServiceSpecificException e) { } catch (RemoteException | ServiceSpecificException e) {
loge("Exception setting app default network", e); loge("Exception setting app default network", e);

View File

@@ -126,7 +126,9 @@ import static android.os.Process.INVALID_UID;
import static android.system.OsConstants.IPPROTO_TCP; import static android.system.OsConstants.IPPROTO_TCP;
import static com.android.server.ConnectivityService.DEFAULT_NETWORK_PRIORITY_MOBILE_DATA_PREFERRED; import static com.android.server.ConnectivityService.DEFAULT_NETWORK_PRIORITY_MOBILE_DATA_PREFERRED;
import static com.android.server.ConnectivityService.DEFAULT_NETWORK_PRIORITY_NONE;
import static com.android.server.ConnectivityService.DEFAULT_NETWORK_PRIORITY_OEM; import static com.android.server.ConnectivityService.DEFAULT_NETWORK_PRIORITY_OEM;
import static com.android.server.ConnectivityService.DEFAULT_NETWORK_PRIORITY_PROFILE;
import static com.android.server.ConnectivityServiceTestUtils.transportToLegacyType; import static com.android.server.ConnectivityServiceTestUtils.transportToLegacyType;
import static com.android.testutils.ConcurrentUtils.await; import static com.android.testutils.ConcurrentUtils.await;
import static com.android.testutils.ConcurrentUtils.durationOf; import static com.android.testutils.ConcurrentUtils.durationOf;
@@ -258,6 +260,7 @@ import android.net.Uri;
import android.net.VpnManager; import android.net.VpnManager;
import android.net.VpnTransportInfo; import android.net.VpnTransportInfo;
import android.net.metrics.IpConnectivityLog; import android.net.metrics.IpConnectivityLog;
import android.net.netd.aidl.NativeUidRangeConfig;
import android.net.networkstack.NetworkStackClientBase; import android.net.networkstack.NetworkStackClientBase;
import android.net.resolv.aidl.Nat64PrefixEventParcel; import android.net.resolv.aidl.Nat64PrefixEventParcel;
import android.net.resolv.aidl.PrivateDnsValidationEventParcel; import android.net.resolv.aidl.PrivateDnsValidationEventParcel;
@@ -1296,10 +1299,12 @@ public class ConnectivityServiceTest {
mNetworkCapabilities); mNetworkCapabilities);
mMockNetworkAgent.waitForIdle(TIMEOUT_MS); mMockNetworkAgent.waitForIdle(TIMEOUT_MS);
verify(mMockNetd, times(1)).networkAddUidRanges(eq(mMockVpn.getNetwork().getNetId()), verify(mMockNetd, times(1)).networkAddUidRangesParcel(
eq(toUidRangeStableParcels(uids))); new NativeUidRangeConfig(mMockVpn.getNetwork().getNetId(),
verify(mMockNetd, never()) toUidRangeStableParcels(uids), DEFAULT_NETWORK_PRIORITY_NONE));
.networkRemoveUidRanges(eq(mMockVpn.getNetwork().getNetId()), any()); verify(mMockNetd, never()).networkRemoveUidRangesParcel(argThat(config ->
mMockVpn.getNetwork().getNetId() == config.netId
&& DEFAULT_NETWORK_PRIORITY_NONE == config.subPriority));
mAgentRegistered = true; mAgentRegistered = true;
verify(mMockNetd).networkCreate(nativeNetworkConfigVpn(getNetwork().netId, verify(mMockNetd).networkCreate(nativeNetworkConfigVpn(getNetwork().netId,
!mMockNetworkAgent.isBypassableVpn(), mVpnType)); !mMockNetworkAgent.isBypassableVpn(), mVpnType));
@@ -10484,13 +10489,13 @@ public class ConnectivityServiceTest {
assertContainsExactly(exemptUidCaptor.getValue(), Process.VPN_UID, exemptUid); assertContainsExactly(exemptUidCaptor.getValue(), Process.VPN_UID, exemptUid);
if (add) { if (add) {
inOrder.verify(mMockNetd, times(1)) inOrder.verify(mMockNetd, times(1)).networkAddUidRangesParcel(
.networkAddUidRanges(eq(mMockVpn.getNetwork().getNetId()), new NativeUidRangeConfig(mMockVpn.getNetwork().getNetId(),
eq(toUidRangeStableParcels(vpnRanges))); toUidRangeStableParcels(vpnRanges), DEFAULT_NETWORK_PRIORITY_NONE));
} else { } else {
inOrder.verify(mMockNetd, times(1)) inOrder.verify(mMockNetd, times(1)).networkRemoveUidRangesParcel(
.networkRemoveUidRanges(eq(mMockVpn.getNetwork().getNetId()), new NativeUidRangeConfig(mMockVpn.getNetwork().getNetId(),
eq(toUidRangeStableParcels(vpnRanges))); toUidRangeStableParcels(vpnRanges), DEFAULT_NETWORK_PRIORITY_NONE));
} }
inOrder.verify(mMockNetd, times(1)).socketDestroy(eq(toUidRangeStableParcels(vpnRanges)), inOrder.verify(mMockNetd, times(1)).socketDestroy(eq(toUidRangeStableParcels(vpnRanges)),
@@ -11722,14 +11727,15 @@ public class ConnectivityServiceTest {
final boolean useAnyIdForAdd = OEM_PREF_ANY_NET_ID == addUidRangesNetId; final boolean useAnyIdForAdd = OEM_PREF_ANY_NET_ID == addUidRangesNetId;
final boolean useAnyIdForRemove = OEM_PREF_ANY_NET_ID == removeUidRangesNetId; final boolean useAnyIdForRemove = OEM_PREF_ANY_NET_ID == removeUidRangesNetId;
// Validate netd. // Validate that add/remove uid range (with oem priority) to/from netd.
verify(mMockNetd, times(addUidRangesTimes)) verify(mMockNetd, times(addUidRangesTimes)).networkAddUidRangesParcel(argThat(config ->
.networkAddUidRanges( (useAnyIdForAdd ? true : addUidRangesNetId == config.netId)
(useAnyIdForAdd ? anyInt() : eq(addUidRangesNetId)), eq(addedUidRanges)); && Arrays.equals(addedUidRanges, config.uidRanges)
verify(mMockNetd, times(removeUidRangesTimes)) && DEFAULT_NETWORK_PRIORITY_OEM == config.subPriority));
.networkRemoveUidRanges( verify(mMockNetd, times(removeUidRangesTimes)).networkRemoveUidRangesParcel(
(useAnyIdForRemove ? anyInt() : eq(removeUidRangesNetId)), argThat(config -> (useAnyIdForRemove ? true : removeUidRangesNetId == config.netId)
eq(removedUidRanges)); && Arrays.equals(removedUidRanges, config.uidRanges)
&& DEFAULT_NETWORK_PRIORITY_OEM == config.subPriority));
if (shouldDestroyNetwork) { if (shouldDestroyNetwork) {
verify(mMockNetd, times(1)) verify(mMockNetd, times(1))
.networkDestroy((useAnyIdForRemove ? anyInt() : eq(removeUidRangesNetId))); .networkDestroy((useAnyIdForRemove ? anyInt() : eq(removeUidRangesNetId)));
@@ -12882,8 +12888,9 @@ public class ConnectivityServiceTest {
// rules to the correct network in this case the system default network. The case where // rules to the correct network in this case the system default network. The case where
// the default network for the profile happens to be the same as the system default // the default network for the profile happens to be the same as the system default
// is not handled specially, the rules are always active as long as a preference is set. // is not handled specially, the rules are always active as long as a preference is set.
inOrder.verify(mMockNetd).networkAddUidRanges(mCellNetworkAgent.getNetwork().netId, inOrder.verify(mMockNetd).networkAddUidRangesParcel(new NativeUidRangeConfig(
uidRangeFor(testHandle)); mCellNetworkAgent.getNetwork().netId, uidRangeFor(testHandle),
DEFAULT_NETWORK_PRIORITY_PROFILE));
// The enterprise network is not ready yet. // The enterprise network is not ready yet.
assertNoCallbacks(mSystemDefaultNetworkCallback, mDefaultNetworkCallback, assertNoCallbacks(mSystemDefaultNetworkCallback, mDefaultNetworkCallback,
@@ -12897,10 +12904,12 @@ public class ConnectivityServiceTest {
mDefaultNetworkCallback.assertNoCallback(); mDefaultNetworkCallback.assertNoCallback();
inOrder.verify(mMockNetd).networkCreate( inOrder.verify(mMockNetd).networkCreate(
nativeNetworkConfigPhysical(workAgent.getNetwork().netId, INetd.PERMISSION_SYSTEM)); nativeNetworkConfigPhysical(workAgent.getNetwork().netId, INetd.PERMISSION_SYSTEM));
inOrder.verify(mMockNetd).networkAddUidRanges(workAgent.getNetwork().netId, inOrder.verify(mMockNetd).networkAddUidRangesParcel(new NativeUidRangeConfig(
uidRangeFor(testHandle)); workAgent.getNetwork().netId, uidRangeFor(testHandle),
inOrder.verify(mMockNetd).networkRemoveUidRanges(mCellNetworkAgent.getNetwork().netId, DEFAULT_NETWORK_PRIORITY_PROFILE));
uidRangeFor(testHandle)); inOrder.verify(mMockNetd).networkRemoveUidRangesParcel(new NativeUidRangeConfig(
mCellNetworkAgent.getNetwork().netId, uidRangeFor(testHandle),
DEFAULT_NETWORK_PRIORITY_PROFILE));
// Make sure changes to the work agent send callbacks to the app in the work profile, but // Make sure changes to the work agent send callbacks to the app in the work profile, but
// not to the other apps. // not to the other apps.
@@ -12948,8 +12957,9 @@ public class ConnectivityServiceTest {
mProfileDefaultNetworkCallback.expectCallback(CallbackEntry.LOST, workAgent); mProfileDefaultNetworkCallback.expectCallback(CallbackEntry.LOST, workAgent);
mProfileDefaultNetworkCallback.expectAvailableCallbacksValidated(mCellNetworkAgent); mProfileDefaultNetworkCallback.expectAvailableCallbacksValidated(mCellNetworkAgent);
assertNoCallbacks(mSystemDefaultNetworkCallback, mDefaultNetworkCallback); assertNoCallbacks(mSystemDefaultNetworkCallback, mDefaultNetworkCallback);
inOrder.verify(mMockNetd).networkAddUidRanges(mCellNetworkAgent.getNetwork().netId, inOrder.verify(mMockNetd).networkAddUidRangesParcel(new NativeUidRangeConfig(
uidRangeFor(testHandle)); mCellNetworkAgent.getNetwork().netId, uidRangeFor(testHandle),
DEFAULT_NETWORK_PRIORITY_PROFILE));
inOrder.verify(mMockNetd).networkDestroy(workAgent.getNetwork().netId); inOrder.verify(mMockNetd).networkDestroy(workAgent.getNetwork().netId);
mCellNetworkAgent.disconnect(); mCellNetworkAgent.disconnect();
@@ -12972,8 +12982,9 @@ public class ConnectivityServiceTest {
assertNoCallbacks(mSystemDefaultNetworkCallback, mDefaultNetworkCallback); assertNoCallbacks(mSystemDefaultNetworkCallback, mDefaultNetworkCallback);
inOrder.verify(mMockNetd).networkCreate(nativeNetworkConfigPhysical( inOrder.verify(mMockNetd).networkCreate(nativeNetworkConfigPhysical(
workAgent2.getNetwork().netId, INetd.PERMISSION_SYSTEM)); workAgent2.getNetwork().netId, INetd.PERMISSION_SYSTEM));
inOrder.verify(mMockNetd).networkAddUidRanges(workAgent2.getNetwork().netId, inOrder.verify(mMockNetd).networkAddUidRangesParcel(new NativeUidRangeConfig(
uidRangeFor(testHandle)); workAgent2.getNetwork().netId, uidRangeFor(testHandle),
DEFAULT_NETWORK_PRIORITY_PROFILE));
workAgent2.setNetworkValid(true /* isStrictMode */); workAgent2.setNetworkValid(true /* isStrictMode */);
workAgent2.mNetworkMonitor.forceReevaluation(Process.myUid()); workAgent2.mNetworkMonitor.forceReevaluation(Process.myUid());
@@ -12981,7 +12992,7 @@ public class ConnectivityServiceTest {
nc -> nc.hasCapability(NET_CAPABILITY_ENTERPRISE) nc -> nc.hasCapability(NET_CAPABILITY_ENTERPRISE)
&& !nc.hasCapability(NET_CAPABILITY_NOT_RESTRICTED)); && !nc.hasCapability(NET_CAPABILITY_NOT_RESTRICTED));
assertNoCallbacks(mSystemDefaultNetworkCallback, mDefaultNetworkCallback); assertNoCallbacks(mSystemDefaultNetworkCallback, mDefaultNetworkCallback);
inOrder.verify(mMockNetd, never()).networkAddUidRanges(anyInt(), any()); inOrder.verify(mMockNetd, never()).networkAddUidRangesParcel(any());
// When the agent disconnects, test that the app on the work profile falls back to the // When the agent disconnects, test that the app on the work profile falls back to the
// default network. // default network.
@@ -13018,8 +13029,9 @@ public class ConnectivityServiceTest {
listener.expectOnComplete(); listener.expectOnComplete();
inOrder.verify(mMockNetd).networkCreate(nativeNetworkConfigPhysical( inOrder.verify(mMockNetd).networkCreate(nativeNetworkConfigPhysical(
mCellNetworkAgent.getNetwork().netId, INetd.PERMISSION_NONE)); mCellNetworkAgent.getNetwork().netId, INetd.PERMISSION_NONE));
inOrder.verify(mMockNetd).networkAddUidRanges(workAgent.getNetwork().netId, inOrder.verify(mMockNetd).networkAddUidRangesParcel(new NativeUidRangeConfig(
uidRangeFor(testHandle)); workAgent.getNetwork().netId, uidRangeFor(testHandle),
DEFAULT_NETWORK_PRIORITY_PROFILE));
registerDefaultNetworkCallbacks(); registerDefaultNetworkCallbacks();
@@ -13033,8 +13045,9 @@ public class ConnectivityServiceTest {
mProfileDefaultNetworkCallback.expectAvailableCallbacksValidated(mCellNetworkAgent); mProfileDefaultNetworkCallback.expectAvailableCallbacksValidated(mCellNetworkAgent);
assertNoCallbacks(mSystemDefaultNetworkCallback, mDefaultNetworkCallback); assertNoCallbacks(mSystemDefaultNetworkCallback, mDefaultNetworkCallback);
inOrder.verify(mMockNetd).networkRemoveUidRanges(workAgent.getNetwork().netId, inOrder.verify(mMockNetd).networkRemoveUidRangesParcel(new NativeUidRangeConfig(
uidRangeFor(testHandle)); workAgent.getNetwork().netId, uidRangeFor(testHandle),
DEFAULT_NETWORK_PRIORITY_PROFILE));
workAgent.disconnect(); workAgent.disconnect();
mCellNetworkAgent.disconnect(); mCellNetworkAgent.disconnect();
@@ -13078,8 +13091,9 @@ public class ConnectivityServiceTest {
mCm.setProfileNetworkPreference(testHandle2, PROFILE_NETWORK_PREFERENCE_ENTERPRISE, mCm.setProfileNetworkPreference(testHandle2, PROFILE_NETWORK_PREFERENCE_ENTERPRISE,
r -> r.run(), listener); r -> r.run(), listener);
listener.expectOnComplete(); listener.expectOnComplete();
inOrder.verify(mMockNetd).networkAddUidRanges(workAgent.getNetwork().netId, inOrder.verify(mMockNetd).networkAddUidRangesParcel(new NativeUidRangeConfig(
uidRangeFor(testHandle2)); workAgent.getNetwork().netId, uidRangeFor(testHandle2),
DEFAULT_NETWORK_PRIORITY_PROFILE));
mProfileDefaultNetworkCallback.expectAvailableCallbacksValidated(workAgent); mProfileDefaultNetworkCallback.expectAvailableCallbacksValidated(workAgent);
assertNoCallbacks(mSystemDefaultNetworkCallback, mDefaultNetworkCallback, assertNoCallbacks(mSystemDefaultNetworkCallback, mDefaultNetworkCallback,
@@ -13088,8 +13102,9 @@ public class ConnectivityServiceTest {
mCm.setProfileNetworkPreference(testHandle4, PROFILE_NETWORK_PREFERENCE_ENTERPRISE, mCm.setProfileNetworkPreference(testHandle4, PROFILE_NETWORK_PREFERENCE_ENTERPRISE,
r -> r.run(), listener); r -> r.run(), listener);
listener.expectOnComplete(); listener.expectOnComplete();
inOrder.verify(mMockNetd).networkAddUidRanges(workAgent.getNetwork().netId, inOrder.verify(mMockNetd).networkAddUidRangesParcel(new NativeUidRangeConfig(
uidRangeFor(testHandle4)); workAgent.getNetwork().netId, uidRangeFor(testHandle4),
DEFAULT_NETWORK_PRIORITY_PROFILE));
app4Cb.expectAvailableCallbacksValidated(workAgent); app4Cb.expectAvailableCallbacksValidated(workAgent);
assertNoCallbacks(mSystemDefaultNetworkCallback, mDefaultNetworkCallback, assertNoCallbacks(mSystemDefaultNetworkCallback, mDefaultNetworkCallback,
@@ -13098,8 +13113,9 @@ public class ConnectivityServiceTest {
mCm.setProfileNetworkPreference(testHandle2, PROFILE_NETWORK_PREFERENCE_DEFAULT, mCm.setProfileNetworkPreference(testHandle2, PROFILE_NETWORK_PREFERENCE_DEFAULT,
r -> r.run(), listener); r -> r.run(), listener);
listener.expectOnComplete(); listener.expectOnComplete();
inOrder.verify(mMockNetd).networkRemoveUidRanges(workAgent.getNetwork().netId, inOrder.verify(mMockNetd).networkRemoveUidRangesParcel(new NativeUidRangeConfig(
uidRangeFor(testHandle2)); workAgent.getNetwork().netId, uidRangeFor(testHandle2),
DEFAULT_NETWORK_PRIORITY_PROFILE));
mProfileDefaultNetworkCallback.expectAvailableCallbacksValidated(mCellNetworkAgent); mProfileDefaultNetworkCallback.expectAvailableCallbacksValidated(mCellNetworkAgent);
assertNoCallbacks(mSystemDefaultNetworkCallback, mDefaultNetworkCallback, assertNoCallbacks(mSystemDefaultNetworkCallback, mDefaultNetworkCallback,
@@ -13126,15 +13142,17 @@ public class ConnectivityServiceTest {
listener.expectOnComplete(); listener.expectOnComplete();
inOrder.verify(mMockNetd).networkCreate(nativeNetworkConfigPhysical( inOrder.verify(mMockNetd).networkCreate(nativeNetworkConfigPhysical(
mCellNetworkAgent.getNetwork().netId, INetd.PERMISSION_NONE)); mCellNetworkAgent.getNetwork().netId, INetd.PERMISSION_NONE));
inOrder.verify(mMockNetd).networkAddUidRanges(mCellNetworkAgent.getNetwork().netId, inOrder.verify(mMockNetd).networkAddUidRangesParcel(new NativeUidRangeConfig(
uidRangeFor(testHandle)); mCellNetworkAgent.getNetwork().netId, uidRangeFor(testHandle),
DEFAULT_NETWORK_PRIORITY_PROFILE));
final Intent removedIntent = new Intent(ACTION_USER_REMOVED); final Intent removedIntent = new Intent(ACTION_USER_REMOVED);
removedIntent.putExtra(Intent.EXTRA_USER, testHandle); removedIntent.putExtra(Intent.EXTRA_USER, testHandle);
processBroadcast(removedIntent); processBroadcast(removedIntent);
inOrder.verify(mMockNetd).networkRemoveUidRanges(mCellNetworkAgent.getNetwork().netId, inOrder.verify(mMockNetd).networkRemoveUidRangesParcel(new NativeUidRangeConfig(
uidRangeFor(testHandle)); mCellNetworkAgent.getNetwork().netId, uidRangeFor(testHandle),
DEFAULT_NETWORK_PRIORITY_PROFILE));
} }
/** /**
@@ -13383,15 +13401,17 @@ public class ConnectivityServiceTest {
// Initial mobile data preferred uids status. // Initial mobile data preferred uids status.
setAndUpdateMobileDataPreferredUids(Set.of()); setAndUpdateMobileDataPreferredUids(Set.of());
inorder.verify(mMockNetd, never()).networkAddUidRanges(anyInt(), any()); inorder.verify(mMockNetd, never()).networkAddUidRangesParcel(any());
inorder.verify(mMockNetd, never()).networkRemoveUidRanges(anyInt(), any()); inorder.verify(mMockNetd, never()).networkRemoveUidRangesParcel(any());
// Set MOBILE_DATA_PREFERRED_UIDS setting and verify that net id and uid ranges send to netd // Set MOBILE_DATA_PREFERRED_UIDS setting and verify that net id and uid ranges send to netd
final Set<Integer> uids1 = Set.of(PRIMARY_USER_HANDLE.getUid(TEST_PACKAGE_UID)); final Set<Integer> uids1 = Set.of(PRIMARY_USER_HANDLE.getUid(TEST_PACKAGE_UID));
final UidRangeParcel[] uidRanges1 = toUidRangeStableParcels(uidRangesForUids(uids1)); final UidRangeParcel[] uidRanges1 = toUidRangeStableParcels(uidRangesForUids(uids1));
final NativeUidRangeConfig config1 = new NativeUidRangeConfig(cellNetId, uidRanges1,
DEFAULT_NETWORK_PRIORITY_MOBILE_DATA_PREFERRED);
setAndUpdateMobileDataPreferredUids(uids1); setAndUpdateMobileDataPreferredUids(uids1);
inorder.verify(mMockNetd, times(1)).networkAddUidRanges(cellNetId, uidRanges1); inorder.verify(mMockNetd, times(1)).networkAddUidRangesParcel(config1);
inorder.verify(mMockNetd, never()).networkRemoveUidRanges(anyInt(), any()); inorder.verify(mMockNetd, never()).networkRemoveUidRangesParcel(any());
// Set MOBILE_DATA_PREFERRED_UIDS setting again and verify that old rules are removed and // Set MOBILE_DATA_PREFERRED_UIDS setting again and verify that old rules are removed and
// new rules are added. // new rules are added.
@@ -13399,17 +13419,17 @@ public class ConnectivityServiceTest {
PRIMARY_USER_HANDLE.getUid(TEST_PACKAGE_UID2), PRIMARY_USER_HANDLE.getUid(TEST_PACKAGE_UID2),
SECONDARY_USER_HANDLE.getUid(TEST_PACKAGE_UID)); SECONDARY_USER_HANDLE.getUid(TEST_PACKAGE_UID));
final UidRangeParcel[] uidRanges2 = toUidRangeStableParcels(uidRangesForUids(uids2)); final UidRangeParcel[] uidRanges2 = toUidRangeStableParcels(uidRangesForUids(uids2));
final NativeUidRangeConfig config2 = new NativeUidRangeConfig(cellNetId, uidRanges2,
DEFAULT_NETWORK_PRIORITY_MOBILE_DATA_PREFERRED);
setAndUpdateMobileDataPreferredUids(uids2); setAndUpdateMobileDataPreferredUids(uids2);
inorder.verify(mMockNetd, times(1)).networkRemoveUidRanges(cellNetId, uidRanges1); inorder.verify(mMockNetd, times(1)).networkRemoveUidRangesParcel(config1);
inorder.verify(mMockNetd, times(1)).networkAddUidRanges(cellNetId, uidRanges2); inorder.verify(mMockNetd, times(1)).networkAddUidRangesParcel(config2);
// Clear MOBILE_DATA_PREFERRED_UIDS setting again and verify that old rules are removed and // Clear MOBILE_DATA_PREFERRED_UIDS setting again and verify that old rules are removed and
// new rules are not added. // new rules are not added.
final Set<Integer> uids3 = Set.of(); setAndUpdateMobileDataPreferredUids(Set.of());
final UidRangeParcel[] uidRanges3 = toUidRangeStableParcels(uidRangesForUids(uids3)); inorder.verify(mMockNetd, times(1)).networkRemoveUidRangesParcel(config2);
setAndUpdateMobileDataPreferredUids(uids3); inorder.verify(mMockNetd, never()).networkAddUidRangesParcel(any());
inorder.verify(mMockNetd, times(1)).networkRemoveUidRanges(cellNetId, uidRanges2);
inorder.verify(mMockNetd, never()).networkAddUidRanges(anyInt(), any());
} }
/** /**
@@ -13440,16 +13460,18 @@ public class ConnectivityServiceTest {
// Initial mobile data preferred uids status. // Initial mobile data preferred uids status.
setAndUpdateMobileDataPreferredUids(Set.of()); setAndUpdateMobileDataPreferredUids(Set.of());
inorder.verify(mMockNetd, never()).networkAddUidRanges(anyInt(), any()); inorder.verify(mMockNetd, never()).networkAddUidRangesParcel(any());
inorder.verify(mMockNetd, never()).networkRemoveUidRanges(anyInt(), any()); inorder.verify(mMockNetd, never()).networkRemoveUidRangesParcel(any());
// Set MOBILE_DATA_PREFERRED_UIDS setting and verify that wifi net id and uid ranges send to // Set MOBILE_DATA_PREFERRED_UIDS setting and verify that wifi net id and uid ranges send to
// netd. // netd.
final Set<Integer> uids = Set.of(PRIMARY_USER_HANDLE.getUid(TEST_PACKAGE_UID)); final Set<Integer> uids = Set.of(PRIMARY_USER_HANDLE.getUid(TEST_PACKAGE_UID));
final UidRangeParcel[] uidRanges = toUidRangeStableParcels(uidRangesForUids(uids)); final UidRangeParcel[] uidRanges = toUidRangeStableParcels(uidRangesForUids(uids));
final NativeUidRangeConfig wifiConfig = new NativeUidRangeConfig(wifiNetId, uidRanges,
DEFAULT_NETWORK_PRIORITY_MOBILE_DATA_PREFERRED);
setAndUpdateMobileDataPreferredUids(uids); setAndUpdateMobileDataPreferredUids(uids);
inorder.verify(mMockNetd, times(1)).networkAddUidRanges(wifiNetId, uidRanges); inorder.verify(mMockNetd, times(1)).networkAddUidRangesParcel(wifiConfig);
inorder.verify(mMockNetd, never()).networkRemoveUidRanges(anyInt(), any()); inorder.verify(mMockNetd, never()).networkRemoveUidRangesParcel(any());
// Cellular network connected. mTestPackageDefaultNetworkCallback should receive // Cellular network connected. mTestPackageDefaultNetworkCallback should receive
// callback with cellular network and net id and uid ranges should be updated to netd. // callback with cellular network and net id and uid ranges should be updated to netd.
@@ -13461,10 +13483,12 @@ public class ConnectivityServiceTest {
assertEquals(mCellNetworkAgent.getNetwork(), mCm.getActiveNetworkForUid(TEST_PACKAGE_UID)); assertEquals(mCellNetworkAgent.getNetwork(), mCm.getActiveNetworkForUid(TEST_PACKAGE_UID));
final int cellNetId = mCellNetworkAgent.getNetwork().netId; final int cellNetId = mCellNetworkAgent.getNetwork().netId;
final NativeUidRangeConfig cellConfig = new NativeUidRangeConfig(cellNetId, uidRanges,
DEFAULT_NETWORK_PRIORITY_MOBILE_DATA_PREFERRED);
inorder.verify(mMockNetd, times(1)).networkCreate(nativeNetworkConfigPhysical( inorder.verify(mMockNetd, times(1)).networkCreate(nativeNetworkConfigPhysical(
cellNetId, INetd.PERMISSION_NONE)); cellNetId, INetd.PERMISSION_NONE));
inorder.verify(mMockNetd, times(1)).networkAddUidRanges(cellNetId, uidRanges); inorder.verify(mMockNetd, times(1)).networkAddUidRangesParcel(cellConfig);
inorder.verify(mMockNetd, times(1)).networkRemoveUidRanges(wifiNetId, uidRanges); inorder.verify(mMockNetd, times(1)).networkRemoveUidRangesParcel(wifiConfig);
// Cellular network disconnected. mTestPackageDefaultNetworkCallback should receive // Cellular network disconnected. mTestPackageDefaultNetworkCallback should receive
// callback with wifi network from fallback request. // callback with wifi network from fallback request.
@@ -13474,8 +13498,8 @@ public class ConnectivityServiceTest {
mTestPackageDefaultNetworkCallback.expectCallback(CallbackEntry.LOST, mCellNetworkAgent); mTestPackageDefaultNetworkCallback.expectCallback(CallbackEntry.LOST, mCellNetworkAgent);
mTestPackageDefaultNetworkCallback.expectAvailableCallbacksValidated(mWiFiNetworkAgent); mTestPackageDefaultNetworkCallback.expectAvailableCallbacksValidated(mWiFiNetworkAgent);
assertEquals(mWiFiNetworkAgent.getNetwork(), mCm.getActiveNetworkForUid(TEST_PACKAGE_UID)); assertEquals(mWiFiNetworkAgent.getNetwork(), mCm.getActiveNetworkForUid(TEST_PACKAGE_UID));
inorder.verify(mMockNetd, times(1)).networkAddUidRanges(wifiNetId, uidRanges); inorder.verify(mMockNetd, times(1)).networkAddUidRangesParcel(wifiConfig);
inorder.verify(mMockNetd, never()).networkRemoveUidRanges(anyInt(), any()); inorder.verify(mMockNetd, never()).networkRemoveUidRangesParcel(any());
inorder.verify(mMockNetd).networkDestroy(cellNetId); inorder.verify(mMockNetd).networkDestroy(cellNetId);
// Cellular network comes back. mTestPackageDefaultNetworkCallback should receive // Cellular network comes back. mTestPackageDefaultNetworkCallback should receive
@@ -13488,10 +13512,12 @@ public class ConnectivityServiceTest {
assertEquals(mCellNetworkAgent.getNetwork(), mCm.getActiveNetworkForUid(TEST_PACKAGE_UID)); assertEquals(mCellNetworkAgent.getNetwork(), mCm.getActiveNetworkForUid(TEST_PACKAGE_UID));
final int cellNetId2 = mCellNetworkAgent.getNetwork().netId; final int cellNetId2 = mCellNetworkAgent.getNetwork().netId;
final NativeUidRangeConfig cellConfig2 = new NativeUidRangeConfig(cellNetId2, uidRanges,
DEFAULT_NETWORK_PRIORITY_MOBILE_DATA_PREFERRED);
inorder.verify(mMockNetd, times(1)).networkCreate(nativeNetworkConfigPhysical( inorder.verify(mMockNetd, times(1)).networkCreate(nativeNetworkConfigPhysical(
cellNetId2, INetd.PERMISSION_NONE)); cellNetId2, INetd.PERMISSION_NONE));
inorder.verify(mMockNetd, times(1)).networkAddUidRanges(cellNetId2, uidRanges); inorder.verify(mMockNetd, times(1)).networkAddUidRangesParcel(cellConfig2);
inorder.verify(mMockNetd, times(1)).networkRemoveUidRanges(wifiNetId, uidRanges); inorder.verify(mMockNetd, times(1)).networkRemoveUidRangesParcel(wifiConfig);
// Wifi network disconnected. mTestPackageDefaultNetworkCallback should not receive // Wifi network disconnected. mTestPackageDefaultNetworkCallback should not receive
// any callback. // any callback.
@@ -13501,8 +13527,8 @@ public class ConnectivityServiceTest {
mTestPackageDefaultNetworkCallback.assertNoCallback(); mTestPackageDefaultNetworkCallback.assertNoCallback();
assertEquals(mCellNetworkAgent.getNetwork(), mCm.getActiveNetworkForUid(TEST_PACKAGE_UID)); assertEquals(mCellNetworkAgent.getNetwork(), mCm.getActiveNetworkForUid(TEST_PACKAGE_UID));
waitForIdle(); waitForIdle();
inorder.verify(mMockNetd, never()).networkAddUidRanges(anyInt(), any()); inorder.verify(mMockNetd, never()).networkAddUidRangesParcel(any());
inorder.verify(mMockNetd, never()).networkRemoveUidRanges(anyInt(), any()); inorder.verify(mMockNetd, never()).networkRemoveUidRangesParcel(any());
inorder.verify(mMockNetd).networkDestroy(wifiNetId); inorder.verify(mMockNetd).networkDestroy(wifiNetId);
mCm.unregisterNetworkCallback(cellNetworkCallback); mCm.unregisterNetworkCallback(cellNetworkCallback);