Merge "NetworkModePreference's list needs to allow values set from overlay." into rvc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
5b849d8ac8
@@ -1280,6 +1280,49 @@
|
||||
<item>"1"</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="enabled_networks_except_gsm_values" translatable="false">
|
||||
<item>"9"</item>
|
||||
<item>"0"</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="enabled_networks_except_lte_values" translatable="false">
|
||||
<item>"0"</item>
|
||||
<item>"1"</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="enabled_networks_except_gsm_lte_values" translatable="false">
|
||||
<item>"0"</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="enabled_networks_cdma_values" translatable="false">
|
||||
<item>"8"</item>
|
||||
<item>"4"</item>
|
||||
<item>"5"</item>
|
||||
<item>"10"</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="enabled_networks_cdma_no_lte_values" translatable="false">
|
||||
<item>"4"</item>
|
||||
<item>"5"</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="enabled_networks_cdma_only_lte_values" translatable="false">
|
||||
<item>"8"</item>
|
||||
<item>"10"</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="enabled_networks_tdscdma_values" translatable="false">
|
||||
<item>"22"</item>
|
||||
<item>"18"</item>
|
||||
<item>"1"</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="preferred_network_mode_values_world_mode" translatable="false">
|
||||
<item>"10"</item>
|
||||
<item>"8"</item>
|
||||
<item>"9"</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="cdma_system_select_choices">
|
||||
<!-- System select dialog screen, setting option name -->
|
||||
<item>Home only</item>
|
||||
|
@@ -43,6 +43,7 @@ import com.android.settings.network.telephony.TelephonyConstants.TelephonyManage
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
/**
|
||||
* Preference controller for "Enabled network mode"
|
||||
@@ -221,71 +222,142 @@ public class EnabledNetworkModePreferenceController extends
|
||||
|
||||
void setPreferenceEntries() {
|
||||
clearAllEntries();
|
||||
|
||||
String[] entryValues;
|
||||
int[] entryValuesInt;
|
||||
switch (getEnabledNetworkType()) {
|
||||
case ENABLED_NETWORKS_CDMA_CHOICES:
|
||||
add5gEntry(addNrToLteNetworkType(
|
||||
TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO));
|
||||
addLteEntry(TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO);
|
||||
add3gEntry(TelephonyManagerConstants.NETWORK_MODE_CDMA_EVDO);
|
||||
add1xEntry(TelephonyManagerConstants.NETWORK_MODE_CDMA_NO_EVDO);
|
||||
addGlobalEntry();
|
||||
entryValues = mContext.getResources().getStringArray(
|
||||
R.array.enabled_networks_cdma_values);
|
||||
entryValuesInt = Stream.of(entryValues).mapToInt(Integer::parseInt).toArray();
|
||||
if (entryValuesInt.length < 4) {
|
||||
throw new IllegalArgumentException(
|
||||
"ENABLED_NETWORKS_CDMA_CHOICES index error.");
|
||||
}
|
||||
add5gEntry(addNrToLteNetworkType(entryValuesInt[0]));
|
||||
addLteEntry(entryValuesInt[0]);
|
||||
add3gEntry(entryValuesInt[1]);
|
||||
add1xEntry(entryValuesInt[2]);
|
||||
addGlobalEntry(entryValuesInt[3]);
|
||||
break;
|
||||
case ENABLED_NETWORKS_CDMA_NO_LTE_CHOICES:
|
||||
add3gEntry(TelephonyManagerConstants.NETWORK_MODE_CDMA_EVDO);
|
||||
add1xEntry(TelephonyManagerConstants.NETWORK_MODE_CDMA_NO_EVDO);
|
||||
entryValues = mContext.getResources().getStringArray(
|
||||
R.array.enabled_networks_cdma_no_lte_values);
|
||||
entryValuesInt = Stream.of(entryValues).mapToInt(Integer::parseInt).toArray();
|
||||
if (entryValuesInt.length < 2) {
|
||||
throw new IllegalArgumentException(
|
||||
"ENABLED_NETWORKS_CDMA_NO_LTE_CHOICES index error.");
|
||||
}
|
||||
add3gEntry(entryValuesInt[0]);
|
||||
add1xEntry(entryValuesInt[1]);
|
||||
break;
|
||||
case ENABLED_NETWORKS_CDMA_ONLY_LTE_CHOICES:
|
||||
addLteEntry(TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO);
|
||||
addGlobalEntry();
|
||||
entryValues = mContext.getResources().getStringArray(
|
||||
R.array.enabled_networks_cdma_only_lte_values);
|
||||
entryValuesInt = Stream.of(entryValues).mapToInt(Integer::parseInt).toArray();
|
||||
if (entryValuesInt.length < 2) {
|
||||
throw new IllegalArgumentException(
|
||||
"ENABLED_NETWORKS_CDMA_ONLY_LTE_CHOICES index error.");
|
||||
}
|
||||
addLteEntry(entryValuesInt[0]);
|
||||
addGlobalEntry(entryValuesInt[1]);
|
||||
break;
|
||||
case ENABLED_NETWORKS_TDSCDMA_CHOICES:
|
||||
add5gEntry(addNrToLteNetworkType(
|
||||
TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA));
|
||||
addLteEntry(
|
||||
TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA);
|
||||
add3gEntry(TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_GSM_WCDMA);
|
||||
add2gEntry(TelephonyManagerConstants.NETWORK_MODE_GSM_ONLY);
|
||||
entryValues = mContext.getResources().getStringArray(
|
||||
R.array.enabled_networks_tdscdma_values);
|
||||
entryValuesInt = Stream.of(entryValues).mapToInt(Integer::parseInt).toArray();
|
||||
if (entryValuesInt.length < 3) {
|
||||
throw new IllegalArgumentException(
|
||||
"ENABLED_NETWORKS_TDSCDMA_CHOICES index error.");
|
||||
}
|
||||
add5gEntry(addNrToLteNetworkType(entryValuesInt[0]));
|
||||
addLteEntry(entryValuesInt[0]);
|
||||
add3gEntry(entryValuesInt[1]);
|
||||
add2gEntry(entryValuesInt[2]);
|
||||
break;
|
||||
case ENABLED_NETWORKS_EXCEPT_GSM_LTE_CHOICES:
|
||||
add3gEntry(TelephonyManagerConstants.NETWORK_MODE_WCDMA_PREF);
|
||||
entryValues = mContext.getResources().getStringArray(
|
||||
R.array.enabled_networks_except_gsm_lte_values);
|
||||
entryValuesInt = Stream.of(entryValues).mapToInt(Integer::parseInt).toArray();
|
||||
if (entryValuesInt.length < 1) {
|
||||
throw new IllegalArgumentException(
|
||||
"ENABLED_NETWORKS_EXCEPT_GSM_LTE_CHOICES index error.");
|
||||
}
|
||||
add3gEntry(entryValuesInt[0]);
|
||||
break;
|
||||
case ENABLED_NETWORKS_EXCEPT_GSM_4G_CHOICES:
|
||||
add5gEntry(addNrToLteNetworkType(
|
||||
TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA));
|
||||
add4gEntry(TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA);
|
||||
add3gEntry(TelephonyManagerConstants.NETWORK_MODE_WCDMA_PREF);
|
||||
entryValues = mContext.getResources().getStringArray(
|
||||
R.array.enabled_networks_except_gsm_values);
|
||||
entryValuesInt = Stream.of(entryValues).mapToInt(Integer::parseInt).toArray();
|
||||
if (entryValuesInt.length < 2) {
|
||||
throw new IllegalArgumentException(
|
||||
"ENABLED_NETWORKS_EXCEPT_GSM_4G_CHOICES index error.");
|
||||
}
|
||||
add5gEntry(addNrToLteNetworkType(entryValuesInt[0]));
|
||||
add4gEntry(entryValuesInt[0]);
|
||||
add3gEntry(entryValuesInt[1]);
|
||||
break;
|
||||
case ENABLED_NETWORKS_EXCEPT_GSM_CHOICES:
|
||||
add5gEntry(addNrToLteNetworkType(
|
||||
TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA));
|
||||
addLteEntry(TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA);
|
||||
add3gEntry(TelephonyManagerConstants.NETWORK_MODE_WCDMA_PREF);
|
||||
entryValues = mContext.getResources().getStringArray(
|
||||
R.array.enabled_networks_except_gsm_values);
|
||||
entryValuesInt = Stream.of(entryValues).mapToInt(Integer::parseInt).toArray();
|
||||
if (entryValuesInt.length < 2) {
|
||||
throw new IllegalArgumentException(
|
||||
"ENABLED_NETWORKS_EXCEPT_GSM_CHOICES index error.");
|
||||
}
|
||||
add5gEntry(addNrToLteNetworkType(entryValuesInt[0]));
|
||||
addLteEntry(entryValuesInt[0]);
|
||||
add3gEntry(entryValuesInt[1]);
|
||||
break;
|
||||
case ENABLED_NETWORKS_EXCEPT_LTE_CHOICES:
|
||||
add3gEntry(TelephonyManagerConstants.NETWORK_MODE_WCDMA_PREF);
|
||||
add2gEntry(TelephonyManagerConstants.NETWORK_MODE_GSM_ONLY);
|
||||
entryValues = mContext.getResources().getStringArray(
|
||||
R.array.enabled_networks_except_lte_values);
|
||||
entryValuesInt = Stream.of(entryValues).mapToInt(Integer::parseInt).toArray();
|
||||
if (entryValuesInt.length < 2) {
|
||||
throw new IllegalArgumentException(
|
||||
"ENABLED_NETWORKS_EXCEPT_LTE_CHOICES index error.");
|
||||
}
|
||||
add3gEntry(entryValuesInt[0]);
|
||||
add2gEntry(entryValuesInt[1]);
|
||||
break;
|
||||
case ENABLED_NETWORKS_4G_CHOICES:
|
||||
entryValues = mContext.getResources().getStringArray(
|
||||
R.array.enabled_networks_values);
|
||||
entryValuesInt = Stream.of(entryValues).mapToInt(Integer::parseInt).toArray();
|
||||
if (entryValuesInt.length < 3) {
|
||||
throw new IllegalArgumentException(
|
||||
"ENABLED_NETWORKS_4G_CHOICES index error.");
|
||||
}
|
||||
add5gEntry(addNrToLteNetworkType(
|
||||
TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA));
|
||||
add4gEntry(TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA);
|
||||
add3gEntry(TelephonyManagerConstants.NETWORK_MODE_WCDMA_PREF);
|
||||
add2gEntry(TelephonyManagerConstants.NETWORK_MODE_GSM_ONLY);
|
||||
entryValuesInt[0]));
|
||||
add4gEntry(entryValuesInt[0]);
|
||||
add3gEntry(entryValuesInt[1]);
|
||||
add2gEntry(entryValuesInt[2]);
|
||||
break;
|
||||
case ENABLED_NETWORKS_CHOICES:
|
||||
add5gEntry(addNrToLteNetworkType(
|
||||
TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA));
|
||||
addLteEntry(TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA);
|
||||
add3gEntry(TelephonyManagerConstants.NETWORK_MODE_WCDMA_PREF);
|
||||
add2gEntry(TelephonyManagerConstants.NETWORK_MODE_GSM_ONLY);
|
||||
entryValues = mContext.getResources().getStringArray(
|
||||
R.array.enabled_networks_values);
|
||||
entryValuesInt = Stream.of(entryValues).mapToInt(Integer::parseInt).toArray();
|
||||
if (entryValuesInt.length < 3) {
|
||||
throw new IllegalArgumentException("ENABLED_NETWORKS_CHOICES index error.");
|
||||
}
|
||||
add5gEntry(addNrToLteNetworkType(entryValuesInt[0]));
|
||||
addLteEntry(entryValuesInt[0]);
|
||||
add3gEntry(entryValuesInt[1]);
|
||||
add2gEntry(entryValuesInt[2]);
|
||||
break;
|
||||
case PREFERRED_NETWORK_MODE_CHOICES_WORLD_MODE:
|
||||
addGlobalEntry();
|
||||
entryValues = mContext.getResources().getStringArray(
|
||||
R.array.preferred_network_mode_values_world_mode);
|
||||
entryValuesInt = Stream.of(entryValues).mapToInt(Integer::parseInt).toArray();
|
||||
if (entryValuesInt.length < 3) {
|
||||
throw new IllegalArgumentException(
|
||||
"PREFERRED_NETWORK_MODE_CHOICES_WORLD_MODE index error.");
|
||||
}
|
||||
addGlobalEntry(entryValuesInt[0]);
|
||||
addCustomEntry(mContext.getString(R.string.network_world_mode_cdma_lte),
|
||||
TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO);
|
||||
entryValuesInt[1]);
|
||||
addCustomEntry(mContext.getString(R.string.network_world_mode_gsm_lte),
|
||||
TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA);
|
||||
entryValuesInt[2]);
|
||||
break;
|
||||
default:
|
||||
throw new IllegalArgumentException("Not supported enabled network types.");
|
||||
@@ -590,18 +662,15 @@ public class EnabledNetworkModePreferenceController extends
|
||||
}
|
||||
}
|
||||
|
||||
private void addGlobalEntry() {
|
||||
private void addGlobalEntry(int value) {
|
||||
Log.d(LOG_TAG, "addGlobalEntry. "
|
||||
+ " supported5GRadioAccessFamily: " + mSupported5gRadioAccessFamily
|
||||
+ " allowed5GNetworkType: " + mAllowed5gNetworkType);
|
||||
mEntries.add(mContext.getString(R.string.network_global));
|
||||
if (showNrList()) {
|
||||
mEntriesValue.add(
|
||||
TelephonyManagerConstants.NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA);
|
||||
} else {
|
||||
mEntriesValue.add(
|
||||
TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA);
|
||||
value = addNrToLteNetworkType(value);
|
||||
}
|
||||
mEntriesValue.add(value);
|
||||
}
|
||||
|
||||
private boolean showNrList() {
|
||||
|
@@ -24,6 +24,7 @@ import static com.android.settings.network.telephony.MobileNetworkUtils.getRafFr
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.mockito.ArgumentMatchers.anyInt;
|
||||
import static org.mockito.ArgumentMatchers.anyString;
|
||||
import static org.mockito.Mockito.doReturn;
|
||||
@@ -44,6 +45,7 @@ import androidx.lifecycle.LifecycleOwner;
|
||||
import androidx.preference.ListPreference;
|
||||
import androidx.preference.PreferenceScreen;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants;
|
||||
import com.android.settingslib.core.lifecycle.Lifecycle;
|
||||
|
||||
@@ -337,6 +339,49 @@ public class EnabledNetworkModePreferenceControllerTest {
|
||||
assertThat(mPreference.getSummary()).isEqualTo("2G");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void checkResource_stringArrayLength() {
|
||||
String[] entryValues = mContext.getResources().getStringArray(
|
||||
R.array.enabled_networks_cdma_values);
|
||||
assertEquals(4, entryValues.length);
|
||||
|
||||
entryValues = mContext.getResources().getStringArray(
|
||||
R.array.enabled_networks_cdma_no_lte_values);
|
||||
assertEquals(2, entryValues.length);
|
||||
|
||||
entryValues = mContext.getResources().getStringArray(
|
||||
R.array.enabled_networks_cdma_only_lte_values);
|
||||
assertEquals(2, entryValues.length);
|
||||
|
||||
entryValues = mContext.getResources().getStringArray(
|
||||
R.array.enabled_networks_tdscdma_values);
|
||||
assertEquals(3, entryValues.length);
|
||||
|
||||
entryValues = mContext.getResources().getStringArray(
|
||||
R.array.enabled_networks_except_gsm_lte_values);
|
||||
assertEquals(1, entryValues.length);
|
||||
|
||||
entryValues = mContext.getResources().getStringArray(
|
||||
R.array.enabled_networks_except_gsm_values);
|
||||
assertEquals(2, entryValues.length);
|
||||
|
||||
entryValues = mContext.getResources().getStringArray(
|
||||
R.array.enabled_networks_except_lte_values);
|
||||
assertEquals(2, entryValues.length);
|
||||
|
||||
entryValues = mContext.getResources().getStringArray(
|
||||
R.array.enabled_networks_values);
|
||||
assertEquals(3, entryValues.length);
|
||||
|
||||
entryValues = mContext.getResources().getStringArray(
|
||||
R.array.enabled_networks_values);
|
||||
assertEquals(3, entryValues.length);
|
||||
|
||||
entryValues = mContext.getResources().getStringArray(
|
||||
R.array.preferred_network_mode_values_world_mode);
|
||||
assertEquals(3, entryValues.length);
|
||||
}
|
||||
|
||||
private void mockEnabledNetworkMode(int networkMode) {
|
||||
if (networkMode == TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_GSM_WCDMA) {
|
||||
mockPhoneType(TelephonyManager.PHONE_TYPE_GSM);
|
||||
|
Reference in New Issue
Block a user