From 74a6ffaa912d48068608959eb27ab1370a1654b7 Mon Sep 17 00:00:00 2001 From: SongFerngWang Date: Thu, 15 Jul 2021 15:01:43 +0800 Subject: [PATCH] Let network mode UI refresh when network type with carrier group changed Bug: 193432269 Test: atest AllowedNetworkTypesListenerTest (pass) atest EnabledNetworkModePreferenceControllerTest (pass) Change-Id: Icae727887b2e913479a241bb9f014607b8ec826c --- .../network/AllowedNetworkTypesListener.java | 9 ++++----- .../EnabledNetworkModePreferenceController.java | 5 ++++- .../network/AllowedNetworkTypesListenerTest.java | 14 +++++++++++++- 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/com/android/settings/network/AllowedNetworkTypesListener.java b/src/com/android/settings/network/AllowedNetworkTypesListener.java index 972e4d6aacf..3d936646059 100644 --- a/src/com/android/settings/network/AllowedNetworkTypesListener.java +++ b/src/com/android/settings/network/AllowedNetworkTypesListener.java @@ -34,7 +34,6 @@ public class AllowedNetworkTypesListener extends TelephonyCallback implements @VisibleForTesting OnAllowedNetworkTypesListener mListener; - private long mAllowedNetworkType = -1; private Executor mExecutor; public AllowedNetworkTypesListener(Executor executor) { @@ -70,14 +69,14 @@ public class AllowedNetworkTypesListener extends TelephonyCallback implements @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 d39f6a4200c..25e0ae0765b 100644 --- a/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java +++ b/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java @@ -152,7 +152,10 @@ public class EnabledNetworkModePreferenceController extends 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 e89a2575d30..c18477ab078 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 @@ public class AllowedNetworkTypesListenerTest { } @Test - public void onChange_shouldCallListener() { + public void onChange_userReasonChanged_shouldCallListener() { mAllowedNetworkTypesListener.mListener = mListener; long networkType = (long) RadioAccessFamily.getRafFromNetworkType( TelephonyManager.NETWORK_MODE_LTE_CDMA_EVDO); @@ -79,6 +79,18 @@ public class AllowedNetworkTypesListenerTest { verify(mListener).onAllowedNetworkTypesChanged(); } + @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);