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 Diff line number Diff line
@@ -1239,15 +1239,15 @@ public abstract class SMSDispatcher extends Handler {
            }

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

                try {
                    // Get package info via packagemanager
                    appInfo =
                            pm.getPackageInfoAsUser(
                            pm.getPackageInfo(
                                    trackers[0].getAppPackageName(),
                                    PackageManager.GET_SIGNATURES,
                                    trackers[0].mUserId);
                                    PackageManager.GET_SIGNATURES);
                } catch (PackageManager.NameNotFoundException e) {
                    Rlog.e(TAG, "Can't get calling app package info: refusing to send SMS");
                    error = RESULT_ERROR_GENERIC_FAILURE;
@@ -1840,15 +1840,14 @@ public abstract class SMSDispatcher extends Handler {
            AtomicInteger unsentPartCount, AtomicBoolean anyPartFailed, Uri messageUri,
            SmsHeader smsHeader, boolean expectMore, String fullMessageText, boolean isText,
            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
        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;
        try {
            appInfo = pm.getPackageInfoAsUser(
                    callingPackage, PackageManager.GET_SIGNATURES, userId);
            appInfo = pm.getPackageInfo(callingPackage, PackageManager.GET_SIGNATURES);
        } catch (PackageManager.NameNotFoundException e) {
            // error will be logged in sendRawPdu
        }
+10 −6
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.internal.telephony;

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

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

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

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

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

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

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

    protected void setupMocksForTelephonyPermissions() throws Exception {
+2 −4
Original line number 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.Mockito.atLeastOnce;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.eq;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
@@ -43,7 +42,6 @@ import android.database.Cursor;
import android.net.Uri;
import android.os.AsyncResult;
import android.os.Bundle;
import android.os.Handler;
import android.os.RemoteException;
import android.os.UserHandle;
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
        // implementation in ContextFixture. registerReceiver may be called more than once (for
        // example by GsmInboundSmsHandler if TEST_MODE is true)
        verify(mContext, atLeastOnce()).registerReceiverAsUser(any(BroadcastReceiver.class),
                eq((UserHandle)null), any(IntentFilter.class), eq((String)null), eq((Handler)null));
        verify(mContext, atLeastOnce()).registerReceiver(any(BroadcastReceiver.class),
                any(IntentFilter.class));

        // wait for ScanRawTableThread
        waitForMs(100);