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

Commit bd24d794 authored by Todd Kennedy's avatar Todd Kennedy
Browse files

Move providers to permission manager

Bug: 135279435
Test: atest FrameworksTelephonyTests
Test: atest DataConnectionTest
Change-Id: I6756301c91b221830c8089f537da49679b46a855
parent 215056e1
Loading
Loading
Loading
Loading
+12 −6
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import android.Manifest;
import android.annotation.Nullable;
import android.annotation.UnsupportedAppUsage;
import android.app.ActivityManager;
import android.app.AppGlobals;
import android.app.UserSwitchObserver;
import android.content.ContentResolver;
import android.content.ContentValues;
@@ -36,6 +37,7 @@ import android.os.ParcelUuid;
import android.os.PersistableBundle;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.permission.IPermissionManager;
import android.preference.PreferenceManager;
import android.provider.Settings;
import android.provider.Settings.Global;
@@ -112,6 +114,7 @@ public class SubscriptionInfoUpdater extends Handler {
    private EuiccManager mEuiccManager;
    @UnsupportedAppUsage
    private IPackageManager mPackageManager;
    private IPermissionManager mPermissionManager;
    private Handler mBackgroundHandler;

    // The current foreground user ID.
@@ -137,12 +140,14 @@ public class SubscriptionInfoUpdater extends Handler {
    public SubscriptionInfoUpdater(
            Looper looper, Context context, Phone[] phone, CommandsInterface[] ci) {
        this(looper, context, phone, ci,
                IPackageManager.Stub.asInterface(ServiceManager.getService("package")));
                IPackageManager.Stub.asInterface(ServiceManager.getService("package")),
                AppGlobals.getPermissionManager());
    }

    @VisibleForTesting public SubscriptionInfoUpdater(
            Looper looper, Context context, Phone[] phone,
            CommandsInterface[] ci, IPackageManager packageMgr) {
            CommandsInterface[] ci, IPackageManager packageMgr,
            IPermissionManager permissionMgr) {
        logd("Constructor invoked");
        mBackgroundHandler = new Handler(looper);

@@ -151,6 +156,7 @@ public class SubscriptionInfoUpdater extends Handler {
        mSubscriptionManager = SubscriptionManager.from(mContext);
        mEuiccManager = (EuiccManager) mContext.getSystemService(Context.EUICC_SERVICE);
        mPackageManager = packageMgr;
        mPermissionManager = permissionMgr;

        mCarrierServiceBindHelper = new CarrierServiceBindHelper(mContext);
        initializeCarrierApps();
@@ -169,7 +175,7 @@ public class SubscriptionInfoUpdater extends Handler {
                        throws RemoteException {
                    mCurrentlyActiveUserId = newUserId;
                    CarrierAppUtils.disableCarrierAppsUntilPrivileged(mContext.getOpPackageName(),
                            mPackageManager, TelephonyManager.getDefault(),
                            mPackageManager, mPermissionManager, TelephonyManager.getDefault(),
                            mContext.getContentResolver(), mCurrentlyActiveUserId);

                    if (reply != null) {
@@ -185,8 +191,8 @@ public class SubscriptionInfoUpdater extends Handler {
            logd("Couldn't get current user ID; guessing it's 0: " + e.getMessage());
        }
        CarrierAppUtils.disableCarrierAppsUntilPrivileged(mContext.getOpPackageName(),
                mPackageManager, TelephonyManager.getDefault(), mContext.getContentResolver(),
                mCurrentlyActiveUserId);
                mPackageManager, mPermissionManager, TelephonyManager.getDefault(),
                mContext.getContentResolver(), mCurrentlyActiveUserId);
    }

    /**
@@ -537,7 +543,7 @@ public class SubscriptionInfoUpdater extends Handler {

        // Update set of enabled carrier apps now that the privilege rules may have changed.
        CarrierAppUtils.disableCarrierAppsUntilPrivileged(mContext.getOpPackageName(),
                mPackageManager, TelephonyManager.getDefault(),
                mPackageManager, mPermissionManager, TelephonyManager.getDefault(),
                mContext.getContentResolver(), mCurrentlyActiveUserId);

        /**
+9 −5
Original line number Diff line number Diff line
@@ -24,7 +24,6 @@ import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.ServiceConnection;
import android.content.pm.IPackageManager;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.net.LinkProperties;
@@ -37,6 +36,7 @@ import android.os.RegistrantList;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.UserHandle;
import android.permission.IPermissionManager;
import android.telephony.AccessNetworkConstants;
import android.telephony.AccessNetworkConstants.TransportType;
import android.telephony.CarrierConfigManager;
@@ -74,7 +74,7 @@ public class DataServiceManager extends Handler {

    private final CarrierConfigManager mCarrierConfigManager;
    private final AppOpsManager mAppOps;
    private final IPackageManager mPackageManager;
    private final IPermissionManager mPermissionManager;

    private final int mTransportType;

@@ -122,7 +122,7 @@ public class DataServiceManager extends Handler {
    private void grantPermissionsToService(String packageName) {
        final String[] pkgToGrant = {packageName};
        try {
            mPackageManager.grantDefaultPermissionsToEnabledTelephonyDataServices(
            mPermissionManager.grantDefaultPermissionsToEnabledTelephonyDataServices(
                    pkgToGrant, mPhone.getContext().getUserId());
            mAppOps.setMode(AppOpsManager.OP_MANAGE_IPSEC_TUNNELS, mPhone.getContext().getUserId(),
                    pkgToGrant[0], AppOpsManager.MODE_ALLOWED);
@@ -146,7 +146,7 @@ public class DataServiceManager extends Handler {
        try {
            String[] dataServicesArray = new String[dataServices.size()];
            dataServices.toArray(dataServicesArray);
            mPackageManager.revokeDefaultPermissionsFromDisabledTelephonyDataServices(
            mPermissionManager.revokeDefaultPermissionsFromDisabledTelephonyDataServices(
                    dataServicesArray, mPhone.getContext().getUserId());
            for (String pkg : dataServices) {
                mAppOps.setMode(AppOpsManager.OP_MANAGE_IPSEC_TUNNELS,
@@ -258,7 +258,11 @@ public class DataServiceManager extends Handler {
        mBound = false;
        mCarrierConfigManager = (CarrierConfigManager) phone.getContext().getSystemService(
                Context.CARRIER_CONFIG_SERVICE);
        mPackageManager = IPackageManager.Stub.asInterface(ServiceManager.getService("package"));
        // NOTE: Do NOT use AppGlobals to retrieve the permission manager; AppGlobals
        // caches the service instance, but we need to explicitly request a new service
        // so it can be mocked out for tests
        mPermissionManager =
                IPermissionManager.Stub.asInterface(ServiceManager.getService("permissionmgr"));
        mAppOps = (AppOpsManager) phone.getContext().getSystemService(Context.APP_OPS_SERVICE);

        IntentFilter intentFilter = new IntentFilter();
+8 −8
Original line number Diff line number Diff line
@@ -16,17 +16,17 @@

package com.android.internal.telephony.ims;

import android.app.AppGlobals;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.content.pm.IPackageManager;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.IBinder;
import android.os.IInterface;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.permission.IPermissionManager;
import android.telephony.ims.ImsService;
import android.telephony.ims.aidl.IImsConfig;
import android.telephony.ims.aidl.IImsMmTelFeature;
@@ -176,7 +176,7 @@ public class ImsServiceController {
    private static final int REBIND_MAXIMUM_DELAY_MS = 60 * 1000; // 1 minute
    private final ComponentName mComponentName;
    private final HandlerThread mHandlerThread = new HandlerThread("ImsServiceControllerHandler");
    private final IPackageManager mPackageManager;
    private final IPermissionManager mPermissionManager;
    private ImsServiceControllerCallbacks mCallbacks;
    private ExponentialBackoff mBackoff;

@@ -298,7 +298,7 @@ public class ImsServiceController {
                2, /* multiplier */
                mHandlerThread.getLooper(),
                mRestartImsServiceRunnable);
        mPackageManager = IPackageManager.Stub.asInterface(ServiceManager.getService("package"));
        mPermissionManager = AppGlobals.getPermissionManager();
    }

    @VisibleForTesting
@@ -315,7 +315,7 @@ public class ImsServiceController {
                2, /* multiplier */
                handler,
                mRestartImsServiceRunnable);
        mPackageManager = null;
        mPermissionManager = null;
    }

    /**
@@ -584,14 +584,14 @@ public class ImsServiceController {
        mBackoff.start();
    }

    // Grant runtime permissions to ImsService. PackageManager ensures that the ImsService is
    // Grant runtime permissions to ImsService. PermissionManager ensures that the ImsService is
    // system/signed before granting permissions.
    private void grantPermissionsToService() {
        Log.i(LOG_TAG, "Granting Runtime permissions to:" + getComponentName());
        String[] pkgToGrant = {mComponentName.getPackageName()};
        try {
            if (mPackageManager != null) {
                mPackageManager.grantDefaultPermissionsToEnabledImsServices(pkgToGrant,
            if (mPermissionManager != null) {
                mPermissionManager.grantDefaultPermissionsToEnabledImsServices(pkgToGrant,
                        mContext.getUserId());
            }
        } catch (RemoteException e) {
Loading