Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d1a49756 authored by Thomas Nguyen's avatar Thomas Nguyen
Browse files

Make InboundSmsHandler run on the main thread

Bug: 255583263
Test: run the following tests
- manual send and receive SMS
- atest com.android.internal.telephony.gsm.GsmInboundSmsHandlerTest
- atest com.android.internal.telephony.SmsDispatchersControllerTest

Change-Id: Ica671de809f3ad454948a220ed159f58d1c138b0
parent 0d6178db
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -52,6 +52,7 @@ import android.net.Uri;
import android.os.AsyncResult;
import android.os.Build;
import android.os.Bundle;
import android.os.Looper;
import android.os.Message;
import android.os.PowerManager;
import android.os.PowerWhitelistManager;
@@ -287,8 +288,8 @@ public abstract class InboundSmsHandler extends StateMachine {
     * @param storageMonitor the SmsStorageMonitor to check for storage availability
     */
    protected InboundSmsHandler(String name, Context context, SmsStorageMonitor storageMonitor,
            Phone phone) {
        super(name);
            Phone phone, Looper looper) {
        super(name, looper);

        mContext = context;
        mStorageMonitor = storageMonitor;
+11 −2
Original line number Diff line number Diff line
@@ -33,6 +33,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.Sms;
@@ -331,6 +332,14 @@ public class SmsDispatchersController extends Handler {

    public SmsDispatchersController(Phone phone, SmsStorageMonitor storageMonitor,
            SmsUsageMonitor usageMonitor) {
        this(phone, storageMonitor, usageMonitor, phone.getLooper());
    }

    @VisibleForTesting
    public SmsDispatchersController(Phone phone, SmsStorageMonitor storageMonitor,
            SmsUsageMonitor usageMonitor, Looper looper) {
        super(looper);

        Rlog.d(TAG, "SmsDispatchersController created");

        mContext = phone.getContext();
@@ -343,9 +352,9 @@ public class SmsDispatchersController extends Handler {
        mImsSmsDispatcher = new ImsSmsDispatcher(phone, this, ImsManager::getConnector);
        mCdmaDispatcher = new CdmaSMSDispatcher(phone, this);
        mGsmInboundSmsHandler = GsmInboundSmsHandler.makeInboundSmsHandler(phone.getContext(),
                storageMonitor, phone);
                storageMonitor, phone, looper);
        mCdmaInboundSmsHandler = CdmaInboundSmsHandler.makeInboundSmsHandler(phone.getContext(),
                storageMonitor, phone, (CdmaSMSDispatcher) mCdmaDispatcher);
                storageMonitor, phone, (CdmaSMSDispatcher) mCdmaDispatcher, looper);
        mGsmDispatcher = new GsmSMSDispatcher(phone, this, mGsmInboundSmsHandler);
        SmsBroadcastUndelivered.initialize(phone.getContext(),
                mGsmInboundSmsHandler, mCdmaInboundSmsHandler);
+6 −4
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.res.Resources;
import android.os.Looper;
import android.os.Message;
import android.os.RemoteCallback;
import android.os.SystemProperties;
@@ -77,8 +78,8 @@ public class CdmaInboundSmsHandler extends InboundSmsHandler {
     * Create a new inbound SMS handler for CDMA.
     */
    private CdmaInboundSmsHandler(Context context, SmsStorageMonitor storageMonitor,
            Phone phone, CdmaSMSDispatcher smsDispatcher) {
        super("CdmaInboundSmsHandler", context, storageMonitor, phone);
            Phone phone, CdmaSMSDispatcher smsDispatcher, Looper looper) {
        super("CdmaInboundSmsHandler", context, storageMonitor, phone, looper);
        mSmsDispatcher = smsDispatcher;
        phone.mCi.setOnNewCdmaSms(getHandler(), EVENT_NEW_SMS, null);

@@ -169,9 +170,10 @@ public class CdmaInboundSmsHandler extends InboundSmsHandler {
     * Wait for state machine to enter startup state. We can't send any messages until then.
     */
    public static CdmaInboundSmsHandler makeInboundSmsHandler(Context context,
            SmsStorageMonitor storageMonitor, Phone phone, CdmaSMSDispatcher smsDispatcher) {
            SmsStorageMonitor storageMonitor, Phone phone, CdmaSMSDispatcher smsDispatcher,
            Looper looper) {
        CdmaInboundSmsHandler handler = new CdmaInboundSmsHandler(context, storageMonitor,
                phone, smsDispatcher);
                phone, smsDispatcher, looper);
        handler.start();
        return handler;
    }
+6 −4
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import android.content.Intent;
import android.content.IntentFilter;
import android.os.AsyncResult;
import android.os.Build;
import android.os.Looper;
import android.os.Message;
import android.os.SystemProperties;
import android.provider.Telephony.Sms.Intents;
@@ -57,8 +58,8 @@ public class GsmInboundSmsHandler extends InboundSmsHandler {
     * Create a new GSM inbound SMS handler.
     */
    private GsmInboundSmsHandler(Context context, SmsStorageMonitor storageMonitor,
            Phone phone) {
        super("GsmInboundSmsHandler", context, storageMonitor, phone);
            Phone phone, Looper looper) {
        super("GsmInboundSmsHandler", context, storageMonitor, phone, looper);
        phone.mCi.setOnNewGsmSms(getHandler(), EVENT_NEW_SMS, null);
        mDataDownloadHandler = new UsimDataDownloadHandler(phone.mCi, phone.getPhoneId());
        mCellBroadcastServiceManager.enable();
@@ -128,8 +129,9 @@ public class GsmInboundSmsHandler extends InboundSmsHandler {
     * Wait for state machine to enter startup state. We can't send any messages until then.
     */
    public static GsmInboundSmsHandler makeInboundSmsHandler(Context context,
            SmsStorageMonitor storageMonitor, Phone phone) {
        GsmInboundSmsHandler handler = new GsmInboundSmsHandler(context, storageMonitor, phone);
            SmsStorageMonitor storageMonitor, Phone phone, Looper looper) {
        GsmInboundSmsHandler handler =
                new GsmInboundSmsHandler(context, storageMonitor, phone, looper);
        handler.start();
        return handler;
    }
+4 −4
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ import android.app.PendingIntent;
import android.content.Intent;
import android.net.Uri;
import android.os.AsyncResult;
import android.os.Looper;
import android.os.Message;
import android.provider.Telephony.Sms.Intents;
import android.telephony.DisconnectCause;
@@ -79,8 +80,8 @@ public class SmsDispatchersControllerTest extends TelephonyTest {
     */
    private static class TestSmsDispatchersController extends SmsDispatchersController {
        TestSmsDispatchersController(Phone phone, SmsStorageMonitor storageMonitor,
                SmsUsageMonitor usageMonitor) {
            super(phone, storageMonitor, usageMonitor);
                SmsUsageMonitor usageMonitor, Looper looper) {
            super(phone, storageMonitor, usageMonitor, looper);
        }

        public DomainSelectionConnectionHolder testGetDomainSelectionConnectionHolder(
@@ -174,9 +175,8 @@ public class SmsDispatchersControllerTest extends TelephonyTest {
        super.setUp(getClass().getSimpleName());
        mTracker = mock(SMSDispatcher.SmsTracker.class);
        setupMockPackagePermissionChecks();

        mSmsDispatchersController = new TestSmsDispatchersController(mPhone, mSmsStorageMonitor,
            mSmsUsageMonitor);
            mSmsUsageMonitor, mTestableLooper.getLooper());
        setUpDomainSelectionConnectionAsNotSupported();
        processAllMessages();
    }
Loading