Loading src/com/android/settings/wifi/details2/WifiDetailPreferenceController2.java +27 −18 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ import static android.net.NetworkCapabilities.NET_CAPABILITY_CAPTIVE_PORTAL; import static android.net.NetworkCapabilities.NET_CAPABILITY_PARTIAL_CONNECTIVITY; import static android.net.NetworkCapabilities.NET_CAPABILITY_VALIDATED; import static android.net.NetworkCapabilities.TRANSPORT_WIFI; import static android.telephony.TelephonyManager.UNKNOWN_CARRIER_ID; import android.app.Activity; import android.app.AlertDialog; Loading Loading @@ -49,7 +50,6 @@ import android.os.Handler; import android.provider.Telephony.CarrierId; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.text.TextUtils; import android.util.FeatureFlagUtils; import android.util.Log; Loading Loading @@ -711,27 +711,17 @@ public class WifiDetailPreferenceController2 extends AbstractPreferenceControlle // Checks if the SIM subscription is active. final List<SubscriptionInfo> activeSubscriptionInfos = mContext .getSystemService(SubscriptionManager.class).getActiveSubscriptionInfoList(); final int defaultDataSubscriptionId = SubscriptionManager.getDefaultDataSubscriptionId(); if (activeSubscriptionInfos != null) { for (SubscriptionInfo subscriptionInfo : activeSubscriptionInfos) { final CharSequence displayName = SubscriptionUtil.getUniqueSubscriptionDisplayName( subscriptionInfo, mContext); if (config.carrierId == subscriptionInfo.getCarrierId()) { mEapSimSubscriptionPref.setSummary(displayName); return; } // When it's UNKNOWN_CARRIER_ID, devices connects it with the SIM subscription of // defaultDataSubscriptionId. if (config.carrierId == TelephonyManager.UNKNOWN_CARRIER_ID && defaultDataSubscriptionId == subscriptionInfo.getSubscriptionId()) { mEapSimSubscriptionPref.setSummary(displayName); SubscriptionInfo info = fineSubscriptionInfo(config.carrierId, activeSubscriptionInfos, SubscriptionManager.getDefaultDataSubscriptionId()); if (info != null) { mEapSimSubscriptionPref.setSummary( SubscriptionUtil.getUniqueSubscriptionDisplayName(info, mContext)); return; } } } if (config.carrierId == TelephonyManager.UNKNOWN_CARRIER_ID) { if (config.carrierId == UNKNOWN_CARRIER_ID) { mEapSimSubscriptionPref.setSummary(R.string.wifi_no_related_sim_card); return; } Loading @@ -750,6 +740,25 @@ public class WifiDetailPreferenceController2 extends AbstractPreferenceControlle null /* orderBy */); } @VisibleForTesting SubscriptionInfo fineSubscriptionInfo(int carrierId, List<SubscriptionInfo> activeSubscriptionInfos, int defaultDataSubscriptionId) { SubscriptionInfo firstMatchedInfo = null; for (SubscriptionInfo info : activeSubscriptionInfos) { // When it's UNKNOWN_CARRIER_ID or matched with configured CarrierId, // devices connects it with the SIM subscription of defaultDataSubscriptionId. if (defaultDataSubscriptionId == info.getSubscriptionId() && (carrierId == info.getCarrierId() || carrierId == UNKNOWN_CARRIER_ID)) { return info; } if (firstMatchedInfo == null && carrierId == info.getCarrierId()) { firstMatchedInfo = info; } } return firstMatchedInfo; } private void refreshMacAddress() { final String macAddress = mWifiEntry.getMacAddress(); if (TextUtils.isEmpty(macAddress)) { Loading tests/robotests/src/com/android/settings/wifi/details2/WifiDetailPreferenceController2Test.java +72 −0 Original line number Diff line number Diff line Loading @@ -58,6 +58,7 @@ import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.os.Handler; import android.provider.Settings; import android.telephony.SubscriptionInfo; import android.telephony.TelephonyManager; import android.view.View; import android.view.View.OnClickListener; Loading Loading @@ -108,6 +109,7 @@ import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.time.format.FormatStyle; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; // TODO(b/143326832): Should add test cases for connect button. Loading Loading @@ -1791,4 +1793,74 @@ public class WifiDetailPreferenceController2Test { return pref; } @Test public void fineSubscriptionInfo_noMatchedCarrierId_returnNull() { setUpSpyController(); SubscriptionInfo sub1 = mockSubscriptionInfo(1, "sim1", 1111); SubscriptionInfo sub2 = mockSubscriptionInfo(2, "sim2", 2222); List<SubscriptionInfo> activeSubInfos = Arrays.asList(sub1, sub2); SubscriptionInfo info = mController.fineSubscriptionInfo(3333, activeSubInfos, 1); assertThat(info).isNull(); info = mController.fineSubscriptionInfo(3333, activeSubInfos, 2); assertThat(info).isNull(); } @Test public void fineSubscriptionInfo_diffCarrierId_returnMatchedOne() { setUpSpyController(); SubscriptionInfo sub1 = mockSubscriptionInfo(1, "sim1", 1111); SubscriptionInfo sub2 = mockSubscriptionInfo(2, "sim2", 2222); List<SubscriptionInfo> activeSubInfos = Arrays.asList(sub1, sub2); SubscriptionInfo info = mController.fineSubscriptionInfo(1111, activeSubInfos, 1); assertThat(info).isNotNull(); assertThat(info.getDisplayName().toString()).isEqualTo("sim1"); info = mController.fineSubscriptionInfo(1111, activeSubInfos, 2); assertThat(info).isNotNull(); assertThat(info.getDisplayName().toString()).isEqualTo("sim1"); info = mController.fineSubscriptionInfo(2222, activeSubInfos, 1); assertThat(info).isNotNull(); assertThat(info.getDisplayName().toString()).isEqualTo("sim2"); info = mController.fineSubscriptionInfo(2222, activeSubInfos, 2); assertThat(info).isNotNull(); assertThat(info.getDisplayName().toString()).isEqualTo("sim2"); } @Test public void fineSubscriptionInfo_sameCarrierId_returnDefaultDataOne() { setUpSpyController(); SubscriptionInfo sub1 = mockSubscriptionInfo(1, "sim1", 1111); SubscriptionInfo sub2 = mockSubscriptionInfo(2, "sim2", 1111); List<SubscriptionInfo> activeSubInfos = Arrays.asList(sub1, sub2); SubscriptionInfo info = mController.fineSubscriptionInfo(1111, activeSubInfos, 1); assertThat(info).isNotNull(); assertThat(info.getDisplayName().toString()).isEqualTo("sim1"); info = mController.fineSubscriptionInfo(1111, activeSubInfos, 2); assertThat(info).isNotNull(); assertThat(info.getDisplayName().toString()).isEqualTo("sim2"); } private SubscriptionInfo mockSubscriptionInfo(int subId, String displayName, int carrierId) { SubscriptionInfo info = mock(SubscriptionInfo.class); when(info.getSubscriptionId()).thenReturn(subId); when(info.getDisplayName()).thenReturn(displayName); when(info.getCarrierId()).thenReturn(carrierId); return info; } } Loading
src/com/android/settings/wifi/details2/WifiDetailPreferenceController2.java +27 −18 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ import static android.net.NetworkCapabilities.NET_CAPABILITY_CAPTIVE_PORTAL; import static android.net.NetworkCapabilities.NET_CAPABILITY_PARTIAL_CONNECTIVITY; import static android.net.NetworkCapabilities.NET_CAPABILITY_VALIDATED; import static android.net.NetworkCapabilities.TRANSPORT_WIFI; import static android.telephony.TelephonyManager.UNKNOWN_CARRIER_ID; import android.app.Activity; import android.app.AlertDialog; Loading Loading @@ -49,7 +50,6 @@ import android.os.Handler; import android.provider.Telephony.CarrierId; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.text.TextUtils; import android.util.FeatureFlagUtils; import android.util.Log; Loading Loading @@ -711,27 +711,17 @@ public class WifiDetailPreferenceController2 extends AbstractPreferenceControlle // Checks if the SIM subscription is active. final List<SubscriptionInfo> activeSubscriptionInfos = mContext .getSystemService(SubscriptionManager.class).getActiveSubscriptionInfoList(); final int defaultDataSubscriptionId = SubscriptionManager.getDefaultDataSubscriptionId(); if (activeSubscriptionInfos != null) { for (SubscriptionInfo subscriptionInfo : activeSubscriptionInfos) { final CharSequence displayName = SubscriptionUtil.getUniqueSubscriptionDisplayName( subscriptionInfo, mContext); if (config.carrierId == subscriptionInfo.getCarrierId()) { mEapSimSubscriptionPref.setSummary(displayName); return; } // When it's UNKNOWN_CARRIER_ID, devices connects it with the SIM subscription of // defaultDataSubscriptionId. if (config.carrierId == TelephonyManager.UNKNOWN_CARRIER_ID && defaultDataSubscriptionId == subscriptionInfo.getSubscriptionId()) { mEapSimSubscriptionPref.setSummary(displayName); SubscriptionInfo info = fineSubscriptionInfo(config.carrierId, activeSubscriptionInfos, SubscriptionManager.getDefaultDataSubscriptionId()); if (info != null) { mEapSimSubscriptionPref.setSummary( SubscriptionUtil.getUniqueSubscriptionDisplayName(info, mContext)); return; } } } if (config.carrierId == TelephonyManager.UNKNOWN_CARRIER_ID) { if (config.carrierId == UNKNOWN_CARRIER_ID) { mEapSimSubscriptionPref.setSummary(R.string.wifi_no_related_sim_card); return; } Loading @@ -750,6 +740,25 @@ public class WifiDetailPreferenceController2 extends AbstractPreferenceControlle null /* orderBy */); } @VisibleForTesting SubscriptionInfo fineSubscriptionInfo(int carrierId, List<SubscriptionInfo> activeSubscriptionInfos, int defaultDataSubscriptionId) { SubscriptionInfo firstMatchedInfo = null; for (SubscriptionInfo info : activeSubscriptionInfos) { // When it's UNKNOWN_CARRIER_ID or matched with configured CarrierId, // devices connects it with the SIM subscription of defaultDataSubscriptionId. if (defaultDataSubscriptionId == info.getSubscriptionId() && (carrierId == info.getCarrierId() || carrierId == UNKNOWN_CARRIER_ID)) { return info; } if (firstMatchedInfo == null && carrierId == info.getCarrierId()) { firstMatchedInfo = info; } } return firstMatchedInfo; } private void refreshMacAddress() { final String macAddress = mWifiEntry.getMacAddress(); if (TextUtils.isEmpty(macAddress)) { Loading
tests/robotests/src/com/android/settings/wifi/details2/WifiDetailPreferenceController2Test.java +72 −0 Original line number Diff line number Diff line Loading @@ -58,6 +58,7 @@ import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.os.Handler; import android.provider.Settings; import android.telephony.SubscriptionInfo; import android.telephony.TelephonyManager; import android.view.View; import android.view.View.OnClickListener; Loading Loading @@ -108,6 +109,7 @@ import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.time.format.FormatStyle; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; // TODO(b/143326832): Should add test cases for connect button. Loading Loading @@ -1791,4 +1793,74 @@ public class WifiDetailPreferenceController2Test { return pref; } @Test public void fineSubscriptionInfo_noMatchedCarrierId_returnNull() { setUpSpyController(); SubscriptionInfo sub1 = mockSubscriptionInfo(1, "sim1", 1111); SubscriptionInfo sub2 = mockSubscriptionInfo(2, "sim2", 2222); List<SubscriptionInfo> activeSubInfos = Arrays.asList(sub1, sub2); SubscriptionInfo info = mController.fineSubscriptionInfo(3333, activeSubInfos, 1); assertThat(info).isNull(); info = mController.fineSubscriptionInfo(3333, activeSubInfos, 2); assertThat(info).isNull(); } @Test public void fineSubscriptionInfo_diffCarrierId_returnMatchedOne() { setUpSpyController(); SubscriptionInfo sub1 = mockSubscriptionInfo(1, "sim1", 1111); SubscriptionInfo sub2 = mockSubscriptionInfo(2, "sim2", 2222); List<SubscriptionInfo> activeSubInfos = Arrays.asList(sub1, sub2); SubscriptionInfo info = mController.fineSubscriptionInfo(1111, activeSubInfos, 1); assertThat(info).isNotNull(); assertThat(info.getDisplayName().toString()).isEqualTo("sim1"); info = mController.fineSubscriptionInfo(1111, activeSubInfos, 2); assertThat(info).isNotNull(); assertThat(info.getDisplayName().toString()).isEqualTo("sim1"); info = mController.fineSubscriptionInfo(2222, activeSubInfos, 1); assertThat(info).isNotNull(); assertThat(info.getDisplayName().toString()).isEqualTo("sim2"); info = mController.fineSubscriptionInfo(2222, activeSubInfos, 2); assertThat(info).isNotNull(); assertThat(info.getDisplayName().toString()).isEqualTo("sim2"); } @Test public void fineSubscriptionInfo_sameCarrierId_returnDefaultDataOne() { setUpSpyController(); SubscriptionInfo sub1 = mockSubscriptionInfo(1, "sim1", 1111); SubscriptionInfo sub2 = mockSubscriptionInfo(2, "sim2", 1111); List<SubscriptionInfo> activeSubInfos = Arrays.asList(sub1, sub2); SubscriptionInfo info = mController.fineSubscriptionInfo(1111, activeSubInfos, 1); assertThat(info).isNotNull(); assertThat(info.getDisplayName().toString()).isEqualTo("sim1"); info = mController.fineSubscriptionInfo(1111, activeSubInfos, 2); assertThat(info).isNotNull(); assertThat(info.getDisplayName().toString()).isEqualTo("sim2"); } private SubscriptionInfo mockSubscriptionInfo(int subId, String displayName, int carrierId) { SubscriptionInfo info = mock(SubscriptionInfo.class); when(info.getSubscriptionId()).thenReturn(subId); when(info.getDisplayName()).thenReturn(displayName); when(info.getCarrierId()).thenReturn(carrierId); return info; } }