Replace feature flag for N1 mode with IwlanCarrierConfig

- Remove the feature flag of feature: Update N1 mode on UI/UX change
- Replace with new IwlanCarrierConfig: KEY_UPDATE_N1_MODE_ON_UI_CHANGE_BOOL

Bug: 324888080
Test: atest IwlanTests
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:e055a25bbc9f2bf039832545fe96dea31b8390ed)
Merged-In: I6bb380bbe698e426338f5e4c26a36a39f6fdaf01
Change-Id: I6bb380bbe698e426338f5e4c26a36a39f6fdaf01
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 @@
             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 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 @@
         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 2bf967a..0259f28 100644
--- a/src/com/google/android/iwlan/IwlanDataService.java
+++ b/src/com/google/android/iwlan/IwlanDataService.java
@@ -1229,7 +1229,10 @@
 
         // 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()) {
@@ -1529,7 +1532,10 @@
                     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;
                     }
 
@@ -1542,11 +1548,14 @@
                     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 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 f5914d9..bdbe4d9 100644
--- a/test/com/google/android/iwlan/IwlanDataServiceTest.java
+++ b/test/com/google/android/iwlan/IwlanDataServiceTest.java
@@ -2146,8 +2146,12 @@
 
     @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);
@@ -2175,8 +2179,13 @@
     @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);
@@ -2208,8 +2217,13 @@
     @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);
@@ -2234,8 +2248,13 @@
 
     @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);
@@ -2246,8 +2265,13 @@
 
     @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);
@@ -2258,8 +2282,13 @@
 
     @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 =
@@ -2272,8 +2301,13 @@
 
     @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 @@
     @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 @@
     @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),