diff --git a/src/com/android/settings/network/ProviderModelSlice.java b/src/com/android/settings/network/ProviderModelSlice.java index 25d6b0c12fa..80e24c8773c 100644 --- a/src/com/android/settings/network/ProviderModelSlice.java +++ b/src/com/android/settings/network/ProviderModelSlice.java @@ -116,7 +116,9 @@ public class ProviderModelSlice extends WifiSlice { // Second section: Add a carrier item. if (hasCarrier) { mHelper.updateTelephony(); - listBuilder.addRow(mHelper.createCarrierRow()); + listBuilder.addRow( + mHelper.createCarrierRow( + worker != null ? worker.getNetworkTypeDescription() : "")); maxListSize--; } diff --git a/src/com/android/settings/network/ProviderModelSliceHelper.java b/src/com/android/settings/network/ProviderModelSliceHelper.java index 8621b8c487a..dd8aa60c151 100644 --- a/src/com/android/settings/network/ProviderModelSliceHelper.java +++ b/src/com/android/settings/network/ProviderModelSliceHelper.java @@ -120,9 +120,9 @@ public class ProviderModelSliceHelper { return true; } - protected ListBuilder.RowBuilder createCarrierRow() { + protected ListBuilder.RowBuilder createCarrierRow(String networkTypeDescription) { final String title = getMobileTitle(); - final String summary = getMobileSummary(); + final String summary = getMobileSummary(networkTypeDescription); Drawable drawable = mContext.getDrawable( R.drawable.ic_signal_strength_zero_bar_no_internet); try { @@ -241,13 +241,12 @@ public class ProviderModelSliceHelper { NO_CELL_DATA_TYPE_ICON, false); } - private String getMobileSummary() { - String summary = ""; - //TODO: get radio technology. - String networkType = ""; + private String getMobileSummary(String networkTypeDescription) { + String summary = networkTypeDescription; if (isDataSimActive()) { summary = mContext.getString(R.string.preference_summary_default_combination, - mContext.getString(R.string.mobile_data_connection_active), networkType); + mContext.getString(R.string.mobile_data_connection_active), + networkTypeDescription); } else if (!isMobileDataEnabled()) { summary = mContext.getString(R.string.mobile_data_off_summary); } diff --git a/src/com/android/settings/network/telephony/NetworkProviderWorker.java b/src/com/android/settings/network/telephony/NetworkProviderWorker.java index 1e6f368acb8..18aeb4d751f 100644 --- a/src/com/android/settings/network/telephony/NetworkProviderWorker.java +++ b/src/com/android/settings/network/telephony/NetworkProviderWorker.java @@ -16,6 +16,9 @@ package com.android.settings.network.telephony; +import static com.android.settingslib.mobile.MobileMappings.getIconKey; +import static com.android.settingslib.mobile.MobileMappings.mapIconSets; + import android.content.Context; import android.database.ContentObserver; import android.net.Uri; @@ -34,6 +37,8 @@ import com.android.settings.network.MobileDataContentObserver; import com.android.settings.network.MobileDataEnabledListener; import com.android.settings.network.SubscriptionsChangeListener; import com.android.settings.wifi.slice.WifiScanWorker; +import com.android.settingslib.mobile.MobileMappings; +import com.android.settingslib.mobile.MobileMappings.Config; import java.util.Collections; import java.util.concurrent.Executor; @@ -58,6 +63,10 @@ public class NetworkProviderWorker extends WifiScanWorker implements @VisibleForTesting final PhoneStateListener mPhoneStateListener; private TelephonyManager mTelephonyManager; + private Config mConfig = null; + private TelephonyDisplayInfo mTelephonyDisplayInfo = + new TelephonyDisplayInfo(TelephonyManager.NETWORK_TYPE_UNKNOWN, + TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NONE); public NetworkProviderWorker(Context context, Uri uri) { super(context, uri); @@ -75,6 +84,7 @@ public class NetworkProviderWorker extends WifiScanWorker implements mDataEnabledListener = new MobileDataEnabledListener(context, this); mConnectivityListener = new DataConnectivityListener(context, this); mSignalStrengthListener = new SignalStrengthListener(context, this); + mConfig = getConfig(mContext); } @Override @@ -135,6 +145,7 @@ public class NetworkProviderWorker extends WifiScanWorker implements mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_SERVICE_STATE | PhoneStateListener.LISTEN_DISPLAY_INFO_CHANGED); mMobileDataObserver.register(mContext, mDefaultDataSubid); + mConfig = getConfig(mContext); } else { mSignalStrengthListener.updateSubscriptionIds(Collections.emptySet()); } @@ -217,6 +228,7 @@ public class NetworkProviderWorker extends WifiScanWorker implements @Override public void onDisplayInfoChanged(TelephonyDisplayInfo telephonyDisplayInfo) { Log.d(TAG, "onDisplayInfoChanged: telephonyDisplayInfo=" + telephonyDisplayInfo); + mTelephonyDisplayInfo = telephonyDisplayInfo; updateSlice(); } } @@ -225,4 +237,27 @@ public class NetworkProviderWorker extends WifiScanWorker implements int getDefaultDataSubscriptionId() { return SubscriptionManager.getDefaultDataSubscriptionId(); } + + + private String updateNetworkTypeName(Context context, Config config, + TelephonyDisplayInfo telephonyDisplayInfo, int subId) { + String iconKey = getIconKey(telephonyDisplayInfo); + int resId = mapIconSets(config).get(iconKey).dataContentDescription; + return resId != 0 + ? SubscriptionManager.getResourcesForSubId(context, subId).getString(resId) : ""; + + } + + @VisibleForTesting + Config getConfig(Context context) { + return MobileMappings.Config.readConfig(context); + } + + /** + * Get currently description of mobile network type. + */ + public String getNetworkTypeDescription() { + return updateNetworkTypeName(mContext, mConfig, mTelephonyDisplayInfo, + mDefaultDataSubid); + } } diff --git a/tests/unit/src/com/android/settings/network/ProviderModelSliceHelperTest.java b/tests/unit/src/com/android/settings/network/ProviderModelSliceHelperTest.java index f95c698e2a4..be008d6606c 100644 --- a/tests/unit/src/com/android/settings/network/ProviderModelSliceHelperTest.java +++ b/tests/unit/src/com/android/settings/network/ProviderModelSliceHelperTest.java @@ -164,18 +164,49 @@ public class ProviderModelSliceHelperTest { } @Test - public void createCarrierRow_hasDefaultDataSubscriptionId_verifyTitle() { + public void createCarrierRow_hasDdsAndActiveNetworkIsNotCellular_verifyTitleAndSummary() { String expectDisplayName = "Name1"; + String expectedSubtitle = "5G"; + String networkType = "5G"; int defaultDataSubId = SubscriptionManager.getDefaultDataSubscriptionId(); when(mSubscriptionManager.getActiveSubscriptionInfo(defaultDataSubId)).thenReturn( mDefaultDataSubscriptionInfo); when(mDefaultDataSubscriptionInfo.getDisplayName()).thenReturn(expectDisplayName); when(mServiceState.getState()).thenReturn(ServiceState.STATE_IN_SERVICE); mBundle.putBoolean(CarrierConfigManager.KEY_INFLATE_SIGNAL_STRENGTH_BOOL, false); + addNetworkTransportType(NetworkCapabilities.TRANSPORT_WIFI); + when(mTelephonyManager.isDataEnabled()).thenReturn(true); - ListBuilder.RowBuilder testRowBuild = mProviderModelSliceHelper.createCarrierRow(); + + ListBuilder.RowBuilder testRowBuild = mProviderModelSliceHelper.createCarrierRow( + networkType); assertThat(testRowBuild.getTitle()).isEqualTo(expectDisplayName); + assertThat(testRowBuild.getSubtitle()).isEqualTo(expectedSubtitle); + } + + @Test + public void createCarrierRow_hasDdsAndActiveNetworkIsCellular_verifyTitleAndSummary() { + String expectDisplayName = "Name1"; + String networkType = "5G"; + String connectedText = ResourcesUtils.getResourcesString(mContext, + "mobile_data_connection_active"); + String expectedSubtitle = ResourcesUtils.getResourcesString(mContext, + "preference_summary_default_combination", connectedText, networkType); + + int defaultDataSubId = SubscriptionManager.getDefaultDataSubscriptionId(); + when(mSubscriptionManager.getActiveSubscriptionInfo(defaultDataSubId)).thenReturn( + mDefaultDataSubscriptionInfo); + when(mDefaultDataSubscriptionInfo.getDisplayName()).thenReturn(expectDisplayName); + when(mServiceState.getState()).thenReturn(ServiceState.STATE_IN_SERVICE); + mBundle.putBoolean(CarrierConfigManager.KEY_INFLATE_SIGNAL_STRENGTH_BOOL, false); + addNetworkTransportType(NetworkCapabilities.TRANSPORT_CELLULAR); + + ListBuilder.RowBuilder testRowBuild = mProviderModelSliceHelper.createCarrierRow( + networkType); + + assertThat(testRowBuild.getTitle()).isEqualTo(expectDisplayName); + assertThat(testRowBuild.getSubtitle()).isEqualTo(expectedSubtitle); } @Test diff --git a/tests/unit/src/com/android/settings/network/ProviderModelSliceTest.java b/tests/unit/src/com/android/settings/network/ProviderModelSliceTest.java index 363d0edb21d..f250fdd81ae 100644 --- a/tests/unit/src/com/android/settings/network/ProviderModelSliceTest.java +++ b/tests/unit/src/com/android/settings/network/ProviderModelSliceTest.java @@ -302,7 +302,8 @@ public class ProviderModelSliceTest { when(mMockCarrierRowBuild.getTitle()).thenReturn("mockRow"); when(mMockCarrierRowBuild.getPrimaryAction()).thenReturn(mockSliceAction); - when(mProviderModelSliceHelper.createCarrierRow()).thenReturn(mMockCarrierRowBuild); + when(mProviderModelSliceHelper.createCarrierRow(anyString())).thenReturn( + mMockCarrierRowBuild); } private SliceAction getPrimarySliceAction() {