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

Commit a8361395 authored by Amit Mahajan's avatar Amit Mahajan
Browse files

Changes to scan raw table right away if user is already unlocked.

Bug: 28821195
Change-Id: I79d7bcccbaa2e0bb4841c70b7188cff151b701f7
parent 946fe8e0
Loading
Loading
Loading
Loading
+19 −10
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import android.database.Cursor;
import android.database.SQLException;
import android.net.Uri;
import android.os.UserHandle;
import android.os.UserManager;
import android.provider.Telephony;
import android.telephony.Rlog;

@@ -83,16 +84,17 @@ public class SmsBroadcastUndelivered {
        public void onReceive(Context context, Intent intent) {
            Rlog.d(TAG, "Received broadcast " + intent.getAction());
            if (Intent.ACTION_USER_UNLOCKED.equals(intent.getAction())) {
                Thread t = new Thread() {
                new ScanRawTableThread().start();
            }
        }
    };

    private class ScanRawTableThread extends Thread {
        @Override
        public void run() {
            scanRawTable();
        }
                };
                t.start();
            }
    }
    };

    public static void initialize(Context context, GsmInboundSmsHandler gsmInboundSmsHandler,
        CdmaInboundSmsHandler cdmaInboundSmsHandler) {
@@ -118,9 +120,16 @@ public class SmsBroadcastUndelivered {
        mGsmInboundSmsHandler = gsmInboundSmsHandler;
        mCdmaInboundSmsHandler = cdmaInboundSmsHandler;

        UserManager userManager = (UserManager) context.getSystemService(Context.USER_SERVICE);

        if (userManager.isUserUnlocked()) {
            new ScanRawTableThread().start();
        } else {
            IntentFilter userFilter = new IntentFilter();
            userFilter.addAction(Intent.ACTION_USER_UNLOCKED);
        context.registerReceiverAsUser(mBroadcastReceiver, UserHandle.ALL, userFilter, null, null);
            context.registerReceiverAsUser(mBroadcastReceiver, UserHandle.ALL, userFilter, null,
                    null);
        }
    }

    /**
+35 −5
Original line number Diff line number Diff line
@@ -630,9 +630,8 @@ public class GsmInboundSmsHandlerTest extends TelephonyTest {

    @Test
    @MediumTest
    public void testBroadcastUndelivered() throws Exception {
    public void testBroadcastUndeliveredUserLocked() throws Exception {
        replaceInstance(SmsBroadcastUndelivered.class, "instance", null, null);
        SmsBroadcastUndelivered.initialize(mContext, mGsmInboundSmsHandler, mCdmaInboundSmsHandler);
        doReturn(0).when(mInboundSmsTracker).getDestPort();

        // add a fake entry to db
@@ -642,13 +641,44 @@ public class GsmInboundSmsHandlerTest extends TelephonyTest {
        // make it a single-part message
        doReturn(1).when(mInboundSmsTracker).getMessageCount();

        // user locked
        UserManager userManager = (UserManager)mContext.getSystemService(Context.USER_SERVICE);
        doReturn(false).when(userManager).isUserUnlocked();

        SmsBroadcastUndelivered.initialize(mContext, mGsmInboundSmsHandler, mCdmaInboundSmsHandler);
        waitForMs(100);

        // verify no broadcasts sent because due to !isUserUnlocked
        verify(mContext, never()).sendBroadcast(any(Intent.class));

        // when user unlocks the device, the message in db should be broadcast
        doReturn(true).when(userManager).isUserUnlocked();
        mContext.sendBroadcast(new Intent(Intent.ACTION_USER_UNLOCKED));
        waitForMs(100);

        verifyDataSmsIntentBroadcasts(1);
    }

    @Test
    @MediumTest
    public void testBroadcastUndeliveredUserUnlocked() throws Exception {
        replaceInstance(SmsBroadcastUndelivered.class, "instance", null, null);
        doReturn(0).when(mInboundSmsTracker).getDestPort();

        // add a fake entry to db
        ContentValues rawSms = new ContentValues();
        mContentProvider.insert(sRawUri, rawSms);

        // make it a single-part message
        doReturn(1).when(mInboundSmsTracker).getMessageCount();

        SmsBroadcastUndelivered.initialize(mContext, mGsmInboundSmsHandler, mCdmaInboundSmsHandler);
        waitForMs(100);

        // user is unlocked; intent should be broadcast right away
        verifyDataSmsIntentBroadcasts(0);
    }

    @Test
    @MediumTest
    public void testBroadcastUndeliveredDeleted() throws Exception {