diff --git a/res/drawable/ic_sim_card.xml b/res/drawable/ic_sim_card.xml new file mode 100644 index 00000000000..c8b81c89ca6 --- /dev/null +++ b/res/drawable/ic_sim_card.xml @@ -0,0 +1,43 @@ + + + + + + + + + + \ No newline at end of file diff --git a/res/xml/network_provider_internet.xml b/res/xml/network_provider_internet.xml index 3e798ab1293..8a7cdb8f241 100644 --- a/res/xml/network_provider_internet.xml +++ b/res/xml/network_provider_internet.xml @@ -48,7 +48,7 @@ android:key="mobile_network_list" android:title="@string/provider_network_settings_title" android:summary="@string/summary_placeholder" - android:icon="@drawable/ic_network_cell" + android:icon="@drawable/ic_sim_card" android:order="-15" settings:keywords="@string/keywords_more_mobile_networks" settings:userRestriction="no_config_mobile_networks" diff --git a/src/com/android/settings/network/MobileNetworkSummaryController.java b/src/com/android/settings/network/MobileNetworkSummaryController.java index 9e3f1e8957c..405d365cadd 100644 --- a/src/com/android/settings/network/MobileNetworkSummaryController.java +++ b/src/com/android/settings/network/MobileNetworkSummaryController.java @@ -45,6 +45,7 @@ import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import java.util.List; +import java.util.stream.Collectors; public class MobileNetworkSummaryController extends AbstractPreferenceController implements SubscriptionsChangeListener.SubscriptionsChangeListenerClient, LifecycleObserver, @@ -124,12 +125,20 @@ public class MobileNetworkSummaryController extends AbstractPreferenceController return subs.get(0).getDisplayName(); } } else { + if (com.android.settings.Utils.isProviderModelEnabled(mContext)) { + return getSummaryForProviderModel(subs); + } final int count = subs.size(); return mContext.getResources().getQuantityString(R.plurals.mobile_network_summary_count, count, count); } } + private CharSequence getSummaryForProviderModel(List subs) { + return String.join(", ", subs.stream().map(SubscriptionInfo::getDisplayName) + .collect(Collectors.toList())); + } + private void startAddSimFlow() { final Intent intent = new Intent(EuiccManager.ACTION_PROVISION_EMBEDDED_SUBSCRIPTION); intent.putExtra(EuiccManager.EXTRA_FORCE_PROVISION, true); diff --git a/tests/robotests/src/com/android/settings/network/MobileNetworkSummaryControllerTest.java b/tests/robotests/src/com/android/settings/network/MobileNetworkSummaryControllerTest.java index f6bc05a418c..6cf5896c6f4 100644 --- a/tests/robotests/src/com/android/settings/network/MobileNetworkSummaryControllerTest.java +++ b/tests/robotests/src/com/android/settings/network/MobileNetworkSummaryControllerTest.java @@ -23,6 +23,7 @@ import static org.mockito.ArgumentMatchers.eq; import static org.mockito.ArgumentMatchers.notNull; import static org.mockito.Mockito.atLeastOnce; import static org.mockito.Mockito.doNothing; +import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; @@ -39,10 +40,12 @@ import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.telephony.euicc.EuiccManager; import android.text.TextUtils; +import android.util.FeatureFlagUtils; import androidx.lifecycle.Lifecycle; import androidx.preference.PreferenceScreen; +import com.android.settings.core.FeatureFlags; import com.android.settings.network.telephony.MobileNetworkActivity; import com.android.settings.widget.AddPreference; import com.android.settingslib.RestrictedLockUtils; @@ -61,7 +64,6 @@ import org.robolectric.RuntimeEnvironment; import java.util.Arrays; @RunWith(RobolectricTestRunner.class) -@Ignore public class MobileNetworkSummaryControllerTest { @Mock private Lifecycle mLifecycle; @@ -84,10 +86,11 @@ public class MobileNetworkSummaryControllerTest { public void setUp() { MockitoAnnotations.initMocks(this); mContext = spy(RuntimeEnvironment.application); - when(mContext.getSystemService(TelephonyManager.class)).thenReturn(mTelephonyManager); - when(mContext.getSystemService(SubscriptionManager.class)).thenReturn(mSubscriptionManager); - when(mContext.getSystemService(EuiccManager.class)).thenReturn(mEuiccManager); - when(mContext.getSystemService(UserManager.class)).thenReturn(mUserManager); + doReturn(mTelephonyManager).when(mContext).getSystemService(TelephonyManager.class); + doReturn(mSubscriptionManager).when(mContext).getSystemService(SubscriptionManager.class); + doReturn(mEuiccManager).when(mContext).getSystemService(EuiccManager.class); + doReturn(mUserManager).when(mContext).getSystemService(UserManager.class); + when(mTelephonyManager.getNetworkCountryIso()).thenReturn(""); when(mSubscriptionManager.isActiveSubscriptionId(anyInt())).thenReturn(true); when(mEuiccManager.isEnabled()).thenReturn(true); @@ -211,6 +214,7 @@ public class MobileNetworkSummaryControllerTest { @Test public void getSummary_twoSubscriptions_correctSummaryAndFragment() { + FeatureFlagUtils.setEnabled(mContext, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL, false); final SubscriptionInfo sub1 = mock(SubscriptionInfo.class); final SubscriptionInfo sub2 = mock(SubscriptionInfo.class); when(sub1.getSubscriptionId()).thenReturn(1); @@ -225,6 +229,7 @@ public class MobileNetworkSummaryControllerTest { @Test public void getSummaryAfterUpdate_twoSubscriptionsBecomesOne_correctSummaryAndFragment() { + FeatureFlagUtils.setEnabled(mContext, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL, false); final SubscriptionInfo sub1 = mock(SubscriptionInfo.class); final SubscriptionInfo sub2 = mock(SubscriptionInfo.class); when(sub1.getSubscriptionId()).thenReturn(1); @@ -253,6 +258,7 @@ public class MobileNetworkSummaryControllerTest { @Test public void getSummaryAfterUpdate_oneSubscriptionBecomesTwo_correctSummaryAndFragment() { + FeatureFlagUtils.setEnabled(mContext, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL, false); final SubscriptionInfo sub1 = mock(SubscriptionInfo.class); final SubscriptionInfo sub2 = mock(SubscriptionInfo.class); when(sub1.getSubscriptionId()).thenReturn(1); @@ -279,6 +285,27 @@ public class MobileNetworkSummaryControllerTest { assertThat(mPreference.getFragment()).isEqualTo(MobileNetworkListFragment.class.getName()); } + @Test + public void getSummary_providerModel_Enabled() { + final SubscriptionInfo sub1 = mock(SubscriptionInfo.class); + final SubscriptionInfo sub2 = mock(SubscriptionInfo.class); + when(sub1.getSubscriptionId()).thenReturn(1); + when(sub2.getSubscriptionId()).thenReturn(2); + when(sub1.getDisplayName()).thenReturn("sub1"); + when(sub2.getDisplayName()).thenReturn("sub2"); + + SubscriptionUtil.setAvailableSubscriptionsForTesting(Arrays.asList(sub1, sub2)); + FeatureFlagUtils.setEnabled(mContext, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL, true); + mController.displayPreference(mPreferenceScreen); + mController.onResume(); + assertThat(mController.getSummary()).isEqualTo("sub1, sub2"); + + FeatureFlagUtils.setEnabled(mContext, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL, false); + mController.displayPreference(mPreferenceScreen); + mController.onResume(); + assertThat(mController.getSummary()).isEqualTo("2 SIMs"); + } + @Test public void addButton_noSubscriptionsNoEuiccMgr_noAddClickListener() { when(mEuiccManager.isEnabled()).thenReturn(false);