Fix race condition set mobile data policy
Fix: 396527224
Test: reporter verified
Test: basic voice call + data browsing
Flag: EXEMPT bug fix
Change-Id: I1ddf9cb61477d4f2b7afc4ec749eacf3c0066b12
diff --git a/src/java/com/android/internal/telephony/data/DataSettingsManager.java b/src/java/com/android/internal/telephony/data/DataSettingsManager.java
index 0b9ac27..0372bc6 100644
--- a/src/java/com/android/internal/telephony/data/DataSettingsManager.java
+++ b/src/java/com/android/internal/telephony/data/DataSettingsManager.java
@@ -216,7 +216,6 @@
break;
}
case EVENT_SUBSCRIPTIONS_CHANGED: {
- mSubId = (int) msg.obj;
refreshEnabledMobileDataPolicy();
updateDataEnabledAndNotify(TelephonyManager.DATA_ENABLED_REASON_USER,
mPhone.getContext().getOpPackageName(),
@@ -313,11 +312,12 @@
public void onSubscriptionsChanged() {
if (mSubId != mPhone.getSubId()) {
log("onSubscriptionsChanged: " + mSubId + " to " + mPhone.getSubId());
+ mSubId = mPhone.getSubId();
obtainMessage(EVENT_SUBSCRIPTIONS_CHANGED, mPhone.getSubId())
.sendToTarget();
}
}
- }, this::post);
+ }, Runnable::run);
// some overall mobile data override policy depend on whether DDS is user data enabled.
for (Phone phone : PhoneFactory.getPhones()) {
if (phone.getPhoneId() != mPhone.getPhoneId()) {