diff options
5 files changed, 70 insertions, 20 deletions
diff --git a/src/com/google/android/iwlan/IwlanCarrierConfig.java b/src/com/google/android/iwlan/IwlanCarrierConfig.java index bb3a20f..fcaff90 100644 --- a/src/com/google/android/iwlan/IwlanCarrierConfig.java +++ b/src/com/google/android/iwlan/IwlanCarrierConfig.java @@ -42,6 +42,13 @@ public class IwlanCarrierConfig { PREFIX + "n1_mode_exclusion_for_emergency_session"; /** + * Key to decide whether N1 mode shall be enabled or disabled depending on 5G enabling status + * via the UI/UX. See {@link #DEFAULT_UPDATE_N1_MODE_ON_UI_CHANGE_BOOL} for the default value. + */ + public static final String KEY_UPDATE_N1_MODE_ON_UI_CHANGE_BOOL = + PREFIX + "update_n1_mode_on_ui_change_bool"; + + /** * Default delay in seconds for releasing the IWLAN connection after a WWAN handover. This is * the default value for {@link #KEY_HANDOVER_TO_WWAN_RELEASE_DELAY_SECOND_INT}. */ @@ -53,6 +60,12 @@ public class IwlanCarrierConfig { */ public static final boolean DEFAULT_N1_MODE_EXCLUSION_FOR_EMERGENCY_SESSION_BOOL = false; + /** + * The default value for determining whether N1 mode shall be enabled or disabled depending on + * 5G enabling status via the UI/UX. + */ + public static final boolean DEFAULT_UPDATE_N1_MODE_ON_UI_CHANGE_BOOL = true; + private static PersistableBundle mHiddenBundle = new PersistableBundle(); static { @@ -72,6 +85,8 @@ public class IwlanCarrierConfig { bundle.putBoolean( KEY_N1_MODE_EXCLUSION_FOR_EMERGENCY_SESSION_BOOL, DEFAULT_N1_MODE_EXCLUSION_FOR_EMERGENCY_SESSION_BOOL); + bundle.putBoolean( + KEY_UPDATE_N1_MODE_ON_UI_CHANGE_BOOL, DEFAULT_UPDATE_N1_MODE_ON_UI_CHANGE_BOOL); return bundle; } diff --git a/src/com/google/android/iwlan/IwlanDataService.java b/src/com/google/android/iwlan/IwlanDataService.java index b9e6271..c1c8bc3 100644 --- a/src/com/google/android/iwlan/IwlanDataService.java +++ b/src/com/google/android/iwlan/IwlanDataService.java @@ -1236,7 +1236,10 @@ public class IwlanDataService extends DataService { // TODO(b/309867756): Include N1_MODE_CAPABILITY inclusion status in metrics. private boolean needIncludeN1ModeCapability() { - if (!mFeatureFlags.updateN1ModeOnUiChange()) { + if (!IwlanCarrierConfig.getConfigBoolean( + mContext, + getSlotIndex(), + IwlanCarrierConfig.KEY_UPDATE_N1_MODE_ON_UI_CHANGE_BOOL)) { return isN1ModeSupported(); } if (!isN1ModeSupported()) { @@ -1536,7 +1539,10 @@ public class IwlanDataService extends DataService { int previousCallState = iwlanDataServiceProvider.mCallState; int currentCallState = iwlanDataServiceProvider.mCallState = msg.arg2; - if (!mFeatureFlags.updateN1ModeOnUiChange()) { + if (!IwlanCarrierConfig.getConfigBoolean( + mContext, + iwlanDataServiceProvider.getSlotIndex(), + IwlanCarrierConfig.KEY_UPDATE_N1_MODE_ON_UI_CHANGE_BOOL)) { break; } @@ -1549,11 +1555,14 @@ public class IwlanDataService extends DataService { break; case IwlanEventListener.PREFERRED_NETWORK_TYPE_CHANGED_EVENT: - if (!mFeatureFlags.updateN1ModeOnUiChange()) { - break; - } iwlanDataServiceProvider = (IwlanDataServiceProvider) getDataServiceProvider(msg.arg1); + if (!IwlanCarrierConfig.getConfigBoolean( + mContext, + iwlanDataServiceProvider.getSlotIndex(), + IwlanCarrierConfig.KEY_UPDATE_N1_MODE_ON_UI_CHANGE_BOOL)) { + break; + } long allowedNetworkType = (long) msg.obj; onPreferredNetworkTypeChanged(iwlanDataServiceProvider, allowedNetworkType); break; diff --git a/src/com/google/android/iwlan/IwlanEventListener.java b/src/com/google/android/iwlan/IwlanEventListener.java index 890afb4..427f4a7 100644 --- a/src/com/google/android/iwlan/IwlanEventListener.java +++ b/src/com/google/android/iwlan/IwlanEventListener.java @@ -187,10 +187,6 @@ public class IwlanEventListener { public void onAllowedNetworkTypesChanged( @TelephonyManager.AllowedNetworkTypesReason int reason, @TelephonyManager.NetworkTypeBitMask long allowedNetworkType) { - if (!mFeatureFlags.updateN1ModeOnUiChange()) { - return; - } - if (reason != TelephonyManager.ALLOWED_NETWORK_TYPES_REASON_USER) { return; } diff --git a/test/com/google/android/iwlan/IwlanDataServiceTest.java b/test/com/google/android/iwlan/IwlanDataServiceTest.java index d10e8cf..bb53780 100644 --- a/test/com/google/android/iwlan/IwlanDataServiceTest.java +++ b/test/com/google/android/iwlan/IwlanDataServiceTest.java @@ -2163,8 +2163,12 @@ public class IwlanDataServiceTest { @Test public void testMultipleAllowedNetworkTypeChangeInIdle_updateN1Mode() throws Exception { - when(mFakeFeatureFlags.updateN1ModeOnUiChange()).thenReturn(true); mockCarrierConfigForN1Mode(true); + when(IwlanCarrierConfig.getConfigBoolean( + mMockContext, + DEFAULT_SLOT_INDEX, + IwlanCarrierConfig.KEY_UPDATE_N1_MODE_ON_UI_CHANGE_BOOL)) + .thenReturn(true); mockCallState(CALL_STATE_IDLE); mockSetupDataCallWithPduSessionId(0); updatePreferredNetworkType(NETWORK_TYPE_BITMASK_NR); @@ -2192,8 +2196,13 @@ public class IwlanDataServiceTest { @Test public void testMultipleAllowedNetworkTypeChangeInCall_preferenceChanged_updateAfterCallEnds() throws Exception { - when(mFakeFeatureFlags.updateN1ModeOnUiChange()).thenReturn(true); mockCarrierConfigForN1Mode(true); + when(IwlanCarrierConfig.getConfigBoolean( + mMockContext, + DEFAULT_SLOT_INDEX, + IwlanCarrierConfig.KEY_UPDATE_N1_MODE_ON_UI_CHANGE_BOOL)) + .thenReturn(true); + mockCallState(CALL_STATE_RINGING); mockSetupDataCallWithPduSessionId(0); updatePreferredNetworkType(NETWORK_TYPE_BITMASK_NR); @@ -2225,8 +2234,13 @@ public class IwlanDataServiceTest { @Test public void testMultipleAllowedNetworkTypeChangeInCall_preferenceNotChanged_noUpdate() throws Exception { - when(mFakeFeatureFlags.updateN1ModeOnUiChange()).thenReturn(true); mockCarrierConfigForN1Mode(true); + when(IwlanCarrierConfig.getConfigBoolean( + mMockContext, + DEFAULT_SLOT_INDEX, + IwlanCarrierConfig.KEY_UPDATE_N1_MODE_ON_UI_CHANGE_BOOL)) + .thenReturn(true); + mockCallState(CALL_STATE_RINGING); mockSetupDataCallWithPduSessionId(0); updatePreferredNetworkType(NETWORK_TYPE_BITMASK_NR); @@ -2251,8 +2265,13 @@ public class IwlanDataServiceTest { @Test public void testOnAllowedNetworkTypeChange_flagDisabled_noTunnelClose() { - when(mFakeFeatureFlags.updateN1ModeOnUiChange()).thenReturn(false); mockCarrierConfigForN1Mode(true); + when(IwlanCarrierConfig.getConfigBoolean( + mMockContext, + DEFAULT_SLOT_INDEX, + IwlanCarrierConfig.KEY_UPDATE_N1_MODE_ON_UI_CHANGE_BOOL)) + .thenReturn(false); + mockCallState(CALL_STATE_IDLE); mockSetupDataCallWithPduSessionId(0); updatePreferredNetworkType(NETWORK_TYPE_BITMASK_NR); @@ -2263,8 +2282,13 @@ public class IwlanDataServiceTest { @Test public void testOnAllowedNetworkTypeChange_n1ModeNotSupported_noTunnelClose() { - when(mFakeFeatureFlags.updateN1ModeOnUiChange()).thenReturn(true); mockCarrierConfigForN1Mode(false); + when(IwlanCarrierConfig.getConfigBoolean( + mMockContext, + DEFAULT_SLOT_INDEX, + IwlanCarrierConfig.KEY_UPDATE_N1_MODE_ON_UI_CHANGE_BOOL)) + .thenReturn(true); + mockCallState(CALL_STATE_IDLE); mockSetupDataCallWithPduSessionId(0); updatePreferredNetworkType(NETWORK_TYPE_BITMASK_NR); @@ -2275,8 +2299,13 @@ public class IwlanDataServiceTest { @Test public void testN1ModeNotSupported_tunnelBringupWithNoN1ModeCapability() { - when(mFakeFeatureFlags.updateN1ModeOnUiChange()).thenReturn(true); mockCarrierConfigForN1Mode(false); + when(IwlanCarrierConfig.getConfigBoolean( + mMockContext, + DEFAULT_SLOT_INDEX, + IwlanCarrierConfig.KEY_UPDATE_N1_MODE_ON_UI_CHANGE_BOOL)) + .thenReturn(true); + mockSetupDataCallWithPduSessionId(1); ArgumentCaptor<TunnelSetupRequest> tunnelSetupRequestCaptor = @@ -2289,8 +2318,13 @@ public class IwlanDataServiceTest { @Test public void testNoN1ModeCapabilityInOngoingDataCall_newTunnelBringup_doNotIncludeN1() { - when(mFakeFeatureFlags.updateN1ModeOnUiChange()).thenReturn(true); mockCarrierConfigForN1Mode(true); + when(IwlanCarrierConfig.getConfigBoolean( + mMockContext, + DEFAULT_SLOT_INDEX, + IwlanCarrierConfig.KEY_UPDATE_N1_MODE_ON_UI_CHANGE_BOOL)) + .thenReturn(true); + mockSetupDataCallWithPduSessionId(0); ArgumentCaptor<TunnelSetupRequest> tunnelSetupRequestCaptor = diff --git a/test/com/google/android/iwlan/IwlanEventListenerTest.java b/test/com/google/android/iwlan/IwlanEventListenerTest.java index a922a10..5999872 100644 --- a/test/com/google/android/iwlan/IwlanEventListenerTest.java +++ b/test/com/google/android/iwlan/IwlanEventListenerTest.java @@ -368,8 +368,6 @@ public class IwlanEventListenerTest { @SuppressLint("MissingPermission") @Test public void testDisable5gViaUi() throws Exception { - when(mFakeFeatureFlags.updateN1ModeOnUiChange()).thenReturn(true); - when(mMockHandler.obtainMessage( eq(IwlanEventListener.PREFERRED_NETWORK_TYPE_CHANGED_EVENT), eq(DEFAULT_SLOT_INDEX), @@ -393,8 +391,6 @@ public class IwlanEventListenerTest { @SuppressLint("MissingPermission") @Test public void testEnable5gViaUi() throws Exception { - when(mFakeFeatureFlags.updateN1ModeOnUiChange()).thenReturn(true); - when(mMockHandler.obtainMessage( eq(IwlanEventListener.PREFERRED_NETWORK_TYPE_CHANGED_EVENT), eq(DEFAULT_SLOT_INDEX), |