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

Commit b3a9bce5 authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Support parsing VcnGatewayConnectionConfig without...

Merge "Support parsing VcnGatewayConnectionConfig without UnderlyingNetworkPriorities" am: 1a0f225c

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

Change-Id: I45c09a92c06df520711b935f3fdf9b096125953a
parents 8ae74e00 1a0f225c
Loading
Loading
Loading
Loading
+25 −9
Original line number Diff line number Diff line
@@ -198,7 +198,10 @@ public final class VcnGatewayConnectionConfig {
    private static final String EXPOSED_CAPABILITIES_KEY = "mExposedCapabilities";
    @NonNull private final SortedSet<Integer> mExposedCapabilities;

    private static final String UNDERLYING_NETWORK_PRIORITIES_KEY = "mUnderlyingNetworkPriorities";
    /** @hide */
    @VisibleForTesting(visibility = Visibility.PRIVATE)
    public static final String UNDERLYING_NETWORK_PRIORITIES_KEY = "mUnderlyingNetworkPriorities";

    @NonNull private final LinkedHashSet<VcnUnderlyingNetworkPriority> mUnderlyingNetworkPriorities;

    private static final String MAX_MTU_KEY = "mMaxMtu";
@@ -229,6 +232,8 @@ public final class VcnGatewayConnectionConfig {
        validate();
    }

    // Null check MUST be done for all new fields added to VcnGatewayConnectionConfig, to avoid
    // crashes when parsing PersistableBundle built on old platforms.
    /** @hide */
    @VisibleForTesting(visibility = Visibility.PRIVATE)
    public VcnGatewayConnectionConfig(@NonNull PersistableBundle in) {
@@ -239,19 +244,30 @@ public final class VcnGatewayConnectionConfig {

        final PersistableBundle exposedCapsBundle =
                in.getPersistableBundle(EXPOSED_CAPABILITIES_KEY);
        final PersistableBundle networkPrioritiesBundle =
                in.getPersistableBundle(UNDERLYING_NETWORK_PRIORITIES_KEY);

        mGatewayConnectionName = in.getString(GATEWAY_CONNECTION_NAME_KEY);
        mTunnelConnectionParams =
                TunnelConnectionParamsUtils.fromPersistableBundle(tunnelConnectionParamsBundle);
        mExposedCapabilities = new TreeSet<>(PersistableBundleUtils.toList(
                exposedCapsBundle, PersistableBundleUtils.INTEGER_DESERIALIZER));

        final PersistableBundle networkPrioritiesBundle =
                in.getPersistableBundle(UNDERLYING_NETWORK_PRIORITIES_KEY);

        if (networkPrioritiesBundle == null) {
            // UNDERLYING_NETWORK_PRIORITIES_KEY was added in Android T. Thus
            // VcnGatewayConnectionConfig created on old platforms will not have this data and will
            // be assigned with the default value
            mUnderlyingNetworkPriorities =
                    new LinkedHashSet<>(DEFAULT_UNDERLYING_NETWORK_PRIORITIES);

        } else {
            mUnderlyingNetworkPriorities =
                    new LinkedHashSet<>(
                            PersistableBundleUtils.toList(
                                    networkPrioritiesBundle,
                                    VcnUnderlyingNetworkPriority::fromPersistableBundle));
        }

        mRetryIntervalsMs = in.getLongArray(RETRY_INTERVAL_MS_KEY);
        mMaxMtu = in.getInt(MAX_MTU_KEY);

+13 −0
Original line number Diff line number Diff line
@@ -17,6 +17,8 @@
package android.net.vcn;

import static android.net.ipsec.ike.IkeSessionParams.IKE_OPTION_MOBIKE;
import static android.net.vcn.VcnGatewayConnectionConfig.DEFAULT_UNDERLYING_NETWORK_PRIORITIES;
import static android.net.vcn.VcnGatewayConnectionConfig.UNDERLYING_NETWORK_PRIORITIES_KEY;

import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
@@ -30,6 +32,7 @@ import android.net.ipsec.ike.IkeSessionParams;
import android.net.ipsec.ike.IkeTunnelConnectionParams;
import android.net.vcn.persistablebundleutils.IkeSessionParamsUtilsTest;
import android.net.vcn.persistablebundleutils.TunnelConnectionParamsUtilsTest;
import android.os.PersistableBundle;

import androidx.test.filters.SmallTest;
import androidx.test.runner.AndroidJUnit4;
@@ -230,6 +233,16 @@ public class VcnGatewayConnectionConfigTest {
        assertEquals(config, new VcnGatewayConnectionConfig(config.toPersistableBundle()));
    }

    @Test
    public void testParsePersistableBundleWithoutVcnUnderlyingNetworkPriorities() {
        PersistableBundle configBundle = buildTestConfig().toPersistableBundle();
        configBundle.putPersistableBundle(UNDERLYING_NETWORK_PRIORITIES_KEY, null);

        final VcnGatewayConnectionConfig config = new VcnGatewayConnectionConfig(configBundle);
        assertEquals(
                DEFAULT_UNDERLYING_NETWORK_PRIORITIES, config.getVcnUnderlyingNetworkPriorities());
    }

    private static IkeTunnelConnectionParams buildTunnelConnectionParams(String ikePsk) {
        final IkeSessionParams ikeParams =
                IkeSessionParamsUtilsTest.createBuilderMinimum()