From aa81904bd729bd0dc74e5f2a4292244bf6ba0071 Mon Sep 17 00:00:00 2001 From: Daniel Bright Date: Fri, 10 Jan 2020 18:05:01 -0800 Subject: [PATCH] Change icon mappings in MobileSignalController The specific goal was to remove NETWORK_TYPE_LTE_CA from being used in the controller. In order to make this smoother, the logic was refactored to use a string based hashmap instead of an array to support the carrier aggregation variations in LTE and 5G \ LTE. Bug: 147465477 Test: SystemUITests Change-Id: Ice6e795675e0c8281531c3cf52ce181a460e4bfd --- .../policy/MobileSignalController.java | 113 ++++++++++++------ 1 file changed, 77 insertions(+), 36 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java index 6b842d5fa0b34..72285dbebb50e 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java @@ -23,6 +23,7 @@ import android.os.Handler; import android.os.Looper; import android.os.Message; import android.provider.Settings.Global; +import android.telephony.Annotation; import android.telephony.CellSignalStrength; import android.telephony.CellSignalStrengthCdma; import android.telephony.NetworkRegistrationInfo; @@ -34,7 +35,6 @@ import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.text.TextUtils; import android.util.Log; -import android.util.SparseArray; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.telephony.TelephonyIntents; @@ -50,7 +50,9 @@ import com.android.systemui.statusbar.policy.NetworkControllerImpl.SubscriptionD import java.io.PrintWriter; import java.util.BitSet; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.Objects; import java.util.concurrent.Executor; import java.util.regex.Matcher; @@ -74,12 +76,14 @@ public class MobileSignalController extends SignalController< final SubscriptionInfo mSubscriptionInfo; // @VisibleForDemoMode - final SparseArray mNetworkToIconLookup; + final Map mNetworkToIconLookup; // Since some pieces of the phone state are interdependent we store it locally, // this could potentially become part of MobileState for simplification/complication // of code. private int mDataNetType = TelephonyManager.NETWORK_TYPE_UNKNOWN; + private boolean mCA = false; + private boolean mCAPlus = false; private int mDataState = TelephonyManager.DATA_DISCONNECTED; private ServiceState mServiceState; private SignalStrength mSignalStrength; @@ -90,9 +94,6 @@ public class MobileSignalController extends SignalController< boolean mInflateSignalStrengths = false; @VisibleForTesting boolean mIsShowingIconGracefully = false; - // Some specific carriers have 5GE network which is special LTE CA network. - private static final int NETWORK_TYPE_LTE_CA_5GE = - TelephonyManager.getAllNetworkTypes().length + 1; // TODO: Reduce number of vars passed in, if we have the NetworkController, probably don't // need listener lists anymore. @@ -103,7 +104,7 @@ public class MobileSignalController extends SignalController< super("MobileSignalController(" + info.getSubscriptionId() + ")", context, NetworkCapabilities.TRANSPORT_CELLULAR, callbackHandler, networkController); - mNetworkToIconLookup = new SparseArray<>(); + mNetworkToIconLookup = new HashMap<>(); mConfig = config; mPhone = phone; mDefaults = defaults; @@ -210,29 +211,38 @@ public class MobileSignalController extends SignalController< private void mapIconSets() { mNetworkToIconLookup.clear(); - mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_EVDO_0, TelephonyIcons.THREE_G); - mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_EVDO_A, TelephonyIcons.THREE_G); - mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_EVDO_B, TelephonyIcons.THREE_G); - mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_EHRPD, TelephonyIcons.THREE_G); - mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_UMTS, TelephonyIcons.THREE_G); - mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_TD_SCDMA, TelephonyIcons.THREE_G); + mNetworkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_EVDO_0), + TelephonyIcons.THREE_G); + mNetworkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_EVDO_A), + TelephonyIcons.THREE_G); + mNetworkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_EVDO_B), + TelephonyIcons.THREE_G); + mNetworkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_EHRPD), + TelephonyIcons.THREE_G); + mNetworkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_UMTS), + TelephonyIcons.THREE_G); + mNetworkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_TD_SCDMA), + TelephonyIcons.THREE_G); if (!mConfig.showAtLeast3G) { - mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_UNKNOWN, + mNetworkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_UNKNOWN), TelephonyIcons.UNKNOWN); - mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_EDGE, TelephonyIcons.E); - mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_CDMA, TelephonyIcons.ONE_X); - mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_1xRTT, TelephonyIcons.ONE_X); + mNetworkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_EDGE), + TelephonyIcons.E); + mNetworkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_CDMA), + TelephonyIcons.ONE_X); + mNetworkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_1xRTT), + TelephonyIcons.ONE_X); mDefaultIcons = TelephonyIcons.G; } else { - mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_UNKNOWN, + mNetworkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_UNKNOWN), TelephonyIcons.THREE_G); - mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_EDGE, + mNetworkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_EDGE), TelephonyIcons.THREE_G); - mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_CDMA, + mNetworkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_CDMA), TelephonyIcons.THREE_G); - mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_1xRTT, + mNetworkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_1xRTT), TelephonyIcons.THREE_G); mDefaultIcons = TelephonyIcons.THREE_G; } @@ -247,33 +257,59 @@ public class MobileSignalController extends SignalController< hPlusGroup = TelephonyIcons.H_PLUS; } - mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_HSDPA, hGroup); - mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_HSUPA, hGroup); - mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_HSPA, hGroup); - mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_HSPAP, hPlusGroup); + mNetworkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_HSDPA), hGroup); + mNetworkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_HSUPA), hGroup); + mNetworkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_HSPA), hGroup); + mNetworkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_HSPAP), hPlusGroup); if (mConfig.show4gForLte) { - mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_LTE, TelephonyIcons.FOUR_G); + mNetworkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_LTE), + TelephonyIcons.FOUR_G); if (mConfig.hideLtePlus) { - mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_LTE_CA, + mNetworkToIconLookup.put(toIconKeyCA(TelephonyManager.NETWORK_TYPE_LTE), TelephonyIcons.FOUR_G); } else { - mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_LTE_CA, + mNetworkToIconLookup.put(toIconKeyCA(TelephonyManager.NETWORK_TYPE_LTE), TelephonyIcons.FOUR_G_PLUS); } } else { - mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_LTE, TelephonyIcons.LTE); + mNetworkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_LTE), + TelephonyIcons.LTE); if (mConfig.hideLtePlus) { - mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_LTE_CA, + mNetworkToIconLookup.put(toIconKeyCA(TelephonyManager.NETWORK_TYPE_LTE), TelephonyIcons.LTE); } else { - mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_LTE_CA, + mNetworkToIconLookup.put(toIconKeyCA(TelephonyManager.NETWORK_TYPE_LTE), TelephonyIcons.LTE_PLUS); } } - mNetworkToIconLookup.put(NETWORK_TYPE_LTE_CA_5GE, + mNetworkToIconLookup.put(toIconKeyCAPlus(TelephonyManager.NETWORK_TYPE_LTE), TelephonyIcons.LTE_CA_5G_E); - mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_IWLAN, TelephonyIcons.WFC); + mNetworkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_IWLAN), + TelephonyIcons.WFC); + } + + private String getIconKey() { + if (mCA) { + return toIconKeyCA(mDataNetType); + } else if (mCAPlus) { + return toIconKeyCAPlus(mDataNetType); + } else { + return toIconKey(mDataNetType); + } + } + + // Some specific carriers have 5GE network which is special CA network. + private String toIconKeyCAPlus(@Annotation.NetworkType int networkType) { + return toIconKeyCA(networkType) + "_Plus"; + } + + private String toIconKeyCA(@Annotation.NetworkType int networkType) { + return toIconKey(networkType) + "_CA"; + } + + private String toIconKey(@Annotation.NetworkType int networkType) { + return Integer.toString(networkType); } private void updateInflateSignalStrength() { @@ -520,10 +556,11 @@ public class MobileSignalController extends SignalController< nr5GIconGroup = adjustNr5GIconGroupByDisplayGraceTime(nr5GIconGroup); } + String iconKey = getIconKey(); if (nr5GIconGroup != null) { mCurrentState.iconGroup = nr5GIconGroup; - } else if (mNetworkToIconLookup.indexOfKey(mDataNetType) >= 0) { - mCurrentState.iconGroup = mNetworkToIconLookup.get(mDataNetType); + } else if (mNetworkToIconLookup.get(iconKey) != null) { + mCurrentState.iconGroup = mNetworkToIconLookup.get(iconKey); } else { mCurrentState.iconGroup = mDefaultIcons; } @@ -676,6 +713,8 @@ public class MobileSignalController extends SignalController< pw.println(" mSignalStrength=" + mSignalStrength + ","); pw.println(" mDataState=" + mDataState + ","); pw.println(" mDataNetType=" + mDataNetType + ","); + pw.println(" mCA=" + mCA + ","); + pw.println(" mCAPlus=" + mCAPlus + ","); pw.println(" mInflateSignalStrengths=" + mInflateSignalStrengths + ","); pw.println(" isDataDisabled=" + isDataDisabled() + ","); pw.println(" mIsShowingIconGracefully=" + mIsShowingIconGracefully + ","); @@ -722,11 +761,13 @@ public class MobileSignalController extends SignalController< private void updateDataNetType(int networkType) { mDataNetType = networkType; + mCA = false; + mCAPlus = false; if (mDataNetType == TelephonyManager.NETWORK_TYPE_LTE) { if (isCarrierSpecificDataIcon()) { - mDataNetType = NETWORK_TYPE_LTE_CA_5GE; + mCAPlus = true; } else if (mServiceState != null && mServiceState.isUsingCarrierAggregation()) { - mDataNetType = TelephonyManager.NETWORK_TYPE_LTE_CA; + mCA = true; } } }