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

Commit 9b813aa4 authored by Amit Mahajan's avatar Amit Mahajan
Browse files

Do not register broadcastReceiver for all users.

Registering for all users makes it receive the intent for each
user which is not required.

Bug: 28933982
Change-Id: I797d4d3d4553658a7e4e5021f45dfef5bb6ff05c
parent 058f5401
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -127,8 +127,7 @@ public class SmsBroadcastUndelivered {
        } else {
            IntentFilter userFilter = new IntentFilter();
            userFilter.addAction(Intent.ACTION_USER_UNLOCKED);
            context.registerReceiverAsUser(mBroadcastReceiver, UserHandle.ALL, userFilter, null,
                    null);
            context.registerReceiver(mBroadcastReceiver, userFilter);
        }
    }

+12 −12
Original line number Diff line number Diff line
@@ -260,6 +260,18 @@ public class ContextFixture implements TestFixture<Context> {

        @Override
        public Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter) {
            return registerReceiver(receiver, filter, null, null);
        }

        @Override
        public Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter,
                String broadcastPermission, Handler scheduler) {
            return registerReceiverAsUser(receiver, null, filter, broadcastPermission, scheduler);
        }

        @Override
        public Intent registerReceiverAsUser(BroadcastReceiver receiver, UserHandle user,
                IntentFilter filter, String broadcastPermission, Handler scheduler) {
            Intent result = null;
            synchronized (mBroadcastReceiversByAction) {
                for (int i = 0 ; i < filter.countActions() ; i++) {
@@ -273,18 +285,6 @@ public class ContextFixture implements TestFixture<Context> {
            return result;
        }

        @Override
        public Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter,
                String broadcastPermission, Handler scheduler) {
            return registerReceiver(receiver, filter);
        }

        @Override
        public Intent registerReceiverAsUser(BroadcastReceiver receiver, UserHandle user,
                IntentFilter filter, String broadcastPermission, Handler scheduler) {
            return registerReceiver(receiver, filter);
        }

        @Override
        public void sendBroadcast(Intent intent) {
            logd("sendBroadcast called for " + intent.getAction());
+9 −0
Original line number Diff line number Diff line
@@ -16,14 +16,17 @@

package com.android.internal.telephony.gsm;

import android.content.BroadcastReceiver;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.database.Cursor;
import android.database.MatrixCursor;
import android.net.Uri;
import android.os.AsyncResult;
import android.os.Bundle;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.UserManager;
import android.os.RemoteException;
@@ -686,6 +689,12 @@ public class GsmInboundSmsHandlerTest extends TelephonyTest {
        doReturn(false).when(userManager).isUserUnlocked();

        SmsBroadcastUndelivered.initialize(mContext, mGsmInboundSmsHandler, mCdmaInboundSmsHandler);

        // verify that a broadcast receiver is registered for current user (user == null) based on
        // implementation in ContextFixture
        verify(mContext).registerReceiverAsUser(any(BroadcastReceiver.class), eq((UserHandle)null),
                any(IntentFilter.class), eq((String)null), eq((Handler)null));

        waitForMs(100);

        // verify no broadcasts sent because due to !isUserUnlocked