From 6db77174a2171157bfc93c5836704fd6609c9ae7 Mon Sep 17 00:00:00 2001 From: Jordan Liu Date: Mon, 24 Jun 2019 11:27:34 -0700 Subject: [PATCH] Do not notify SS change with invalid subId If a service state change is reported as a subscription is becoming invalid (i.e. no longer connected to a phone), the current behavior can sometimes notify this change to all PhoneStateListeners regardless of which subId they registered to listen on (namely this happens when the subscription was attached to the default phone). This change removes that behavior so that no listeners are notified if the subscription is invalid. Test: manually verified on DSDS that when 1. erasing eSIM when it is default and 2. removing pSIM when it is default, the service state triangle for the other SIM is unaffected Bug: 133140128 Merged-In: I906147b2d13be0bc26f8d31ec361fcd016c2cda0 Change-Id: I906147b2d13be0bc26f8d31ec361fcd016c2cda0 (cherry picked from commit 02ce78681fc1c9860abc4a68a9e77886963258a0) --- .../java/com/android/server/TelephonyRegistry.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/TelephonyRegistry.java b/services/core/java/com/android/server/TelephonyRegistry.java index e66e596d5038c..f7e825eecc122 100644 --- a/services/core/java/com/android/server/TelephonyRegistry.java +++ b/services/core/java/com/android/server/TelephonyRegistry.java @@ -1027,7 +1027,12 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { log(str); } mLocalLog.log(str); - if (validatePhoneId(phoneId)) { + // for service state updates, don't notify clients when subId is invalid. This prevents + // us from sending incorrect notifications like b/133140128 + // In the future, we can remove this logic for every notification here and add a + // callback so listeners know when their PhoneStateListener's subId becomes invalid, but + // for now we use the simplest fix. + if (validatePhoneId(phoneId) && SubscriptionManager.isValidSubscriptionId(subId)) { mServiceState[phoneId] = state; for (Record r : mRecords) { @@ -1059,7 +1064,8 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { } } } else { - log("notifyServiceStateForSubscriber: INVALID phoneId=" + phoneId); + log("notifyServiceStateForSubscriber: INVALID phoneId=" + phoneId + + " or subId=" + subId); } handleRemoveListLocked(); }