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

Commit 738ed7b7 authored by Yan Yan's avatar Yan Yan
Browse files

Calculate priority based on caller configurations

Update NetworkPriorityClassifier to calculate priority
according to the VcnUnderlyingNetworkPriority list
configured in VcnGatewayConnectionConfig

Bug: 206044122
Test: atest FrameworksVcnTests(new)
Test: atest CtsVcnTestCses
Change-Id: I55afa916af44db655a568aae2488877f2c177d59
parent fee736f4
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@ import android.telephony.TelephonyManager;
import android.util.ArraySet;

import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.util.IndentingPrintWriter;
import com.android.server.vcn.util.PersistableBundleUtils;

import java.util.ArrayList;
@@ -200,6 +201,15 @@ public final class VcnCellUnderlyingNetworkPriority extends VcnUnderlyingNetwork
                && mRequireOpportunistic == rhs.mRequireOpportunistic;
    }

    /** @hide */
    @Override
    void dumpTransportSpecificFields(IndentingPrintWriter pw) {
        pw.println("mAllowedNetworkPlmnIds: " + mAllowedNetworkPlmnIds.toString());
        pw.println("mAllowedSpecificCarrierIds: " + mAllowedSpecificCarrierIds.toString());
        pw.println("mAllowRoaming: " + mAllowRoaming);
        pw.println("mRequireOpportunistic: " + mRequireOpportunistic);
    }

    /** This class is used to incrementally build WifiNetworkPriority objects. */
    public static class Builder extends VcnUnderlyingNetworkPriority.Builder<Builder> {
        @NonNull private final Set<String> mAllowedNetworkPlmnIds = new ArraySet<>();
+3 −1
Original line number Diff line number Diff line
@@ -160,7 +160,9 @@ public final class VcnGatewayConnectionConfig {
                TimeUnit.MINUTES.toMillis(15)
            };

    private static final LinkedHashSet<VcnUnderlyingNetworkPriority>
    /** @hide */
    @VisibleForTesting(visibility = Visibility.PRIVATE)
    public static final LinkedHashSet<VcnUnderlyingNetworkPriority>
            DEFAULT_UNDERLYING_NETWORK_PRIORITIES = new LinkedHashSet<>();

    static {
+34 −3
Original line number Diff line number Diff line
@@ -21,8 +21,10 @@ import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.os.PersistableBundle;
import android.util.SparseArray;

import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.util.IndentingPrintWriter;
import com.android.internal.util.Preconditions;

import java.lang.annotation.Retention;
@@ -37,10 +39,17 @@ public abstract class VcnUnderlyingNetworkPriority {
    /** @hide */
    protected static final int NETWORK_PRIORITY_TYPE_CELL = 2;

    /** Denotes that network quality needs to be OK */
    public static final int NETWORK_QUALITY_OK = 10000;
    /** Denotes that any network quality is acceptable */
    public static final int NETWORK_QUALITY_ANY = Integer.MAX_VALUE;
    public static final int NETWORK_QUALITY_ANY = 0;
    /** Denotes that network quality needs to be OK */
    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)
@@ -125,6 +134,28 @@ public abstract class VcnUnderlyingNetworkPriority {
                && mAllowMetered == rhs.mAllowMetered;
    }

    /** @hide */
    abstract void dumpTransportSpecificFields(IndentingPrintWriter pw);

    /**
     * Dumps the state of this record for logging and debugging purposes.
     *
     * @hide
     */
    public void dump(IndentingPrintWriter pw) {
        pw.println(this.getClass().getSimpleName() + ":");
        pw.increaseIndent();

        pw.println(
                "mNetworkQuality: "
                        + NETWORK_QUALITY_TO_STRING_MAP.get(
                                mNetworkQuality, "Invalid value " + mNetworkQuality));
        pw.println("mAllowMetered: " + mAllowMetered);
        dumpTransportSpecificFields(pw);

        pw.decreaseIndent();
    }

    /** Retrieve the required network quality. */
    @NetworkQuality
    public int getNetworkQuality() {
+7 −0
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import android.annotation.Nullable;
import android.os.PersistableBundle;

import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.util.IndentingPrintWriter;

import java.util.Objects;

@@ -81,6 +82,12 @@ public final class VcnWifiUnderlyingNetworkPriority extends VcnUnderlyingNetwork
        return mSsid == rhs.mSsid;
    }

    /** @hide */
    @Override
    void dumpTransportSpecificFields(IndentingPrintWriter pw) {
        pw.println("mSsid: " + mSsid);
    }

    /** Retrieve the required SSID, or {@code null} if there is no requirement on SSID. */
    @Nullable
    public String getSsid() {
+3 −1
Original line number Diff line number Diff line
@@ -686,6 +686,7 @@ public class VcnGatewayConnection extends StateMachine {
        mUnderlyingNetworkController =
                mDeps.newUnderlyingNetworkController(
                        mVcnContext,
                        mConnectionConfig,
                        subscriptionGroup,
                        mLastSnapshot,
                        mUnderlyingNetworkControllerCallback);
@@ -2364,11 +2365,12 @@ public class VcnGatewayConnection extends StateMachine {
        /** Builds a new UnderlyingNetworkController. */
        public UnderlyingNetworkController newUnderlyingNetworkController(
                VcnContext vcnContext,
                VcnGatewayConnectionConfig connectionConfig,
                ParcelUuid subscriptionGroup,
                TelephonySubscriptionSnapshot snapshot,
                UnderlyingNetworkControllerCallback callback) {
            return new UnderlyingNetworkController(
                    vcnContext, subscriptionGroup, snapshot, callback);
                    vcnContext, connectionConfig, subscriptionGroup, snapshot, callback);
        }

        /** Builds a new IkeSession. */
Loading