Merge "Shared state modified in two threads without synchronization" am: 4ad859af44
Original change: https://android-review.googlesource.com/c/platform/packages/services/Telephony/+/1656852
Change-Id: I05474595ed98b643fa3ae89335ab3d37b4fb39ea
diff --git a/src/com/android/phone/CarrierConfigLoader.java b/src/com/android/phone/CarrierConfigLoader.java
index 5196c59..4ff7316 100644
--- a/src/com/android/phone/CarrierConfigLoader.java
+++ b/src/com/android/phone/CarrierConfigLoader.java
@@ -1225,25 +1225,29 @@
logd("Ignore invalid phoneId: " + phoneId + " for subId: " + subscriptionId);
return;
}
- overrideConfig(mOverrideConfigs, phoneId, overrides);
+ // Post to run on handler thread on which all states should be confined.
+ mHandler.post(() -> {
+ overrideConfig(mOverrideConfigs, phoneId, overrides);
- if (persistent) {
- overrideConfig(mPersistentOverrideConfigs, phoneId, overrides);
+ if (persistent) {
+ overrideConfig(mPersistentOverrideConfigs, phoneId, overrides);
- if (overrides != null) {
- final CarrierIdentifier carrierId = getCarrierIdentifierForPhoneId(phoneId);
- saveConfigToXml(mPlatformCarrierConfigPackage, OVERRIDE_PACKAGE_ADDITION, phoneId,
- carrierId, mPersistentOverrideConfigs[phoneId]);
- } else {
- final String iccid = getIccIdForPhoneId(phoneId);
- final int cid = getSpecificCarrierIdForPhoneId(phoneId);
- String fileName = getFilenameForConfig(mPlatformCarrierConfigPackage,
- OVERRIDE_PACKAGE_ADDITION, iccid, cid);
- File fileToDelete = new File(mContext.getFilesDir(), fileName);
- fileToDelete.delete();
+ if (overrides != null) {
+ final CarrierIdentifier carrierId = getCarrierIdentifierForPhoneId(phoneId);
+ saveConfigToXml(mPlatformCarrierConfigPackage, OVERRIDE_PACKAGE_ADDITION,
+ phoneId,
+ carrierId, mPersistentOverrideConfigs[phoneId]);
+ } else {
+ final String iccid = getIccIdForPhoneId(phoneId);
+ final int cid = getSpecificCarrierIdForPhoneId(phoneId);
+ String fileName = getFilenameForConfig(mPlatformCarrierConfigPackage,
+ OVERRIDE_PACKAGE_ADDITION, iccid, cid);
+ File fileToDelete = new File(mContext.getFilesDir(), fileName);
+ fileToDelete.delete();
+ }
}
- }
- notifySubscriptionInfoUpdater(phoneId);
+ notifySubscriptionInfoUpdater(phoneId);
+ });
}
private void overrideConfig(@NonNull PersistableBundle[] currentOverrides, int phoneId,