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

Commit cfbc6bc0 authored by Thomas Stuart's avatar Thomas Stuart
Browse files

replace mContext.pm() refs w/ context.createContextAsUser.getPm()

As a part of a greater mainline project, all references to
mContext.getPackageManager() need to be replaced with the combo
of mContext.createContextAsUser() && userContext.getPackageManager()

Flag: com.android.server.telecom.flags.resolve_hidden_dependencies_two
Fixes: 308009617
Test: unit tests + CTS
Change-Id: Ie2a9201e4ae3546a03c4a73d571bf638aac0def6
parent cca9de37
Loading
Loading
Loading
Loading
+15 −4
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.os.Handler;
import android.os.IBinder;
@@ -31,6 +32,7 @@ import android.telecom.Log;
import android.telecom.Logging.Session;
import android.text.TextUtils;

import com.android.internal.hidden_from_bootclasspath.com.android.server.telecom.flags.Flags;
import com.android.internal.telecom.ICallScreeningAdapter;
import com.android.internal.telecom.ICallScreeningService;
import com.android.server.telecom.flags.FeatureFlags;
@@ -166,7 +168,8 @@ public class CallScreeningServiceHelper {
            }
        };

        if (!bindCallScreeningService(mContext, mUserHandle, mPackageName, serviceConnection)) {
        if (!bindCallScreeningService(mContext, mUserHandle, mPackageName, serviceConnection,
                mFeatureFlags)) {
            Log.i(this, "bindAndGetCallIdentification - bind failed");
            mFuture.complete(null);
        }
@@ -203,7 +206,7 @@ public class CallScreeningServiceHelper {
     * @return {@code true} if binding succeeds, {@code false} otherwise.
     */
    public static boolean bindCallScreeningService(Context context, UserHandle userHandle,
            String packageName, ServiceConnection serviceConnection) {
            String packageName, ServiceConnection serviceConnection, FeatureFlags flags) {
        if (TextUtils.isEmpty(packageName)) {
            Log.i(TAG, "PackageName is empty. Not performing call screening.");
            return false;
@@ -211,8 +214,16 @@ public class CallScreeningServiceHelper {

        Intent intent = new Intent(CallScreeningService.SERVICE_INTERFACE)
                .setPackage(packageName);
        List<ResolveInfo> entries = context.getPackageManager().queryIntentServicesAsUser(

        List<ResolveInfo> entries;
        if (flags.resolveHiddenDependenciesTwo()) {
            entries = UserUtil.getPackageManagerFromUserHandler(context,
                    userHandle).queryIntentServicesAsUser(intent, 0, userHandle.getIdentifier());
        } else {
            entries = context.getPackageManager().queryIntentServicesAsUser(
                    intent, 0, userHandle.getIdentifier());
        }

        if (entries.isEmpty()) {
            Log.i(TAG, packageName + " has no call screening service defined.");
            return false;
+31 −10
Original line number Diff line number Diff line
@@ -1380,7 +1380,12 @@ public class InCallController extends CallsManagerListenerBase implements

                int uid;
                try {
                    if (mFeatureFlags.resolveHiddenDependenciesTwo()) {
                        uid = UserUtil.getPackageManagerFromUserHandler(mContext,
                                user).getPackageUidAsUser(pkg, user.getIdentifier());
                    } else {
                        uid = pkgManager.getPackageUidAsUser(pkg, user.getIdentifier());
                    }
                } catch (PackageManager.NameNotFoundException e) {
                    continue;
                }
@@ -2441,11 +2446,19 @@ public class InCallController extends CallsManagerListenerBase implements
        PackageManager userPackageManager = userContext != null ?
                userContext.getPackageManager() : packageManager;


        for (ResolveInfo entry : packageManager.queryIntentServicesAsUser(
        List<ResolveInfo> entries;
        if (mFeatureFlags.resolveHiddenDependenciesTwo()) {
            entries = userPackageManager.queryIntentServicesAsUser(
                    serviceIntent,
                    PackageManager.GET_META_DATA | PackageManager.MATCH_DISABLED_COMPONENTS,
                    userHandle.getIdentifier());
        } else {
            entries = packageManager.queryIntentServicesAsUser(
                    serviceIntent,
                    PackageManager.GET_META_DATA | PackageManager.MATCH_DISABLED_COMPONENTS,
                userHandle.getIdentifier())) {
                    userHandle.getIdentifier());
        }
        for (ResolveInfo entry : entries) {
            ServiceInfo serviceInfo = entry.serviceInfo;

            if (serviceInfo != null) {
@@ -3013,9 +3026,17 @@ public class InCallController extends CallsManagerListenerBase implements

        Intent intent = new Intent(InCallService.SERVICE_INTERFACE)
                .setPackage(ringingPackage);
        List<ResolveInfo> entries = mContext.getPackageManager().queryIntentServicesAsUser(
        List<ResolveInfo> entries;
        if (mFeatureFlags.resolveHiddenDependenciesTwo()) {
            entries = UserUtil.getPackageManagerFromUserHandler(mContext,
                    userHandle).queryIntentServicesAsUser(
                    intent, PackageManager.GET_META_DATA,
                    userHandle.getIdentifier());
        } else {
            entries = mContext.getPackageManager().queryIntentServicesAsUser(
                    intent, PackageManager.GET_META_DATA,
                    userHandle.getIdentifier());
        }
        if (entries.isEmpty()) {
            Log.w(this, "doesConnectedDialerSupportRinging: couldn't find dialer's package info"
                    + " <sad trombone>");
+6 −1
Original line number Diff line number Diff line
@@ -801,7 +801,12 @@ public class PhoneAccountRegistrar {

    private List<ResolveInfo> resolveComponent(ComponentName componentName,
            UserHandle userHandle) {
        PackageManager pm = mContext.getPackageManager();
        PackageManager pm;
        if (mTelecomFeatureFlags.resolveHiddenDependenciesTwo()) {
            pm = UserUtil.getPackageManagerFromUserHandler(mContext, userHandle);
        } else {
            pm = mContext.getPackageManager();
        }
        Intent intent = new Intent(ConnectionService.SERVICE_INTERFACE);
        intent.setComponent(componentName);
        try {
+18 −4
Original line number Diff line number Diff line
@@ -26,9 +26,11 @@ import android.os.UserHandle;
import android.telecom.Log;
import android.widget.Toast;

import com.android.server.telecom.flags.FeatureFlags;
import com.android.server.telecom.ui.ConfirmCallDialogActivity;
import com.android.server.telecom.ui.DisconnectedCallNotifier;

import java.util.ArrayList;
import java.util.List;

public final class TelecomBroadcastIntentProcessor {
@@ -113,10 +115,15 @@ public final class TelecomBroadcastIntentProcessor {

    private final Context mContext;
    private final CallsManager mCallsManager;
    private final FeatureFlags mFeatureFlags;

    public TelecomBroadcastIntentProcessor(Context context, CallsManager callsManager) {
    public TelecomBroadcastIntentProcessor(
            Context context,
            CallsManager callsManager,
            FeatureFlags flags) {
        mContext = context;
        mCallsManager = callsManager;
        mFeatureFlags = flags;
    }

    public void processIntent(Intent intent) {
@@ -287,9 +294,16 @@ public final class TelecomBroadcastIntentProcessor {
    private void sendSmsIntent(Intent intent, UserHandle userHandle) {
        Intent callIntent = new Intent(Intent.ACTION_SENDTO, intent.getData());
        callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        List<ResolveInfo> activities;
        if (mFeatureFlags.resolveHiddenDependenciesTwo()) {
            activities = UserUtil.getPackageManagerFromUserHandler(mContext,
                    userHandle).queryIntentActivitiesAsUser(callIntent,
                    PackageManager.MATCH_DEFAULT_ONLY, userHandle.getIdentifier());
        } else {
            PackageManager packageManager = mContext.getPackageManager();
        List<ResolveInfo> activities = packageManager.queryIntentActivitiesAsUser(
            activities = packageManager.queryIntentActivitiesAsUser(
                    callIntent, PackageManager.MATCH_DEFAULT_ONLY, userHandle.getIdentifier());
        }
        if (activities.size() > 0) {
            mContext.startActivityAsUser(callIntent, userHandle);
        } else {
+10 −3
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.ServiceConnection;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.net.Uri;
import android.os.BugreportManager;
@@ -320,8 +321,14 @@ public class TelecomSystem {
                                @Override
                                public List<ResolveInfo> queryIntentServicesAsUser(
                                        @NonNull Intent intent, int flags, int userId) {
                                    return mContext.getPackageManager().queryIntentServicesAsUser(
                                            intent, flags, userId);
                                    PackageManager pm;
                                    if (mFeatureFlags.resolveHiddenDependenciesTwo()) {
                                        pm = UserUtil.getPackageManagerFromUserHandler(mContext,
                                                UserHandle.of(userId));
                                    } else {
                                        pm = mContext.getPackageManager();
                                    }
                                    return pm.queryIntentServicesAsUser(intent, flags, userId);
                                }

                                @Override
@@ -499,7 +506,7 @@ public class TelecomSystem {
            mCallIntentProcessor = new CallIntentProcessor(mContext, mCallsManager,
                    defaultDialerCache, featureFlags);
            mTelecomBroadcastIntentProcessor = new TelecomBroadcastIntentProcessor(
                    mContext, mCallsManager);
                    mContext, mCallsManager, mFeatureFlags);

            // Register the receiver for the dialer secret codes, used to enable extended logging.
            mDialerCodeReceiver = new DialerCodeReceiver(mCallsManager);
Loading