Merge "Dismiss SIM PIN screen when eSIM disabled" into sc-dev
This commit is contained in:
@@ -123,10 +123,13 @@ import java.util.ArrayDeque;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.TimeZone;
|
import java.util.TimeZone;
|
||||||
import java.util.concurrent.Executor;
|
import java.util.concurrent.Executor;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
@@ -469,16 +472,39 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
List<SubscriptionInfo> subscriptionInfos = getSubscriptionInfo(true /* forceReload */);
|
List<SubscriptionInfo> subscriptionInfos = getSubscriptionInfo(true /* forceReload */);
|
||||||
|
|
||||||
// Hack level over 9000: Because the subscription id is not yet valid when we see the
|
// Hack level over 9000: Because the subscription id is not yet valid when we see the
|
||||||
// first update in handleSimStateChange, we need to force refresh all all SIM states
|
// first update in handleSimStateChange, we need to force refresh all SIM states
|
||||||
// so the subscription id for them is consistent.
|
// so the subscription id for them is consistent.
|
||||||
ArrayList<SubscriptionInfo> changedSubscriptions = new ArrayList<>();
|
ArrayList<SubscriptionInfo> changedSubscriptions = new ArrayList<>();
|
||||||
|
Set<Integer> activeSubIds = new HashSet<>();
|
||||||
for (int i = 0; i < subscriptionInfos.size(); i++) {
|
for (int i = 0; i < subscriptionInfos.size(); i++) {
|
||||||
SubscriptionInfo info = subscriptionInfos.get(i);
|
SubscriptionInfo info = subscriptionInfos.get(i);
|
||||||
|
activeSubIds.add(info.getSubscriptionId());
|
||||||
boolean changed = refreshSimState(info.getSubscriptionId(), info.getSimSlotIndex());
|
boolean changed = refreshSimState(info.getSubscriptionId(), info.getSimSlotIndex());
|
||||||
if (changed) {
|
if (changed) {
|
||||||
changedSubscriptions.add(info);
|
changedSubscriptions.add(info);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// It is possible for active subscriptions to become invalid (-1), and these will not be
|
||||||
|
// present in the subscriptionInfo list
|
||||||
|
Iterator<Map.Entry<Integer, SimData>> iter = mSimDatas.entrySet().iterator();
|
||||||
|
while (iter.hasNext()) {
|
||||||
|
Map.Entry<Integer, SimData> simData = iter.next();
|
||||||
|
if (!activeSubIds.contains(simData.getKey())) {
|
||||||
|
Log.i(TAG, "Previously active sub id " + simData.getKey() + " is now invalid, "
|
||||||
|
+ "will remove");
|
||||||
|
iter.remove();
|
||||||
|
|
||||||
|
SimData data = simData.getValue();
|
||||||
|
for (int j = 0; j < mCallbacks.size(); j++) {
|
||||||
|
KeyguardUpdateMonitorCallback cb = mCallbacks.get(j).get();
|
||||||
|
if (cb != null) {
|
||||||
|
cb.onSimStateChanged(data.subId, data.slotId, data.simState);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for (int i = 0; i < changedSubscriptions.size(); i++) {
|
for (int i = 0; i < changedSubscriptions.size(); i++) {
|
||||||
SimData data = mSimDatas.get(changedSubscriptions.get(i).getSubscriptionId());
|
SimData data = mSimDatas.get(changedSubscriptions.get(i).getSubscriptionId());
|
||||||
for (int j = 0; j < mCallbacks.size(); j++) {
|
for (int j = 0; j < mCallbacks.size(); j++) {
|
||||||
|
|||||||
@@ -753,6 +753,28 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase {
|
|||||||
assertThat(listToVerify.get(0)).isEqualTo(TEST_SUBSCRIPTION_2);
|
assertThat(listToVerify.get(0)).isEqualTo(TEST_SUBSCRIPTION_2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testActiveSubscriptionBecomesInactive() {
|
||||||
|
List<SubscriptionInfo> list = new ArrayList<>();
|
||||||
|
list.add(TEST_SUBSCRIPTION);
|
||||||
|
when(mSubscriptionManager.getCompleteActiveSubscriptionInfoList()).thenReturn(list);
|
||||||
|
mKeyguardUpdateMonitor.mPhoneStateListener.onActiveDataSubscriptionIdChanged(
|
||||||
|
TEST_SUBSCRIPTION.getSubscriptionId());
|
||||||
|
mTestableLooper.processAllMessages();
|
||||||
|
assertThat(mKeyguardUpdateMonitor.mSimDatas.get(TEST_SUBSCRIPTION.getSubscriptionId()))
|
||||||
|
.isNotNull();
|
||||||
|
|
||||||
|
when(mSubscriptionManager.getCompleteActiveSubscriptionInfoList()).thenReturn(null);
|
||||||
|
mKeyguardUpdateMonitor.mPhoneStateListener.onActiveDataSubscriptionIdChanged(
|
||||||
|
SubscriptionManager.INVALID_SUBSCRIPTION_ID);
|
||||||
|
mTestableLooper.processAllMessages();
|
||||||
|
|
||||||
|
assertThat(mKeyguardUpdateMonitor.mSimDatas.get(TEST_SUBSCRIPTION.getSubscriptionId()))
|
||||||
|
.isNull();
|
||||||
|
assertThat(mKeyguardUpdateMonitor.mSimDatas.get(
|
||||||
|
SubscriptionManager.INVALID_SUBSCRIPTION_ID)).isNull();
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testIsUserUnlocked() {
|
public void testIsUserUnlocked() {
|
||||||
// mUserManager will report the user as unlocked on @Before
|
// mUserManager will report the user as unlocked on @Before
|
||||||
|
|||||||
Reference in New Issue
Block a user