Merge "[JS01]Remove hidden API usage of Connectivity Sevice" am: 46196fb05a

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

Change-Id: Ibc9e5b382c210e157f9af9c1071b2e2e1065320e
This commit is contained in:
Frank Li
2021-03-30 08:03:56 +00:00
committed by Automerger Merge Worker
5 changed files with 66 additions and 14 deletions

View File

@@ -532,18 +532,23 @@ public final class JobStore {
/** /**
* Write out a tag with data identifying this job's constraints. If the constraint isn't here * Write out a tag with data identifying this job's constraints. If the constraint isn't here
* it doesn't apply. * it doesn't apply.
* TODO: b/183455312 Update this code to use proper serialization for NetworkRequest,
* because currently store is not including everything (like, UIDs, bandwidth,
* signal strength etc. are lost).
*/ */
private void writeConstraintsToXml(XmlSerializer out, JobStatus jobStatus) throws IOException { private void writeConstraintsToXml(XmlSerializer out, JobStatus jobStatus) throws IOException {
out.startTag(null, XML_TAG_PARAMS_CONSTRAINTS); out.startTag(null, XML_TAG_PARAMS_CONSTRAINTS);
if (jobStatus.hasConnectivityConstraint()) { if (jobStatus.hasConnectivityConstraint()) {
final NetworkRequest network = jobStatus.getJob().getRequiredNetwork(); final NetworkRequest network = jobStatus.getJob().getRequiredNetwork();
// STOPSHIP b/183071974: improve the scheme for backward compatibility and
// mainline cleanliness.
out.attribute(null, "net-capabilities", Long.toString( out.attribute(null, "net-capabilities", Long.toString(
BitUtils.packBits(network.networkCapabilities.getCapabilities()))); BitUtils.packBits(network.getCapabilities())));
out.attribute(null, "net-unwanted-capabilities", Long.toString( out.attribute(null, "net-unwanted-capabilities", Long.toString(
BitUtils.packBits(network.networkCapabilities.getUnwantedCapabilities()))); BitUtils.packBits(network.getUnwantedCapabilities())));
out.attribute(null, "net-transport-types", Long.toString( out.attribute(null, "net-transport-types", Long.toString(
BitUtils.packBits(network.networkCapabilities.getTransportTypes()))); BitUtils.packBits(network.getTransportTypes())));
} }
if (jobStatus.hasIdleConstraint()) { if (jobStatus.hasIdleConstraint()) {
out.attribute(null, "idle", Boolean.toString(true)); out.attribute(null, "idle", Boolean.toString(true));
@@ -967,18 +972,23 @@ public final class JobStore {
null, "net-unwanted-capabilities"); null, "net-unwanted-capabilities");
final String netTransportTypes = parser.getAttributeValue(null, "net-transport-types"); final String netTransportTypes = parser.getAttributeValue(null, "net-transport-types");
if (netCapabilities != null && netTransportTypes != null) { if (netCapabilities != null && netTransportTypes != null) {
final NetworkRequest request = new NetworkRequest.Builder().build(); final NetworkRequest.Builder builder = new NetworkRequest.Builder()
.clearCapabilities();
final long unwantedCapabilities = netUnwantedCapabilities != null final long unwantedCapabilities = netUnwantedCapabilities != null
? Long.parseLong(netUnwantedCapabilities) ? Long.parseLong(netUnwantedCapabilities)
: BitUtils.packBits(request.networkCapabilities.getUnwantedCapabilities()); : BitUtils.packBits(builder.build().getUnwantedCapabilities());
// We're okay throwing NFE here; caught by caller // We're okay throwing NFE here; caught by caller
request.networkCapabilities.setCapabilities( for (int capability : BitUtils.unpackBits(Long.parseLong(netCapabilities))) {
BitUtils.unpackBits(Long.parseLong(netCapabilities)), builder.addCapability(capability);
BitUtils.unpackBits(unwantedCapabilities)); }
request.networkCapabilities.setTransportTypes( for (int unwantedCapability : BitUtils.unpackBits(
BitUtils.unpackBits(Long.parseLong(netTransportTypes))); Long.parseLong(netUnwantedCapabilities))) {
jobBuilder.setRequiredNetwork(request); builder.addUnwantedCapability(unwantedCapability);
}
for (int transport : BitUtils.unpackBits(Long.parseLong(netTransportTypes))) {
builder.addTransportType(transport);
}
jobBuilder.setRequiredNetwork(builder.build());
} else { } else {
// Read legacy values // Read legacy values
val = parser.getAttributeValue(null, "connectivity"); val = parser.getAttributeValue(null, "connectivity");

View File

@@ -68,6 +68,7 @@ package android.net {
method public boolean bindProcessToNetwork(@Nullable android.net.Network); method public boolean bindProcessToNetwork(@Nullable android.net.Network);
method @NonNull public android.net.SocketKeepalive createSocketKeepalive(@NonNull android.net.Network, @NonNull android.net.IpSecManager.UdpEncapsulationSocket, @NonNull java.net.InetAddress, @NonNull java.net.InetAddress, @NonNull java.util.concurrent.Executor, @NonNull android.net.SocketKeepalive.Callback); method @NonNull public android.net.SocketKeepalive createSocketKeepalive(@NonNull android.net.Network, @NonNull android.net.IpSecManager.UdpEncapsulationSocket, @NonNull java.net.InetAddress, @NonNull java.net.InetAddress, @NonNull java.util.concurrent.Executor, @NonNull android.net.SocketKeepalive.Callback);
method @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public android.net.Network getActiveNetwork(); method @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public android.net.Network getActiveNetwork();
method @Nullable @RequiresPermission(android.Manifest.permission.NETWORK_STACK) public android.net.Network getActiveNetworkForUid(int);
method @Deprecated @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public android.net.NetworkInfo getActiveNetworkInfo(); method @Deprecated @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public android.net.NetworkInfo getActiveNetworkInfo();
method @Deprecated @NonNull @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public android.net.NetworkInfo[] getAllNetworkInfo(); method @Deprecated @NonNull @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public android.net.NetworkInfo[] getAllNetworkInfo();
method @NonNull @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public android.net.Network[] getAllNetworks(); method @NonNull @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public android.net.Network[] getAllNetworks();
@@ -387,7 +388,9 @@ package android.net {
public class NetworkRequest implements android.os.Parcelable { public class NetworkRequest implements android.os.Parcelable {
method public boolean canBeSatisfiedBy(@Nullable android.net.NetworkCapabilities); method public boolean canBeSatisfiedBy(@Nullable android.net.NetworkCapabilities);
method public int describeContents(); method public int describeContents();
method @NonNull public int[] getCapabilities();
method @Nullable public android.net.NetworkSpecifier getNetworkSpecifier(); method @Nullable public android.net.NetworkSpecifier getNetworkSpecifier();
method @NonNull public int[] getTransportTypes();
method public boolean hasCapability(int); method public boolean hasCapability(int);
method public boolean hasTransport(int); method public boolean hasTransport(int);
method public void writeToParcel(android.os.Parcel, int); method public void writeToParcel(android.os.Parcel, int);

View File

@@ -120,6 +120,7 @@ package android.net {
} }
public class NetworkRequest implements android.os.Parcelable { public class NetworkRequest implements android.os.Parcelable {
method @NonNull public int[] getUnwantedCapabilities();
method public boolean hasUnwantedCapability(int); method public boolean hasUnwantedCapability(int);
} }

View File

@@ -1190,8 +1190,7 @@ public class ConnectivityManager {
* *
* @return a {@link Network} object for the current default network for the * @return a {@link Network} object for the current default network for the
* given UID or {@code null} if no default network is currently active * given UID or {@code null} if no default network is currently active
* * TODO: b/183465229 Cleanup getActiveNetworkForUid once b/165835257 is fixed
* @hide
*/ */
@RequiresPermission(android.Manifest.permission.NETWORK_STACK) @RequiresPermission(android.Manifest.permission.NETWORK_STACK)
@Nullable @Nullable

View File

@@ -699,4 +699,43 @@ public class NetworkRequest implements Parcelable {
public int hashCode() { public int hashCode() {
return Objects.hash(requestId, legacyType, networkCapabilities, type); return Objects.hash(requestId, legacyType, networkCapabilities, type);
} }
/**
* Gets all the capabilities set on this {@code NetworkRequest} instance.
*
* @return an array of capability values for this instance.
*/
@NonNull
public @NetCapability int[] getCapabilities() {
// No need to make a defensive copy here as NC#getCapabilities() already returns
// a new array.
return networkCapabilities.getCapabilities();
}
/**
* Gets all the unwanted capabilities set on this {@code NetworkRequest} instance.
*
* @return an array of unwanted 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
// a new array.
return networkCapabilities.getUnwantedCapabilities();
}
/**
* Gets all the transports set on this {@code NetworkRequest} instance.
*
* @return an array of transport type values for this instance.
*/
@NonNull
public @Transport int[] getTransportTypes() {
// No need to make a defensive copy here as NC#getTransportTypes() already returns
// a new array.
return networkCapabilities.getTransportTypes();
}
} }