Show default data SIM in Wi-Fi details when dual SIMs have the same carrier ID

- Because the wifiConfiguration is only save the carrier ID for EAP-SIM authentication

- If multiple SIMs have the same carrier ID, the Wi-Fi framework will use the default data SIM for EAP-SIM authentication

- Show default data SIM in Wi-Fi details settings, when dual SIMs have the same carrier ID

Bug: 233765468
Test: manual test
make RunSettingsRoboTests ROBOTEST_FILTER=WifiDetailPreferenceController2Test

Change-Id: I350fe637f506134770ccf316e47c0e225661bb6a
Merged-In: I350fe637f506134770ccf316e47c0e225661bb6a
This commit is contained in:
Weng Su
2022-08-09 00:59:52 +08:00
parent ec740c30d5
commit dc4ad09291
2 changed files with 99 additions and 18 deletions

View File

@@ -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;
@@ -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.
@@ -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;
}
}