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

Commit 0a4fac6c authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge changes from topic "fix-package-manager-usages"

* changes:
  Fix usages of PackageManager APIs in Telephony
  Change tests to match fixes to PackageChangeReceiver
parents 1016da71 1d8487d0
Loading
Loading
Loading
Loading
+8 −9
Original line number Original line Diff line number Diff line
@@ -1239,15 +1239,15 @@ public abstract class SMSDispatcher extends Handler {
            }
            }


            if (error == RESULT_ERROR_NONE) {
            if (error == RESULT_ERROR_NONE) {
                PackageManager pm = mContext.getPackageManager();
                UserHandle userHandle = UserHandle.of(trackers[0].mUserId);
                PackageManager pm = mContext.createContextAsUser(userHandle, 0).getPackageManager();


                try {
                try {
                    // Get package info via packagemanager
                    // Get package info via packagemanager
                    appInfo =
                    appInfo =
                            pm.getPackageInfoAsUser(
                            pm.getPackageInfo(
                                    trackers[0].getAppPackageName(),
                                    trackers[0].getAppPackageName(),
                                    PackageManager.GET_SIGNATURES,
                                    PackageManager.GET_SIGNATURES);
                                    trackers[0].mUserId);
                } catch (PackageManager.NameNotFoundException e) {
                } catch (PackageManager.NameNotFoundException e) {
                    Rlog.e(TAG, "Can't get calling app package info: refusing to send SMS");
                    Rlog.e(TAG, "Can't get calling app package info: refusing to send SMS");
                    error = RESULT_ERROR_GENERIC_FAILURE;
                    error = RESULT_ERROR_GENERIC_FAILURE;
@@ -1840,15 +1840,14 @@ public abstract class SMSDispatcher extends Handler {
            AtomicInteger unsentPartCount, AtomicBoolean anyPartFailed, Uri messageUri,
            AtomicInteger unsentPartCount, AtomicBoolean anyPartFailed, Uri messageUri,
            SmsHeader smsHeader, boolean expectMore, String fullMessageText, boolean isText,
            SmsHeader smsHeader, boolean expectMore, String fullMessageText, boolean isText,
            boolean persistMessage, int priority, int validityPeriod, boolean isForVvm) {
            boolean persistMessage, int priority, int validityPeriod, boolean isForVvm) {
        // Get calling app package name via UID from Binder call
        PackageManager pm = mContext.getPackageManager();


        // Get package info via packagemanager
        // Get package info via packagemanager
        final int userId = UserHandle.getUserHandleForUid(Binder.getCallingUid()).getIdentifier();
        UserHandle callingUser = UserHandle.getUserHandleForUid(Binder.getCallingUid());
        final int userId = callingUser.getIdentifier();
        PackageManager pm = mContext.createContextAsUser(callingUser, 0).getPackageManager();
        PackageInfo appInfo = null;
        PackageInfo appInfo = null;
        try {
        try {
            appInfo = pm.getPackageInfoAsUser(
            appInfo = pm.getPackageInfo(callingPackage, PackageManager.GET_SIGNATURES);
                    callingPackage, PackageManager.GET_SIGNATURES, userId);
        } catch (PackageManager.NameNotFoundException e) {
        } catch (PackageManager.NameNotFoundException e) {
            // error will be logged in sendRawPdu
            // error will be logged in sendRawPdu
        }
        }
+10 −6
Original line number Original line Diff line number Diff line
@@ -16,6 +16,7 @@


package com.android.internal.telephony;
package com.android.internal.telephony;


import static org.mockito.ArgumentMatchers.nullable;
import static org.mockito.Mockito.any;
import static org.mockito.Mockito.any;
import static org.mockito.Mockito.anyInt;
import static org.mockito.Mockito.anyInt;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.doAnswer;
@@ -315,18 +316,16 @@ public class ContextFixture implements TestFixture<Context> {


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


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


        @Override
        private Intent registerReceiverFakeImpl(BroadcastReceiver receiver, IntentFilter filter) {
        public Intent registerReceiverAsUser(BroadcastReceiver receiver, UserHandle user,
                IntentFilter filter, String broadcastPermission, Handler scheduler) {
            Intent result = null;
            Intent result = null;
            synchronized (mBroadcastReceiversByAction) {
            synchronized (mBroadcastReceiversByAction) {
                for (int i = 0 ; i < filter.countActions() ; i++) {
                for (int i = 0 ; i < filter.countActions() ; i++) {
@@ -409,6 +408,11 @@ public class ContextFixture implements TestFixture<Context> {
            sendBroadcast(intent);
            sendBroadcast(intent);
        }
        }


        @Override
        public Context createContextAsUser(UserHandle user, int flags) {
            return this;
        }

        @Override
        @Override
        public void sendOrderedBroadcastAsUser(Intent intent, UserHandle user,
        public void sendOrderedBroadcastAsUser(Intent intent, UserHandle user,
                String receiverPermission, BroadcastReceiver resultReceiver, Handler scheduler,
                String receiverPermission, BroadcastReceiver resultReceiver, Handler scheduler,
@@ -619,7 +623,7 @@ public class ContextFixture implements TestFixture<Context> {
        }).when(mPackageManager).queryIntentServicesAsUser((Intent) any(), anyInt(), any());
        }).when(mPackageManager).queryIntentServicesAsUser((Intent) any(), anyInt(), any());


        try {
        try {
            doReturn(mPackageInfo).when(mPackageManager).getPackageInfoAsUser(any(), anyInt(),
            doReturn(mPackageInfo).when(mPackageManager).getPackageInfo(nullable(String.class),
                    anyInt());
                    anyInt());
        } catch (NameNotFoundException e) {
        } catch (NameNotFoundException e) {
        }
        }
+0 −2
Original line number Original line Diff line number Diff line
@@ -711,8 +711,6 @@ public abstract class TelephonyTest {
    protected void setupMockPackagePermissionChecks() throws Exception {
    protected void setupMockPackagePermissionChecks() throws Exception {
        doReturn(new String[]{TAG}).when(mPackageManager).getPackagesForUid(anyInt());
        doReturn(new String[]{TAG}).when(mPackageManager).getPackagesForUid(anyInt());
        doReturn(mPackageInfo).when(mPackageManager).getPackageInfo(eq(TAG), anyInt());
        doReturn(mPackageInfo).when(mPackageManager).getPackageInfo(eq(TAG), anyInt());
        doReturn(mPackageInfo).when(mPackageManager).getPackageInfoAsUser(
                eq(TAG), anyInt(), anyInt());
    }
    }


    protected void setupMocksForTelephonyPermissions() throws Exception {
    protected void setupMocksForTelephonyPermissions() throws Exception {
+2 −4
Original line number Original line Diff line number Diff line
@@ -29,7 +29,6 @@ import static org.mockito.Matchers.anyLong;
import static org.mockito.Matchers.nullable;
import static org.mockito.Matchers.nullable;
import static org.mockito.Mockito.atLeastOnce;
import static org.mockito.Mockito.atLeastOnce;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.eq;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verify;
@@ -43,7 +42,6 @@ import android.database.Cursor;
import android.net.Uri;
import android.net.Uri;
import android.os.AsyncResult;
import android.os.AsyncResult;
import android.os.Bundle;
import android.os.Bundle;
import android.os.Handler;
import android.os.RemoteException;
import android.os.RemoteException;
import android.os.UserHandle;
import android.os.UserHandle;
import android.os.UserManager;
import android.os.UserManager;
@@ -809,8 +807,8 @@ public class GsmInboundSmsHandlerTest extends TelephonyTest {
        // verify that a broadcast receiver is registered for current user (user == null) based on
        // verify that a broadcast receiver is registered for current user (user == null) based on
        // implementation in ContextFixture. registerReceiver may be called more than once (for
        // implementation in ContextFixture. registerReceiver may be called more than once (for
        // example by GsmInboundSmsHandler if TEST_MODE is true)
        // example by GsmInboundSmsHandler if TEST_MODE is true)
        verify(mContext, atLeastOnce()).registerReceiverAsUser(any(BroadcastReceiver.class),
        verify(mContext, atLeastOnce()).registerReceiver(any(BroadcastReceiver.class),
                eq((UserHandle)null), any(IntentFilter.class), eq((String)null), eq((Handler)null));
                any(IntentFilter.class));


        // wait for ScanRawTableThread
        // wait for ScanRawTableThread
        waitForMs(100);
        waitForMs(100);