Merge "Support parsing VcnGatewayConnectionConfig without UnderlyingNetworkPriorities" am: 1a0f225c83 am: b3a9bce506
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1915377 Change-Id: I5db17a735ba43fe3e75eb244dc9c78ec42b91a19
This commit is contained in:
@@ -198,7 +198,10 @@ public final class VcnGatewayConnectionConfig {
|
|||||||
private static final String EXPOSED_CAPABILITIES_KEY = "mExposedCapabilities";
|
private static final String EXPOSED_CAPABILITIES_KEY = "mExposedCapabilities";
|
||||||
@NonNull private final SortedSet<Integer> 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;
|
@NonNull private final LinkedHashSet<VcnUnderlyingNetworkPriority> mUnderlyingNetworkPriorities;
|
||||||
|
|
||||||
private static final String MAX_MTU_KEY = "mMaxMtu";
|
private static final String MAX_MTU_KEY = "mMaxMtu";
|
||||||
@@ -229,6 +232,8 @@ public final class VcnGatewayConnectionConfig {
|
|||||||
validate();
|
validate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Null check MUST be done for all new fields added to VcnGatewayConnectionConfig, to avoid
|
||||||
|
// crashes when parsing PersistableBundle built on old platforms.
|
||||||
/** @hide */
|
/** @hide */
|
||||||
@VisibleForTesting(visibility = Visibility.PRIVATE)
|
@VisibleForTesting(visibility = Visibility.PRIVATE)
|
||||||
public VcnGatewayConnectionConfig(@NonNull PersistableBundle in) {
|
public VcnGatewayConnectionConfig(@NonNull PersistableBundle in) {
|
||||||
@@ -239,19 +244,30 @@ public final class VcnGatewayConnectionConfig {
|
|||||||
|
|
||||||
final PersistableBundle exposedCapsBundle =
|
final PersistableBundle exposedCapsBundle =
|
||||||
in.getPersistableBundle(EXPOSED_CAPABILITIES_KEY);
|
in.getPersistableBundle(EXPOSED_CAPABILITIES_KEY);
|
||||||
final PersistableBundle networkPrioritiesBundle =
|
|
||||||
in.getPersistableBundle(UNDERLYING_NETWORK_PRIORITIES_KEY);
|
|
||||||
|
|
||||||
mGatewayConnectionName = in.getString(GATEWAY_CONNECTION_NAME_KEY);
|
mGatewayConnectionName = in.getString(GATEWAY_CONNECTION_NAME_KEY);
|
||||||
mTunnelConnectionParams =
|
mTunnelConnectionParams =
|
||||||
TunnelConnectionParamsUtils.fromPersistableBundle(tunnelConnectionParamsBundle);
|
TunnelConnectionParamsUtils.fromPersistableBundle(tunnelConnectionParamsBundle);
|
||||||
mExposedCapabilities = new TreeSet<>(PersistableBundleUtils.toList(
|
mExposedCapabilities = new TreeSet<>(PersistableBundleUtils.toList(
|
||||||
exposedCapsBundle, PersistableBundleUtils.INTEGER_DESERIALIZER));
|
exposedCapsBundle, PersistableBundleUtils.INTEGER_DESERIALIZER));
|
||||||
mUnderlyingNetworkPriorities =
|
|
||||||
new LinkedHashSet<>(
|
final PersistableBundle networkPrioritiesBundle =
|
||||||
PersistableBundleUtils.toList(
|
in.getPersistableBundle(UNDERLYING_NETWORK_PRIORITIES_KEY);
|
||||||
networkPrioritiesBundle,
|
|
||||||
VcnUnderlyingNetworkPriority::fromPersistableBundle));
|
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);
|
mRetryIntervalsMs = in.getLongArray(RETRY_INTERVAL_MS_KEY);
|
||||||
mMaxMtu = in.getInt(MAX_MTU_KEY);
|
mMaxMtu = in.getInt(MAX_MTU_KEY);
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,8 @@
|
|||||||
package android.net.vcn;
|
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.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.assertArrayEquals;
|
||||||
import static org.junit.Assert.assertEquals;
|
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.ipsec.ike.IkeTunnelConnectionParams;
|
||||||
import android.net.vcn.persistablebundleutils.IkeSessionParamsUtilsTest;
|
import android.net.vcn.persistablebundleutils.IkeSessionParamsUtilsTest;
|
||||||
import android.net.vcn.persistablebundleutils.TunnelConnectionParamsUtilsTest;
|
import android.net.vcn.persistablebundleutils.TunnelConnectionParamsUtilsTest;
|
||||||
|
import android.os.PersistableBundle;
|
||||||
|
|
||||||
import androidx.test.filters.SmallTest;
|
import androidx.test.filters.SmallTest;
|
||||||
import androidx.test.runner.AndroidJUnit4;
|
import androidx.test.runner.AndroidJUnit4;
|
||||||
@@ -230,6 +233,16 @@ public class VcnGatewayConnectionConfigTest {
|
|||||||
assertEquals(config, new VcnGatewayConnectionConfig(config.toPersistableBundle()));
|
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) {
|
private static IkeTunnelConnectionParams buildTunnelConnectionParams(String ikePsk) {
|
||||||
final IkeSessionParams ikeParams =
|
final IkeSessionParams ikeParams =
|
||||||
IkeSessionParamsUtilsTest.createBuilderMinimum()
|
IkeSessionParamsUtilsTest.createBuilderMinimum()
|
||||||
|
|||||||
Reference in New Issue
Block a user