[JS01]Remove hidden API usage of Connectivity Sevice
The Connectivity service will become the mainline module.
Therefore, remove the caller of using Connectivity's
hidden API outside the module and expose the required
connectivity API used in Jobscheduler.
Bug: 183456204
CTS-Coverage-Bug: 170598012
Test: atest JobStoreTest
Change-Id: Ie6bc81ff382fb242b98f35d28a96defc207c7987
Merged-In: Ie6bc81ff382fb242b98f35d28a96defc207c7987
(cherry-picked from ag/13946348)
This commit is contained in:
@@ -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
|
||||
* 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 {
|
||||
out.startTag(null, XML_TAG_PARAMS_CONSTRAINTS);
|
||||
if (jobStatus.hasConnectivityConstraint()) {
|
||||
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(
|
||||
BitUtils.packBits(network.networkCapabilities.getCapabilities())));
|
||||
BitUtils.packBits(network.getCapabilities())));
|
||||
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(
|
||||
BitUtils.packBits(network.networkCapabilities.getTransportTypes())));
|
||||
BitUtils.packBits(network.getTransportTypes())));
|
||||
}
|
||||
if (jobStatus.hasIdleConstraint()) {
|
||||
out.attribute(null, "idle", Boolean.toString(true));
|
||||
@@ -967,18 +972,23 @@ public final class JobStore {
|
||||
null, "net-unwanted-capabilities");
|
||||
final String netTransportTypes = parser.getAttributeValue(null, "net-transport-types");
|
||||
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
|
||||
? Long.parseLong(netUnwantedCapabilities)
|
||||
: BitUtils.packBits(request.networkCapabilities.getUnwantedCapabilities());
|
||||
|
||||
: BitUtils.packBits(builder.build().getUnwantedCapabilities());
|
||||
// We're okay throwing NFE here; caught by caller
|
||||
request.networkCapabilities.setCapabilities(
|
||||
BitUtils.unpackBits(Long.parseLong(netCapabilities)),
|
||||
BitUtils.unpackBits(unwantedCapabilities));
|
||||
request.networkCapabilities.setTransportTypes(
|
||||
BitUtils.unpackBits(Long.parseLong(netTransportTypes)));
|
||||
jobBuilder.setRequiredNetwork(request);
|
||||
for (int capability : BitUtils.unpackBits(Long.parseLong(netCapabilities))) {
|
||||
builder.addCapability(capability);
|
||||
}
|
||||
for (int unwantedCapability : BitUtils.unpackBits(
|
||||
Long.parseLong(netUnwantedCapabilities))) {
|
||||
builder.addUnwantedCapability(unwantedCapability);
|
||||
}
|
||||
for (int transport : BitUtils.unpackBits(Long.parseLong(netTransportTypes))) {
|
||||
builder.addTransportType(transport);
|
||||
}
|
||||
jobBuilder.setRequiredNetwork(builder.build());
|
||||
} else {
|
||||
// Read legacy values
|
||||
val = parser.getAttributeValue(null, "connectivity");
|
||||
|
||||
@@ -68,6 +68,7 @@ package android.net {
|
||||
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 @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 @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();
|
||||
@@ -387,7 +388,9 @@ package android.net {
|
||||
public class NetworkRequest implements android.os.Parcelable {
|
||||
method public boolean canBeSatisfiedBy(@Nullable android.net.NetworkCapabilities);
|
||||
method public int describeContents();
|
||||
method @NonNull public int[] getCapabilities();
|
||||
method @Nullable public android.net.NetworkSpecifier getNetworkSpecifier();
|
||||
method @NonNull public int[] getTransportTypes();
|
||||
method public boolean hasCapability(int);
|
||||
method public boolean hasTransport(int);
|
||||
method public void writeToParcel(android.os.Parcel, int);
|
||||
|
||||
@@ -120,6 +120,7 @@ package android.net {
|
||||
}
|
||||
|
||||
public class NetworkRequest implements android.os.Parcelable {
|
||||
method @NonNull public int[] getUnwantedCapabilities();
|
||||
method public boolean hasUnwantedCapability(int);
|
||||
}
|
||||
|
||||
|
||||
@@ -1189,8 +1189,7 @@ public class ConnectivityManager {
|
||||
*
|
||||
* @return a {@link Network} object for the current default network for the
|
||||
* given UID or {@code null} if no default network is currently active
|
||||
*
|
||||
* @hide
|
||||
* TODO: b/183465229 Cleanup getActiveNetworkForUid once b/165835257 is fixed
|
||||
*/
|
||||
@RequiresPermission(android.Manifest.permission.NETWORK_STACK)
|
||||
@Nullable
|
||||
|
||||
@@ -699,4 +699,43 @@ public class NetworkRequest implements Parcelable {
|
||||
public int hashCode() {
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user