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

Commit 83bdc375 authored by Benedict Wong's avatar Benedict Wong Committed by Automerger Merge Worker
Browse files

Merge changes I61c84693,I929428f7 am: e6b79e29 am: d00c6818

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

Change-Id: I5e2ee0259f73c43f93049dbd8ab369a708d31112
parents 23bc1031 d00c6818
Loading
Loading
Loading
Loading
+8 −0
Original line number Original line Diff line number Diff line
@@ -27290,6 +27290,8 @@ package android.net.vcn {
    ctor public VcnCellUnderlyingNetworkTemplate.Builder();
    ctor public VcnCellUnderlyingNetworkTemplate.Builder();
    method @NonNull public android.net.vcn.VcnCellUnderlyingNetworkTemplate build();
    method @NonNull public android.net.vcn.VcnCellUnderlyingNetworkTemplate build();
    method @NonNull public android.net.vcn.VcnCellUnderlyingNetworkTemplate.Builder setMetered(int);
    method @NonNull public android.net.vcn.VcnCellUnderlyingNetworkTemplate.Builder setMetered(int);
    method @NonNull public android.net.vcn.VcnCellUnderlyingNetworkTemplate.Builder setMinDownstreamBandwidthKbps(int, int);
    method @NonNull public android.net.vcn.VcnCellUnderlyingNetworkTemplate.Builder setMinUpstreamBandwidthKbps(int, int);
    method @NonNull public android.net.vcn.VcnCellUnderlyingNetworkTemplate.Builder setOperatorPlmnIds(@NonNull java.util.Set<java.lang.String>);
    method @NonNull public android.net.vcn.VcnCellUnderlyingNetworkTemplate.Builder setOperatorPlmnIds(@NonNull java.util.Set<java.lang.String>);
    method @NonNull public android.net.vcn.VcnCellUnderlyingNetworkTemplate.Builder setOpportunistic(int);
    method @NonNull public android.net.vcn.VcnCellUnderlyingNetworkTemplate.Builder setOpportunistic(int);
    method @NonNull public android.net.vcn.VcnCellUnderlyingNetworkTemplate.Builder setRoaming(int);
    method @NonNull public android.net.vcn.VcnCellUnderlyingNetworkTemplate.Builder setRoaming(int);
@@ -27350,6 +27352,10 @@ package android.net.vcn {
  public abstract class VcnUnderlyingNetworkTemplate {
  public abstract class VcnUnderlyingNetworkTemplate {
    method public int getMetered();
    method public int getMetered();
    method public int getMinEntryDownstreamBandwidthKbps();
    method public int getMinEntryUpstreamBandwidthKbps();
    method public int getMinExitDownstreamBandwidthKbps();
    method public int getMinExitUpstreamBandwidthKbps();
    field public static final int MATCH_ANY = 0; // 0x0
    field public static final int MATCH_ANY = 0; // 0x0
    field public static final int MATCH_FORBIDDEN = 2; // 0x2
    field public static final int MATCH_FORBIDDEN = 2; // 0x2
    field public static final int MATCH_REQUIRED = 1; // 0x1
    field public static final int MATCH_REQUIRED = 1; // 0x1
@@ -27363,6 +27369,8 @@ package android.net.vcn {
    ctor public VcnWifiUnderlyingNetworkTemplate.Builder();
    ctor public VcnWifiUnderlyingNetworkTemplate.Builder();
    method @NonNull public android.net.vcn.VcnWifiUnderlyingNetworkTemplate build();
    method @NonNull public android.net.vcn.VcnWifiUnderlyingNetworkTemplate build();
    method @NonNull public android.net.vcn.VcnWifiUnderlyingNetworkTemplate.Builder setMetered(int);
    method @NonNull public android.net.vcn.VcnWifiUnderlyingNetworkTemplate.Builder setMetered(int);
    method @NonNull public android.net.vcn.VcnWifiUnderlyingNetworkTemplate.Builder setMinDownstreamBandwidthKbps(int, int);
    method @NonNull public android.net.vcn.VcnWifiUnderlyingNetworkTemplate.Builder setMinUpstreamBandwidthKbps(int, int);
    method @NonNull public android.net.vcn.VcnWifiUnderlyingNetworkTemplate.Builder setSsids(@NonNull java.util.Set<java.lang.String>);
    method @NonNull public android.net.vcn.VcnWifiUnderlyingNetworkTemplate.Builder setSsids(@NonNull java.util.Set<java.lang.String>);
  }
  }
+110 −25
Original line number Original line Diff line number Diff line
@@ -63,13 +63,22 @@ public final class VcnCellUnderlyingNetworkTemplate extends VcnUnderlyingNetwork
    private final int mOpportunisticMatchCriteria;
    private final int mOpportunisticMatchCriteria;


    private VcnCellUnderlyingNetworkTemplate(
    private VcnCellUnderlyingNetworkTemplate(
            int networkQuality,
            int meteredMatchCriteria,
            int meteredMatchCriteria,
            int minEntryUpstreamBandwidthKbps,
            int minExitUpstreamBandwidthKbps,
            int minEntryDownstreamBandwidthKbps,
            int minExitDownstreamBandwidthKbps,
            Set<String> allowedNetworkPlmnIds,
            Set<String> allowedNetworkPlmnIds,
            Set<Integer> allowedSpecificCarrierIds,
            Set<Integer> allowedSpecificCarrierIds,
            int roamingMatchCriteria,
            int roamingMatchCriteria,
            int opportunisticMatchCriteria) {
            int opportunisticMatchCriteria) {
        super(NETWORK_PRIORITY_TYPE_CELL, networkQuality, meteredMatchCriteria);
        super(
                NETWORK_PRIORITY_TYPE_CELL,
                meteredMatchCriteria,
                minEntryUpstreamBandwidthKbps,
                minExitUpstreamBandwidthKbps,
                minEntryDownstreamBandwidthKbps,
                minExitDownstreamBandwidthKbps);
        mAllowedNetworkPlmnIds = new ArraySet<>(allowedNetworkPlmnIds);
        mAllowedNetworkPlmnIds = new ArraySet<>(allowedNetworkPlmnIds);
        mAllowedSpecificCarrierIds = new ArraySet<>(allowedSpecificCarrierIds);
        mAllowedSpecificCarrierIds = new ArraySet<>(allowedSpecificCarrierIds);
        mRoamingMatchCriteria = roamingMatchCriteria;
        mRoamingMatchCriteria = roamingMatchCriteria;
@@ -109,9 +118,17 @@ public final class VcnCellUnderlyingNetworkTemplate extends VcnUnderlyingNetwork
            @NonNull PersistableBundle in) {
            @NonNull PersistableBundle in) {
        Objects.requireNonNull(in, "PersistableBundle is null");
        Objects.requireNonNull(in, "PersistableBundle is null");


        final int networkQuality = in.getInt(NETWORK_QUALITY_KEY);
        final int meteredMatchCriteria = in.getInt(METERED_MATCH_KEY);
        final int meteredMatchCriteria = in.getInt(METERED_MATCH_KEY);


        final int minEntryUpstreamBandwidthKbps =
                in.getInt(MIN_ENTRY_UPSTREAM_BANDWIDTH_KBPS_KEY, DEFAULT_MIN_BANDWIDTH_KBPS);
        final int minExitUpstreamBandwidthKbps =
                in.getInt(MIN_EXIT_UPSTREAM_BANDWIDTH_KBPS_KEY, DEFAULT_MIN_BANDWIDTH_KBPS);
        final int minEntryDownstreamBandwidthKbps =
                in.getInt(MIN_ENTRY_DOWNSTREAM_BANDWIDTH_KBPS_KEY, DEFAULT_MIN_BANDWIDTH_KBPS);
        final int minExitDownstreamBandwidthKbps =
                in.getInt(MIN_EXIT_DOWNSTREAM_BANDWIDTH_KBPS_KEY, DEFAULT_MIN_BANDWIDTH_KBPS);

        final PersistableBundle plmnIdsBundle =
        final PersistableBundle plmnIdsBundle =
                in.getPersistableBundle(ALLOWED_NETWORK_PLMN_IDS_KEY);
                in.getPersistableBundle(ALLOWED_NETWORK_PLMN_IDS_KEY);
        Objects.requireNonNull(plmnIdsBundle, "plmnIdsBundle is null");
        Objects.requireNonNull(plmnIdsBundle, "plmnIdsBundle is null");
@@ -131,8 +148,11 @@ public final class VcnCellUnderlyingNetworkTemplate extends VcnUnderlyingNetwork
        final int opportunisticMatchCriteria = in.getInt(OPPORTUNISTIC_MATCH_KEY);
        final int opportunisticMatchCriteria = in.getInt(OPPORTUNISTIC_MATCH_KEY);


        return new VcnCellUnderlyingNetworkTemplate(
        return new VcnCellUnderlyingNetworkTemplate(
                networkQuality,
                meteredMatchCriteria,
                meteredMatchCriteria,
                minEntryUpstreamBandwidthKbps,
                minExitUpstreamBandwidthKbps,
                minEntryDownstreamBandwidthKbps,
                minExitDownstreamBandwidthKbps,
                allowedNetworkPlmnIds,
                allowedNetworkPlmnIds,
                allowedSpecificCarrierIds,
                allowedSpecificCarrierIds,
                roamingMatchCriteria,
                roamingMatchCriteria,
@@ -243,7 +263,6 @@ public final class VcnCellUnderlyingNetworkTemplate extends VcnUnderlyingNetwork


    /** This class is used to incrementally build VcnCellUnderlyingNetworkTemplate objects. */
    /** This class is used to incrementally build VcnCellUnderlyingNetworkTemplate objects. */
    public static final class Builder {
    public static final class Builder {
        private int mNetworkQuality = NETWORK_QUALITY_ANY;
        private int mMeteredMatchCriteria = MATCH_ANY;
        private int mMeteredMatchCriteria = MATCH_ANY;


        @NonNull private final Set<String> mAllowedNetworkPlmnIds = new ArraySet<>();
        @NonNull private final Set<String> mAllowedNetworkPlmnIds = new ArraySet<>();
@@ -252,28 +271,14 @@ public final class VcnCellUnderlyingNetworkTemplate extends VcnUnderlyingNetwork
        private int mRoamingMatchCriteria = MATCH_ANY;
        private int mRoamingMatchCriteria = MATCH_ANY;
        private int mOpportunisticMatchCriteria = MATCH_ANY;
        private int mOpportunisticMatchCriteria = MATCH_ANY;


        private int mMinEntryUpstreamBandwidthKbps = DEFAULT_MIN_BANDWIDTH_KBPS;
        private int mMinExitUpstreamBandwidthKbps = DEFAULT_MIN_BANDWIDTH_KBPS;
        private int mMinEntryDownstreamBandwidthKbps = DEFAULT_MIN_BANDWIDTH_KBPS;
        private int mMinExitDownstreamBandwidthKbps = DEFAULT_MIN_BANDWIDTH_KBPS;

        /** Construct a Builder object. */
        /** Construct a Builder object. */
        public Builder() {}
        public Builder() {}


        /**
         * Set the required network quality to match this template.
         *
         * <p>Network quality is a aggregation of multiple signals that reflect the network link
         * metrics. For example, the network validation bit (see {@link
         * NetworkCapabilities#NET_CAPABILITY_VALIDATED}), estimated first hop transport bandwidth
         * and signal strength.
         *
         * @param networkQuality the required network quality. Defaults to NETWORK_QUALITY_ANY
         * @hide
         */
        @NonNull
        public Builder setNetworkQuality(@NetworkQuality int networkQuality) {
            validateNetworkQuality(networkQuality);

            mNetworkQuality = networkQuality;
            return this;
        }

        /**
        /**
         * Set the matching criteria for metered networks.
         * Set the matching criteria for metered networks.
         *
         *
@@ -369,12 +374,92 @@ public final class VcnCellUnderlyingNetworkTemplate extends VcnUnderlyingNetwork
            return this;
            return this;
        }
        }


        /**
         * Set the minimum upstream bandwidths that this template will match.
         *
         * <p>This template will not match a network that does not provide at least the bandwidth
         * passed as the entry bandwidth, except in the case that the network is selected as the VCN
         * Gateway Connection's underlying network, where it will continue to match until the
         * bandwidth drops under the exit bandwidth.
         *
         * <p>The entry criteria MUST be greater than, or equal to the exit criteria to avoid the
         * invalid case where a network fulfills the entry criteria, but at the same time fails the
         * exit criteria.
         *
         * <p>Estimated bandwidth of a network is provided by the transport layer, and reported in
         * {@link NetworkCapabilities}. The provided estimates will be used without modification.
         *
         * @param minEntryUpstreamBandwidthKbps the minimum accepted upstream bandwidth for networks
         *     that ARE NOT the already-selected underlying network, or {@code 0} to disable this
         *     requirement. Disabled by default.
         * @param minExitUpstreamBandwidthKbps the minimum accepted upstream bandwidth for a network
         *     that IS the already-selected underlying network, or {@code 0} to disable this
         *     requirement. Disabled by default.
         * @return this {@link Builder} instance, for chaining
         */
        @NonNull
        // The getter for the two integers are separated, and in the superclass. Please see {@link
        // VcnUnderlyingNetworkTemplate#getMinEntryUpstreamBandwidthKbps()} and {@link
        // VcnUnderlyingNetworkTemplate#getMinExitUpstreamBandwidthKbps()}
        @SuppressLint("MissingGetterMatchingBuilder")
        public Builder setMinUpstreamBandwidthKbps(
                int minEntryUpstreamBandwidthKbps, int minExitUpstreamBandwidthKbps) {
            validateMinBandwidthKbps(minEntryUpstreamBandwidthKbps, minExitUpstreamBandwidthKbps);

            mMinEntryUpstreamBandwidthKbps = minEntryUpstreamBandwidthKbps;
            mMinExitUpstreamBandwidthKbps = minExitUpstreamBandwidthKbps;

            return this;
        }

        /**
         * Set the minimum upstream bandwidths that this template will match.
         *
         * <p>This template will not match a network that does not provide at least the bandwidth
         * passed as the entry bandwidth, except in the case that the network is selected as the VCN
         * Gateway Connection's underlying network, where it will continue to match until the
         * bandwidth drops under the exit bandwidth.
         *
         * <p>The entry criteria MUST be greater than, or equal to the exit criteria to avoid the
         * invalid case where a network fulfills the entry criteria, but at the same time fails the
         * exit criteria.
         *
         * <p>Estimated bandwidth of a network is provided by the transport layer, and reported in
         * {@link NetworkCapabilities}. The provided estimates will be used without modification.
         *
         * @param minEntryDownstreamBandwidthKbps the minimum accepted downstream bandwidth for
         *     networks that ARE NOT the already-selected underlying network, or {@code 0} to
         *     disable this requirement. Disabled by default.
         * @param minExitDownstreamBandwidthKbps the minimum accepted downstream bandwidth for a
         *     network that IS the already-selected underlying network, or {@code 0} to disable this
         *     requirement. Disabled by default.
         * @return this {@link Builder} instance, for chaining
         */
        @NonNull
        // The getter for the two integers are separated, and in the superclass. Please see {@link
        // VcnUnderlyingNetworkTemplate#getMinEntryDownstreamBandwidthKbps()} and {@link
        // VcnUnderlyingNetworkTemplate#getMinExitDownstreamBandwidthKbps()}
        @SuppressLint("MissingGetterMatchingBuilder")
        public Builder setMinDownstreamBandwidthKbps(
                int minEntryDownstreamBandwidthKbps, int minExitDownstreamBandwidthKbps) {
            validateMinBandwidthKbps(
                    minEntryDownstreamBandwidthKbps, minExitDownstreamBandwidthKbps);

            mMinEntryDownstreamBandwidthKbps = minEntryDownstreamBandwidthKbps;
            mMinExitDownstreamBandwidthKbps = minExitDownstreamBandwidthKbps;

            return this;
        }

        /** Build the VcnCellUnderlyingNetworkTemplate. */
        /** Build the VcnCellUnderlyingNetworkTemplate. */
        @NonNull
        @NonNull
        public VcnCellUnderlyingNetworkTemplate build() {
        public VcnCellUnderlyingNetworkTemplate build() {
            return new VcnCellUnderlyingNetworkTemplate(
            return new VcnCellUnderlyingNetworkTemplate(
                    mNetworkQuality,
                    mMeteredMatchCriteria,
                    mMeteredMatchCriteria,
                    mMinEntryUpstreamBandwidthKbps,
                    mMinExitUpstreamBandwidthKbps,
                    mMinEntryDownstreamBandwidthKbps,
                    mMinExitDownstreamBandwidthKbps,
                    mAllowedNetworkPlmnIds,
                    mAllowedNetworkPlmnIds,
                    mAllowedSpecificCarrierIds,
                    mAllowedSpecificCarrierIds,
                    mRoamingMatchCriteria,
                    mRoamingMatchCriteria,
+0 −4
Original line number Original line Diff line number Diff line
@@ -17,7 +17,6 @@ package android.net.vcn;


import static android.net.ipsec.ike.IkeSessionParams.IKE_OPTION_MOBIKE;
import static android.net.ipsec.ike.IkeSessionParams.IKE_OPTION_MOBIKE;
import static android.net.vcn.VcnUnderlyingNetworkTemplate.MATCH_REQUIRED;
import static android.net.vcn.VcnUnderlyingNetworkTemplate.MATCH_REQUIRED;
import static android.net.vcn.VcnUnderlyingNetworkTemplate.NETWORK_QUALITY_OK;


import static com.android.internal.annotations.VisibleForTesting.Visibility;
import static com.android.internal.annotations.VisibleForTesting.Visibility;


@@ -169,18 +168,15 @@ public final class VcnGatewayConnectionConfig {
    static {
    static {
        DEFAULT_UNDERLYING_NETWORK_TEMPLATES.add(
        DEFAULT_UNDERLYING_NETWORK_TEMPLATES.add(
                new VcnCellUnderlyingNetworkTemplate.Builder()
                new VcnCellUnderlyingNetworkTemplate.Builder()
                        .setNetworkQuality(NETWORK_QUALITY_OK)
                        .setOpportunistic(MATCH_REQUIRED)
                        .setOpportunistic(MATCH_REQUIRED)
                        .build());
                        .build());


        DEFAULT_UNDERLYING_NETWORK_TEMPLATES.add(
        DEFAULT_UNDERLYING_NETWORK_TEMPLATES.add(
                new VcnWifiUnderlyingNetworkTemplate.Builder()
                new VcnWifiUnderlyingNetworkTemplate.Builder()
                        .setNetworkQuality(NETWORK_QUALITY_OK)
                        .build());
                        .build());


        DEFAULT_UNDERLYING_NETWORK_TEMPLATES.add(
        DEFAULT_UNDERLYING_NETWORK_TEMPLATES.add(
                new VcnCellUnderlyingNetworkTemplate.Builder()
                new VcnCellUnderlyingNetworkTemplate.Builder()
                        .setNetworkQuality(NETWORK_QUALITY_OK)
                        .build());
                        .build());
    }
    }


+107 −54
Original line number Original line Diff line number Diff line
@@ -48,23 +48,6 @@ public abstract class VcnUnderlyingNetworkTemplate {
    /** @hide */
    /** @hide */
    static final int NETWORK_PRIORITY_TYPE_CELL = 2;
    static final int NETWORK_PRIORITY_TYPE_CELL = 2;


    /** Denotes that any network quality is acceptable. @hide */
    public static final int NETWORK_QUALITY_ANY = 0;
    /** Denotes that network quality needs to be OK. @hide */
    public static final int NETWORK_QUALITY_OK = 100000;

    private static final SparseArray<String> NETWORK_QUALITY_TO_STRING_MAP = new SparseArray<>();

    static {
        NETWORK_QUALITY_TO_STRING_MAP.put(NETWORK_QUALITY_ANY, "NETWORK_QUALITY_ANY");
        NETWORK_QUALITY_TO_STRING_MAP.put(NETWORK_QUALITY_OK, "NETWORK_QUALITY_OK");
    }

    /** @hide */
    @Retention(RetentionPolicy.SOURCE)
    @IntDef({NETWORK_QUALITY_OK, NETWORK_QUALITY_ANY})
    public @interface NetworkQuality {}

    /**
    /**
     * Used to configure the matching criteria of a network characteristic. This may include network
     * Used to configure the matching criteria of a network characteristic. This may include network
     * capabilities, or cellular subscription information. Denotes that networks with or without the
     * capabilities, or cellular subscription information. Denotes that networks with or without the
@@ -103,44 +86,73 @@ public abstract class VcnUnderlyingNetworkTemplate {
    private final int mNetworkPriorityType;
    private final int mNetworkPriorityType;


    /** @hide */
    /** @hide */
    static final String NETWORK_QUALITY_KEY = "mNetworkQuality";
    static final String METERED_MATCH_KEY = "mMeteredMatchCriteria";


    private final int mNetworkQuality;
    private final int mMeteredMatchCriteria;


    /** @hide */
    /** @hide */
    static final String METERED_MATCH_KEY = "mMeteredMatchCriteria";
    public static final int DEFAULT_MIN_BANDWIDTH_KBPS = 0;


    private final int mMeteredMatchCriteria;
    /** @hide */
    static final String MIN_ENTRY_UPSTREAM_BANDWIDTH_KBPS_KEY = "mMinEntryUpstreamBandwidthKbps";

    private final int mMinEntryUpstreamBandwidthKbps;

    /** @hide */
    static final String MIN_EXIT_UPSTREAM_BANDWIDTH_KBPS_KEY = "mMinExitUpstreamBandwidthKbps";

    private final int mMinExitUpstreamBandwidthKbps;

    /** @hide */
    static final String MIN_ENTRY_DOWNSTREAM_BANDWIDTH_KBPS_KEY =
            "mMinEntryDownstreamBandwidthKbps";

    private final int mMinEntryDownstreamBandwidthKbps;

    /** @hide */
    static final String MIN_EXIT_DOWNSTREAM_BANDWIDTH_KBPS_KEY = "mMinExitDownstreamBandwidthKbps";

    private final int mMinExitDownstreamBandwidthKbps;


    /** @hide */
    /** @hide */
    VcnUnderlyingNetworkTemplate(
    VcnUnderlyingNetworkTemplate(
            int networkPriorityType, int networkQuality, int meteredMatchCriteria) {
            int networkPriorityType,
            int meteredMatchCriteria,
            int minEntryUpstreamBandwidthKbps,
            int minExitUpstreamBandwidthKbps,
            int minEntryDownstreamBandwidthKbps,
            int minExitDownstreamBandwidthKbps) {
        mNetworkPriorityType = networkPriorityType;
        mNetworkPriorityType = networkPriorityType;
        mNetworkQuality = networkQuality;
        mMeteredMatchCriteria = meteredMatchCriteria;
        mMeteredMatchCriteria = meteredMatchCriteria;
        mMinEntryUpstreamBandwidthKbps = minEntryUpstreamBandwidthKbps;
        mMinExitUpstreamBandwidthKbps = minExitUpstreamBandwidthKbps;
        mMinEntryDownstreamBandwidthKbps = minEntryDownstreamBandwidthKbps;
        mMinExitDownstreamBandwidthKbps = minExitDownstreamBandwidthKbps;
    }
    }


    /** @hide */
    /** @hide */
    static void validateNetworkQuality(int networkQuality) {
    static void validateMatchCriteria(int matchCriteria, String matchingCapability) {
        Preconditions.checkArgument(
        Preconditions.checkArgument(
                networkQuality == NETWORK_QUALITY_ANY || networkQuality == NETWORK_QUALITY_OK,
                MATCH_CRITERIA_TO_STRING_MAP.contains(matchCriteria),
                "Invalid networkQuality:" + networkQuality);
                "Invalid matching criteria: " + matchCriteria + " for " + matchingCapability);
    }
    }


    /** @hide */
    /** @hide */
    static void validateMatchCriteria(int meteredMatchCriteria, String matchingCapability) {
    static void validateMinBandwidthKbps(int minEntryBandwidth, int minExitBandwidth) {
        Preconditions.checkArgument(
        Preconditions.checkArgument(
                MATCH_CRITERIA_TO_STRING_MAP.contains(meteredMatchCriteria),
                minEntryBandwidth >= 0, "Invalid minEntryBandwidth, must be >= 0");
                "Invalid matching criteria: "
        Preconditions.checkArgument(
                        + meteredMatchCriteria
                minExitBandwidth >= 0, "Invalid minExitBandwidth, must be >= 0");
                        + " for "
        Preconditions.checkArgument(
                        + matchingCapability);
                minEntryBandwidth >= minExitBandwidth,
                "Minimum entry bandwidth must be >= exit bandwidth");
    }
    }


    /** @hide */
    /** @hide */
    protected void validate() {
    protected void validate() {
        validateNetworkQuality(mNetworkQuality);
        validateMatchCriteria(mMeteredMatchCriteria, "mMeteredMatchCriteria");
        validateMatchCriteria(mMeteredMatchCriteria, "mMeteredMatchCriteria");
        validateMinBandwidthKbps(mMinEntryUpstreamBandwidthKbps, mMinExitUpstreamBandwidthKbps);
        validateMinBandwidthKbps(mMinEntryDownstreamBandwidthKbps, mMinExitDownstreamBandwidthKbps);
    }
    }


    /** @hide */
    /** @hide */
@@ -168,15 +180,24 @@ public abstract class VcnUnderlyingNetworkTemplate {
        final PersistableBundle result = new PersistableBundle();
        final PersistableBundle result = new PersistableBundle();


        result.putInt(NETWORK_PRIORITY_TYPE_KEY, mNetworkPriorityType);
        result.putInt(NETWORK_PRIORITY_TYPE_KEY, mNetworkPriorityType);
        result.putInt(NETWORK_QUALITY_KEY, mNetworkQuality);
        result.putInt(METERED_MATCH_KEY, mMeteredMatchCriteria);
        result.putInt(METERED_MATCH_KEY, mMeteredMatchCriteria);
        result.putInt(MIN_ENTRY_UPSTREAM_BANDWIDTH_KBPS_KEY, mMinEntryUpstreamBandwidthKbps);
        result.putInt(MIN_EXIT_UPSTREAM_BANDWIDTH_KBPS_KEY, mMinExitUpstreamBandwidthKbps);
        result.putInt(MIN_ENTRY_DOWNSTREAM_BANDWIDTH_KBPS_KEY, mMinEntryDownstreamBandwidthKbps);
        result.putInt(MIN_EXIT_DOWNSTREAM_BANDWIDTH_KBPS_KEY, mMinExitDownstreamBandwidthKbps);


        return result;
        return result;
    }
    }


    @Override
    @Override
    public int hashCode() {
    public int hashCode() {
        return Objects.hash(mNetworkPriorityType, mNetworkQuality, mMeteredMatchCriteria);
        return Objects.hash(
                mNetworkPriorityType,
                mMeteredMatchCriteria,
                mMinEntryUpstreamBandwidthKbps,
                mMinExitUpstreamBandwidthKbps,
                mMinEntryDownstreamBandwidthKbps,
                mMinExitDownstreamBandwidthKbps);
    }
    }


    @Override
    @Override
@@ -187,8 +208,11 @@ public abstract class VcnUnderlyingNetworkTemplate {


        final VcnUnderlyingNetworkTemplate rhs = (VcnUnderlyingNetworkTemplate) other;
        final VcnUnderlyingNetworkTemplate rhs = (VcnUnderlyingNetworkTemplate) other;
        return mNetworkPriorityType == rhs.mNetworkPriorityType
        return mNetworkPriorityType == rhs.mNetworkPriorityType
                && mNetworkQuality == rhs.mNetworkQuality
                && mMeteredMatchCriteria == rhs.mMeteredMatchCriteria
                && mMeteredMatchCriteria == rhs.mMeteredMatchCriteria;
                && mMinEntryUpstreamBandwidthKbps == rhs.mMinEntryUpstreamBandwidthKbps
                && mMinExitUpstreamBandwidthKbps == rhs.mMinExitUpstreamBandwidthKbps
                && mMinEntryDownstreamBandwidthKbps == rhs.mMinEntryDownstreamBandwidthKbps
                && mMinExitDownstreamBandwidthKbps == rhs.mMinExitDownstreamBandwidthKbps;
    }
    }


    /** @hide */
    /** @hide */
@@ -197,8 +221,8 @@ public abstract class VcnUnderlyingNetworkTemplate {
    }
    }


    /** @hide */
    /** @hide */
    static String getMatchCriteriaString(int meteredMatchCriteria) {
    static String getMatchCriteriaString(int matchCriteria) {
        return getNameString(MATCH_CRITERIA_TO_STRING_MAP, meteredMatchCriteria);
        return getNameString(MATCH_CRITERIA_TO_STRING_MAP, matchCriteria);
    }
    }


    /** @hide */
    /** @hide */
@@ -213,34 +237,63 @@ public abstract class VcnUnderlyingNetworkTemplate {
        pw.println(this.getClass().getSimpleName() + ":");
        pw.println(this.getClass().getSimpleName() + ":");
        pw.increaseIndent();
        pw.increaseIndent();


        pw.println(
                "mNetworkQuality: "
                        + getNameString(NETWORK_QUALITY_TO_STRING_MAP, mNetworkQuality));
        pw.println("mMeteredMatchCriteria: " + getMatchCriteriaString(mMeteredMatchCriteria));
        pw.println("mMeteredMatchCriteria: " + getMatchCriteriaString(mMeteredMatchCriteria));
        pw.println("mMinEntryUpstreamBandwidthKbps: " + mMinEntryUpstreamBandwidthKbps);
        pw.println("mMinExitUpstreamBandwidthKbps: " + mMinExitUpstreamBandwidthKbps);
        pw.println("mMinEntryDownstreamBandwidthKbps: " + mMinEntryDownstreamBandwidthKbps);
        pw.println("mMinExitDownstreamBandwidthKbps: " + mMinExitDownstreamBandwidthKbps);
        dumpTransportSpecificFields(pw);
        dumpTransportSpecificFields(pw);


        pw.decreaseIndent();
        pw.decreaseIndent();
    }
    }


    /**
     * Retrieve the required network quality to match this template.
     *
     * @see Builder#setNetworkQuality(int)
     * @hide
     */
    @NetworkQuality
    public int getNetworkQuality() {
        return mNetworkQuality;
    }

    /**
    /**
     * Return the matching criteria for metered networks.
     * Return the matching criteria for metered networks.
     *
     *
     * @see VcnWifiUnderlyingNetworkTemplate.Builder#setMetered(int)
     * @see VcnWifiUnderlyingNetworkTemplate.Builder#setMetered(int)
     * @see VcnCellUnderlyingNetworkTemplate.Builder#setMetered(int)
     * @see VcnCellUnderlyingNetworkTemplate.Builder#setMetered(int)
     */
     */
    @MatchCriteria
    public int getMetered() {
    public int getMetered() {
        return mMeteredMatchCriteria;
        return mMeteredMatchCriteria;
    }
    }

    /**
     * Returns the minimum entry upstream bandwidth allowed by this template.
     *
     * @see VcnWifiUnderlyingNetworkTemplate.Builder#setMinUpstreamBandwidthKbps(int, int)
     * @see VcnCellUnderlyingNetworkTemplate.Builder#setMinUpstreamBandwidthKbps(int, int)
     */
    public int getMinEntryUpstreamBandwidthKbps() {
        return mMinEntryUpstreamBandwidthKbps;
    }

    /**
     * Returns the minimum exit upstream bandwidth allowed by this template.
     *
     * @see VcnWifiUnderlyingNetworkTemplate.Builder#setMinUpstreamBandwidthKbps(int, int)
     * @see VcnCellUnderlyingNetworkTemplate.Builder#setMinUpstreamBandwidthKbps(int, int)
     */
    public int getMinExitUpstreamBandwidthKbps() {
        return mMinExitUpstreamBandwidthKbps;
    }

    /**
     * Returns the minimum entry downstream bandwidth allowed by this template.
     *
     * @see VcnWifiUnderlyingNetworkTemplate.Builder#setMinDownstreamBandwidthKbps(int, int)
     * @see VcnCellUnderlyingNetworkTemplate.Builder#setMinDownstreamBandwidthKbps(int, int)
     */
    public int getMinEntryDownstreamBandwidthKbps() {
        return mMinEntryDownstreamBandwidthKbps;
    }

    /**
     * Returns the minimum exit downstream bandwidth allowed by this template.
     *
     * @see VcnWifiUnderlyingNetworkTemplate.Builder#setMinDownstreamBandwidthKbps(int, int)
     * @see VcnCellUnderlyingNetworkTemplate.Builder#setMinDownstreamBandwidthKbps(int, int)
     */
    public int getMinExitDownstreamBandwidthKbps() {
        return mMinExitDownstreamBandwidthKbps;
    }
}
}
+117 −25

File changed.

Preview size limit exceeded, changes collapsed.

Loading