Merge "Let network mode UI refresh when network type with carrier group changed" into sc-dev
diff --git a/src/com/android/settings/network/AllowedNetworkTypesListener.java b/src/com/android/settings/network/AllowedNetworkTypesListener.java
index 972e4d6..3d93664 100644
--- a/src/com/android/settings/network/AllowedNetworkTypesListener.java
+++ b/src/com/android/settings/network/AllowedNetworkTypesListener.java
@@ -34,7 +34,6 @@
 
     @VisibleForTesting
     OnAllowedNetworkTypesListener mListener;
-    private long mAllowedNetworkType = -1;
     private Executor mExecutor;
 
     public AllowedNetworkTypesListener(Executor executor) {
@@ -70,14 +69,14 @@
 
     @Override
     public void onAllowedNetworkTypesChanged(int reason, long newAllowedNetworkType) {
-        if (reason != TelephonyManager.ALLOWED_NETWORK_TYPES_REASON_USER) {
+        if (reason != TelephonyManager.ALLOWED_NETWORK_TYPES_REASON_USER
+                && reason != TelephonyManager.ALLOWED_NETWORK_TYPES_REASON_CARRIER) {
             return;
         }
-        if (mListener != null && mAllowedNetworkType != newAllowedNetworkType) {
+        if (mListener != null) {
             mListener.onAllowedNetworkTypesChanged();
-            Log.d(LOG_TAG, "onAllowedNetworkChanged: " + mAllowedNetworkType);
+            Log.d(LOG_TAG, "onAllowedNetworkChanged: " + newAllowedNetworkType);
         }
-        mAllowedNetworkType = newAllowedNetworkType;
     }
 
     /**
diff --git a/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java b/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java
index d39f6a4..25e0ae0 100644
--- a/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java
+++ b/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java
@@ -152,7 +152,10 @@
             mAllowedNetworkTypesListener = new AllowedNetworkTypesListener(
                     mContext.getMainExecutor());
             mAllowedNetworkTypesListener.setAllowedNetworkTypesListener(
-                    () -> updatePreference());
+                    () -> {
+                        mBuilder.updateConfig();
+                        updatePreference();
+                    });
         }
 
         lifecycle.addObserver(this);
diff --git a/tests/unit/src/com/android/settings/network/AllowedNetworkTypesListenerTest.java b/tests/unit/src/com/android/settings/network/AllowedNetworkTypesListenerTest.java
index e89a257..c18477a 100644
--- a/tests/unit/src/com/android/settings/network/AllowedNetworkTypesListenerTest.java
+++ b/tests/unit/src/com/android/settings/network/AllowedNetworkTypesListenerTest.java
@@ -68,7 +68,7 @@
     }
 
     @Test
-    public void onChange_shouldCallListener() {
+    public void onChange_userReasonChanged_shouldCallListener() {
         mAllowedNetworkTypesListener.mListener = mListener;
         long networkType = (long) RadioAccessFamily.getRafFromNetworkType(
                 TelephonyManager.NETWORK_MODE_LTE_CDMA_EVDO);
@@ -80,6 +80,18 @@
     }
 
     @Test
+    public void onChange_carrierReasonChanged_shouldCallListener() {
+        mAllowedNetworkTypesListener.mListener = mListener;
+        long networkType = (long) RadioAccessFamily.getRafFromNetworkType(
+                TelephonyManager.NETWORK_MODE_LTE_CDMA_EVDO);
+
+        mAllowedNetworkTypesListener.onAllowedNetworkTypesChanged(
+                TelephonyManager.ALLOWED_NETWORK_TYPES_REASON_CARRIER, networkType);
+
+        verify(mListener).onAllowedNetworkTypesChanged();
+    }
+
+    @Test
     public void register_shouldRegisterContentObserver() {
         mAllowedNetworkTypesListener.register(mContext, SUB_ID);