From 414f8b8fe6218349f93526674de8836d0a92e9ae Mon Sep 17 00:00:00 2001 From: SongFerngWang Date: Tue, 19 May 2020 20:19:16 +0800 Subject: [PATCH] Add corresponding code for the new NR condition Bug: 155915216 Test: make RunSettingsRoboTests ROBOTEST_FILTER=\ EnabledNetworkModePreferenceControllerTest (Pass) Change-Id: I171ea0a8adc621ad5e9dc5cd2090e431b923e775 --- ...nabledNetworkModePreferenceController.java | 19 +++++++++++++------ .../Enhanced4gBasePreferenceController.java | 5 ++++- ...edNetworkModePreferenceControllerTest.java | 2 ++ 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java b/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java index 6917549cb25..26c206da84a 100644 --- a/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java +++ b/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java @@ -204,13 +204,16 @@ public class EnabledNetworkModePreferenceController extends .createForSubscriptionId(mSubId); final PersistableBundle carrierConfig = mCarrierConfigManager.getConfigForSubId(mSubId); + final boolean isNrEnabledFromCarrierConfig = carrierConfig != null + && carrierConfig.getBoolean(CarrierConfigManager.KEY_NR_ENABLED_BOOL); mAllowed5gNetworkType = checkSupportedRadioBitmask( mTelephonyManager.getAllowedNetworkTypes(), TelephonyManager.NETWORK_TYPE_BITMASK_NR); - mSupported5gRadioAccessFamily = checkSupportedRadioBitmask( - mTelephonyManager.getSupportedRadioAccessFamily(), + mSupported5gRadioAccessFamily = isNrEnabledFromCarrierConfig + && checkSupportedRadioBitmask(mTelephonyManager.getSupportedRadioAccessFamily(), TelephonyManager.NETWORK_TYPE_BITMASK_NR); mIsGlobalCdma = mTelephonyManager.isLteCdmaEvdoGsmWcdmaEnabled() + && carrierConfig != null && carrierConfig.getBoolean(CarrierConfigManager.KEY_SHOW_CDMA_CHOICES_BOOL); mShow4gForLTE = carrierConfig != null && carrierConfig.getBoolean( CarrierConfigManager.KEY_SHOW_4G_FOR_LTE_DATA_ICON_BOOL); @@ -573,7 +576,7 @@ public class EnabledNetworkModePreferenceController extends */ private void add5gEntry(int value) { boolean isNRValue = value >= TelephonyManagerConstants.NETWORK_MODE_NR_ONLY; - if (mSupported5gRadioAccessFamily && mAllowed5gNetworkType && isNRValue) { + if (showNrList() && isNRValue) { mEntries.add(mContext.getString(R.string.network_5G) + mContext.getString(R.string.network_recommended)); mEntriesValue.add(value); @@ -592,7 +595,7 @@ public class EnabledNetworkModePreferenceController extends + " supported5GRadioAccessFamily: " + mSupported5gRadioAccessFamily + " allowed5GNetworkType: " + mAllowed5gNetworkType); mEntries.add(mContext.getString(R.string.network_global)); - if (mSupported5gRadioAccessFamily & mAllowed5gNetworkType) { + if (showNrList()) { mEntriesValue.add( TelephonyManagerConstants.NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA); } else { @@ -601,11 +604,15 @@ public class EnabledNetworkModePreferenceController extends } } + private boolean showNrList() { + return mSupported5gRadioAccessFamily && mAllowed5gNetworkType; + } + /** * Add LTE entry. If device supported 5G, show "LTE" instead of "LTE (recommended)". */ private void addLteEntry(int value) { - if (mSupported5gRadioAccessFamily) { + if (showNrList()) { mEntries.add(mContext.getString(R.string.network_lte_pure)); } else { mEntries.add(mContext.getString(R.string.network_lte)); @@ -617,7 +624,7 @@ public class EnabledNetworkModePreferenceController extends * Add 4G entry. If device supported 5G, show "4G" instead of "4G (recommended)". */ private void add4gEntry(int value) { - if (mSupported5gRadioAccessFamily) { + if (showNrList()) { mEntries.add(mContext.getString(R.string.network_4G_pure)); } else { mEntries.add(mContext.getString(R.string.network_4G)); diff --git a/src/com/android/settings/network/telephony/Enhanced4gBasePreferenceController.java b/src/com/android/settings/network/telephony/Enhanced4gBasePreferenceController.java index 91d01d36a1d..d6aed676d47 100644 --- a/src/com/android/settings/network/telephony/Enhanced4gBasePreferenceController.java +++ b/src/com/android/settings/network/telephony/Enhanced4gBasePreferenceController.java @@ -55,6 +55,7 @@ public class Enhanced4gBasePreferenceController extends TelephonyTogglePreferenc Preference mPreference; private PhoneCallStateListener mPhoneStateListener; private boolean mShow5gLimitedDialog; + boolean mIsNrEnabledFromCarrierConfig; private boolean mHas5gCapability; @VisibleForTesting Integer mCallState; @@ -95,6 +96,8 @@ public class Enhanced4gBasePreferenceController extends TelephonyTogglePreferenc mShow5gLimitedDialog = carrierConfig.getBoolean( CarrierConfigManager.KEY_VOLTE_5G_LIMITED_ALERT_DIALOG_BOOL); + mIsNrEnabledFromCarrierConfig = carrierConfig.getBoolean( + CarrierConfigManager.KEY_NR_ENABLED_BOOL); return this; } @@ -244,7 +247,7 @@ public class Enhanced4gBasePreferenceController extends TelephonyTogglePreferenc private boolean isDialogNeeded() { Log.d(TAG, "Has5gCapability:" + mHas5gCapability); - return mShow5gLimitedDialog && mHas5gCapability; + return mShow5gLimitedDialog && mHas5gCapability && mIsNrEnabledFromCarrierConfig; } private void show5gLimitedDialog(ImsMmTelManager imsMmTelManager) { diff --git a/tests/robotests/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceControllerTest.java index 57729ea78ea..a8188528cd6 100644 --- a/tests/robotests/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceControllerTest.java @@ -155,6 +155,7 @@ public class EnabledNetworkModePreferenceControllerTest { @Test public void updateState_5gWorldPhone_GlobalHasNr() { + mPersistableBundle.putBoolean(CarrierConfigManager.KEY_NR_ENABLED_BOOL, true); mockAccessFamily(TelephonyManager.NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA); mController.init(mLifecycle, SUB_ID); mPersistableBundle.putBoolean(CarrierConfigManager.KEY_WORLD_MODE_ENABLED_BOOL, true); @@ -168,6 +169,7 @@ public class EnabledNetworkModePreferenceControllerTest { @Test public void updateState_selectedOn5gItem() { + mPersistableBundle.putBoolean(CarrierConfigManager.KEY_NR_ENABLED_BOOL, true); mockEnabledNetworkMode(TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA); mockAccessFamily(TelephonyManager.NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA); mController.init(mLifecycle, SUB_ID);