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

Commit e36a1157 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Use LegacyPermissionManager for non-updatable permission APIs."

parents bab066f7 3b62005d
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -39,7 +39,7 @@ import android.os.PersistableBundle;
import android.os.RegistrantList;
import android.os.RemoteException;
import android.os.UserHandle;
import android.permission.PermissionManager;
import android.permission.LegacyPermissionManager;
import android.telephony.AccessNetworkConstants;
import android.telephony.AccessNetworkConstants.TransportType;
import android.telephony.AnomalyReporter;
@@ -89,7 +89,7 @@ public class DataServiceManager extends Handler {

    private final CarrierConfigManager mCarrierConfigManager;
    private final AppOpsManager mAppOps;
    private final PermissionManager mPermissionManager;
    private final LegacyPermissionManager mPermissionManager;

    private final int mTransportType;

@@ -347,8 +347,8 @@ public class DataServiceManager extends Handler {
        // 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 =
                (PermissionManager) phone.getContext().getSystemService(Context.PERMISSION_SERVICE);
        mPermissionManager = (LegacyPermissionManager) phone.getContext().getSystemService(
                Context.LEGACY_PERMISSION_SERVICE);
        mAppOps = (AppOpsManager) phone.getContext().getSystemService(Context.APP_OPS_SERVICE);

        IntentFilter intentFilter = new IntentFilter();
+4 −4
Original line number Diff line number Diff line
@@ -28,7 +28,7 @@ import android.os.IBinder;
import android.os.IInterface;
import android.os.RemoteException;
import android.os.UserHandle;
import android.permission.PermissionManager;
import android.permission.LegacyPermissionManager;
import android.telephony.AnomalyReporter;
import android.telephony.ims.ImsService;
import android.telephony.ims.aidl.IImsConfig;
@@ -223,7 +223,7 @@ public class ImsServiceController {
    private static final long CHANGE_PERMISSION_TIMEOUT_MS = 15 * 1000; // 15 seconds
    private final ComponentName mComponentName;
    private final HandlerThread mHandlerThread = new HandlerThread("ImsServiceControllerHandler");
    private final PermissionManager mPermissionManager;
    private final LegacyPermissionManager mPermissionManager;
    private ImsFeatureBinderRepository mRepo;
    private ImsServiceControllerCallbacks mCallbacks;
    private ExponentialBackoff mBackoff;
@@ -321,8 +321,8 @@ public class ImsServiceController {
                2, /* multiplier */
                mHandlerThread.getLooper(),
                mRestartImsServiceRunnable);
        mPermissionManager =
                (PermissionManager) mContext.getSystemService(Context.PERMISSION_SERVICE);
        mPermissionManager = (LegacyPermissionManager) mContext.getSystemService(
                Context.LEGACY_PERMISSION_SERVICE);
        mRepo = repo;

        mPackageManager = mContext.getPackageManager();
+1 −0
Original line number Diff line number Diff line
@@ -266,6 +266,7 @@ public class ContextFixture implements TestFixture<Context> {
                case Context.DISPLAY_SERVICE:
                case Context.POWER_SERVICE:
                case Context.PERMISSION_SERVICE:
                case Context.LEGACY_PERMISSION_SERVICE:
                    // These are final classes so cannot be mocked,
                    // return real services.
                    return TestApplication.getAppContext().getSystemService(name);
+10 −10
Original line number Diff line number Diff line
@@ -36,7 +36,7 @@ import android.os.Build;
import android.os.Bundle;
import android.os.IBinder;
import android.os.ServiceManager;
import android.permission.PermissionManager;
import android.permission.LegacyPermissionManager;
import android.provider.DeviceConfig;
import android.provider.Settings;
import android.telephony.SubscriptionManager;
@@ -46,7 +46,7 @@ import android.test.mock.MockContentResolver;
import android.test.suitebuilder.annotation.SmallTest;

import com.android.internal.util.test.FakeSettingsProvider;
import com.android.server.pm.permission.PermissionManagerService;
import com.android.server.pm.permission.LegacyPermissionManagerService;

import org.junit.Before;
import org.junit.Test;
@@ -88,7 +88,7 @@ public class TelephonyPermissionsTest {
    @Mock
    private TelephonyManager mTelephonyManagerMockForSub2;
    @Mock
    private PermissionManagerService mMockPermissionManagerService;
    private LegacyPermissionManagerService mMockLegacyPermissionManagerService;

    private MockContentResolver mMockContentResolver;
    private FakeSettingsConfigProvider mFakeSettingsConfigProvider;
@@ -107,10 +107,10 @@ public class TelephonyPermissionsTest {
        when(mMockSubscriptionManager.getCompleteActiveSubscriptionIdList()).thenReturn(
                new int[]{SUB_ID});

        PermissionManager permissionManager = new PermissionManager(mMockContext, null,
                mMockPermissionManagerService);
        when(mMockContext.getSystemService(Context.PERMISSION_SERVICE)).thenReturn(
                permissionManager);
        LegacyPermissionManager legacyPermissionManager = new LegacyPermissionManager(
                mMockLegacyPermissionManagerService);
        when(mMockContext.getSystemService(Context.LEGACY_PERMISSION_SERVICE)).thenReturn(
                legacyPermissionManager);

        // By default, assume we have no permissions or app-ops bits.
        doThrow(new SecurityException()).when(mMockContext)
@@ -325,8 +325,8 @@ public class TelephonyPermissionsTest {
        // performed by a SystemAPI in PermissionManager; this test verifies when this API returns
        // the calling package meets the requirements for device identifier access the telephony
        // check also returns true.
        when(mMockPermissionManagerService.checkDeviceIdentifierAccess(PACKAGE, MSG, FEATURE, PID,
                UID)).thenReturn(PackageManager.PERMISSION_GRANTED);
        when(mMockLegacyPermissionManagerService.checkDeviceIdentifierAccess(PACKAGE, MSG, FEATURE,
                PID, UID)).thenReturn(PackageManager.PERMISSION_GRANTED);
        assertTrue(
                TelephonyPermissions.checkCallingOrSelfReadDeviceIdentifiers(mMockContext,
                        SUB_ID, PACKAGE, FEATURE, MSG));
@@ -616,7 +616,7 @@ public class TelephonyPermissionsTest {
                android.Manifest.permission.READ_DEVICE_CONFIG)).thenReturn(
                PackageManager.PERMISSION_GRANTED);

        when(mMockPermissionManagerService.checkDeviceIdentifierAccess(any(), any(), any(),
        when(mMockLegacyPermissionManagerService.checkDeviceIdentifierAccess(any(), any(), any(),
                anyInt(), anyInt())).thenReturn(PackageManager.PERMISSION_DENIED);

        // TelephonyPermissions queries DeviceConfig to determine if the identifier access
+11 −7
Original line number Diff line number Diff line
@@ -53,7 +53,7 @@ import android.os.MessageQueue;
import android.os.RegistrantList;
import android.os.ServiceManager;
import android.os.UserManager;
import android.permission.PermissionManager;
import android.permission.LegacyPermissionManager;
import android.provider.BlockedNumberContract;
import android.provider.DeviceConfig;
import android.provider.Settings;
@@ -106,6 +106,7 @@ import com.android.internal.telephony.uicc.UiccController;
import com.android.internal.telephony.uicc.UiccProfile;
import com.android.internal.telephony.uicc.UiccSlot;
import com.android.server.pm.PackageManagerService;
import com.android.server.pm.permission.LegacyPermissionManagerService;
import com.android.server.pm.permission.PermissionManagerService;

import org.mockito.Mock;
@@ -202,6 +203,8 @@ public abstract class TelephonyTest {
    @Mock
    protected PackageManagerService mMockPackageManager;
    @Mock
    protected LegacyPermissionManagerService mMockLegacyPermissionManager;
    @Mock
    protected PermissionManagerService mMockPermissionManager;

    protected NetworkRegistrationInfo mNetworkRegistrationInfo =
@@ -622,6 +625,7 @@ public abstract class TelephonyTest {
        mSST.mRestrictedState = mRestrictedState;
        mServiceManagerMockedServices.put("connectivity_metrics_logger", mConnMetLoggerBinder);
        mServiceManagerMockedServices.put("package", mMockPackageManager);
        mServiceManagerMockedServices.put("legacy_permission", mMockLegacyPermissionManager);
        mServiceManagerMockedServices.put("permissionmgr", mMockPermissionManager);
        logd("mMockPermissionManager replaced");
        doReturn(new int[]{AccessNetworkConstants.TRANSPORT_TYPE_WWAN,
@@ -829,9 +833,10 @@ public abstract class TelephonyTest {
        // appop, and device / profile owner checks). This sets up the PermissionManager to return
        // that access requirements are met.
        setIdentifierAccess(true);
        PermissionManager permissionManager = new PermissionManager(mContext, null,
                mMockPermissionManager);
        doReturn(permissionManager).when(mContext).getSystemService(eq(Context.PERMISSION_SERVICE));
        LegacyPermissionManager legacyPermissionManager =
                new LegacyPermissionManager(mMockLegacyPermissionManager);
        doReturn(legacyPermissionManager).when(mContext)
                .getSystemService(Context.LEGACY_PERMISSION_SERVICE);
        // Also make sure all appop checks fails, to not interfere tests. Tests should explicitly
        // mock AppOpManager to return allowed/default mode. Note by default a mock returns 0 which
        // is MODE_ALLOWED, hence this setup is necessary.
@@ -866,9 +871,8 @@ public abstract class TelephonyTest {

    protected void setIdentifierAccess(boolean hasAccess) {
        doReturn(hasAccess ? PackageManager.PERMISSION_GRANTED
                : PackageManager.PERMISSION_DENIED).when(
                mMockPermissionManager).checkDeviceIdentifierAccess(any(), any(), any(), anyInt(),
                anyInt());
                : PackageManager.PERMISSION_DENIED).when(mMockLegacyPermissionManager)
                .checkDeviceIdentifierAccess(any(), any(), any(), anyInt(), anyInt());
    }

    protected void setCarrierPrivileges(boolean hasCarrierPrivileges) {