Loading apex/jobscheduler/service/java/com/android/server/job/JobStore.java +22 −12 Original line number Diff line number Diff line Loading @@ -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)); Loading Loading @@ -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"); Loading packages/Connectivity/framework/api/current.txt +3 −0 Original line number Diff line number Diff line Loading @@ -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(); Loading Loading @@ -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); Loading packages/Connectivity/framework/api/module-lib-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -120,6 +120,7 @@ package android.net { } public class NetworkRequest implements android.os.Parcelable { method @NonNull public int[] getUnwantedCapabilities(); method public boolean hasUnwantedCapability(int); } Loading packages/Connectivity/framework/src/android/net/ConnectivityManager.java +1 −2 Original line number Diff line number Diff line Loading @@ -1190,8 +1190,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 Loading packages/Connectivity/framework/src/android/net/NetworkRequest.java +39 −0 Original line number Diff line number Diff line Loading @@ -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(); } } Loading
apex/jobscheduler/service/java/com/android/server/job/JobStore.java +22 −12 Original line number Diff line number Diff line Loading @@ -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)); Loading Loading @@ -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"); Loading
packages/Connectivity/framework/api/current.txt +3 −0 Original line number Diff line number Diff line Loading @@ -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(); Loading Loading @@ -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); Loading
packages/Connectivity/framework/api/module-lib-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -120,6 +120,7 @@ package android.net { } public class NetworkRequest implements android.os.Parcelable { method @NonNull public int[] getUnwantedCapabilities(); method public boolean hasUnwantedCapability(int); } Loading
packages/Connectivity/framework/src/android/net/ConnectivityManager.java +1 −2 Original line number Diff line number Diff line Loading @@ -1190,8 +1190,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 Loading
packages/Connectivity/framework/src/android/net/NetworkRequest.java +39 −0 Original line number Diff line number Diff line Loading @@ -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(); } }