Merge tag 'android-13.0.0_r43' into int/13/fp3
Android 13.0.0 release 43
* tag 'android-13.0.0_r43':
Add control for enable/disable N1_MODE_CAPABILITY
Add control for enable/disable N1_MODE_CAPABILITY
Add control for enable/disable N1_MODE_CAPABILITY
Add control for enable/disable N1_MODE_CAPABILITY
Add control for enable/disable N1_MODE_CAPABILITY
Change-Id: Id38a0f0b3f6edc6fad0a1cf2a11bc6846165441d
diff --git a/src/com/google/android/iwlan/epdg/EpdgTunnelManager.java b/src/com/google/android/iwlan/epdg/EpdgTunnelManager.java
index 61bb270..ca2586f 100644
--- a/src/com/google/android/iwlan/epdg/EpdgTunnelManager.java
+++ b/src/com/google/android/iwlan/epdg/EpdgTunnelManager.java
@@ -1101,11 +1101,15 @@
}
}
- if (setupRequest.pduSessionId() != 0) {
- if (builder3gppParams == null) {
- builder3gppParams = new Ike3gppParams.Builder();
+ if (isN1ModeSupported()) {
+ if (setupRequest.pduSessionId() != 0) {
+ // Configures the PduSession ID in N1_MODE_CAPABILITY payload
+ // to notify the server that UE supports N1_MODE
+ if (builder3gppParams == null) {
+ builder3gppParams = new Ike3gppParams.Builder();
+ }
+ builder3gppParams.setPduSessionId((byte) setupRequest.pduSessionId());
}
- builder3gppParams.setPduSessionId((byte) setupRequest.pduSessionId());
}
if (builder3gppParams != null) {
@@ -2220,6 +2224,17 @@
}
@VisibleForTesting
+ boolean isN1ModeSupported() {
+ int[] nrCarrierCaps =
+ getConfig(CarrierConfigManager.KEY_CARRIER_NR_AVAILABILITIES_INT_ARRAY);
+ Log.d(TAG, "KEY_CARRIER_NR_AVAILABILITIES_INT_ARRAY : " + Arrays.toString(nrCarrierCaps));
+ if (Arrays.stream(nrCarrierCaps)
+ .anyMatch(cap -> cap == CarrierConfigManager.CARRIER_NR_AVAILABILITY_SA)) {
+ return true;
+ } else return false;
+ }
+
+ @VisibleForTesting
boolean isTunnelConfigContainExistApn(String apnName) {
boolean ret = mApnNameToTunnelConfig.containsKey(apnName);
return ret;
diff --git a/test/com/google/android/iwlan/epdg/EpdgTunnelManagerTest.java b/test/com/google/android/iwlan/epdg/EpdgTunnelManagerTest.java
index 72fe266..4297dbf 100644
--- a/test/com/google/android/iwlan/epdg/EpdgTunnelManagerTest.java
+++ b/test/com/google/android/iwlan/epdg/EpdgTunnelManagerTest.java
@@ -2105,4 +2105,31 @@
verify(mMockIwlanTunnelCallback, times(1)).onClosed(eq(TEST_APN_NAME), eq(error));
assertNull(mEpdgTunnelManager.getTunnelConfigForApn(TEST_APN_NAME));
}
+
+ private boolean testIsN1ModeSupported(int[] nrAvailability) {
+ PersistableBundle bundle = new PersistableBundle();
+ bundle.putIntArray(
+ CarrierConfigManager.KEY_CARRIER_NR_AVAILABILITIES_INT_ARRAY, nrAvailability);
+
+ setupMockForGetConfig(bundle);
+
+ return mEpdgTunnelManager.isN1ModeSupported();
+ }
+
+ @Test
+ public void testIsN1ModeSupportedTrue() throws Exception {
+ assertTrue(
+ testIsN1ModeSupported(
+ new int[] {
+ CarrierConfigManager.CARRIER_NR_AVAILABILITY_NSA,
+ CarrierConfigManager.CARRIER_NR_AVAILABILITY_SA
+ }));
+ }
+
+ @Test
+ public void testIsN1ModeSupportedFalse() throws Exception {
+ assertFalse(
+ testIsN1ModeSupported(
+ new int[] {CarrierConfigManager.CARRIER_NR_AVAILABILITY_NSA}));
+ }
}