Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7fa8d8f4 authored by lifr's avatar lifr
Browse files

[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)
parent f89bea0b
Loading
Loading
Loading
Loading
+22 −12
Original line number Diff line number Diff line
@@ -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");
+3 −0
Original line number Diff line number Diff line
@@ -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);
+1 −0
Original line number Diff line number Diff line
@@ -120,6 +120,7 @@ package android.net {
  }

  public class NetworkRequest implements android.os.Parcelable {
    method @NonNull public int[] getUnwantedCapabilities();
    method public boolean hasUnwantedCapability(int);
  }

+1 −2
Original line number Diff line number Diff line
@@ -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
+39 −0
Original line number Diff line number Diff line
@@ -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();
    }
}