summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java6
-rw-r--r--packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java23
2 files changed, 28 insertions, 1 deletions
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
index 0b66a0ffb711..3d675fa01b15 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
@@ -37,6 +37,7 @@ import static android.hardware.biometrics.BiometricSourceType.FINGERPRINT;
import static android.os.BatteryManager.BATTERY_STATUS_UNKNOWN;
import static android.os.BatteryManager.CHARGING_POLICY_DEFAULT;
import static android.telephony.SubscriptionManager.PROFILE_CLASS_PROVISIONING;
+import static android.telephony.SubscriptionManager.SUBSCRIPTION_TYPE_REMOTE_SIM;
import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.SOME_AUTH_REQUIRED_AFTER_ADAPTIVE_AUTH_REQUEST;
import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_BOOT;
@@ -689,13 +690,16 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
* @return List of SubscriptionInfo records, maybe empty but never null.
*
* Note that this method will filter out any subscription which is PROFILE_CLASS_PROVISIONING
+ * and REMOTE SIMs. REMOTE SIMs use an invalid slot index (-1).
*/
public List<SubscriptionInfo> getSubscriptionInfo(boolean forceReload) {
List<SubscriptionInfo> sil = mSubscriptionInfo;
if (sil == null || forceReload) {
mSubscriptionInfo = mSubscriptionManager.getCompleteActiveSubscriptionInfoList()
.stream()
- .filter(subInfo -> subInfo.getProfileClass() != PROFILE_CLASS_PROVISIONING)
+ .filter(subInfo ->
+ subInfo.getProfileClass() != PROFILE_CLASS_PROVISIONING
+ && subInfo.getSubscriptionType() != SUBSCRIPTION_TYPE_REMOTE_SIM)
.toList();
}
diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java
index 4110a05170b3..60a9fcea854f 100644
--- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java
+++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java
@@ -218,6 +218,9 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase {
TEST_CARRIER, TEST_CARRIER, NAME_SOURCE_CARRIER_ID, 0xFFFFFF, "",
DATA_ROAMING_DISABLE, null, null, null, null, false, null, "", false, TEST_GROUP_UUID,
TEST_CARRIER_ID, PROFILE_CLASS_PROVISIONING);
+ private static final SubscriptionInfo TEST_REMOTE_SIM =
+ new SubscriptionInfo.Builder(TEST_SUBSCRIPTION)
+ .setType(SubscriptionManager.SUBSCRIPTION_TYPE_REMOTE_SIM).build();
private static final int FINGERPRINT_SENSOR_ID = 1;
private KosmosJavaAdapter mKosmos;
@Mock
@@ -1375,6 +1378,26 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase {
}
@Test
+ public void testActiveSubscriptionList_filtersRemoteSim() {
+ List<SubscriptionInfo> list = new ArrayList<>();
+ list.add(TEST_REMOTE_SIM);
+ when(mSubscriptionManager.getCompleteActiveSubscriptionInfoList()).thenReturn(list);
+ mKeyguardUpdateMonitor.mSubscriptionListener.onSubscriptionsChanged();
+
+ assertThat(mKeyguardUpdateMonitor.getSubscriptionInfo(true)).isEmpty();
+
+ SubscriptionInfo.Builder b = new SubscriptionInfo.Builder(TEST_REMOTE_SIM);
+ b.setType(SubscriptionManager.SUBSCRIPTION_TYPE_LOCAL_SIM);
+ SubscriptionInfo validInfo = b.build();
+
+ list.clear();
+ list.add(validInfo);
+ mKeyguardUpdateMonitor.mSubscriptionListener.onSubscriptionsChanged();
+
+ assertThat(mKeyguardUpdateMonitor.getSubscriptionInfo(true)).hasSize(1);
+ }
+
+ @Test
public void testActiveSubscriptionList_filtersProvisioningNetworks_untilValid() {
List<SubscriptionInfo> list = new ArrayList<>();
list.add(TEST_SUBSCRIPTION_PROVISIONING);