Merge "Rename unwanted capabilities to forbidden capabilities."
This commit is contained in:
@@ -109,7 +109,7 @@ package android.net {
|
||||
|
||||
public final class NetworkCapabilities implements android.os.Parcelable {
|
||||
method @Nullable public java.util.Set<android.util.Range<java.lang.Integer>> getUids();
|
||||
method public boolean hasUnwantedCapability(int);
|
||||
method public boolean hasForbiddenCapability(int);
|
||||
field public static final long REDACT_ALL = -1L; // 0xffffffffffffffffL
|
||||
field public static final long REDACT_FOR_ACCESS_FINE_LOCATION = 1L; // 0x1L
|
||||
field public static final long REDACT_FOR_LOCAL_MAC_ADDRESS = 2L; // 0x2L
|
||||
@@ -123,13 +123,13 @@ package android.net {
|
||||
}
|
||||
|
||||
public class NetworkRequest implements android.os.Parcelable {
|
||||
method @NonNull public int[] getUnwantedCapabilities();
|
||||
method public boolean hasUnwantedCapability(int);
|
||||
method @NonNull public int[] getForbiddenCapabilities();
|
||||
method public boolean hasForbiddenCapability(int);
|
||||
}
|
||||
|
||||
public static class NetworkRequest.Builder {
|
||||
method @NonNull public android.net.NetworkRequest.Builder addUnwantedCapability(int);
|
||||
method @NonNull public android.net.NetworkRequest.Builder removeUnwantedCapability(int);
|
||||
method @NonNull public android.net.NetworkRequest.Builder addForbiddenCapability(int);
|
||||
method @NonNull public android.net.NetworkRequest.Builder removeForbiddenCapability(int);
|
||||
method @NonNull public android.net.NetworkRequest.Builder setUids(@Nullable java.util.Set<android.util.Range<java.lang.Integer>>);
|
||||
}
|
||||
|
||||
|
||||
@@ -183,7 +183,7 @@ public final class NetworkCapabilities implements Parcelable {
|
||||
throw new UnsupportedOperationException(
|
||||
"Cannot clear NetworkCapabilities when mRedactions is set");
|
||||
}
|
||||
mNetworkCapabilities = mTransportTypes = mUnwantedNetworkCapabilities = 0;
|
||||
mNetworkCapabilities = mTransportTypes = mForbiddenNetworkCapabilities = 0;
|
||||
mLinkUpBandwidthKbps = mLinkDownBandwidthKbps = LINK_BANDWIDTH_UNSPECIFIED;
|
||||
mNetworkSpecifier = null;
|
||||
mTransportInfo = null;
|
||||
@@ -219,7 +219,7 @@ public final class NetworkCapabilities implements Parcelable {
|
||||
mUids = (nc.mUids == null) ? null : new ArraySet<>(nc.mUids);
|
||||
setAdministratorUids(nc.getAdministratorUids());
|
||||
mOwnerUid = nc.mOwnerUid;
|
||||
mUnwantedNetworkCapabilities = nc.mUnwantedNetworkCapabilities;
|
||||
mForbiddenNetworkCapabilities = nc.mForbiddenNetworkCapabilities;
|
||||
mSSID = nc.mSSID;
|
||||
mPrivateDnsBroken = nc.mPrivateDnsBroken;
|
||||
mRequestorUid = nc.mRequestorUid;
|
||||
@@ -237,7 +237,7 @@ public final class NetworkCapabilities implements Parcelable {
|
||||
/**
|
||||
* If any capabilities specified here they must not exist in the matching Network.
|
||||
*/
|
||||
private long mUnwantedNetworkCapabilities;
|
||||
private long mForbiddenNetworkCapabilities;
|
||||
|
||||
/** @hide */
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
@@ -586,21 +586,21 @@ public final class NetworkCapabilities implements Parcelable {
|
||||
* @hide
|
||||
*/
|
||||
public @NonNull NetworkCapabilities addCapability(@NetCapability int capability) {
|
||||
// If the given capability was previously added to the list of unwanted capabilities
|
||||
// then the capability will also be removed from the list of unwanted capabilities.
|
||||
// TODO: Consider adding unwanted capabilities to the public API and mention this
|
||||
// If the given capability was previously added to the list of forbidden capabilities
|
||||
// then the capability will also be removed from the list of forbidden capabilities.
|
||||
// TODO: Consider adding forbidden capabilities to the public API and mention this
|
||||
// in the documentation.
|
||||
checkValidCapability(capability);
|
||||
mNetworkCapabilities |= 1L << capability;
|
||||
// remove from unwanted capability list
|
||||
mUnwantedNetworkCapabilities &= ~(1L << capability);
|
||||
// remove from forbidden capability list
|
||||
mForbiddenNetworkCapabilities &= ~(1L << capability);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds the given capability to the list of unwanted capabilities of this
|
||||
* Adds the given capability to the list of forbidden capabilities of this
|
||||
* {@code NetworkCapability} instance. Note that when searching for a network to
|
||||
* satisfy a request, the network must not contain any capability from unwanted capability
|
||||
* satisfy a request, the network must not contain any capability from forbidden capability
|
||||
* list.
|
||||
* <p>
|
||||
* If the capability was previously added to the list of required capabilities (for
|
||||
@@ -610,9 +610,9 @@ public final class NetworkCapabilities implements Parcelable {
|
||||
* @see #addCapability(int)
|
||||
* @hide
|
||||
*/
|
||||
public void addUnwantedCapability(@NetCapability int capability) {
|
||||
public void addForbiddenCapability(@NetCapability int capability) {
|
||||
checkValidCapability(capability);
|
||||
mUnwantedNetworkCapabilities |= 1L << capability;
|
||||
mForbiddenNetworkCapabilities |= 1L << capability;
|
||||
mNetworkCapabilities &= ~(1L << capability); // remove from requested capabilities
|
||||
}
|
||||
|
||||
@@ -632,16 +632,16 @@ public final class NetworkCapabilities implements Parcelable {
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes (if found) the given unwanted capability from this {@code NetworkCapability}
|
||||
* instance that were added via addUnwantedCapability(int) or setCapabilities(int[], int[]).
|
||||
* Removes (if found) the given forbidden capability from this {@code NetworkCapability}
|
||||
* instance that were added via addForbiddenCapability(int) or setCapabilities(int[], int[]).
|
||||
*
|
||||
* @param capability the capability to be removed.
|
||||
* @return This NetworkCapabilities instance, to facilitate chaining.
|
||||
* @hide
|
||||
*/
|
||||
public @NonNull NetworkCapabilities removeUnwantedCapability(@NetCapability int capability) {
|
||||
public @NonNull NetworkCapabilities removeForbiddenCapability(@NetCapability int capability) {
|
||||
checkValidCapability(capability);
|
||||
mUnwantedNetworkCapabilities &= ~(1L << capability);
|
||||
mForbiddenNetworkCapabilities &= ~(1L << capability);
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -670,13 +670,13 @@ public final class NetworkCapabilities implements Parcelable {
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets all the unwanted capabilities set on this {@code NetworkCapability} instance.
|
||||
* Gets all the forbidden capabilities set on this {@code NetworkCapability} instance.
|
||||
*
|
||||
* @return an array of unwanted capability values for this instance.
|
||||
* @return an array of forbidden capability values for this instance.
|
||||
* @hide
|
||||
*/
|
||||
public @NetCapability int[] getUnwantedCapabilities() {
|
||||
return NetworkCapabilitiesUtils.unpackBits(mUnwantedNetworkCapabilities);
|
||||
public @NetCapability int[] getForbiddenCapabilities() {
|
||||
return NetworkCapabilitiesUtils.unpackBits(mForbiddenNetworkCapabilities);
|
||||
}
|
||||
|
||||
|
||||
@@ -687,9 +687,9 @@ public final class NetworkCapabilities implements Parcelable {
|
||||
* @hide
|
||||
*/
|
||||
public void setCapabilities(@NetCapability int[] capabilities,
|
||||
@NetCapability int[] unwantedCapabilities) {
|
||||
@NetCapability int[] forbiddenCapabilities) {
|
||||
mNetworkCapabilities = NetworkCapabilitiesUtils.packBits(capabilities);
|
||||
mUnwantedNetworkCapabilities = NetworkCapabilitiesUtils.packBits(unwantedCapabilities);
|
||||
mForbiddenNetworkCapabilities = NetworkCapabilitiesUtils.packBits(forbiddenCapabilities);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -714,9 +714,9 @@ public final class NetworkCapabilities implements Parcelable {
|
||||
|
||||
/** @hide */
|
||||
@SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
|
||||
public boolean hasUnwantedCapability(@NetCapability int capability) {
|
||||
public boolean hasForbiddenCapability(@NetCapability int capability) {
|
||||
return isValidCapability(capability)
|
||||
&& ((mUnwantedNetworkCapabilities & (1L << capability)) != 0);
|
||||
&& ((mForbiddenNetworkCapabilities & (1L << capability)) != 0);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -746,14 +746,14 @@ public final class NetworkCapabilities implements Parcelable {
|
||||
|
||||
private void combineNetCapabilities(@NonNull NetworkCapabilities nc) {
|
||||
final long wantedCaps = this.mNetworkCapabilities | nc.mNetworkCapabilities;
|
||||
final long unwantedCaps =
|
||||
this.mUnwantedNetworkCapabilities | nc.mUnwantedNetworkCapabilities;
|
||||
if ((wantedCaps & unwantedCaps) != 0) {
|
||||
final long forbiddenCaps =
|
||||
this.mForbiddenNetworkCapabilities | nc.mForbiddenNetworkCapabilities;
|
||||
if ((wantedCaps & forbiddenCaps) != 0) {
|
||||
throw new IllegalArgumentException(
|
||||
"Cannot have the same capability in wanted and unwanted lists.");
|
||||
"Cannot have the same capability in wanted and forbidden lists.");
|
||||
}
|
||||
this.mNetworkCapabilities = wantedCaps;
|
||||
this.mUnwantedNetworkCapabilities = unwantedCaps;
|
||||
this.mForbiddenNetworkCapabilities = forbiddenCaps;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -764,7 +764,7 @@ public final class NetworkCapabilities implements Parcelable {
|
||||
* @hide
|
||||
*/
|
||||
public @Nullable String describeFirstNonRequestableCapability() {
|
||||
final long nonRequestable = (mNetworkCapabilities | mUnwantedNetworkCapabilities)
|
||||
final long nonRequestable = (mNetworkCapabilities | mForbiddenNetworkCapabilities)
|
||||
& NON_REQUESTABLE_CAPABILITIES;
|
||||
|
||||
if (nonRequestable != 0) {
|
||||
@@ -781,28 +781,28 @@ public final class NetworkCapabilities implements Parcelable {
|
||||
private boolean satisfiedByNetCapabilities(@NonNull NetworkCapabilities nc,
|
||||
boolean onlyImmutable) {
|
||||
long requestedCapabilities = mNetworkCapabilities;
|
||||
long requestedUnwantedCapabilities = mUnwantedNetworkCapabilities;
|
||||
long requestedForbiddenCapabilities = mForbiddenNetworkCapabilities;
|
||||
long providedCapabilities = nc.mNetworkCapabilities;
|
||||
|
||||
if (onlyImmutable) {
|
||||
requestedCapabilities &= ~MUTABLE_CAPABILITIES;
|
||||
requestedUnwantedCapabilities &= ~MUTABLE_CAPABILITIES;
|
||||
requestedForbiddenCapabilities &= ~MUTABLE_CAPABILITIES;
|
||||
}
|
||||
return ((providedCapabilities & requestedCapabilities) == requestedCapabilities)
|
||||
&& ((requestedUnwantedCapabilities & providedCapabilities) == 0);
|
||||
&& ((requestedForbiddenCapabilities & providedCapabilities) == 0);
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
public boolean equalsNetCapabilities(@NonNull NetworkCapabilities nc) {
|
||||
return (nc.mNetworkCapabilities == this.mNetworkCapabilities)
|
||||
&& (nc.mUnwantedNetworkCapabilities == this.mUnwantedNetworkCapabilities);
|
||||
&& (nc.mForbiddenNetworkCapabilities == this.mForbiddenNetworkCapabilities);
|
||||
}
|
||||
|
||||
private boolean equalsNetCapabilitiesRequestable(@NonNull NetworkCapabilities that) {
|
||||
return ((this.mNetworkCapabilities & ~NON_REQUESTABLE_CAPABILITIES) ==
|
||||
(that.mNetworkCapabilities & ~NON_REQUESTABLE_CAPABILITIES))
|
||||
&& ((this.mUnwantedNetworkCapabilities & ~NON_REQUESTABLE_CAPABILITIES) ==
|
||||
(that.mUnwantedNetworkCapabilities & ~NON_REQUESTABLE_CAPABILITIES));
|
||||
return ((this.mNetworkCapabilities & ~NON_REQUESTABLE_CAPABILITIES)
|
||||
== (that.mNetworkCapabilities & ~NON_REQUESTABLE_CAPABILITIES))
|
||||
&& ((this.mForbiddenNetworkCapabilities & ~NON_REQUESTABLE_CAPABILITIES)
|
||||
== (that.mForbiddenNetworkCapabilities & ~NON_REQUESTABLE_CAPABILITIES));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1718,7 +1718,7 @@ public final class NetworkCapabilities implements Parcelable {
|
||||
* Combine a set of Capabilities to this one. Useful for coming up with the complete set.
|
||||
* <p>
|
||||
* Note that this method may break an invariant of having a particular capability in either
|
||||
* wanted or unwanted lists but never in both. Requests that have the same capability in
|
||||
* wanted or forbidden lists but never in both. Requests that have the same capability in
|
||||
* both lists will never be satisfied.
|
||||
* @hide
|
||||
*/
|
||||
@@ -1859,8 +1859,8 @@ public final class NetworkCapabilities implements Parcelable {
|
||||
public int hashCode() {
|
||||
return (int) (mNetworkCapabilities & 0xFFFFFFFF)
|
||||
+ ((int) (mNetworkCapabilities >> 32) * 3)
|
||||
+ ((int) (mUnwantedNetworkCapabilities & 0xFFFFFFFF) * 5)
|
||||
+ ((int) (mUnwantedNetworkCapabilities >> 32) * 7)
|
||||
+ ((int) (mForbiddenNetworkCapabilities & 0xFFFFFFFF) * 5)
|
||||
+ ((int) (mForbiddenNetworkCapabilities >> 32) * 7)
|
||||
+ ((int) (mTransportTypes & 0xFFFFFFFF) * 11)
|
||||
+ ((int) (mTransportTypes >> 32) * 13)
|
||||
+ mLinkUpBandwidthKbps * 17
|
||||
@@ -1895,7 +1895,7 @@ public final class NetworkCapabilities implements Parcelable {
|
||||
@Override
|
||||
public void writeToParcel(Parcel dest, int flags) {
|
||||
dest.writeLong(mNetworkCapabilities);
|
||||
dest.writeLong(mUnwantedNetworkCapabilities);
|
||||
dest.writeLong(mForbiddenNetworkCapabilities);
|
||||
dest.writeLong(mTransportTypes);
|
||||
dest.writeInt(mLinkUpBandwidthKbps);
|
||||
dest.writeInt(mLinkDownBandwidthKbps);
|
||||
@@ -1919,7 +1919,7 @@ public final class NetworkCapabilities implements Parcelable {
|
||||
NetworkCapabilities netCap = new NetworkCapabilities();
|
||||
|
||||
netCap.mNetworkCapabilities = in.readLong();
|
||||
netCap.mUnwantedNetworkCapabilities = in.readLong();
|
||||
netCap.mForbiddenNetworkCapabilities = in.readLong();
|
||||
netCap.mTransportTypes = in.readLong();
|
||||
netCap.mLinkUpBandwidthKbps = in.readInt();
|
||||
netCap.mLinkDownBandwidthKbps = in.readInt();
|
||||
@@ -1973,9 +1973,9 @@ public final class NetworkCapabilities implements Parcelable {
|
||||
appendStringRepresentationOfBitMaskToStringBuilder(sb, mNetworkCapabilities,
|
||||
NetworkCapabilities::capabilityNameOf, "&");
|
||||
}
|
||||
if (0 != mUnwantedNetworkCapabilities) {
|
||||
sb.append(" Unwanted: ");
|
||||
appendStringRepresentationOfBitMaskToStringBuilder(sb, mUnwantedNetworkCapabilities,
|
||||
if (0 != mForbiddenNetworkCapabilities) {
|
||||
sb.append(" Forbidden: ");
|
||||
appendStringRepresentationOfBitMaskToStringBuilder(sb, mForbiddenNetworkCapabilities,
|
||||
NetworkCapabilities::capabilityNameOf, "&");
|
||||
}
|
||||
if (mLinkUpBandwidthKbps > 0) {
|
||||
|
||||
@@ -311,7 +311,7 @@ public class NetworkRequest implements Parcelable {
|
||||
*
|
||||
* @see #addCapability(int)
|
||||
*
|
||||
* @param capability The capability to add to unwanted capability list.
|
||||
* @param capability The capability to add to forbidden capability list.
|
||||
* @return The builder to facilitate chaining.
|
||||
*
|
||||
* @hide
|
||||
@@ -319,15 +319,15 @@ public class NetworkRequest implements Parcelable {
|
||||
@NonNull
|
||||
@SuppressLint("MissingGetterMatchingBuilder")
|
||||
@SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
|
||||
public Builder addUnwantedCapability(@NetworkCapabilities.NetCapability int capability) {
|
||||
mNetworkCapabilities.addUnwantedCapability(capability);
|
||||
public Builder addForbiddenCapability(@NetworkCapabilities.NetCapability int capability) {
|
||||
mNetworkCapabilities.addForbiddenCapability(capability);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes (if found) the given unwanted capability from this builder instance.
|
||||
* Removes (if found) the given forbidden capability from this builder instance.
|
||||
*
|
||||
* @param capability The unwanted capability to remove.
|
||||
* @param capability The forbidden capability to remove.
|
||||
* @return The builder to facilitate chaining.
|
||||
*
|
||||
* @hide
|
||||
@@ -335,8 +335,9 @@ public class NetworkRequest implements Parcelable {
|
||||
@NonNull
|
||||
@SuppressLint("BuilderSetStyle")
|
||||
@SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
|
||||
public Builder removeUnwantedCapability(@NetworkCapabilities.NetCapability int capability) {
|
||||
mNetworkCapabilities.removeUnwantedCapability(capability);
|
||||
public Builder removeForbiddenCapability(
|
||||
@NetworkCapabilities.NetCapability int capability) {
|
||||
mNetworkCapabilities.removeForbiddenCapability(capability);
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -598,13 +599,13 @@ public class NetworkRequest implements Parcelable {
|
||||
}
|
||||
|
||||
/**
|
||||
* @see Builder#addUnwantedCapability(int)
|
||||
* @see Builder#addForbiddenCapability(int)
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
|
||||
public boolean hasUnwantedCapability(@NetCapability int capability) {
|
||||
return networkCapabilities.hasUnwantedCapability(capability);
|
||||
public boolean hasForbiddenCapability(@NetCapability int capability) {
|
||||
return networkCapabilities.hasForbiddenCapability(capability);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -709,18 +710,18 @@ public class NetworkRequest implements Parcelable {
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets all the unwanted capabilities set on this {@code NetworkRequest} instance.
|
||||
* Gets all the forbidden capabilities set on this {@code NetworkRequest} instance.
|
||||
*
|
||||
* @return an array of unwanted capability values for this instance.
|
||||
* @return an array of forbidden capability values for this instance.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
@NonNull
|
||||
@SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
|
||||
public @NetCapability int[] getUnwantedCapabilities() {
|
||||
// No need to make a defensive copy here as NC#getUnwantedCapabilities() already returns
|
||||
public @NetCapability int[] getForbiddenCapabilities() {
|
||||
// No need to make a defensive copy here as NC#getForbiddenCapabilities() already returns
|
||||
// a new array.
|
||||
return networkCapabilities.getUnwantedCapabilities();
|
||||
return networkCapabilities.getForbiddenCapabilities();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user