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

Commit 1a4d9368 authored by Chalard Jean's avatar Chalard Jean Committed by Automerger Merge Worker
Browse files

Merge changes from topics "api-fix-networkagent", "networkprovider_api",...

Merge changes from topics "api-fix-networkagent", "networkprovider_api", "satisfiedby" into rvc-dev am: 996492f8

Change-Id: I041fa5232ac2f653f0ff9070b9bcd924345f9987
parents d94e1da8 996492f8
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -30343,11 +30343,11 @@ package android.net {
  }
  public class NetworkRequest implements android.os.Parcelable {
    method public boolean canBeSatisfiedBy(@Nullable android.net.NetworkCapabilities);
    method public int describeContents();
    method @Nullable public android.net.NetworkSpecifier getNetworkSpecifier();
    method public boolean hasCapability(int);
    method public boolean hasTransport(int);
    method public boolean satisfiedBy(@Nullable android.net.NetworkCapabilities);
    method public void writeToParcel(android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.net.NetworkRequest> CREATOR;
  }
+5 −18
Original line number Diff line number Diff line
@@ -6177,7 +6177,6 @@ package android.net {
  public final class MatchAllNetworkSpecifier extends android.net.NetworkSpecifier implements android.os.Parcelable {
    ctor public MatchAllNetworkSpecifier();
    method public int describeContents();
    method public boolean satisfiedBy(android.net.NetworkSpecifier);
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.net.MatchAllNetworkSpecifier> CREATOR;
  }
@@ -6198,13 +6197,14 @@ package android.net {
  public abstract class NetworkAgent {
    ctor public NetworkAgent(@NonNull android.content.Context, @NonNull android.os.Looper, @NonNull String, @NonNull android.net.NetworkCapabilities, @NonNull android.net.LinkProperties, int, @NonNull android.net.NetworkAgentConfig, @Nullable android.net.NetworkProvider);
    method @Nullable public android.net.Network getNetwork();
    method public void markConnected();
    method public void onAddKeepalivePacketFilter(int, @NonNull android.net.KeepalivePacketData);
    method public void onAutomaticReconnectDisabled();
    method public void onNetworkUnwanted();
    method public void onRemoveKeepalivePacketFilter(int);
    method public void onSaveAcceptUnvalidated(boolean);
    method public void onSignalStrengthThresholdsUpdated(@NonNull int[]);
    method public void onStartSocketKeepalive(int, @IntRange(from=10, to=3600) int, @NonNull android.net.KeepalivePacketData);
    method public void onStartSocketKeepalive(int, @NonNull java.time.Duration, @NonNull android.net.KeepalivePacketData);
    method public void onStopSocketKeepalive(int);
    method public void onValidationStatus(int, @Nullable android.net.Uri);
    method @NonNull public android.net.Network register();
@@ -6212,7 +6212,6 @@ package android.net {
    method public final void sendNetworkCapabilities(@NonNull android.net.NetworkCapabilities);
    method public final void sendNetworkScore(@IntRange(from=0, to=99) int);
    method public final void sendSocketKeepaliveEvent(int, int);
    method public void setConnected();
    method public void unregister();
    field public static final int VALIDATION_STATUS_NOT_VALID = 2; // 0x2
    field public static final int VALIDATION_STATUS_VALID = 1; // 0x1
@@ -6283,8 +6282,8 @@ package android.net {
    ctor public NetworkProvider(@NonNull android.content.Context, @NonNull android.os.Looper, @NonNull String);
    method @RequiresPermission(android.Manifest.permission.NETWORK_FACTORY) public void declareNetworkRequestUnfulfillable(@NonNull android.net.NetworkRequest);
    method public int getProviderId();
    method public void onNetworkRequested(@NonNull android.net.NetworkRequest, int, int);
    method public void onRequestWithdrawn(@NonNull android.net.NetworkRequest);
    method public void onNetworkRequestWithdrawn(@NonNull android.net.NetworkRequest);
    method public void onNetworkRequested(@NonNull android.net.NetworkRequest, @IntRange(from=0, to=99) int, int);
    field public static final int ID_NONE = -1; // 0xffffffff
  }
@@ -6331,8 +6330,8 @@ package android.net {
  }
  public abstract class NetworkSpecifier {
    method public boolean canBeSatisfiedBy(@Nullable android.net.NetworkSpecifier);
    method @Nullable public android.net.NetworkSpecifier redact();
    method public abstract boolean satisfiedBy(@Nullable android.net.NetworkSpecifier);
  }
  public class NetworkStack {
@@ -6435,10 +6434,6 @@ package android.net {
    method @NonNull public android.net.StaticIpConfiguration.Builder setIpAddress(@Nullable android.net.LinkAddress);
  }
  public final class TelephonyNetworkSpecifier extends android.net.NetworkSpecifier implements android.os.Parcelable {
    method public boolean satisfiedBy(android.net.NetworkSpecifier);
  }
  public final class TetheredClient implements android.os.Parcelable {
    ctor public TetheredClient(@NonNull android.net.MacAddress, @NonNull java.util.Collection<android.net.TetheredClient.AddressInfo>, int);
    method public int describeContents();
@@ -7425,10 +7420,6 @@ package android.net.wifi {
    field public int numUsage;
  }
  public final class WifiNetworkSpecifier extends android.net.NetworkSpecifier implements android.os.Parcelable {
    method public boolean satisfiedBy(android.net.NetworkSpecifier);
  }
  public final class WifiNetworkSuggestion implements android.os.Parcelable {
    method @NonNull public android.net.wifi.WifiConfiguration getWifiConfiguration();
  }
@@ -7619,10 +7610,6 @@ package android.net.wifi.aware {
    method @Deprecated public android.net.NetworkSpecifier createNetworkSpecifierPmk(@NonNull android.net.wifi.aware.PeerHandle, @NonNull byte[]);
  }
  public final class WifiAwareNetworkSpecifier extends android.net.NetworkSpecifier implements android.os.Parcelable {
    method public boolean satisfiedBy(android.net.NetworkSpecifier);
  }
  public class WifiAwareSession implements java.lang.AutoCloseable {
    method public android.net.NetworkSpecifier createNetworkSpecifierPmk(int, @NonNull byte[], @NonNull byte[]);
  }
+20 −11
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ import com.android.internal.util.Protocol;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.time.Duration;
import java.util.ArrayList;
import java.util.Objects;
import java.util.concurrent.atomic.AtomicBoolean;
@@ -47,7 +48,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
 * An agent manages the life cycle of a network. A network starts its
 * life cycle when {@link register} is called on NetworkAgent. The network
 * is then connecting. When full L3 connectivity has been established,
 * the agent shoud call {@link setConnected} to inform the system that
 * the agent shoud call {@link markConnected} to inform the system that
 * this network is ready to use. When the network disconnects its life
 * ends and the agent should call {@link unregister}, at which point the
 * system will clean up and free resources.
@@ -503,7 +504,8 @@ public abstract class NetworkAgent {
                    break;
                }
                case CMD_START_SOCKET_KEEPALIVE: {
                    onStartSocketKeepalive(msg.arg1 /* slot */, msg.arg2 /* interval */,
                    onStartSocketKeepalive(msg.arg1 /* slot */,
                            Duration.ofSeconds(msg.arg2) /* interval */,
                            (KeepalivePacketData) msg.obj /* packet */);
                    break;
                }
@@ -617,10 +619,10 @@ public abstract class NetworkAgent {
     * Inform ConnectivityService that this agent has now connected.
     * Call {@link #unregister} to disconnect.
     */
    public void setConnected() {
    public void markConnected() {
        if (mIsLegacy) {
            throw new UnsupportedOperationException(
                    "Legacy agents can't call setConnected.");
                    "Legacy agents can't call markConnected.");
        }
        mNetworkInfo.setDetailedState(NetworkInfo.DetailedState.CONNECTED, null, null);
        queueOrSendMessage(EVENT_NETWORK_INFO_CHANGED, mNetworkInfo);
@@ -798,8 +800,8 @@ public abstract class NetworkAgent {
     * {@code VALIDATION_STATUS_VALID} if Internet connectivity was validated,
     * {@code VALIDATION_STATUS_NOT_VALID} if Internet connectivity was not validated.
     *
     * This may be called multiple times as network status changes, or if there are multiple
     * subsequent attempts to validate connectivity that fail.
     * This is guaranteed to be called again when the network status changes, but the system
     * may also call this multiple times even if the status does not change.
     *
     * @param status one of {@code VALIDATION_STATUS_VALID} or {@code VALIDATION_STATUS_NOT_VALID}.
     * @param redirectUri If Internet connectivity is being redirected (e.g., on a captive portal),
@@ -832,18 +834,25 @@ public abstract class NetworkAgent {
     * Requests that the network hardware send the specified packet at the specified interval.
     *
     * @param slot the hardware slot on which to start the keepalive.
     * @param intervalSeconds the interval between packets
     * @param interval the interval between packets, between 10 and 3600. Note that this API
     *                 does not support sub-second precision and will round off the request.
     * @param packet the packet to send.
     */
    // seconds is from SocketKeepalive.MIN_INTERVAL_SEC to MAX_INTERVAL_SEC, but these should
    // not be exposed as constants because they may change in the future (API guideline 4.8)
    // and should have getters if exposed at all. Getters can't be used in the annotation,
    // so the values unfortunately need to be copied.
    public void onStartSocketKeepalive(int slot,
            @IntRange(from = 10, to = 3600) int intervalSeconds,
    public void onStartSocketKeepalive(int slot, @NonNull Duration interval,
            @NonNull KeepalivePacketData packet) {
        Message msg = mHandler.obtainMessage(CMD_START_SOCKET_KEEPALIVE, slot, intervalSeconds,
                packet);
        final long intervalSeconds = interval.getSeconds();
        if (intervalSeconds < SocketKeepalive.MIN_INTERVAL_SEC
                || intervalSeconds > SocketKeepalive.MAX_INTERVAL_SEC) {
            throw new IllegalArgumentException("Interval needs to be comprised between "
                    + SocketKeepalive.MIN_INTERVAL_SEC + " and " + SocketKeepalive.MAX_INTERVAL_SEC
                    + " but was " + intervalSeconds);
        }
        final Message msg = mHandler.obtainMessage(CMD_START_SOCKET_KEEPALIVE, slot,
                (int) intervalSeconds, packet);
        startSocketKeepalive(msg);
        msg.recycle();
    }
+1 −1
Original line number Diff line number Diff line
@@ -1122,7 +1122,7 @@ public final class NetworkCapabilities implements Parcelable {
    }

    private boolean satisfiedBySpecifier(NetworkCapabilities nc) {
        return mNetworkSpecifier == null || mNetworkSpecifier.satisfiedBy(nc.mNetworkSpecifier)
        return mNetworkSpecifier == null || mNetworkSpecifier.canBeSatisfiedBy(nc.mNetworkSpecifier)
                || nc.mNetworkSpecifier instanceof MatchAllNetworkSpecifier;
    }

+9 −7
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package android.net;

import android.annotation.IntRange;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.RequiresPermission;
@@ -33,8 +34,8 @@ import android.util.Log;
 * {@link NetworkAgent}s. The networks can then provide connectivity to apps and can be interacted
 * with via networking APIs such as {@link ConnectivityManager}.
 *
 * Subclasses should implement {@link #onNetworkRequested} and {@link #onRequestWithdrawn} to
 * receive {@link NetworkRequest}s sent by the system and by apps. A network that is not the
 * Subclasses should implement {@link #onNetworkRequested} and {@link #onNetworkRequestWithdrawn}
 * to receive {@link NetworkRequest}s sent by the system and by apps. A network that is not the
 * best (highest-scoring) network for any request is generally not used by the system, and torn
 * down.
 *
@@ -77,7 +78,7 @@ public class NetworkProvider {
     * Constructs a new NetworkProvider.
     *
     * @param looper the Looper on which to run {@link #onNetworkRequested} and
     *               {@link #onRequestWithdrawn}.
     *               {@link #onNetworkRequestWithdrawn}.
     * @param name the name of the listener, used only for debugging.
     *
     * @hide
@@ -94,7 +95,7 @@ public class NetworkProvider {
                        onNetworkRequested((NetworkRequest) m.obj, m.arg1, m.arg2);
                        break;
                    case CMD_CANCEL_REQUEST:
                        onRequestWithdrawn((NetworkRequest) m.obj);
                        onNetworkRequestWithdrawn((NetworkRequest) m.obj);
                        break;
                    default:
                        Log.e(mName, "Unhandled message: " + m.what);
@@ -142,14 +143,15 @@ public class NetworkProvider {
     *  @hide
     */
    @SystemApi
    public void onNetworkRequested(@NonNull NetworkRequest request, int score, int providerId) {}
    public void onNetworkRequested(@NonNull NetworkRequest request,
            @IntRange(from = 0, to = 99) int score, int providerId) {}

    /**
     *  Called when a NetworkRequest is withdrawn.
     *  @hide
     */
    @SystemApi
    public void onRequestWithdrawn(@NonNull NetworkRequest request) {}
    public void onNetworkRequestWithdrawn(@NonNull NetworkRequest request) {}

    /**
     * Asserts that no provider will ever be able to satisfy the specified request. The provider
@@ -157,7 +159,7 @@ public class NetworkProvider {
     * satisfying this request, and that the request cannot be satisfied. The application filing the
     * request will receive an {@link NetworkCallback#onUnavailable()} callback.
     *
     * @param request the request that cannot be fulfilled
     * @param request the request that permanently cannot be fulfilled
     * @hide
     */
    @SystemApi
Loading