Loading src/java/com/android/internal/telephony/IccSmsInterfaceManager.java +28 −6 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ import android.net.Uri; import android.os.AsyncResult; import android.os.Binder; import android.os.Handler; import android.os.Looper; import android.os.Message; import android.os.UserManager; import android.provider.Telephony; Loading Loading @@ -199,13 +200,23 @@ public class IccSmsInterfaceManager { if (mPhone.getPhoneId() == intent.getIntExtra( CarrierConfigManager.EXTRA_SLOT_INDEX, SubscriptionManager.INVALID_SIM_SLOT_INDEX)) { new Thread(() -> { log("Carrier config changed. Update ranges."); mCellBroadcastRangeManager.updateRanges(); }).start(); } } } }, new IntentFilter(CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED)); } private void enforceNotOnHandlerThread(String methodName) { if (Looper.myLooper() == mHandler.getLooper()) { throw new RuntimeException("This method " + methodName + " will deadlock if called from" + " the handler's thread."); } } protected void markMessagesAsRead(ArrayList<byte[]> messages) { if (messages == null) { return; Loading Loading @@ -275,6 +286,7 @@ public class IccSmsInterfaceManager { "("+ Arrays.toString(pdu) + ")"); enforceReceiveAndSend("Updating message on Icc"); enforceAccessMessageOnICC("Updating message on Icc"); enforceNotOnHandlerThread("updateMessageOnIccEf"); if (mAppOps.noteOp(AppOpsManager.OPSTR_WRITE_ICC_SMS, Binder.getCallingUid(), callingPackage) != AppOpsManager.MODE_ALLOWED) { return false; Loading Loading @@ -334,6 +346,7 @@ public class IccSmsInterfaceManager { "pdu=("+ Arrays.toString(pdu) + "), smsc=(" + Arrays.toString(smsc) +")"); enforceReceiveAndSend("Copying message to Icc"); enforceNotOnHandlerThread("copyMessageToIccEf"); if (mAppOps.noteOp(AppOpsManager.OPSTR_WRITE_ICC_SMS, Binder.getCallingUid(), callingPackage) != AppOpsManager.MODE_ALLOWED) { return false; Loading Loading @@ -373,6 +386,7 @@ public class IccSmsInterfaceManager { Manifest.permission.RECEIVE_SMS, "Reading messages from Icc"); enforceAccessMessageOnICC("Reading messages from Icc"); enforceNotOnHandlerThread("getAllMessagesFromIccEf"); if (mAppOps.noteOp(AppOpsManager.OPSTR_READ_ICC_SMS, Binder.getCallingUid(), callingPackage) != AppOpsManager.MODE_ALLOWED) { return new ArrayList<SmsRawData>(); Loading Loading @@ -880,6 +894,7 @@ public class IccSmsInterfaceManager { callingPackage, "getSmscAddressFromIccEf")) { return null; } enforceNotOnHandlerThread("getSmscAddressFromIccEf"); synchronized (mLock) { mSmsc = null; Message response = mHandler.obtainMessage(EVENT_GET_SMSC_DONE); Loading Loading @@ -1155,9 +1170,10 @@ public class IccSmsInterfaceManager { @UnsupportedAppUsage private boolean setCellBroadcastConfig(SmsBroadcastConfigInfo[] configs) { if (DBG) if (DBG) { log("Calling setGsmBroadcastConfig with " + configs.length + " configurations"); } enforceNotOnHandlerThread("setCellBroadcastConfig"); synchronized (mLock) { Message response = mHandler.obtainMessage(EVENT_SET_BROADCAST_CONFIG_DONE); Loading @@ -1175,9 +1191,11 @@ public class IccSmsInterfaceManager { } private boolean setCellBroadcastActivation(boolean activate) { if (DBG) if (DBG) { log("Calling setCellBroadcastActivation(" + activate + ')'); } enforceNotOnHandlerThread("setCellBroadcastConfig"); synchronized (mLock) { Message response = mHandler.obtainMessage(EVENT_SET_BROADCAST_ACTIVATION_DONE); Loading @@ -1196,9 +1214,11 @@ public class IccSmsInterfaceManager { @UnsupportedAppUsage private boolean setCdmaBroadcastConfig(CdmaSmsBroadcastConfigInfo[] configs) { if (DBG) if (DBG) { log("Calling setCdmaBroadcastConfig with " + configs.length + " configurations"); } enforceNotOnHandlerThread("setCdmaBroadcastConfig"); synchronized (mLock) { Message response = mHandler.obtainMessage(EVENT_SET_BROADCAST_CONFIG_DONE); Loading @@ -1216,9 +1236,11 @@ public class IccSmsInterfaceManager { } private boolean setCdmaBroadcastActivation(boolean activate) { if (DBG) if (DBG) { log("Calling setCdmaBroadcastActivation(" + activate + ")"); } enforceNotOnHandlerThread("setCdmaBroadcastActivation"); synchronized (mLock) { Message response = mHandler.obtainMessage(EVENT_SET_BROADCAST_ACTIVATION_DONE); Loading Loading
src/java/com/android/internal/telephony/IccSmsInterfaceManager.java +28 −6 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ import android.net.Uri; import android.os.AsyncResult; import android.os.Binder; import android.os.Handler; import android.os.Looper; import android.os.Message; import android.os.UserManager; import android.provider.Telephony; Loading Loading @@ -199,13 +200,23 @@ public class IccSmsInterfaceManager { if (mPhone.getPhoneId() == intent.getIntExtra( CarrierConfigManager.EXTRA_SLOT_INDEX, SubscriptionManager.INVALID_SIM_SLOT_INDEX)) { new Thread(() -> { log("Carrier config changed. Update ranges."); mCellBroadcastRangeManager.updateRanges(); }).start(); } } } }, new IntentFilter(CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED)); } private void enforceNotOnHandlerThread(String methodName) { if (Looper.myLooper() == mHandler.getLooper()) { throw new RuntimeException("This method " + methodName + " will deadlock if called from" + " the handler's thread."); } } protected void markMessagesAsRead(ArrayList<byte[]> messages) { if (messages == null) { return; Loading Loading @@ -275,6 +286,7 @@ public class IccSmsInterfaceManager { "("+ Arrays.toString(pdu) + ")"); enforceReceiveAndSend("Updating message on Icc"); enforceAccessMessageOnICC("Updating message on Icc"); enforceNotOnHandlerThread("updateMessageOnIccEf"); if (mAppOps.noteOp(AppOpsManager.OPSTR_WRITE_ICC_SMS, Binder.getCallingUid(), callingPackage) != AppOpsManager.MODE_ALLOWED) { return false; Loading Loading @@ -334,6 +346,7 @@ public class IccSmsInterfaceManager { "pdu=("+ Arrays.toString(pdu) + "), smsc=(" + Arrays.toString(smsc) +")"); enforceReceiveAndSend("Copying message to Icc"); enforceNotOnHandlerThread("copyMessageToIccEf"); if (mAppOps.noteOp(AppOpsManager.OPSTR_WRITE_ICC_SMS, Binder.getCallingUid(), callingPackage) != AppOpsManager.MODE_ALLOWED) { return false; Loading Loading @@ -373,6 +386,7 @@ public class IccSmsInterfaceManager { Manifest.permission.RECEIVE_SMS, "Reading messages from Icc"); enforceAccessMessageOnICC("Reading messages from Icc"); enforceNotOnHandlerThread("getAllMessagesFromIccEf"); if (mAppOps.noteOp(AppOpsManager.OPSTR_READ_ICC_SMS, Binder.getCallingUid(), callingPackage) != AppOpsManager.MODE_ALLOWED) { return new ArrayList<SmsRawData>(); Loading Loading @@ -880,6 +894,7 @@ public class IccSmsInterfaceManager { callingPackage, "getSmscAddressFromIccEf")) { return null; } enforceNotOnHandlerThread("getSmscAddressFromIccEf"); synchronized (mLock) { mSmsc = null; Message response = mHandler.obtainMessage(EVENT_GET_SMSC_DONE); Loading Loading @@ -1155,9 +1170,10 @@ public class IccSmsInterfaceManager { @UnsupportedAppUsage private boolean setCellBroadcastConfig(SmsBroadcastConfigInfo[] configs) { if (DBG) if (DBG) { log("Calling setGsmBroadcastConfig with " + configs.length + " configurations"); } enforceNotOnHandlerThread("setCellBroadcastConfig"); synchronized (mLock) { Message response = mHandler.obtainMessage(EVENT_SET_BROADCAST_CONFIG_DONE); Loading @@ -1175,9 +1191,11 @@ public class IccSmsInterfaceManager { } private boolean setCellBroadcastActivation(boolean activate) { if (DBG) if (DBG) { log("Calling setCellBroadcastActivation(" + activate + ')'); } enforceNotOnHandlerThread("setCellBroadcastConfig"); synchronized (mLock) { Message response = mHandler.obtainMessage(EVENT_SET_BROADCAST_ACTIVATION_DONE); Loading @@ -1196,9 +1214,11 @@ public class IccSmsInterfaceManager { @UnsupportedAppUsage private boolean setCdmaBroadcastConfig(CdmaSmsBroadcastConfigInfo[] configs) { if (DBG) if (DBG) { log("Calling setCdmaBroadcastConfig with " + configs.length + " configurations"); } enforceNotOnHandlerThread("setCdmaBroadcastConfig"); synchronized (mLock) { Message response = mHandler.obtainMessage(EVENT_SET_BROADCAST_CONFIG_DONE); Loading @@ -1216,9 +1236,11 @@ public class IccSmsInterfaceManager { } private boolean setCdmaBroadcastActivation(boolean activate) { if (DBG) if (DBG) { log("Calling setCdmaBroadcastActivation(" + activate + ")"); } enforceNotOnHandlerThread("setCdmaBroadcastActivation"); synchronized (mLock) { Message response = mHandler.obtainMessage(EVENT_SET_BROADCAST_ACTIVATION_DONE); Loading