Loading api/system-current.txt +2 −2 Original line number Diff line number Diff line Loading @@ -4658,11 +4658,11 @@ package android.net { } public final class NetworkCapabilities implements android.os.Parcelable { method @NonNull public java.util.List<java.lang.Integer> getAdministratorUids(); method @NonNull public int[] getAdministratorUids(); method @Nullable public String getSSID(); method @NonNull public int[] getTransportTypes(); method public boolean satisfiedByNetworkCapabilities(@Nullable android.net.NetworkCapabilities); method @NonNull public android.net.NetworkCapabilities setAdministratorUids(@NonNull java.util.List<java.lang.Integer>); method @NonNull public android.net.NetworkCapabilities setAdministratorUids(@NonNull int[]); method @NonNull public android.net.NetworkCapabilities setRequestorPackageName(@NonNull String); method @NonNull public android.net.NetworkCapabilities setRequestorUid(int); method @NonNull public android.net.NetworkCapabilities setSSID(@Nullable String); Loading core/java/android/net/NetworkCapabilities.java +14 −18 Original line number Diff line number Diff line Loading @@ -37,9 +37,7 @@ import com.android.internal.util.Preconditions; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Arrays; import java.util.Objects; import java.util.Set; import java.util.StringJoiner; Loading Loading @@ -96,7 +94,7 @@ public final class NetworkCapabilities implements Parcelable { mTransportInfo = null; mSignalStrength = SIGNAL_STRENGTH_UNSPECIFIED; mUids = null; mAdministratorUids.clear(); mAdministratorUids = new int[0]; mOwnerUid = Process.INVALID_UID; mSSID = null; mPrivateDnsBroken = false; Loading Loading @@ -884,10 +882,10 @@ public final class NetworkCapabilities implements Parcelable { * empty unless the destination is 1) the System Server, or 2) Telephony. In either case, the * receiving entity must have the ACCESS_FINE_LOCATION permission and target R+. */ private final List<Integer> mAdministratorUids = new ArrayList<>(); private int[] mAdministratorUids = new int[0]; /** * Sets the list of UIDs that are administrators of this network. * Sets the int[] of UIDs that are administrators of this network. * * <p>UIDs included in administratorUids gain administrator privileges over this Network. * Examples of UIDs that should be included in administratorUids are: Loading @@ -907,23 +905,21 @@ public final class NetworkCapabilities implements Parcelable { */ @NonNull @SystemApi public NetworkCapabilities setAdministratorUids( @NonNull final List<Integer> administratorUids) { mAdministratorUids.clear(); mAdministratorUids.addAll(administratorUids); public NetworkCapabilities setAdministratorUids(@NonNull final int[] administratorUids) { mAdministratorUids = Arrays.copyOf(administratorUids, administratorUids.length); return this; } /** * Retrieves the list of UIDs that are administrators of this Network. * Retrieves the UIDs that are administrators of this Network. * * @return the List of UIDs that are administrators of this Network * @return the int[] of UIDs that are administrators of this Network * @hide */ @NonNull @SystemApi public List<Integer> getAdministratorUids() { return Collections.unmodifiableList(mAdministratorUids); public int[] getAdministratorUids() { return Arrays.copyOf(mAdministratorUids, mAdministratorUids.length); } /** Loading Loading @@ -1584,7 +1580,7 @@ public final class NetworkCapabilities implements Parcelable { dest.writeArraySet(mUids); dest.writeString(mSSID); dest.writeBoolean(mPrivateDnsBroken); dest.writeList(mAdministratorUids); dest.writeIntArray(mAdministratorUids); dest.writeInt(mOwnerUid); dest.writeInt(mRequestorUid); dest.writeString(mRequestorPackageName); Loading @@ -1608,7 +1604,7 @@ public final class NetworkCapabilities implements Parcelable { null /* ClassLoader, null for default */); netCap.mSSID = in.readString(); netCap.mPrivateDnsBroken = in.readBoolean(); netCap.setAdministratorUids(in.readArrayList(null)); netCap.setAdministratorUids(in.createIntArray()); netCap.mOwnerUid = in.readInt(); netCap.mRequestorUid = in.readInt(); netCap.mRequestorPackageName = in.readString(); Loading Loading @@ -1665,8 +1661,8 @@ public final class NetworkCapabilities implements Parcelable { sb.append(" OwnerUid: ").append(mOwnerUid); } if (!mAdministratorUids.isEmpty()) { sb.append(" AdministratorUids: ").append(mAdministratorUids); if (mAdministratorUids.length == 0) { sb.append(" AdministratorUids: ").append(Arrays.toString(mAdministratorUids)); } if (null != mSSID) { Loading services/core/java/com/android/server/ConnectivityService.java +6 −5 Original line number Diff line number Diff line Loading @@ -1671,7 +1671,7 @@ public class ConnectivityService extends IConnectivityManager.Stub if (newNc.getNetworkSpecifier() != null) { newNc.setNetworkSpecifier(newNc.getNetworkSpecifier().redact()); } newNc.setAdministratorUids(Collections.EMPTY_LIST); newNc.setAdministratorUids(new int[0]); return newNc; } Loading Loading @@ -1732,7 +1732,7 @@ public class ConnectivityService extends IConnectivityManager.Stub nc.setSingleUid(callerUid); } nc.setRequestorUidAndPackageName(callerUid, callerPackageName); nc.setAdministratorUids(Collections.EMPTY_LIST); nc.setAdministratorUids(new int[0]); // Clear owner UID; this can never come from an app. nc.setOwnerUid(INVALID_UID); Loading Loading @@ -7902,7 +7902,7 @@ public class ConnectivityService extends IConnectivityManager.Stub private void clearNetworkCapabilitiesUids(@NonNull NetworkCapabilities nc) { nc.setUids(null); nc.setAdministratorUids(Collections.EMPTY_LIST); nc.setAdministratorUids(new int[0]); nc.setOwnerUid(Process.INVALID_UID); } Loading Loading @@ -7952,8 +7952,9 @@ public class ConnectivityService extends IConnectivityManager.Stub } // Administrator UIDs also contains the Owner UID if (nai.networkCapabilities.getAdministratorUids().contains(callbackUid)) { return true; final int[] administratorUids = nai.networkCapabilities.getAdministratorUids(); for (final int uid : administratorUids) { if (uid == callbackUid) return true; } return false; Loading services/core/java/com/android/server/TestNetworkService.java +1 −10 Original line number Diff line number Diff line Loading @@ -56,7 +56,6 @@ import java.net.InterfaceAddress; import java.net.NetworkInterface; import java.net.SocketException; import java.util.ArrayList; import java.util.List; import java.util.Objects; import java.util.concurrent.atomic.AtomicInteger; Loading Loading @@ -251,7 +250,7 @@ class TestNetworkService extends ITestNetworkManager.Stub { nc.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_SUSPENDED); nc.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED); nc.setNetworkSpecifier(new StringNetworkSpecifier(iface)); nc.setAdministratorUids(intArrayToList(administratorUids)); nc.setAdministratorUids(administratorUids); if (!isMetered) { nc.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED); } Loading Loading @@ -294,14 +293,6 @@ class TestNetworkService extends ITestNetworkManager.Stub { return new TestNetworkAgent(looper, context, ni, nc, lp, callingUid, binder); } private List<Integer> intArrayToList(@NonNull int[] array) { final List<Integer> list = new ArrayList<>(array.length); for (final int i : array) { list.add(i); } return list; } /** * Sets up a Network with extremely limited privileges, guarded by the MANAGE_TEST_NETWORKS * permission. Loading tests/net/java/com/android/server/ConnectivityServiceTest.java +4 −4 Original line number Diff line number Diff line Loading @@ -6870,7 +6870,7 @@ public class ConnectivityServiceTest { @Test public void testCheckConnectivityDiagnosticsPermissionsNetworkAdministrator() throws Exception { final NetworkCapabilities nc = new NetworkCapabilities(); nc.setAdministratorUids(Arrays.asList(Process.myUid())); nc.setAdministratorUids(new int[] {Process.myUid()}); final NetworkAgentInfo naiWithUid = new NetworkAgentInfo( null, null, null, null, null, nc, 0, mServiceContext, null, null, Loading @@ -6892,7 +6892,7 @@ public class ConnectivityServiceTest { public void testCheckConnectivityDiagnosticsPermissionsFails() throws Exception { final NetworkCapabilities nc = new NetworkCapabilities(); nc.setOwnerUid(Process.myUid()); nc.setAdministratorUids(Arrays.asList(Process.myUid())); nc.setAdministratorUids(new int[] {Process.myUid()}); final NetworkAgentInfo naiWithUid = new NetworkAgentInfo( null, null, null, null, null, nc, 0, mServiceContext, null, null, Loading Loading @@ -6945,7 +6945,7 @@ public class ConnectivityServiceTest { argThat(report -> { final NetworkCapabilities nc = report.getNetworkCapabilities(); return nc.getUids() == null && nc.getAdministratorUids().isEmpty() && nc.getAdministratorUids().length == 0 && nc.getOwnerUid() == Process.INVALID_UID; })); } Loading @@ -6966,7 +6966,7 @@ public class ConnectivityServiceTest { argThat(report -> { final NetworkCapabilities nc = report.getNetworkCapabilities(); return nc.getUids() == null && nc.getAdministratorUids().isEmpty() && nc.getAdministratorUids().length == 0 && nc.getOwnerUid() == Process.INVALID_UID; })); } Loading Loading
api/system-current.txt +2 −2 Original line number Diff line number Diff line Loading @@ -4658,11 +4658,11 @@ package android.net { } public final class NetworkCapabilities implements android.os.Parcelable { method @NonNull public java.util.List<java.lang.Integer> getAdministratorUids(); method @NonNull public int[] getAdministratorUids(); method @Nullable public String getSSID(); method @NonNull public int[] getTransportTypes(); method public boolean satisfiedByNetworkCapabilities(@Nullable android.net.NetworkCapabilities); method @NonNull public android.net.NetworkCapabilities setAdministratorUids(@NonNull java.util.List<java.lang.Integer>); method @NonNull public android.net.NetworkCapabilities setAdministratorUids(@NonNull int[]); method @NonNull public android.net.NetworkCapabilities setRequestorPackageName(@NonNull String); method @NonNull public android.net.NetworkCapabilities setRequestorUid(int); method @NonNull public android.net.NetworkCapabilities setSSID(@Nullable String); Loading
core/java/android/net/NetworkCapabilities.java +14 −18 Original line number Diff line number Diff line Loading @@ -37,9 +37,7 @@ import com.android.internal.util.Preconditions; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Arrays; import java.util.Objects; import java.util.Set; import java.util.StringJoiner; Loading Loading @@ -96,7 +94,7 @@ public final class NetworkCapabilities implements Parcelable { mTransportInfo = null; mSignalStrength = SIGNAL_STRENGTH_UNSPECIFIED; mUids = null; mAdministratorUids.clear(); mAdministratorUids = new int[0]; mOwnerUid = Process.INVALID_UID; mSSID = null; mPrivateDnsBroken = false; Loading Loading @@ -884,10 +882,10 @@ public final class NetworkCapabilities implements Parcelable { * empty unless the destination is 1) the System Server, or 2) Telephony. In either case, the * receiving entity must have the ACCESS_FINE_LOCATION permission and target R+. */ private final List<Integer> mAdministratorUids = new ArrayList<>(); private int[] mAdministratorUids = new int[0]; /** * Sets the list of UIDs that are administrators of this network. * Sets the int[] of UIDs that are administrators of this network. * * <p>UIDs included in administratorUids gain administrator privileges over this Network. * Examples of UIDs that should be included in administratorUids are: Loading @@ -907,23 +905,21 @@ public final class NetworkCapabilities implements Parcelable { */ @NonNull @SystemApi public NetworkCapabilities setAdministratorUids( @NonNull final List<Integer> administratorUids) { mAdministratorUids.clear(); mAdministratorUids.addAll(administratorUids); public NetworkCapabilities setAdministratorUids(@NonNull final int[] administratorUids) { mAdministratorUids = Arrays.copyOf(administratorUids, administratorUids.length); return this; } /** * Retrieves the list of UIDs that are administrators of this Network. * Retrieves the UIDs that are administrators of this Network. * * @return the List of UIDs that are administrators of this Network * @return the int[] of UIDs that are administrators of this Network * @hide */ @NonNull @SystemApi public List<Integer> getAdministratorUids() { return Collections.unmodifiableList(mAdministratorUids); public int[] getAdministratorUids() { return Arrays.copyOf(mAdministratorUids, mAdministratorUids.length); } /** Loading Loading @@ -1584,7 +1580,7 @@ public final class NetworkCapabilities implements Parcelable { dest.writeArraySet(mUids); dest.writeString(mSSID); dest.writeBoolean(mPrivateDnsBroken); dest.writeList(mAdministratorUids); dest.writeIntArray(mAdministratorUids); dest.writeInt(mOwnerUid); dest.writeInt(mRequestorUid); dest.writeString(mRequestorPackageName); Loading @@ -1608,7 +1604,7 @@ public final class NetworkCapabilities implements Parcelable { null /* ClassLoader, null for default */); netCap.mSSID = in.readString(); netCap.mPrivateDnsBroken = in.readBoolean(); netCap.setAdministratorUids(in.readArrayList(null)); netCap.setAdministratorUids(in.createIntArray()); netCap.mOwnerUid = in.readInt(); netCap.mRequestorUid = in.readInt(); netCap.mRequestorPackageName = in.readString(); Loading Loading @@ -1665,8 +1661,8 @@ public final class NetworkCapabilities implements Parcelable { sb.append(" OwnerUid: ").append(mOwnerUid); } if (!mAdministratorUids.isEmpty()) { sb.append(" AdministratorUids: ").append(mAdministratorUids); if (mAdministratorUids.length == 0) { sb.append(" AdministratorUids: ").append(Arrays.toString(mAdministratorUids)); } if (null != mSSID) { Loading
services/core/java/com/android/server/ConnectivityService.java +6 −5 Original line number Diff line number Diff line Loading @@ -1671,7 +1671,7 @@ public class ConnectivityService extends IConnectivityManager.Stub if (newNc.getNetworkSpecifier() != null) { newNc.setNetworkSpecifier(newNc.getNetworkSpecifier().redact()); } newNc.setAdministratorUids(Collections.EMPTY_LIST); newNc.setAdministratorUids(new int[0]); return newNc; } Loading Loading @@ -1732,7 +1732,7 @@ public class ConnectivityService extends IConnectivityManager.Stub nc.setSingleUid(callerUid); } nc.setRequestorUidAndPackageName(callerUid, callerPackageName); nc.setAdministratorUids(Collections.EMPTY_LIST); nc.setAdministratorUids(new int[0]); // Clear owner UID; this can never come from an app. nc.setOwnerUid(INVALID_UID); Loading Loading @@ -7902,7 +7902,7 @@ public class ConnectivityService extends IConnectivityManager.Stub private void clearNetworkCapabilitiesUids(@NonNull NetworkCapabilities nc) { nc.setUids(null); nc.setAdministratorUids(Collections.EMPTY_LIST); nc.setAdministratorUids(new int[0]); nc.setOwnerUid(Process.INVALID_UID); } Loading Loading @@ -7952,8 +7952,9 @@ public class ConnectivityService extends IConnectivityManager.Stub } // Administrator UIDs also contains the Owner UID if (nai.networkCapabilities.getAdministratorUids().contains(callbackUid)) { return true; final int[] administratorUids = nai.networkCapabilities.getAdministratorUids(); for (final int uid : administratorUids) { if (uid == callbackUid) return true; } return false; Loading
services/core/java/com/android/server/TestNetworkService.java +1 −10 Original line number Diff line number Diff line Loading @@ -56,7 +56,6 @@ import java.net.InterfaceAddress; import java.net.NetworkInterface; import java.net.SocketException; import java.util.ArrayList; import java.util.List; import java.util.Objects; import java.util.concurrent.atomic.AtomicInteger; Loading Loading @@ -251,7 +250,7 @@ class TestNetworkService extends ITestNetworkManager.Stub { nc.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_SUSPENDED); nc.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED); nc.setNetworkSpecifier(new StringNetworkSpecifier(iface)); nc.setAdministratorUids(intArrayToList(administratorUids)); nc.setAdministratorUids(administratorUids); if (!isMetered) { nc.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED); } Loading Loading @@ -294,14 +293,6 @@ class TestNetworkService extends ITestNetworkManager.Stub { return new TestNetworkAgent(looper, context, ni, nc, lp, callingUid, binder); } private List<Integer> intArrayToList(@NonNull int[] array) { final List<Integer> list = new ArrayList<>(array.length); for (final int i : array) { list.add(i); } return list; } /** * Sets up a Network with extremely limited privileges, guarded by the MANAGE_TEST_NETWORKS * permission. Loading
tests/net/java/com/android/server/ConnectivityServiceTest.java +4 −4 Original line number Diff line number Diff line Loading @@ -6870,7 +6870,7 @@ public class ConnectivityServiceTest { @Test public void testCheckConnectivityDiagnosticsPermissionsNetworkAdministrator() throws Exception { final NetworkCapabilities nc = new NetworkCapabilities(); nc.setAdministratorUids(Arrays.asList(Process.myUid())); nc.setAdministratorUids(new int[] {Process.myUid()}); final NetworkAgentInfo naiWithUid = new NetworkAgentInfo( null, null, null, null, null, nc, 0, mServiceContext, null, null, Loading @@ -6892,7 +6892,7 @@ public class ConnectivityServiceTest { public void testCheckConnectivityDiagnosticsPermissionsFails() throws Exception { final NetworkCapabilities nc = new NetworkCapabilities(); nc.setOwnerUid(Process.myUid()); nc.setAdministratorUids(Arrays.asList(Process.myUid())); nc.setAdministratorUids(new int[] {Process.myUid()}); final NetworkAgentInfo naiWithUid = new NetworkAgentInfo( null, null, null, null, null, nc, 0, mServiceContext, null, null, Loading Loading @@ -6945,7 +6945,7 @@ public class ConnectivityServiceTest { argThat(report -> { final NetworkCapabilities nc = report.getNetworkCapabilities(); return nc.getUids() == null && nc.getAdministratorUids().isEmpty() && nc.getAdministratorUids().length == 0 && nc.getOwnerUid() == Process.INVALID_UID; })); } Loading @@ -6966,7 +6966,7 @@ public class ConnectivityServiceTest { argThat(report -> { final NetworkCapabilities nc = report.getNetworkCapabilities(); return nc.getUids() == null && nc.getAdministratorUids().isEmpty() && nc.getAdministratorUids().length == 0 && nc.getOwnerUid() == Process.INVALID_UID; })); } Loading