[Provider Model] Show all carrier's name on MobileNetworkSummaryController's summary
Screenshot of Provider Model: https://screenshot.googleplex.com/6mKLeMWGWZJh86u.png
Screenshot of current: https://screenshot.googleplex.com/Abncb2QGh5TWxEv.png
Doc: https://docs.google.com/presentation/d/1azrZVS54pxM2lt9LkZHtFh_6W3fyDw_kTTPVQ_mJCi4/edit#slide=id.g9c7123c172_0_448
Bug: 172229551
Test: manual and make RunSettingsRoboTests ROBOTEST_FILTER=MobileNetworkSummaryControllerTest
Change-Id: I0f2a23659ef80b6a76b34af9503ad8d746967859
diff --git a/res/drawable/ic_sim_card.xml b/res/drawable/ic_sim_card.xml
new file mode 100644
index 0000000..c8b81c8
--- /dev/null
+++ b/res/drawable/ic_sim_card.xml
@@ -0,0 +1,43 @@
+<!--
+ Copyright (C) 2020 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="20dp"
+ android:height="20dp"
+ android:viewportWidth="20"
+ android:viewportHeight="20"
+ android:tint="?attr/colorControlNormal">
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M14.5,2H8L4,6v10.5C4,17.33 4.67,18 5.5,18h9c0.83,0 1.5,-0.67 1.5,-1.5v-13C16,2.67 15.33,2 14.5,2zM14.5,16.5h-9V6.62L8.62,3.5h5.88V16.5z"/>
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M6.5,9h1.5v3h-1.5z"/>
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M6.5,13.5h1.5v1.5h-1.5z"/>
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M12,13.5h1.5v1.5h-1.5z"/>
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M9.25,9h1.5v1.5h-1.5z"/>
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M12,9h1.5v3h-1.5z"/>
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M9.25,12h1.5v3h-1.5z"/>
+</vector>
\ No newline at end of file
diff --git a/res/xml/network_provider_internet.xml b/res/xml/network_provider_internet.xml
index 3e798ab..8a7cdb8 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 9e3f1e8..405d365 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.instrumentation.MetricsFeatureProvider;
import java.util.List;
+import java.util.stream.Collectors;
public class MobileNetworkSummaryController extends AbstractPreferenceController implements
SubscriptionsChangeListener.SubscriptionsChangeListenerClient, LifecycleObserver,
@@ -124,12 +125,20 @@
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<SubscriptionInfo> 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 f6bc05a..6cf5896 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.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.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 java.util.Arrays;
@RunWith(RobolectricTestRunner.class)
-@Ignore
public class MobileNetworkSummaryControllerTest {
@Mock
private Lifecycle mLifecycle;
@@ -84,10 +86,11 @@
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 @@
@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 @@
@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 @@
@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);
@@ -280,6 +286,27 @@
}
@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);
mController.displayPreference(mPreferenceScreen);