Loading src/com/android/settings/network/SubscriptionsPreferenceController.java +24 −1 Original line number Diff line number Diff line Loading @@ -52,6 +52,7 @@ import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.net.SignalStrengthUtil; import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Set; Loading Loading @@ -166,6 +167,12 @@ public class SubscriptionsPreferenceController extends AbstractPreferenceControl final int dataDefaultSubId = SubscriptionManager.getDefaultDataSubscriptionId(); for (SubscriptionInfo info : SubscriptionUtil.getActiveSubscriptions(mManager)) { final int subId = info.getSubscriptionId(); // Avoid from showing subscription(SIM)s which has been marked as hidden // For example, only one subscription will be shown when there're multiple // subscriptions with same group UUID. if (!isSubscriptionCanBeDisplayed(mContext, subId)) { continue; } activeSubIds.add(subId); Preference pref = existingPrefs.remove(subId); if (pref == null) { Loading Loading @@ -292,7 +299,17 @@ public class SubscriptionsPreferenceController extends AbstractPreferenceControl if (mSubscriptionsListener.isAirplaneModeOn()) { return false; } return SubscriptionUtil.getActiveSubscriptions(mManager).size() >= 2; List<SubscriptionInfo> subInfoList = SubscriptionUtil.getActiveSubscriptions(mManager); if (subInfoList == null) { return false; } return subInfoList.stream() // Avoid from showing subscription(SIM)s which has been marked as hidden // For example, only one subscription will be shown when there're multiple // subscriptions with same group UUID. .filter(subInfo -> isSubscriptionCanBeDisplayed(mContext, subInfo.getSubscriptionId())) .count() >= 2; } @Override Loading Loading @@ -330,4 +347,10 @@ public class SubscriptionsPreferenceController extends AbstractPreferenceControl public void onSignalStrengthChanged() { update(); } @VisibleForTesting boolean isSubscriptionCanBeDisplayed(Context context, int subId) { return (SubscriptionUtil.getAvailableSubscription(context, ProxySubscriptionManager.getInstance(context), subId) != null); } } tests/robotests/src/com/android/settings/network/SubscriptionsPreferenceControllerTest.java +17 −9 Original line number Diff line number Diff line Loading @@ -37,11 +37,9 @@ import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.graphics.drawable.Drawable; import android.graphics.drawable.LayerDrawable; import android.net.ConnectivityManager; import android.net.Network; import android.net.NetworkCapabilities; Loading @@ -51,9 +49,13 @@ import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import androidx.lifecycle.LifecycleOwner; import androidx.preference.Preference; import androidx.preference.PreferenceCategory; import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.graph.SignalDrawable; import org.junit.After; import org.junit.Before; Loading @@ -62,7 +64,6 @@ import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.Robolectric; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; Loading @@ -72,11 +73,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; import androidx.lifecycle.LifecycleOwner; import androidx.preference.Preference; import androidx.preference.PreferenceCategory; import androidx.preference.PreferenceScreen; @RunWith(RobolectricTestRunner.class) @Config(shadows = ShadowSubscriptionManager.class) public class SubscriptionsPreferenceControllerTest { Loading Loading @@ -126,6 +122,7 @@ public class SubscriptionsPreferenceControllerTest { mController = spy( new SubscriptionsPreferenceController(mContext, mLifecycle, mUpdateListener, KEY, 5)); doReturn(true).when(mController).isSubscriptionCanBeDisplayed(any(), anyInt()); doReturn(mSignalStrengthIcon).when(mController).getIcon(anyInt(), anyInt(), anyBoolean()); } Loading Loading @@ -459,6 +456,17 @@ public class SubscriptionsPreferenceControllerTest { eq(true)); } @Test public void displayPreference_subscriptionsWithSameGroupUUID_onlyOneWillBeSeen() { doReturn(false).when(mController).isSubscriptionCanBeDisplayed(any(), eq(3)); final List<SubscriptionInfo> subs = setupMockSubscriptions(3); SubscriptionUtil.setActiveSubscriptionsForTesting(subs.subList(0, 3)); mController.onResume(); mController.displayPreference(mScreen); verify(mPreferenceCategory, times(2)).addPreference(any(Preference.class)); } @Test public void onMobileDataEnabledChange_mobileDataTurnedOff_bothSubsHaveCutOut() { Loading Loading
src/com/android/settings/network/SubscriptionsPreferenceController.java +24 −1 Original line number Diff line number Diff line Loading @@ -52,6 +52,7 @@ import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.net.SignalStrengthUtil; import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Set; Loading Loading @@ -166,6 +167,12 @@ public class SubscriptionsPreferenceController extends AbstractPreferenceControl final int dataDefaultSubId = SubscriptionManager.getDefaultDataSubscriptionId(); for (SubscriptionInfo info : SubscriptionUtil.getActiveSubscriptions(mManager)) { final int subId = info.getSubscriptionId(); // Avoid from showing subscription(SIM)s which has been marked as hidden // For example, only one subscription will be shown when there're multiple // subscriptions with same group UUID. if (!isSubscriptionCanBeDisplayed(mContext, subId)) { continue; } activeSubIds.add(subId); Preference pref = existingPrefs.remove(subId); if (pref == null) { Loading Loading @@ -292,7 +299,17 @@ public class SubscriptionsPreferenceController extends AbstractPreferenceControl if (mSubscriptionsListener.isAirplaneModeOn()) { return false; } return SubscriptionUtil.getActiveSubscriptions(mManager).size() >= 2; List<SubscriptionInfo> subInfoList = SubscriptionUtil.getActiveSubscriptions(mManager); if (subInfoList == null) { return false; } return subInfoList.stream() // Avoid from showing subscription(SIM)s which has been marked as hidden // For example, only one subscription will be shown when there're multiple // subscriptions with same group UUID. .filter(subInfo -> isSubscriptionCanBeDisplayed(mContext, subInfo.getSubscriptionId())) .count() >= 2; } @Override Loading Loading @@ -330,4 +347,10 @@ public class SubscriptionsPreferenceController extends AbstractPreferenceControl public void onSignalStrengthChanged() { update(); } @VisibleForTesting boolean isSubscriptionCanBeDisplayed(Context context, int subId) { return (SubscriptionUtil.getAvailableSubscription(context, ProxySubscriptionManager.getInstance(context), subId) != null); } }
tests/robotests/src/com/android/settings/network/SubscriptionsPreferenceControllerTest.java +17 −9 Original line number Diff line number Diff line Loading @@ -37,11 +37,9 @@ import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.graphics.drawable.Drawable; import android.graphics.drawable.LayerDrawable; import android.net.ConnectivityManager; import android.net.Network; import android.net.NetworkCapabilities; Loading @@ -51,9 +49,13 @@ import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import androidx.lifecycle.LifecycleOwner; import androidx.preference.Preference; import androidx.preference.PreferenceCategory; import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.graph.SignalDrawable; import org.junit.After; import org.junit.Before; Loading @@ -62,7 +64,6 @@ import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.Robolectric; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; Loading @@ -72,11 +73,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; import androidx.lifecycle.LifecycleOwner; import androidx.preference.Preference; import androidx.preference.PreferenceCategory; import androidx.preference.PreferenceScreen; @RunWith(RobolectricTestRunner.class) @Config(shadows = ShadowSubscriptionManager.class) public class SubscriptionsPreferenceControllerTest { Loading Loading @@ -126,6 +122,7 @@ public class SubscriptionsPreferenceControllerTest { mController = spy( new SubscriptionsPreferenceController(mContext, mLifecycle, mUpdateListener, KEY, 5)); doReturn(true).when(mController).isSubscriptionCanBeDisplayed(any(), anyInt()); doReturn(mSignalStrengthIcon).when(mController).getIcon(anyInt(), anyInt(), anyBoolean()); } Loading Loading @@ -459,6 +456,17 @@ public class SubscriptionsPreferenceControllerTest { eq(true)); } @Test public void displayPreference_subscriptionsWithSameGroupUUID_onlyOneWillBeSeen() { doReturn(false).when(mController).isSubscriptionCanBeDisplayed(any(), eq(3)); final List<SubscriptionInfo> subs = setupMockSubscriptions(3); SubscriptionUtil.setActiveSubscriptionsForTesting(subs.subList(0, 3)); mController.onResume(); mController.displayPreference(mScreen); verify(mPreferenceCategory, times(2)).addPreference(any(Preference.class)); } @Test public void onMobileDataEnabledChange_mobileDataTurnedOff_bothSubsHaveCutOut() { Loading