From 3555e1707ae5603f180f368d0797c8ea5d1c4eba Mon Sep 17 00:00:00 2001 From: Lee Chou Date: Fri, 10 Jan 2020 16:42:20 +0800 Subject: [PATCH] Replaced reference to setPreferredNetworkType replaced with @SystemApi setPreferredNetworkTypeBitmask Bug: 147405973 Test: make RunSettingsRoboTests ROBOTEST_FILTER=EnabledNetworkModePreferenceControllerTest make RunSettingsRoboTests ROBOTEST_FILTER=PreferredNetworkModePreferenceControllerTest Change-Id: I8ae86595b104dcd16daacbf52cc8eaa5e7a3d08b --- ...nabledNetworkModePreferenceController.java | 14 +- .../network/telephony/MobileNetworkUtils.java | 147 ++++++++++++++++++ ...ferredNetworkModePreferenceController.java | 9 +- .../network/telephony/TelephonyConstants.java | 31 ++++ ...edNetworkModePreferenceControllerTest.java | 9 +- ...edNetworkModePreferenceControllerTest.java | 9 +- 6 files changed, 198 insertions(+), 21 deletions(-) diff --git a/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java b/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java index f7ed1d0e4ce..1d3073e6ee3 100644 --- a/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java +++ b/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java @@ -31,7 +31,6 @@ import android.telephony.TelephonyManager; import android.text.TextUtils; import android.util.Log; - import androidx.annotation.VisibleForTesting; import androidx.lifecycle.Lifecycle; import androidx.lifecycle.LifecycleObserver; @@ -42,8 +41,8 @@ import androidx.preference.PreferenceScreen; import com.android.internal.telephony.Phone; import com.android.internal.telephony.PhoneConstants; -import com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants; import com.android.settings.R; +import com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants; import java.util.ArrayList; import java.util.List; @@ -83,8 +82,6 @@ public class EnabledNetworkModePreferenceController extends public int getAvailabilityStatus(int subId) { boolean visible; final PersistableBundle carrierConfig = mCarrierConfigManager.getConfigForSubId(subId); - final TelephonyManager telephonyManager = TelephonyManager - .from(mContext).createForSubscriptionId(subId); if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) { visible = false; } else if (carrierConfig == null) { @@ -132,13 +129,14 @@ public class EnabledNetworkModePreferenceController extends @Override public boolean onPreferenceChange(Preference preference, Object object) { - final int settingsMode = Integer.parseInt((String) object); + final int newPreferredNetworkMode = Integer.parseInt((String) object); - if (mTelephonyManager.setPreferredNetworkType(mSubId, settingsMode)) { + if (mTelephonyManager.setPreferredNetworkTypeBitmask( + MobileNetworkUtils.getRafFromNetworkType(newPreferredNetworkMode))) { Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.PREFERRED_NETWORK_MODE + mSubId, - settingsMode); - updatePreferenceValueAndSummary((ListPreference) preference, settingsMode); + newPreferredNetworkMode); + updatePreferenceValueAndSummary((ListPreference) preference, newPreferredNetworkMode); return true; } diff --git a/src/com/android/settings/network/telephony/MobileNetworkUtils.java b/src/com/android/settings/network/telephony/MobileNetworkUtils.java index 75e0bb12698..d8883b44d19 100644 --- a/src/com/android/settings/network/telephony/MobileNetworkUtils.java +++ b/src/com/android/settings/network/telephony/MobileNetworkUtils.java @@ -653,4 +653,151 @@ public class MobileNetworkUtils { } return activeSubIds; } + + /** + * Imported from {@link android.telephony.RadioAccessFamily} + */ + public static long getRafFromNetworkType(int type) { + switch (type) { + case TelephonyManagerConstants.NETWORK_MODE_WCDMA_PREF: + return TelephonyManagerConstants.GSM + | TelephonyManagerConstants.WCDMA; + case TelephonyManagerConstants.NETWORK_MODE_GSM_ONLY: + return TelephonyManagerConstants.GSM; + case TelephonyManagerConstants.NETWORK_MODE_WCDMA_ONLY: + return TelephonyManagerConstants.WCDMA; + case TelephonyManagerConstants.NETWORK_MODE_GSM_UMTS: + return TelephonyManagerConstants.GSM + | TelephonyManagerConstants.WCDMA; + case TelephonyManagerConstants.NETWORK_MODE_CDMA_EVDO: + return TelephonyManagerConstants.CDMA + | TelephonyManagerConstants.EVDO; + case TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO: + return TelephonyManagerConstants.LTE + | TelephonyManagerConstants.CDMA + | TelephonyManagerConstants.EVDO; + case TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA: + return TelephonyManagerConstants.LTE + | TelephonyManagerConstants.GSM + | TelephonyManagerConstants.WCDMA; + case TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA: + return TelephonyManagerConstants.LTE + | TelephonyManagerConstants.CDMA + | TelephonyManagerConstants.EVDO + | TelephonyManagerConstants.GSM + | TelephonyManagerConstants.WCDMA; + case TelephonyManagerConstants.NETWORK_MODE_LTE_ONLY: + return TelephonyManagerConstants.LTE; + case TelephonyManagerConstants.NETWORK_MODE_LTE_WCDMA: + return TelephonyManagerConstants.LTE + | TelephonyManagerConstants.WCDMA; + case TelephonyManagerConstants.NETWORK_MODE_CDMA_NO_EVDO: + return TelephonyManagerConstants.CDMA; + case TelephonyManagerConstants.NETWORK_MODE_EVDO_NO_CDMA: + return TelephonyManagerConstants.EVDO; + case TelephonyManagerConstants.NETWORK_MODE_GLOBAL: + return TelephonyManagerConstants.GSM + | TelephonyManagerConstants.WCDMA + | TelephonyManagerConstants.CDMA + | TelephonyManagerConstants.EVDO; + case TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_ONLY: + return TelephonyManager.NETWORK_TYPE_BITMASK_TD_SCDMA; + case TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_WCDMA: + return TelephonyManager.NETWORK_TYPE_BITMASK_TD_SCDMA + | TelephonyManagerConstants.WCDMA; + case TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA: + return TelephonyManagerConstants.LTE + | TelephonyManager.NETWORK_TYPE_BITMASK_TD_SCDMA; + case TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_GSM: + return TelephonyManager.NETWORK_TYPE_BITMASK_TD_SCDMA + | TelephonyManagerConstants.GSM; + case TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_GSM: + return TelephonyManagerConstants.LTE + | TelephonyManager.NETWORK_TYPE_BITMASK_TD_SCDMA + | TelephonyManagerConstants.GSM; + case TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_GSM_WCDMA: + return TelephonyManager.NETWORK_TYPE_BITMASK_TD_SCDMA + | TelephonyManagerConstants.GSM + | TelephonyManagerConstants.WCDMA; + case TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_WCDMA: + return TelephonyManagerConstants.LTE + | TelephonyManager.NETWORK_TYPE_BITMASK_TD_SCDMA + | TelephonyManagerConstants.WCDMA; + case TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_GSM_WCDMA: + return TelephonyManagerConstants.LTE + | TelephonyManager.NETWORK_TYPE_BITMASK_TD_SCDMA + | TelephonyManagerConstants.GSM + | TelephonyManagerConstants.WCDMA; + case TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_CDMA_EVDO_GSM_WCDMA: + return TelephonyManager.NETWORK_TYPE_BITMASK_TD_SCDMA + | TelephonyManagerConstants.CDMA + | TelephonyManagerConstants.EVDO + | TelephonyManagerConstants.GSM + | TelephonyManagerConstants.WCDMA; + case TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA: + return TelephonyManagerConstants.LTE + | TelephonyManager.NETWORK_TYPE_BITMASK_TD_SCDMA + | TelephonyManagerConstants.CDMA + | TelephonyManagerConstants.EVDO + | TelephonyManagerConstants.GSM + | TelephonyManagerConstants.WCDMA; + case (TelephonyManagerConstants.NETWORK_MODE_NR_ONLY): + return TelephonyManagerConstants.NR; + case (TelephonyManagerConstants.NETWORK_MODE_NR_LTE): + return TelephonyManagerConstants.NR + | TelephonyManagerConstants.LTE; + case (TelephonyManagerConstants.NETWORK_MODE_NR_LTE_CDMA_EVDO): + return TelephonyManagerConstants.NR + | TelephonyManagerConstants.LTE + | TelephonyManagerConstants.CDMA + | TelephonyManagerConstants.EVDO; + case (TelephonyManagerConstants.NETWORK_MODE_NR_LTE_GSM_WCDMA): + return TelephonyManagerConstants.NR + | TelephonyManagerConstants.LTE + | TelephonyManagerConstants.GSM + | TelephonyManagerConstants.WCDMA; + case (TelephonyManagerConstants.NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA): + return TelephonyManagerConstants.NR + | TelephonyManagerConstants.LTE + | TelephonyManagerConstants.CDMA + | TelephonyManagerConstants.EVDO + | TelephonyManagerConstants.GSM + | TelephonyManagerConstants.WCDMA; + case (TelephonyManagerConstants.NETWORK_MODE_NR_LTE_WCDMA): + return TelephonyManagerConstants.NR + | TelephonyManagerConstants.LTE + | TelephonyManagerConstants.WCDMA; + case (TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA): + return TelephonyManagerConstants.NR + | TelephonyManagerConstants.LTE + | TelephonyManager.NETWORK_TYPE_BITMASK_TD_SCDMA; + case (TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_GSM): + return TelephonyManagerConstants.NR + | TelephonyManagerConstants.LTE + | TelephonyManager.NETWORK_TYPE_BITMASK_TD_SCDMA + | TelephonyManagerConstants.GSM; + case (TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_WCDMA): + return TelephonyManagerConstants.NR + | TelephonyManagerConstants.LTE + | TelephonyManager.NETWORK_TYPE_BITMASK_TD_SCDMA + | TelephonyManagerConstants.WCDMA; + case (TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA): + return TelephonyManagerConstants.NR + | TelephonyManagerConstants.LTE + | TelephonyManager.NETWORK_TYPE_BITMASK_TD_SCDMA + | TelephonyManagerConstants.GSM + | TelephonyManagerConstants.WCDMA; + case (TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA): + return TelephonyManagerConstants.NR + | TelephonyManagerConstants.LTE + | TelephonyManager.NETWORK_TYPE_BITMASK_TD_SCDMA + | TelephonyManagerConstants.CDMA + | TelephonyManagerConstants.EVDO + | TelephonyManagerConstants.GSM + | TelephonyManagerConstants.WCDMA; + + default: + return TelephonyManager.NETWORK_TYPE_BITMASK_UNKNOWN; + } + } } diff --git a/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceController.java b/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceController.java index 72be4f4c5bd..751a940aa84 100644 --- a/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceController.java +++ b/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceController.java @@ -50,8 +50,6 @@ public class PreferredNetworkModePreferenceController extends TelephonyBasePrefe @Override public int getAvailabilityStatus(int subId) { final PersistableBundle carrierConfig = mCarrierConfigManager.getConfigForSubId(subId); - final TelephonyManager telephonyManager = TelephonyManager - .from(mContext).createForSubscriptionId(subId); boolean visible; if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) { visible = false; @@ -82,12 +80,13 @@ public class PreferredNetworkModePreferenceController extends TelephonyBasePrefe @Override public boolean onPreferenceChange(Preference preference, Object object) { - final int settingsMode = Integer.parseInt((String) object); + final int newPreferredNetworkMode = Integer.parseInt((String) object); - if (mTelephonyManager.setPreferredNetworkType(mSubId, settingsMode)) { + if (mTelephonyManager.setPreferredNetworkTypeBitmask( + MobileNetworkUtils.getRafFromNetworkType(newPreferredNetworkMode))) { Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.PREFERRED_NETWORK_MODE + mSubId, - settingsMode); + newPreferredNetworkMode); return true; } diff --git a/src/com/android/settings/network/telephony/TelephonyConstants.java b/src/com/android/settings/network/telephony/TelephonyConstants.java index cfae572f329..42b57e03f20 100644 --- a/src/com/android/settings/network/telephony/TelephonyConstants.java +++ b/src/com/android/settings/network/telephony/TelephonyConstants.java @@ -17,6 +17,8 @@ package com.android.settings.network.telephony; +import android.telephony.TelephonyManager; + /** * Contains hidden constants copied from the platform. */ @@ -133,6 +135,35 @@ public class TelephonyConstants { /** NR 5G, LTE, TD-SCDMA, CDMA, EVDO, GSM and WCDMA */ public static final int NETWORK_MODE_NR_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA = 33; + + + // Grouping of RAFs + // imported from {@link android.telephony.RadioAccessFamily} + // 2G + public static final long GSM = TelephonyManager.NETWORK_TYPE_BITMASK_GSM + | TelephonyManager.NETWORK_TYPE_BITMASK_GPRS + | TelephonyManager.NETWORK_TYPE_BITMASK_EDGE; + public static final long CDMA = TelephonyManager.NETWORK_TYPE_BITMASK_CDMA + | TelephonyManager.NETWORK_TYPE_BITMASK_1xRTT; + + // 3G + public static final long EVDO = TelephonyManager.NETWORK_TYPE_BITMASK_EVDO_0 + | TelephonyManager.NETWORK_TYPE_BITMASK_EVDO_A + | TelephonyManager.NETWORK_TYPE_BITMASK_EVDO_B + | TelephonyManager.NETWORK_TYPE_BITMASK_EHRPD; + public static final long HS = TelephonyManager.NETWORK_TYPE_BITMASK_HSUPA + | TelephonyManager.NETWORK_TYPE_BITMASK_HSDPA + | TelephonyManager.NETWORK_TYPE_BITMASK_HSPA + | TelephonyManager.NETWORK_TYPE_BITMASK_HSPAP; + public static final long WCDMA = HS | TelephonyManager.NETWORK_TYPE_BITMASK_UMTS; + + // 4G + public static final long LTE = TelephonyManager.NETWORK_TYPE_BITMASK_LTE + | TelephonyManager.NETWORK_TYPE_BITMASK_LTE_CA; + + // 5G + public static final long NR = TelephonyManager.NETWORK_TYPE_BITMASK_NR; + } 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 ea96e29f0c6..d12d5432cea 100644 --- a/tests/robotests/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceControllerTest.java @@ -20,6 +20,7 @@ import static androidx.lifecycle.Lifecycle.Event.ON_START; import static com.android.settings.core.BasePreferenceController.AVAILABLE; import static com.android.settings.core.BasePreferenceController.CONDITIONALLY_UNAVAILABLE; +import static com.android.settings.network.telephony.MobileNetworkUtils.getRafFromNetworkType; import static com.google.common.truth.Truth.assertThat; @@ -392,8 +393,8 @@ public class EnabledNetworkModePreferenceControllerTest { @Test public void onPreferenceChange_updateSuccess() { - doReturn(true).when(mTelephonyManager).setPreferredNetworkType(SUB_ID, - TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA); + doReturn(true).when(mTelephonyManager).setPreferredNetworkTypeBitmask( + getRafFromNetworkType(TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA)); mController.onPreferenceChange(mPreference, String.valueOf(TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA)); @@ -405,8 +406,8 @@ public class EnabledNetworkModePreferenceControllerTest { @Test public void onPreferenceChange_updateFail() { - doReturn(false).when(mTelephonyManager).setPreferredNetworkType(SUB_ID, - TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA); + doReturn(false).when(mTelephonyManager).setPreferredNetworkTypeBitmask( + getRafFromNetworkType(TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA)); mController.onPreferenceChange(mPreference, String.valueOf(TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA)); diff --git a/tests/robotests/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceControllerTest.java index 0d50e9e58c5..1feb08b35d2 100644 --- a/tests/robotests/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceControllerTest.java @@ -18,6 +18,7 @@ package com.android.settings.network.telephony; import static com.android.settings.core.BasePreferenceController.AVAILABLE; import static com.android.settings.core.BasePreferenceController.CONDITIONALLY_UNAVAILABLE; +import static com.android.settings.network.telephony.MobileNetworkUtils.getRafFromNetworkType; import static com.google.common.truth.Truth.assertThat; @@ -140,8 +141,8 @@ public class PreferredNetworkModePreferenceControllerTest { @Test public void onPreferenceChange_updateSuccess() { - doReturn(true).when(mTelephonyManager).setPreferredNetworkType(SUB_ID, - TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA); + doReturn(true).when(mTelephonyManager).setPreferredNetworkTypeBitmask( + getRafFromNetworkType(TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA)); mController.onPreferenceChange(mPreference, String.valueOf(TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA)); @@ -153,8 +154,8 @@ public class PreferredNetworkModePreferenceControllerTest { @Test public void onPreferenceChange_updateFail() { - doReturn(false).when(mTelephonyManager).setPreferredNetworkType(SUB_ID, - TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA); + doReturn(false).when(mTelephonyManager).setPreferredNetworkTypeBitmask( + getRafFromNetworkType(TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA)); mController.onPreferenceChange(mPreference, String.valueOf(TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA));