Add a config to hide the 3G option at preferred network mode UI

Add a config config_display_network_mode_3g_option to hide the 3G
option at preferred network mode UI

Bug: 261615630
Test: build pass. local test pass.
atest EnabledNetworkModePreferenceControllerTest

Change-Id: I4f94971add1d1eddc9f7c7458b8fc8fdcec3935e
(cherry picked from commit f7685dd715)
Merged-In: I4f94971add1d1eddc9f7c7458b8fc8fdcec3935e
This commit is contained in:
SongFerngWang
2023-02-08 06:12:54 +08:00
committed by SongFerng Wang
parent a48f8944f9
commit e85bb5058d
5 changed files with 130 additions and 74 deletions

View File

@@ -8,7 +8,8 @@ option java_outer_classname = "NetworkModeChoicesProto";
// EnabledNetworks is a list which tries to categorized the entries of popup menu // EnabledNetworks is a list which tries to categorized the entries of popup menu
// based on carrier network types available to the end user. // based on carrier network types available to the end user.
// Next tag: 13 // Next tag: 15
// TODO(b/268145152): rename the ENABLED_NETWORKS for good readability.
enum EnabledNetworks { enum EnabledNetworks {
// No EnabledNetworks specified. // No EnabledNetworks specified.
ENABLED_NETWORKS_UNSPECIFIED = 0; ENABLED_NETWORKS_UNSPECIFIED = 0;
@@ -17,39 +18,56 @@ enum EnabledNetworks {
ENABLED_NETWORKS_UNKNOWN = 1; ENABLED_NETWORKS_UNKNOWN = 1;
// For the case where CDMA is supported and LTE is not prioritized over // For the case where CDMA is supported and LTE is not prioritized over
// CDMA. // CDMA (LTE, 3G, 1x, global).
ENABLED_NETWORKS_CDMA_CHOICES = 2; ENABLED_NETWORKS_CDMA_CHOICES = 2;
// For the case where CDMA is supported and LTE is not available. // For the case where CDMA is supported and LTE is not available.
// CDMA (3G, 1x)
ENABLED_NETWORKS_CDMA_NO_LTE_CHOICES = 3; ENABLED_NETWORKS_CDMA_NO_LTE_CHOICES = 3;
// For the case where CDMA is supported and LTE is available. // For the case where CDMA is supported and LTE is available.
// CDMA (LTE, Global)
ENABLED_NETWORKS_CDMA_ONLY_LTE_CHOICES = 4; ENABLED_NETWORKS_CDMA_ONLY_LTE_CHOICES = 4;
// For the case where TDSCDMA is primary network type. // For the case where TDSCDMA is primary network type.
// TDSCDMA (LTE, 3G, 2G)
ENABLED_NETWORKS_TDSCDMA_CHOICES = 5; ENABLED_NETWORKS_TDSCDMA_CHOICES = 5;
// For the case where GSM and LTE options are removed from the menu. // For the case where GSM and LTE options are removed from the menu.
// (3G)
ENABLED_NETWORKS_EXCEPT_GSM_LTE_CHOICES = 6; ENABLED_NETWORKS_EXCEPT_GSM_LTE_CHOICES = 6;
// For the case where GSM and 4G options are removed from the menu. // For the case where GSM option are removed from the menu. The wording of LTE is '4G'.
// (4G, 3G)
ENABLED_NETWORKS_EXCEPT_GSM_4G_CHOICES = 7; ENABLED_NETWORKS_EXCEPT_GSM_4G_CHOICES = 7;
// For the case where GSM is removed from the menu, and both 4G/LTE are not an // For the case where GSM option are removed from the menu. The wording of LTE is 'LTE'.
// option. // (LTE, 3G)
ENABLED_NETWORKS_EXCEPT_GSM_CHOICES = 8; ENABLED_NETWORKS_EXCEPT_GSM_CHOICES = 8;
// For the case where LTE is disabled. // For the case where LTE is disabled.
// (3G, 3G)
ENABLED_NETWORKS_EXCEPT_LTE_CHOICES = 9; ENABLED_NETWORKS_EXCEPT_LTE_CHOICES = 9;
// For the case where GSM related carrier with 4G/LTE supported. // For the case where GSM related carrier with 4G/LTE supported. The wording of LTE is '4G'.
// (2G, 3G, 4G)
ENABLED_NETWORKS_4G_CHOICES = 10; ENABLED_NETWORKS_4G_CHOICES = 10;
// For the case where GSM related carrier without 4G/LTE supported. // For the case where GSM related carrier with 4G/LTE supported. The wording of LTE is 'LTE'.
// (2G, 3G, LTE)
ENABLED_NETWORKS_CHOICES = 11; ENABLED_NETWORKS_CHOICES = 11;
// For the case where world mode is enabled. // For the case where world mode is enabled.
// ("Global", "LTE / CDMA", "LTE / GSM / UMTS")
PREFERRED_NETWORK_MODE_CHOICES_WORLD_MODE = 12; PREFERRED_NETWORK_MODE_CHOICES_WORLD_MODE = 12;
// For the case where GSM, 3G options are removed from the menu. The wording of LTE is '4G'.
// (4G)
ENABLED_NETWORKS_4G_CHOICES_EXCEPT_GSM_3G = 13;
// For the case where GSM and 3G are removed from the menu. The wording of LTE is 'LTE'.
// (LTE)
ENABLED_NETWORKS_CHOICES_EXCEPT_GSM_3G = 14;
} }
// A request for popup menu. // A request for popup menu.

View File

@@ -1374,6 +1374,10 @@
<item>"0"</item> <item>"0"</item>
</string-array> </string-array>
<string-array name="enabled_networks_except_gsm_3g_values" translatable="false">
<item>"9"</item>
</string-array>
<string-array name="enabled_networks_except_lte_values" translatable="false"> <string-array name="enabled_networks_except_lte_values" translatable="false">
<item>"0"</item> <item>"0"</item>
<item>"1"</item> <item>"1"</item>

View File

@@ -671,4 +671,6 @@
<!-- Control messages displayed during enrollment --> <!-- Control messages displayed during enrollment -->
<bool name="enrollment_message_display_controller_flag">false</bool> <bool name="enrollment_message_display_controller_flag">false</bool>
<!-- Whether to display the 3G option at network mode.-->
<bool name="config_display_network_mode_3g_option">true</bool>
</resources> </resources>

View File

@@ -101,6 +101,7 @@ public class EnabledNetworkModePreferenceController extends
return visible ? AVAILABLE : CONDITIONALLY_UNAVAILABLE; return visible ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
} }
protected boolean isCallStateIdle() { protected boolean isCallStateIdle() {
return mCallState == TelephonyManager.CALL_STATE_IDLE; return mCallState == TelephonyManager.CALL_STATE_IDLE;
} }
@@ -198,6 +199,9 @@ public class EnabledNetworkModePreferenceController extends
private boolean mIs5gEntryDisplayed; private boolean mIs5gEntryDisplayed;
private boolean mShow4gForLTE; private boolean mShow4gForLTE;
private boolean mSupported5gRadioAccessFamily; private boolean mSupported5gRadioAccessFamily;
private boolean mDisplay2gOptions;
private boolean mDisplay3gOptions;
private boolean mLteEnabled;
private int mSelectedEntry; private int mSelectedEntry;
private int mSubId; private int mSubId;
private String mSummary; private String mSummary;
@@ -224,23 +228,32 @@ public class EnabledNetworkModePreferenceController extends
mSupported5gRadioAccessFamily = checkSupportedRadioBitmask( mSupported5gRadioAccessFamily = checkSupportedRadioBitmask(
mTelephonyManager.getSupportedRadioAccessFamily(), mTelephonyManager.getSupportedRadioAccessFamily(),
TelephonyManager.NETWORK_TYPE_BITMASK_NR); TelephonyManager.NETWORK_TYPE_BITMASK_NR);
mIsGlobalCdma = mTelephonyManager.isLteCdmaEvdoGsmWcdmaEnabled() if (carrierConfig != null) {
&& carrierConfig != null mIsGlobalCdma = mTelephonyManager.isLteCdmaEvdoGsmWcdmaEnabled()
&& carrierConfig.getBoolean(CarrierConfigManager.KEY_SHOW_CDMA_CHOICES_BOOL); && carrierConfig.getBoolean(
mShow4gForLTE = carrierConfig != null && carrierConfig.getBoolean( CarrierConfigManager.KEY_SHOW_CDMA_CHOICES_BOOL);
CarrierConfigManager.KEY_SHOW_4G_FOR_LTE_DATA_ICON_BOOL); mShow4gForLTE = carrierConfig.getBoolean(
CarrierConfigManager.KEY_SHOW_4G_FOR_LTE_DATA_ICON_BOOL);
mDisplay2gOptions = carrierConfig.getBoolean(
CarrierConfigManager.KEY_PREFER_2G_BOOL);
// TODO: Using the carrier config.
mDisplay3gOptions = getResourcesForSubId().getBoolean(
R.bool.config_display_network_mode_3g_option);
mLteEnabled = carrierConfig.getBoolean(CarrierConfigManager.KEY_LTE_ENABLED_BOOL);
}
Log.d(LOG_TAG, "PreferenceEntriesBuilder: subId" + mSubId Log.d(LOG_TAG, "PreferenceEntriesBuilder: subId" + mSubId
+ ",Supported5gRadioAccessFamily :" + mSupported5gRadioAccessFamily + " ,Supported5gRadioAccessFamily :" + mSupported5gRadioAccessFamily
+ ",mAllowed5gNetworkType :" + mAllowed5gNetworkType + " ,mAllowed5gNetworkType :" + mAllowed5gNetworkType
+ ",IsGlobalCdma :" + mIsGlobalCdma + " ,IsGlobalCdma :" + mIsGlobalCdma
+ ",Show4gForLTE :" + mShow4gForLTE); + " ,Display2gOptions:" + mDisplay2gOptions
+ " ,Display3gOptions:" + mDisplay3gOptions
+ " ,Display4gOptions" + mLteEnabled
+ " ,Show4gForLTE :" + mShow4gForLTE);
} }
void setPreferenceEntries() { void setPreferenceEntries() {
mTelephonyManager = mTelephonyManager.createForSubscriptionId(mSubId); mTelephonyManager = mTelephonyManager.createForSubscriptionId(mSubId);
final PersistableBundle carrierConfig = mCarrierConfigCache.getConfigForSubId(mSubId);
final boolean display2gOptions = carrierConfig
.getBoolean(CarrierConfigManager.KEY_PREFER_2G_BOOL);
clearAllEntries(); clearAllEntries();
UiOptions.Builder uiOptions = UiOptions.newBuilder(); UiOptions.Builder uiOptions = UiOptions.newBuilder();
uiOptions.setType(getEnabledNetworkType()); uiOptions.setType(getEnabledNetworkType());
@@ -316,6 +329,16 @@ public class EnabledNetworkModePreferenceController extends
.addFormat(UiOptions.PresentFormat.addWorldModeCdmaEntry) .addFormat(UiOptions.PresentFormat.addWorldModeCdmaEntry)
.addFormat(UiOptions.PresentFormat.addWorldModeGsmEntry); .addFormat(UiOptions.PresentFormat.addWorldModeGsmEntry);
break; break;
case ENABLED_NETWORKS_4G_CHOICES_EXCEPT_GSM_3G:
uiOptions = uiOptions
.setChoices(R.array.enabled_networks_except_gsm_3g_values)
.addFormat(UiOptions.PresentFormat.add5gAnd4gEntry);
break;
case ENABLED_NETWORKS_CHOICES_EXCEPT_GSM_3G:
uiOptions = uiOptions
.setChoices(R.array.enabled_networks_values)
.addFormat(UiOptions.PresentFormat.add5gAndLteEntry);
break;
default: default:
throw new IllegalArgumentException("Not supported enabled network types."); throw new IllegalArgumentException("Not supported enabled network types.");
} }
@@ -331,53 +354,55 @@ public class EnabledNetworkModePreferenceController extends
// Compose options based on given values and formats. // Compose options based on given values and formats.
IntStream.range(0, formatList.size()).forEach(entryIndex -> { IntStream.range(0, formatList.size()).forEach(entryIndex -> {
switch (formatList.get(entryIndex)) { switch (formatList.get(entryIndex)) {
case add1xEntry: case add1xEntry:
if (display2gOptions) { if (mDisplay2gOptions) {
add1xEntry(entryValuesInt[entryIndex]); add1xEntry(entryValuesInt[entryIndex]);
} }
break; break;
case add2gEntry: case add2gEntry:
if (display2gOptions) { if (mDisplay2gOptions) {
add2gEntry(entryValuesInt[entryIndex]); add2gEntry(entryValuesInt[entryIndex]);
} }
break; break;
case add3gEntry: case add3gEntry:
add3gEntry(entryValuesInt[entryIndex]); if (mDisplay3gOptions) {
break; add3gEntry(entryValuesInt[entryIndex]);
case addGlobalEntry: }
addGlobalEntry(entryValuesInt[entryIndex]); break;
break; case addGlobalEntry:
case addWorldModeCdmaEntry: addGlobalEntry(entryValuesInt[entryIndex]);
addCustomEntry( break;
getResourcesForSubId().getString( case addWorldModeCdmaEntry:
R.string.network_world_mode_cdma_lte), addCustomEntry(
entryValuesInt[entryIndex]); getResourcesForSubId().getString(
break; R.string.network_world_mode_cdma_lte),
case addWorldModeGsmEntry: entryValuesInt[entryIndex]);
addCustomEntry( break;
getResourcesForSubId().getString( case addWorldModeGsmEntry:
R.string.network_world_mode_gsm_lte), addCustomEntry(
entryValuesInt[entryIndex]); getResourcesForSubId().getString(
break; R.string.network_world_mode_gsm_lte),
case add4gEntry: entryValuesInt[entryIndex]);
add4gEntry(entryValuesInt[entryIndex]); break;
break; case add4gEntry:
case addLteEntry: add4gEntry(entryValuesInt[entryIndex]);
addLteEntry(entryValuesInt[entryIndex]); break;
break; case addLteEntry:
case add5gEntry: addLteEntry(entryValuesInt[entryIndex]);
add5gEntry(addNrToLteNetworkType(entryValuesInt[entryIndex])); break;
break; case add5gEntry:
case add5gAnd4gEntry: add5gEntry(addNrToLteNetworkType(entryValuesInt[entryIndex]));
add5gEntry(addNrToLteNetworkType(entryValuesInt[entryIndex])); break;
add4gEntry(entryValuesInt[entryIndex]); case add5gAnd4gEntry:
break; add5gEntry(addNrToLteNetworkType(entryValuesInt[entryIndex]));
case add5gAndLteEntry: add4gEntry(entryValuesInt[entryIndex]);
add5gEntry(addNrToLteNetworkType(entryValuesInt[entryIndex])); break;
addLteEntry(entryValuesInt[entryIndex]); case add5gAndLteEntry:
break; add5gEntry(addNrToLteNetworkType(entryValuesInt[entryIndex]));
default: addLteEntry(entryValuesInt[entryIndex]);
throw new IllegalArgumentException("Not supported ui options format."); break;
default:
throw new IllegalArgumentException("Not supported ui options format.");
} }
}); });
} }
@@ -397,7 +422,6 @@ public class EnabledNetworkModePreferenceController extends
private EnabledNetworks getEnabledNetworkType() { private EnabledNetworks getEnabledNetworkType() {
EnabledNetworks enabledNetworkType = EnabledNetworks.ENABLED_NETWORKS_UNKNOWN; EnabledNetworks enabledNetworkType = EnabledNetworks.ENABLED_NETWORKS_UNKNOWN;
final int phoneType = mTelephonyManager.getPhoneType(); final int phoneType = mTelephonyManager.getPhoneType();
final PersistableBundle carrierConfig = mCarrierConfigCache.getConfigForSubId(mSubId);
if (phoneType == TelephonyManager.PHONE_TYPE_CDMA) { if (phoneType == TelephonyManager.PHONE_TYPE_CDMA) {
final int lteForced = android.provider.Settings.Global.getInt( final int lteForced = android.provider.Settings.Global.getInt(
@@ -432,17 +456,17 @@ public class EnabledNetworkModePreferenceController extends
} else if (phoneType == TelephonyManager.PHONE_TYPE_GSM) { } else if (phoneType == TelephonyManager.PHONE_TYPE_GSM) {
if (MobileNetworkUtils.isTdscdmaSupported(mContext, mSubId)) { if (MobileNetworkUtils.isTdscdmaSupported(mContext, mSubId)) {
enabledNetworkType = EnabledNetworks.ENABLED_NETWORKS_TDSCDMA_CHOICES; enabledNetworkType = EnabledNetworks.ENABLED_NETWORKS_TDSCDMA_CHOICES;
} else if (carrierConfig != null } else if (!mDisplay2gOptions && !mDisplay3gOptions) {
&& !carrierConfig.getBoolean(CarrierConfigManager.KEY_PREFER_2G_BOOL) enabledNetworkType = mShow4gForLTE
&& !carrierConfig.getBoolean(CarrierConfigManager.KEY_LTE_ENABLED_BOOL)) { ? EnabledNetworks.ENABLED_NETWORKS_4G_CHOICES_EXCEPT_GSM_3G
: EnabledNetworks.ENABLED_NETWORKS_CHOICES_EXCEPT_GSM_3G;
} else if (!mDisplay2gOptions && !mLteEnabled) {
enabledNetworkType = EnabledNetworks.ENABLED_NETWORKS_EXCEPT_GSM_LTE_CHOICES; enabledNetworkType = EnabledNetworks.ENABLED_NETWORKS_EXCEPT_GSM_LTE_CHOICES;
} else if (carrierConfig != null } else if (!mDisplay2gOptions) {
&& !carrierConfig.getBoolean(CarrierConfigManager.KEY_PREFER_2G_BOOL)) {
enabledNetworkType = mShow4gForLTE enabledNetworkType = mShow4gForLTE
? EnabledNetworks.ENABLED_NETWORKS_EXCEPT_GSM_4G_CHOICES ? EnabledNetworks.ENABLED_NETWORKS_EXCEPT_GSM_4G_CHOICES
: EnabledNetworks.ENABLED_NETWORKS_EXCEPT_GSM_CHOICES; : EnabledNetworks.ENABLED_NETWORKS_EXCEPT_GSM_CHOICES;
} else if (carrierConfig != null } else if (!mLteEnabled) {
&& !carrierConfig.getBoolean(CarrierConfigManager.KEY_LTE_ENABLED_BOOL)) {
enabledNetworkType = EnabledNetworks.ENABLED_NETWORKS_EXCEPT_LTE_CHOICES; enabledNetworkType = EnabledNetworks.ENABLED_NETWORKS_EXCEPT_LTE_CHOICES;
} else if (mIsGlobalCdma) { } else if (mIsGlobalCdma) {
enabledNetworkType = EnabledNetworks.ENABLED_NETWORKS_CDMA_CHOICES; enabledNetworkType = EnabledNetworks.ENABLED_NETWORKS_CDMA_CHOICES;
@@ -457,6 +481,13 @@ public class EnabledNetworkModePreferenceController extends
enabledNetworkType = EnabledNetworks.PREFERRED_NETWORK_MODE_CHOICES_WORLD_MODE; enabledNetworkType = EnabledNetworks.PREFERRED_NETWORK_MODE_CHOICES_WORLD_MODE;
} }
if (phoneType == TelephonyManager.PHONE_TYPE_NONE) {
Log.d(LOG_TAG, "phoneType: PHONE_TYPE_NONE");
enabledNetworkType = mShow4gForLTE
? EnabledNetworks.ENABLED_NETWORKS_4G_CHOICES_EXCEPT_GSM_3G
: EnabledNetworks.ENABLED_NETWORKS_CHOICES_EXCEPT_GSM_3G;
}
Log.d(LOG_TAG, "enabledNetworkType: " + enabledNetworkType); Log.d(LOG_TAG, "enabledNetworkType: " + enabledNetworkType);
return enabledNetworkType; return enabledNetworkType;
} }

View File

@@ -497,6 +497,7 @@ public class EnabledNetworkModePreferenceControllerTest {
mPersistableBundle.putBoolean(CarrierConfigManager.KEY_PREFER_2G_BOOL, true); mPersistableBundle.putBoolean(CarrierConfigManager.KEY_PREFER_2G_BOOL, true);
mPersistableBundle.putBoolean(CarrierConfigManager.KEY_LTE_ENABLED_BOOL, true); mPersistableBundle.putBoolean(CarrierConfigManager.KEY_LTE_ENABLED_BOOL, true);
} }
mController.init(SUB_ID);
} }
private void mockAllowedNetworkTypes(long allowedNetworkType) { private void mockAllowedNetworkTypes(long allowedNetworkType) {