Loading api/current.txt +1 −1 Original line number Diff line number Diff line Loading @@ -29160,7 +29160,7 @@ package android.net { method @NonNull public android.net.NetworkCapabilities setLinkDownstreamBandwidthKbps(int); method @NonNull public android.net.NetworkCapabilities setLinkUpstreamBandwidthKbps(int); method @NonNull public android.net.NetworkCapabilities setNetworkSpecifier(@NonNull android.net.NetworkSpecifier); method public void setOwnerUid(int); method @NonNull public android.net.NetworkCapabilities setOwnerUid(int); method @NonNull public android.net.NetworkCapabilities setSignalStrength(int); method public void writeToParcel(android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator<android.net.NetworkCapabilities> CREATOR; api/system-current.txt +5 −2 Original line number Diff line number Diff line Loading @@ -4649,7 +4649,9 @@ package android.net { method @Nullable public String getSSID(); method @NonNull public int[] getTransportTypes(); method public boolean satisfiedByNetworkCapabilities(@Nullable android.net.NetworkCapabilities); method public void setAdministratorUids(@NonNull java.util.List<java.lang.Integer>); method @NonNull public android.net.NetworkCapabilities setAdministratorUids(@NonNull java.util.List<java.lang.Integer>); 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); method @NonNull public android.net.NetworkCapabilities setTransportInfo(@NonNull android.net.TransportInfo); field public static final int NET_CAPABILITY_OEM_PAID = 22; // 0x16 Loading Loading @@ -4701,6 +4703,8 @@ package android.net { } public class NetworkRequest implements android.os.Parcelable { method @Nullable public String getRequestorPackageName(); method public int getRequestorUid(); method public boolean satisfiedBy(@Nullable android.net.NetworkCapabilities); } Loading Loading @@ -4735,7 +4739,6 @@ package android.net { } public abstract class NetworkSpecifier { method public void assertValidFromUid(int); method @Nullable public android.net.NetworkSpecifier redact(); method public abstract boolean satisfiedBy(@Nullable android.net.NetworkSpecifier); } Loading core/java/android/net/ConnectivityManager.java +10 −4 Original line number Diff line number Diff line Loading @@ -3746,6 +3746,7 @@ public class ConnectivityManager { checkCallbackNotNull(callback); Preconditions.checkArgument(action == REQUEST || need != null, "null NetworkCapabilities"); final NetworkRequest request; final String callingPackageName = mContext.getOpPackageName(); try { synchronized(sCallbacks) { if (callback.networkRequest != null Loading @@ -3757,10 +3758,11 @@ public class ConnectivityManager { Messenger messenger = new Messenger(handler); Binder binder = new Binder(); if (action == LISTEN) { request = mService.listenForNetwork(need, messenger, binder); request = mService.listenForNetwork( need, messenger, binder, callingPackageName); } else { request = mService.requestNetwork( need, messenger, timeoutMs, binder, legacyType); need, messenger, timeoutMs, binder, legacyType, callingPackageName); } if (request != null) { sCallbacks.put(request, callback); Loading Loading @@ -4033,8 +4035,10 @@ public class ConnectivityManager { @NonNull PendingIntent operation) { printStackTrace(); checkPendingIntentNotNull(operation); final String callingPackageName = mContext.getOpPackageName(); try { mService.pendingRequestForNetwork(request.networkCapabilities, operation); mService.pendingRequestForNetwork( request.networkCapabilities, operation, callingPackageName); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } catch (ServiceSpecificException e) { Loading Loading @@ -4146,8 +4150,10 @@ public class ConnectivityManager { @NonNull PendingIntent operation) { printStackTrace(); checkPendingIntentNotNull(operation); final String callingPackageName = mContext.getOpPackageName(); try { mService.pendingListenForNetwork(request.networkCapabilities, operation); mService.pendingListenForNetwork( request.networkCapabilities, operation, callingPackageName); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } catch (ServiceSpecificException e) { Loading core/java/android/net/IConnectivityManager.aidl +5 −4 Original line number Diff line number Diff line Loading @@ -166,18 +166,19 @@ interface IConnectivityManager in int factorySerialNumber); NetworkRequest requestNetwork(in NetworkCapabilities networkCapabilities, in Messenger messenger, int timeoutSec, in IBinder binder, int legacy); in Messenger messenger, int timeoutSec, in IBinder binder, int legacy, String callingPackageName); NetworkRequest pendingRequestForNetwork(in NetworkCapabilities networkCapabilities, in PendingIntent operation); in PendingIntent operation, String callingPackageName); void releasePendingNetworkRequest(in PendingIntent operation); NetworkRequest listenForNetwork(in NetworkCapabilities networkCapabilities, in Messenger messenger, in IBinder binder); in Messenger messenger, in IBinder binder, String callingPackageName); void pendingListenForNetwork(in NetworkCapabilities networkCapabilities, in PendingIntent operation); in PendingIntent operation, String callingPackageName); void releaseNetworkRequest(in NetworkRequest networkRequest); Loading core/java/android/net/NetworkCapabilities.java +154 −7 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import android.os.Build; import android.os.Parcel; import android.os.Parcelable; import android.os.Process; import android.text.TextUtils; import android.util.ArraySet; import android.util.proto.ProtoOutputStream; Loading Loading @@ -63,6 +64,16 @@ public final class NetworkCapabilities implements Parcelable { // Set to true when private DNS is broken. private boolean mPrivateDnsBroken; /** * Uid of the app making the request. */ private int mRequestorUid; /** * Package name of the app making the request. */ private String mRequestorPackageName; public NetworkCapabilities() { clearAll(); mNetworkCapabilities = DEFAULT_CAPABILITIES; Loading @@ -89,6 +100,8 @@ public final class NetworkCapabilities implements Parcelable { mOwnerUid = Process.INVALID_UID; mSSID = null; mPrivateDnsBroken = false; mRequestorUid = Process.INVALID_UID; mRequestorPackageName = null; } /** Loading @@ -109,6 +122,8 @@ public final class NetworkCapabilities implements Parcelable { mUnwantedNetworkCapabilities = nc.mUnwantedNetworkCapabilities; mSSID = nc.mSSID; mPrivateDnsBroken = nc.mPrivateDnsBroken; mRequestorUid = nc.mRequestorUid; mRequestorPackageName = nc.mRequestorPackageName; } /** Loading Loading @@ -810,7 +825,7 @@ public final class NetworkCapabilities implements Parcelable { } /** * UID of the app that owns this network, or INVALID_UID if none/unknown. * UID of the app that owns this network, or Process#INVALID_UID if none/unknown. * * <p>This field keeps track of the UID of the app that created this network and is in charge of * its lifecycle. This could be the UID of apps such as the Wifi network suggestor, the running Loading @@ -821,8 +836,9 @@ public final class NetworkCapabilities implements Parcelable { /** * Set the UID of the owner app. */ public void setOwnerUid(final int uid) { public @NonNull NetworkCapabilities setOwnerUid(final int uid) { mOwnerUid = uid; return this; } /** Loading Loading @@ -865,9 +881,11 @@ public final class NetworkCapabilities implements Parcelable { * @hide */ @SystemApi public void setAdministratorUids(@NonNull final List<Integer> administratorUids) { public @NonNull NetworkCapabilities setAdministratorUids( @NonNull final List<Integer> administratorUids) { mAdministratorUids.clear(); mAdministratorUids.addAll(administratorUids); return this; } /** Loading Loading @@ -1385,6 +1403,7 @@ public final class NetworkCapabilities implements Parcelable { combineSignalStrength(nc); combineUids(nc); combineSSIDs(nc); combineRequestor(nc); } /** Loading @@ -1404,7 +1423,8 @@ public final class NetworkCapabilities implements Parcelable { && satisfiedBySpecifier(nc) && (onlyImmutable || satisfiedBySignalStrength(nc)) && (onlyImmutable || satisfiedByUids(nc)) && (onlyImmutable || satisfiedBySSID(nc))); && (onlyImmutable || satisfiedBySSID(nc))) && (onlyImmutable || satisfiedByRequestor(nc)); } /** Loading Loading @@ -1488,7 +1508,7 @@ public final class NetworkCapabilities implements Parcelable { public boolean equals(@Nullable Object obj) { if (obj == null || (obj instanceof NetworkCapabilities == false)) return false; NetworkCapabilities that = (NetworkCapabilities) obj; return (equalsNetCapabilities(that) return equalsNetCapabilities(that) && equalsTransportTypes(that) && equalsLinkBandwidths(that) && equalsSignalStrength(that) Loading @@ -1496,7 +1516,8 @@ public final class NetworkCapabilities implements Parcelable { && equalsTransportInfo(that) && equalsUids(that) && equalsSSID(that) && equalsPrivateDnsBroken(that)); && equalsPrivateDnsBroken(that) && equalsRequestor(that); } @Override Loading @@ -1514,7 +1535,9 @@ public final class NetworkCapabilities implements Parcelable { + Objects.hashCode(mUids) * 31 + Objects.hashCode(mSSID) * 37 + Objects.hashCode(mTransportInfo) * 41 + Objects.hashCode(mPrivateDnsBroken) * 43; + Objects.hashCode(mPrivateDnsBroken) * 43 + Objects.hashCode(mRequestorUid) * 47 + Objects.hashCode(mRequestorPackageName) * 53; } @Override Loading @@ -1537,6 +1560,8 @@ public final class NetworkCapabilities implements Parcelable { dest.writeBoolean(mPrivateDnsBroken); dest.writeList(mAdministratorUids); dest.writeInt(mOwnerUid); dest.writeInt(mRequestorUid); dest.writeString(mRequestorPackageName); } public static final @android.annotation.NonNull Creator<NetworkCapabilities> CREATOR = Loading @@ -1559,6 +1584,8 @@ public final class NetworkCapabilities implements Parcelable { netCap.mPrivateDnsBroken = in.readBoolean(); netCap.setAdministratorUids(in.readArrayList(null)); netCap.mOwnerUid = in.readInt(); netCap.mRequestorUid = in.readInt(); netCap.mRequestorPackageName = in.readString(); return netCap; } @Override Loading Loading @@ -1624,6 +1651,9 @@ public final class NetworkCapabilities implements Parcelable { sb.append(" Private DNS is broken"); } sb.append(" RequestorUid: ").append(mRequestorUid); sb.append(" RequestorPackageName: ").append(mRequestorPackageName); sb.append("]"); return sb.toString(); } Loading @@ -1632,6 +1662,7 @@ public final class NetworkCapabilities implements Parcelable { private interface NameOf { String nameOf(int value); } /** * @hide */ Loading Loading @@ -1799,4 +1830,120 @@ public final class NetworkCapabilities implements Parcelable { private boolean equalsPrivateDnsBroken(NetworkCapabilities nc) { return mPrivateDnsBroken == nc.mPrivateDnsBroken; } /** * Set the uid of the app making the request. * * Note: This works only for {@link NetworkAgent} instances. Any capabilities passed in * via the public {@link ConnectivityManager} API's will have this field overwritten. * * @param uid UID of the app. * @hide */ @SystemApi public @NonNull NetworkCapabilities setRequestorUid(int uid) { mRequestorUid = uid; return this; } /** * @return the uid of the app making the request. * * Note: This could return {@link Process#INVALID_UID} if the {@link NetworkRequest} * object was not obtained from {@link ConnectivityManager}. * @hide */ public int getRequestorUid() { return mRequestorUid; } /** * Set the package name of the app making the request. * * Note: This works only for {@link NetworkAgent} instances. Any capabilities passed in * via the public {@link ConnectivityManager} API's will have this field overwritten. * * @param packageName package name of the app. * @hide */ @SystemApi public @NonNull NetworkCapabilities setRequestorPackageName(@NonNull String packageName) { mRequestorPackageName = packageName; return this; } /** * @return the package name of the app making the request. * * Note: This could return {@code null} if the {@link NetworkRequest} object was not obtained * from {@link ConnectivityManager}. * @hide */ @Nullable public String getRequestorPackageName() { return mRequestorPackageName; } /** * Set the uid and package name of the app making the request. * * Note: This is intended to be only invoked from within connectivitiy service. * * @param uid UID of the app. * @param packageName package name of the app. * @hide */ public @NonNull NetworkCapabilities setRequestorUidAndPackageName( int uid, @NonNull String packageName) { return setRequestorUid(uid).setRequestorPackageName(packageName); } /** * Test whether the passed NetworkCapabilities satisfies the requestor restrictions of this * capabilities. * * This method is called on the NetworkCapabilities embedded in a request with the * capabilities of an available network. If the available network, sets a specific * requestor (by uid and optionally package name), then this will only match a request from the * same app. If either of the capabilities have an unset uid or package name, then it matches * everything. * <p> * nc is assumed nonnull. Else, NPE. */ private boolean satisfiedByRequestor(NetworkCapabilities nc) { // No uid set, matches everything. if (mRequestorUid == Process.INVALID_UID || nc.mRequestorUid == Process.INVALID_UID) { return true; } // uids don't match. if (mRequestorUid != nc.mRequestorUid) return false; // No package names set, matches everything if (null == nc.mRequestorPackageName || null == mRequestorPackageName) return true; // check for package name match. return TextUtils.equals(mRequestorPackageName, nc.mRequestorPackageName); } /** * Combine requestor info of the capabilities. * <p> * This is only legal if either the requestor info of this object is reset, or both info are * equal. * nc is assumed nonnull. */ private void combineRequestor(@NonNull NetworkCapabilities nc) { if (mRequestorUid != Process.INVALID_UID && mRequestorUid != nc.mOwnerUid) { throw new IllegalStateException("Can't combine two uids"); } if (mRequestorPackageName != null && !mRequestorPackageName.equals(nc.mRequestorPackageName)) { throw new IllegalStateException("Can't combine two package names"); } setRequestorUid(nc.mRequestorUid); setRequestorPackageName(nc.mRequestorPackageName); } private boolean equalsRequestor(NetworkCapabilities nc) { return mRequestorUid == nc.mRequestorUid && TextUtils.equals(mRequestorPackageName, nc.mRequestorPackageName); } } Loading
api/current.txt +1 −1 Original line number Diff line number Diff line Loading @@ -29160,7 +29160,7 @@ package android.net { method @NonNull public android.net.NetworkCapabilities setLinkDownstreamBandwidthKbps(int); method @NonNull public android.net.NetworkCapabilities setLinkUpstreamBandwidthKbps(int); method @NonNull public android.net.NetworkCapabilities setNetworkSpecifier(@NonNull android.net.NetworkSpecifier); method public void setOwnerUid(int); method @NonNull public android.net.NetworkCapabilities setOwnerUid(int); method @NonNull public android.net.NetworkCapabilities setSignalStrength(int); method public void writeToParcel(android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator<android.net.NetworkCapabilities> CREATOR;
api/system-current.txt +5 −2 Original line number Diff line number Diff line Loading @@ -4649,7 +4649,9 @@ package android.net { method @Nullable public String getSSID(); method @NonNull public int[] getTransportTypes(); method public boolean satisfiedByNetworkCapabilities(@Nullable android.net.NetworkCapabilities); method public void setAdministratorUids(@NonNull java.util.List<java.lang.Integer>); method @NonNull public android.net.NetworkCapabilities setAdministratorUids(@NonNull java.util.List<java.lang.Integer>); 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); method @NonNull public android.net.NetworkCapabilities setTransportInfo(@NonNull android.net.TransportInfo); field public static final int NET_CAPABILITY_OEM_PAID = 22; // 0x16 Loading Loading @@ -4701,6 +4703,8 @@ package android.net { } public class NetworkRequest implements android.os.Parcelable { method @Nullable public String getRequestorPackageName(); method public int getRequestorUid(); method public boolean satisfiedBy(@Nullable android.net.NetworkCapabilities); } Loading Loading @@ -4735,7 +4739,6 @@ package android.net { } public abstract class NetworkSpecifier { method public void assertValidFromUid(int); method @Nullable public android.net.NetworkSpecifier redact(); method public abstract boolean satisfiedBy(@Nullable android.net.NetworkSpecifier); } Loading
core/java/android/net/ConnectivityManager.java +10 −4 Original line number Diff line number Diff line Loading @@ -3746,6 +3746,7 @@ public class ConnectivityManager { checkCallbackNotNull(callback); Preconditions.checkArgument(action == REQUEST || need != null, "null NetworkCapabilities"); final NetworkRequest request; final String callingPackageName = mContext.getOpPackageName(); try { synchronized(sCallbacks) { if (callback.networkRequest != null Loading @@ -3757,10 +3758,11 @@ public class ConnectivityManager { Messenger messenger = new Messenger(handler); Binder binder = new Binder(); if (action == LISTEN) { request = mService.listenForNetwork(need, messenger, binder); request = mService.listenForNetwork( need, messenger, binder, callingPackageName); } else { request = mService.requestNetwork( need, messenger, timeoutMs, binder, legacyType); need, messenger, timeoutMs, binder, legacyType, callingPackageName); } if (request != null) { sCallbacks.put(request, callback); Loading Loading @@ -4033,8 +4035,10 @@ public class ConnectivityManager { @NonNull PendingIntent operation) { printStackTrace(); checkPendingIntentNotNull(operation); final String callingPackageName = mContext.getOpPackageName(); try { mService.pendingRequestForNetwork(request.networkCapabilities, operation); mService.pendingRequestForNetwork( request.networkCapabilities, operation, callingPackageName); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } catch (ServiceSpecificException e) { Loading Loading @@ -4146,8 +4150,10 @@ public class ConnectivityManager { @NonNull PendingIntent operation) { printStackTrace(); checkPendingIntentNotNull(operation); final String callingPackageName = mContext.getOpPackageName(); try { mService.pendingListenForNetwork(request.networkCapabilities, operation); mService.pendingListenForNetwork( request.networkCapabilities, operation, callingPackageName); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } catch (ServiceSpecificException e) { Loading
core/java/android/net/IConnectivityManager.aidl +5 −4 Original line number Diff line number Diff line Loading @@ -166,18 +166,19 @@ interface IConnectivityManager in int factorySerialNumber); NetworkRequest requestNetwork(in NetworkCapabilities networkCapabilities, in Messenger messenger, int timeoutSec, in IBinder binder, int legacy); in Messenger messenger, int timeoutSec, in IBinder binder, int legacy, String callingPackageName); NetworkRequest pendingRequestForNetwork(in NetworkCapabilities networkCapabilities, in PendingIntent operation); in PendingIntent operation, String callingPackageName); void releasePendingNetworkRequest(in PendingIntent operation); NetworkRequest listenForNetwork(in NetworkCapabilities networkCapabilities, in Messenger messenger, in IBinder binder); in Messenger messenger, in IBinder binder, String callingPackageName); void pendingListenForNetwork(in NetworkCapabilities networkCapabilities, in PendingIntent operation); in PendingIntent operation, String callingPackageName); void releaseNetworkRequest(in NetworkRequest networkRequest); Loading
core/java/android/net/NetworkCapabilities.java +154 −7 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import android.os.Build; import android.os.Parcel; import android.os.Parcelable; import android.os.Process; import android.text.TextUtils; import android.util.ArraySet; import android.util.proto.ProtoOutputStream; Loading Loading @@ -63,6 +64,16 @@ public final class NetworkCapabilities implements Parcelable { // Set to true when private DNS is broken. private boolean mPrivateDnsBroken; /** * Uid of the app making the request. */ private int mRequestorUid; /** * Package name of the app making the request. */ private String mRequestorPackageName; public NetworkCapabilities() { clearAll(); mNetworkCapabilities = DEFAULT_CAPABILITIES; Loading @@ -89,6 +100,8 @@ public final class NetworkCapabilities implements Parcelable { mOwnerUid = Process.INVALID_UID; mSSID = null; mPrivateDnsBroken = false; mRequestorUid = Process.INVALID_UID; mRequestorPackageName = null; } /** Loading @@ -109,6 +122,8 @@ public final class NetworkCapabilities implements Parcelable { mUnwantedNetworkCapabilities = nc.mUnwantedNetworkCapabilities; mSSID = nc.mSSID; mPrivateDnsBroken = nc.mPrivateDnsBroken; mRequestorUid = nc.mRequestorUid; mRequestorPackageName = nc.mRequestorPackageName; } /** Loading Loading @@ -810,7 +825,7 @@ public final class NetworkCapabilities implements Parcelable { } /** * UID of the app that owns this network, or INVALID_UID if none/unknown. * UID of the app that owns this network, or Process#INVALID_UID if none/unknown. * * <p>This field keeps track of the UID of the app that created this network and is in charge of * its lifecycle. This could be the UID of apps such as the Wifi network suggestor, the running Loading @@ -821,8 +836,9 @@ public final class NetworkCapabilities implements Parcelable { /** * Set the UID of the owner app. */ public void setOwnerUid(final int uid) { public @NonNull NetworkCapabilities setOwnerUid(final int uid) { mOwnerUid = uid; return this; } /** Loading Loading @@ -865,9 +881,11 @@ public final class NetworkCapabilities implements Parcelable { * @hide */ @SystemApi public void setAdministratorUids(@NonNull final List<Integer> administratorUids) { public @NonNull NetworkCapabilities setAdministratorUids( @NonNull final List<Integer> administratorUids) { mAdministratorUids.clear(); mAdministratorUids.addAll(administratorUids); return this; } /** Loading Loading @@ -1385,6 +1403,7 @@ public final class NetworkCapabilities implements Parcelable { combineSignalStrength(nc); combineUids(nc); combineSSIDs(nc); combineRequestor(nc); } /** Loading @@ -1404,7 +1423,8 @@ public final class NetworkCapabilities implements Parcelable { && satisfiedBySpecifier(nc) && (onlyImmutable || satisfiedBySignalStrength(nc)) && (onlyImmutable || satisfiedByUids(nc)) && (onlyImmutable || satisfiedBySSID(nc))); && (onlyImmutable || satisfiedBySSID(nc))) && (onlyImmutable || satisfiedByRequestor(nc)); } /** Loading Loading @@ -1488,7 +1508,7 @@ public final class NetworkCapabilities implements Parcelable { public boolean equals(@Nullable Object obj) { if (obj == null || (obj instanceof NetworkCapabilities == false)) return false; NetworkCapabilities that = (NetworkCapabilities) obj; return (equalsNetCapabilities(that) return equalsNetCapabilities(that) && equalsTransportTypes(that) && equalsLinkBandwidths(that) && equalsSignalStrength(that) Loading @@ -1496,7 +1516,8 @@ public final class NetworkCapabilities implements Parcelable { && equalsTransportInfo(that) && equalsUids(that) && equalsSSID(that) && equalsPrivateDnsBroken(that)); && equalsPrivateDnsBroken(that) && equalsRequestor(that); } @Override Loading @@ -1514,7 +1535,9 @@ public final class NetworkCapabilities implements Parcelable { + Objects.hashCode(mUids) * 31 + Objects.hashCode(mSSID) * 37 + Objects.hashCode(mTransportInfo) * 41 + Objects.hashCode(mPrivateDnsBroken) * 43; + Objects.hashCode(mPrivateDnsBroken) * 43 + Objects.hashCode(mRequestorUid) * 47 + Objects.hashCode(mRequestorPackageName) * 53; } @Override Loading @@ -1537,6 +1560,8 @@ public final class NetworkCapabilities implements Parcelable { dest.writeBoolean(mPrivateDnsBroken); dest.writeList(mAdministratorUids); dest.writeInt(mOwnerUid); dest.writeInt(mRequestorUid); dest.writeString(mRequestorPackageName); } public static final @android.annotation.NonNull Creator<NetworkCapabilities> CREATOR = Loading @@ -1559,6 +1584,8 @@ public final class NetworkCapabilities implements Parcelable { netCap.mPrivateDnsBroken = in.readBoolean(); netCap.setAdministratorUids(in.readArrayList(null)); netCap.mOwnerUid = in.readInt(); netCap.mRequestorUid = in.readInt(); netCap.mRequestorPackageName = in.readString(); return netCap; } @Override Loading Loading @@ -1624,6 +1651,9 @@ public final class NetworkCapabilities implements Parcelable { sb.append(" Private DNS is broken"); } sb.append(" RequestorUid: ").append(mRequestorUid); sb.append(" RequestorPackageName: ").append(mRequestorPackageName); sb.append("]"); return sb.toString(); } Loading @@ -1632,6 +1662,7 @@ public final class NetworkCapabilities implements Parcelable { private interface NameOf { String nameOf(int value); } /** * @hide */ Loading Loading @@ -1799,4 +1830,120 @@ public final class NetworkCapabilities implements Parcelable { private boolean equalsPrivateDnsBroken(NetworkCapabilities nc) { return mPrivateDnsBroken == nc.mPrivateDnsBroken; } /** * Set the uid of the app making the request. * * Note: This works only for {@link NetworkAgent} instances. Any capabilities passed in * via the public {@link ConnectivityManager} API's will have this field overwritten. * * @param uid UID of the app. * @hide */ @SystemApi public @NonNull NetworkCapabilities setRequestorUid(int uid) { mRequestorUid = uid; return this; } /** * @return the uid of the app making the request. * * Note: This could return {@link Process#INVALID_UID} if the {@link NetworkRequest} * object was not obtained from {@link ConnectivityManager}. * @hide */ public int getRequestorUid() { return mRequestorUid; } /** * Set the package name of the app making the request. * * Note: This works only for {@link NetworkAgent} instances. Any capabilities passed in * via the public {@link ConnectivityManager} API's will have this field overwritten. * * @param packageName package name of the app. * @hide */ @SystemApi public @NonNull NetworkCapabilities setRequestorPackageName(@NonNull String packageName) { mRequestorPackageName = packageName; return this; } /** * @return the package name of the app making the request. * * Note: This could return {@code null} if the {@link NetworkRequest} object was not obtained * from {@link ConnectivityManager}. * @hide */ @Nullable public String getRequestorPackageName() { return mRequestorPackageName; } /** * Set the uid and package name of the app making the request. * * Note: This is intended to be only invoked from within connectivitiy service. * * @param uid UID of the app. * @param packageName package name of the app. * @hide */ public @NonNull NetworkCapabilities setRequestorUidAndPackageName( int uid, @NonNull String packageName) { return setRequestorUid(uid).setRequestorPackageName(packageName); } /** * Test whether the passed NetworkCapabilities satisfies the requestor restrictions of this * capabilities. * * This method is called on the NetworkCapabilities embedded in a request with the * capabilities of an available network. If the available network, sets a specific * requestor (by uid and optionally package name), then this will only match a request from the * same app. If either of the capabilities have an unset uid or package name, then it matches * everything. * <p> * nc is assumed nonnull. Else, NPE. */ private boolean satisfiedByRequestor(NetworkCapabilities nc) { // No uid set, matches everything. if (mRequestorUid == Process.INVALID_UID || nc.mRequestorUid == Process.INVALID_UID) { return true; } // uids don't match. if (mRequestorUid != nc.mRequestorUid) return false; // No package names set, matches everything if (null == nc.mRequestorPackageName || null == mRequestorPackageName) return true; // check for package name match. return TextUtils.equals(mRequestorPackageName, nc.mRequestorPackageName); } /** * Combine requestor info of the capabilities. * <p> * This is only legal if either the requestor info of this object is reset, or both info are * equal. * nc is assumed nonnull. */ private void combineRequestor(@NonNull NetworkCapabilities nc) { if (mRequestorUid != Process.INVALID_UID && mRequestorUid != nc.mOwnerUid) { throw new IllegalStateException("Can't combine two uids"); } if (mRequestorPackageName != null && !mRequestorPackageName.equals(nc.mRequestorPackageName)) { throw new IllegalStateException("Can't combine two package names"); } setRequestorUid(nc.mRequestorUid); setRequestorPackageName(nc.mRequestorPackageName); } private boolean equalsRequestor(NetworkCapabilities nc) { return mRequestorUid == nc.mRequestorUid && TextUtils.equals(mRequestorPackageName, nc.mRequestorPackageName); } }