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

Commit f76b06a6 authored by Makoto Onuki's avatar Makoto Onuki
Browse files

Test more DPM APIs.

Bug 24061108

Change-Id: Ia9da19f62c0f4edf53ca1f4c213f0368ec1983ba
parent a4490622
Loading
Loading
Loading
Loading
+67 −40
Original line number Diff line number Diff line
@@ -271,7 +271,6 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
    final Context mContext;
    final PackageManager mPackageManager;
    final UserManager mUserManager;
    final PowerManager.WakeLock mWakeLock;

    final LocalService mLocalService;

@@ -995,7 +994,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
        boolean removed = false;
        if (DBG) Slog.d(LOG_TAG, "Handling package changes for user " + userHandle);
        DevicePolicyData policy = getUserData(userHandle);
        IPackageManager pm = AppGlobals.getPackageManager();
        IPackageManager pm = getIPackageManager();
        synchronized (this) {
            for (int i = policy.mAdminList.size() - 1; i >= 0; i--) {
                ActiveAdmin aa = policy.mAdminList.get(i);
@@ -1071,7 +1070,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {

    /** Unit test will override it to inject a mock. */
    @VisibleForTesting
    IWindowManager newIWindowManager() {
    IWindowManager getIWindowManager() {
        return IWindowManager.Stub.asInterface(ServiceManager.getService(Context.WINDOW_SERVICE));
    }

@@ -1081,6 +1080,12 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
        return ActivityManagerNative.getDefault();
    }

    /** Unit test will override it to inject a mock. */
    @VisibleForTesting
    IPackageManager getIPackageManager() {
        return AppGlobals.getPackageManager();
    }

    /** Unit test will override it to inject a mock. */
    @VisibleForTesting
    LockPatternUtils newLockPatternUtils(Context context) {
@@ -1129,13 +1134,33 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
    }

    @VisibleForTesting
    WakeLock powerManagerNewWakeLock(int levelAndFlags, String tag) {
        return mContext.getSystemService(PowerManager.class).newWakeLock(levelAndFlags, tag);
    void powerManagerGoToSleep(long time, int reason, int flags) {
        mContext.getSystemService(PowerManager.class).goToSleep(time, reason, flags);
    }

    @VisibleForTesting
    void powerManagerGoToSleep(long time, int reason, int flags) {
        mContext.getSystemService(PowerManager.class).goToSleep(time, reason, flags);
    boolean systemPropertiesGetBoolean(String key, boolean def) {
        return SystemProperties.getBoolean(key, def);
    }

    @VisibleForTesting
    long systemPropertiesGetLong(String key, long def) {
        return SystemProperties.getLong(key, def);
    }

    @VisibleForTesting
    String systemPropertiesGet(String key, String def) {
        return SystemProperties.get(key, def);
    }

    @VisibleForTesting
    String systemPropertiesGet(String key) {
        return SystemProperties.get(key);
    }

    @VisibleForTesting
    void systemPropertiesSet(String key, String value) {
        SystemProperties.set(key, value);
    }

    /**
@@ -1145,14 +1170,16 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
        mContext = context;
        mHandler = new Handler(getMyLooper());
        mOwners = newOwners();
        mUserManager = getUserManager();
        mPackageManager = getPackageManager();
        mHasFeature = mPackageManager.hasSystemFeature(PackageManager.FEATURE_DEVICE_ADMIN);
        mPowerManagerInternal = getPowerManagerInternal();
        mWakeLock = powerManagerNewWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "DPM");
        mIWindowManager = newIWindowManager();
        mNotificationManager = getNotificationManager();

        mUserManager = Preconditions.checkNotNull(getUserManager());
        mPackageManager = Preconditions.checkNotNull(getPackageManager());
        mPowerManagerInternal = Preconditions.checkNotNull(getPowerManagerInternal());
        mIWindowManager = Preconditions.checkNotNull(getIWindowManager());
        mNotificationManager = Preconditions.checkNotNull(getNotificationManager());

        mLocalService = new LocalService();

        mHasFeature = mPackageManager.hasSystemFeature(PackageManager.FEATURE_DEVICE_ADMIN);
        if (!mHasFeature) {
            // Skip the rest of the initialization
            return;
@@ -1862,7 +1889,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
        // Ensure the status of the camera is synced down to the system. Interested native services
        // should monitor this value and act accordingly.
        String cameraPropertyForUser = SYSTEM_PROP_DISABLE_CAMERA_PREFIX + policy.mUserHandle;
        boolean systemState = SystemProperties.getBoolean(cameraPropertyForUser, false);
        boolean systemState = systemPropertiesGetBoolean(cameraPropertyForUser, false);
        boolean cameraDisabled = getCameraDisabled(null, policy.mUserHandle);
        if (cameraDisabled != systemState) {
            long token = binderClearCallingIdentity();
@@ -1870,7 +1897,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
                String value = cameraDisabled ? "1" : "0";
                if (DBG) Slog.v(LOG_TAG, "Change in camera state ["
                        + cameraPropertyForUser + "] = " + value);
                SystemProperties.set(cameraPropertyForUser, value);
                systemPropertiesSet(cameraPropertyForUser, value);
            } finally {
                binderRestoreCallingIdentity(token);
            }
@@ -3231,7 +3258,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
    }

    private boolean isExtStorageEncrypted() {
        String state = SystemProperties.get("vold.decrypt");
        String state = systemPropertiesGet("vold.decrypt");
        return !"".equals(state);
    }

@@ -3969,7 +3996,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
     * {@link DevicePolicyManager#ENCRYPTION_STATUS_ACTIVE}.
     */
    private int getEncryptionStatus() {
        String status = SystemProperties.get("ro.crypto.state", "unsupported");
        String status = systemPropertiesGet("ro.crypto.state", "unsupported");
        if ("encrypted".equalsIgnoreCase(status)) {
            final long token = binderClearCallingIdentity();
            try {
@@ -4377,7 +4404,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
        }
        boolean isInitializerSystemApp;
        try {
            isInitializerSystemApp = isSystemApp(AppGlobals.getPackageManager(),
            isInitializerSystemApp = isSystemApp(getIPackageManager(),
                    initializer.getPackageName(), binderGetCallingUserHandle().getIdentifier());
        } catch (RemoteException | IllegalArgumentException e) {
            isInitializerSystemApp = false;
@@ -4528,7 +4555,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
        final long ident = binderClearCallingIdentity();
        try {
            clearUserRestrictions(userHandle);
            AppGlobals.getPackageManager().updatePermissionFlagsForAllApps(
            getIPackageManager().updatePermissionFlagsForAllApps(
                    PackageManager.FLAG_PERMISSION_POLICY_FIXED,
                    0  /* flagValues */, userHandle.getIdentifier());
        } catch (RemoteException re) {
@@ -4596,7 +4623,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
            long id = binderClearCallingIdentity();
            try {
                if (!isDeviceOwner(activeAdmin.info.getPackageName())) {
                    IPackageManager ipm = AppGlobals.getPackageManager();
                    IPackageManager ipm = getIPackageManager();
                    ipm.setComponentEnabledSetting(who,
                            PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
                            PackageManager.DONT_KILL_APP, userId);
@@ -4857,7 +4884,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {

    private void enableIfNecessary(String packageName, int userId) {
        try {
            IPackageManager ipm = AppGlobals.getPackageManager();
            IPackageManager ipm = getIPackageManager();
            ApplicationInfo ai = ipm.getApplicationInfo(packageName,
                    PackageManager.GET_DISABLED_UNTIL_USED_COMPONENTS,
                    userId);
@@ -4919,7 +4946,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
        synchronized (this) {
            getActiveAdminForCallerLocked(who, DeviceAdminInfo.USES_POLICY_PROFILE_OWNER);

            IPackageManager pm = AppGlobals.getPackageManager();
            IPackageManager pm = getIPackageManager();
            long id = binderClearCallingIdentity();
            try {
                pm.addPersistentPreferredActivity(filter, activity, userHandle);
@@ -4938,7 +4965,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
        synchronized (this) {
            getActiveAdminForCallerLocked(who, DeviceAdminInfo.USES_POLICY_PROFILE_OWNER);

            IPackageManager pm = AppGlobals.getPackageManager();
            IPackageManager pm = getIPackageManager();
            long id = binderClearCallingIdentity();
            try {
                pm.clearPackagePersistentPreferredActivities(packageName, userHandle);
@@ -5074,7 +5101,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
        synchronized (this) {
            getActiveAdminForCallerLocked(who, DeviceAdminInfo.USES_POLICY_PROFILE_OWNER);

            IPackageManager pm = AppGlobals.getPackageManager();
            IPackageManager pm = getIPackageManager();
            long id = binderClearCallingIdentity();
            try {
                UserInfo parent = mUserManager.getProfileParent(callingUserId);
@@ -5105,7 +5132,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
        int callingUserId = UserHandle.getCallingUserId();
        synchronized (this) {
            getActiveAdminForCallerLocked(who, DeviceAdminInfo.USES_POLICY_PROFILE_OWNER);
            IPackageManager pm = AppGlobals.getPackageManager();
            IPackageManager pm = getIPackageManager();
            long id = binderClearCallingIdentity();
            try {
                UserInfo parent = mUserManager.getProfileParent(callingUserId);
@@ -5144,7 +5171,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
                userIdToCheck = user.profileGroupId;
            }

            IPackageManager pm = AppGlobals.getPackageManager();
            IPackageManager pm = getIPackageManager();
            for (String enabledPackage : enabledPackages) {
                boolean systemService = false;
                try {
@@ -5276,7 +5303,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
                    List<AccessibilityServiceInfo> installedServices =
                            accessibilityManager.getInstalledAccessibilityServiceList();

                    IPackageManager pm = AppGlobals.getPackageManager();
                    IPackageManager pm = getIPackageManager();
                    if (installedServices != null) {
                        for (AccessibilityServiceInfo service : installedServices) {
                            ServiceInfo serviceInfo = service.getResolveInfo().serviceInfo;
@@ -5425,7 +5452,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
                List<InputMethodInfo> imes = inputMethodManager.getInputMethodList();
                long id = binderClearCallingIdentity();
                try {
                    IPackageManager pm = AppGlobals.getPackageManager();
                    IPackageManager pm = getIPackageManager();
                    if (imes != null) {
                        for (InputMethodInfo ime : imes) {
                            ServiceInfo serviceInfo = ime.getServiceInfo();
@@ -5472,7 +5499,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
        long id = binderClearCallingIdentity();
        try {
            String profileOwnerPkg = profileOwnerComponent.getPackageName();
            final IPackageManager ipm = AppGlobals.getPackageManager();
            final IPackageManager ipm = getIPackageManager();
            IActivityManager activityManager = getIActivityManager();

            final int userHandle = user.getIdentifier();
@@ -5624,8 +5651,8 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
                        // Send out notifications however as some clients may want to reread the
                        // value which actually changed due to a restriction having been applied.
                        final String property = Settings.Secure.SYS_PROP_SETTING_VERSION;
                        long version = SystemProperties.getLong(property, 0) + 1;
                        SystemProperties.set(property, Long.toString(version));
                        long version = systemPropertiesGetLong(property, 0) + 1;
                        systemPropertiesSet(property, Long.toString(version));

                        final String name = Settings.Secure.LOCATION_PROVIDERS_ALLOWED;
                        Uri url = Uri.withAppendedPath(Settings.Secure.CONTENT_URI, name);
@@ -5660,7 +5687,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {

            long id = binderClearCallingIdentity();
            try {
                IPackageManager pm = AppGlobals.getPackageManager();
                IPackageManager pm = getIPackageManager();
                return pm.setApplicationHiddenSettingAsUser(packageName, hidden, callingUserId);
            } catch (RemoteException re) {
                // shouldn't happen
@@ -5681,7 +5708,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {

            long id = binderClearCallingIdentity();
            try {
                IPackageManager pm = AppGlobals.getPackageManager();
                IPackageManager pm = getIPackageManager();
                return pm.getApplicationHiddenSettingAsUser(packageName, callingUserId);
            } catch (RemoteException re) {
                // shouldn't happen
@@ -5718,7 +5745,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
                    primaryUser = um.getUserInfo(userId);
                }

                IPackageManager pm = AppGlobals.getPackageManager();
                IPackageManager pm = getIPackageManager();
                if (!isSystemApp(pm, packageName, primaryUser.id)) {
                    throw new IllegalArgumentException("Only system apps can be enabled this way.");
                }
@@ -5755,7 +5782,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
                    primaryUser = um.getUserInfo(userId);
                }

                IPackageManager pm = AppGlobals.getPackageManager();
                IPackageManager pm = getIPackageManager();
                List<ResolveInfo> activitiesToEnable = pm.queryIntentActivities(intent,
                        intent.resolveTypeIfNeeded(mContext.getContentResolver()),
                        0, // no flags
@@ -5851,7 +5878,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {

            long id = binderClearCallingIdentity();
            try {
                IPackageManager pm = AppGlobals.getPackageManager();
                IPackageManager pm = getIPackageManager();
                pm.setBlockUninstallForUser(packageName, uninstallBlocked, userId);
            } catch (RemoteException re) {
                // Shouldn't happen.
@@ -5876,7 +5903,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {

            long id = binderClearCallingIdentity();
            try {
                IPackageManager pm = AppGlobals.getPackageManager();
                IPackageManager pm = getIPackageManager();
                return pm.getBlockUninstallForUser(packageName, userId);
            } catch (RemoteException re) {
                // Shouldn't happen.
@@ -6560,7 +6587,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
            getActiveAdminForCallerLocked(admin, DeviceAdminInfo.USES_POLICY_PROFILE_OWNER);
            long ident = binderClearCallingIdentity();
            try {
                final ApplicationInfo ai = AppGlobals.getPackageManager()
                final ApplicationInfo ai = getIPackageManager()
                        .getApplicationInfo(packageName, 0, user.getIdentifier());
                final int targetSdkVersion = ai == null ? 0 : ai.targetSdkVersion;
                if (targetSdkVersion < android.os.Build.VERSION_CODES.M) {
@@ -6607,7 +6634,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
            getActiveAdminForCallerLocked(admin, DeviceAdminInfo.USES_POLICY_PROFILE_OWNER);
            long ident = binderClearCallingIdentity();
            try {
                int granted = AppGlobals.getPackageManager().checkPermission(permission,
                int granted = getIPackageManager().checkPermission(permission,
                        packageName, user.getIdentifier());
                int permFlags = packageManager.getPermissionFlags(permission, packageName, user);
                if ((permFlags & PackageManager.FLAG_PERMISSION_POLICY_FIXED)
+20 −2
Original line number Diff line number Diff line
@@ -67,7 +67,25 @@
            </intent-filter>
        </receiver>

        <receiver android:name="com.android.server.devicepolicy.DummyDeviceAdmin"
        <receiver android:name="com.android.server.devicepolicy.DummyDeviceAdmins$Admin1"
            android:permission="android.permission.BIND_DEVICE_ADMIN">
            <meta-data android:name="android.app.device_admin"
                android:resource="@xml/device_admin_sample" />
            <intent-filter>
                <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
            </intent-filter>
        </receiver>

        <receiver android:name="com.android.server.devicepolicy.DummyDeviceAdmins$Admin2"
            android:permission="android.permission.BIND_DEVICE_ADMIN">
            <meta-data android:name="android.app.device_admin"
                android:resource="@xml/device_admin_sample" />
            <intent-filter>
                <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
            </intent-filter>
        </receiver>

        <receiver android:name="com.android.server.devicepolicy.DummyDeviceAdmins$Admin3"
            android:permission="android.permission.BIND_DEVICE_ADMIN">
            <meta-data android:name="android.app.device_admin"
                android:resource="@xml/device_admin_sample" />
+42 −16
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import com.android.internal.widget.LockPatternUtils;
import android.app.IActivityManager;
import android.app.NotificationManager;
import android.content.Context;
import android.content.pm.IPackageManager;
import android.content.pm.PackageManager;
import android.os.Looper;
import android.os.PowerManager.WakeLock;
@@ -45,9 +46,9 @@ public class DevicePolicyManagerServiceTestable extends DevicePolicyManagerServi
        public static final String DEVICE_OWNER_FILE = "device_owner2.xml";
        public static final String PROFILE_OWNER_FILE_BASE = "profile_owner.xml";

        final private File mLegacyFile;
        final private File mDeviceOwnerFile;
        final private File mProfileOwnerBase;
        private final File mLegacyFile;
        private final File mDeviceOwnerFile;
        private final File mProfileOwnerBase;

        public OwnersTestable(Context context, File dataDir) {
            super(context);
@@ -96,47 +97,52 @@ public class DevicePolicyManagerServiceTestable extends DevicePolicyManagerServi
    }

    @Override
    protected Owners newOwners() {
    Owners newOwners() {
        return new OwnersTestable(getContext(), dataDir);
    }

    @Override
    protected UserManager getUserManager() {
    UserManager getUserManager() {
        return getContext().userManager;
    }

    @Override
    protected PackageManager getPackageManager() {
    PackageManager getPackageManager() {
        return getContext().packageManager;
    }

    @Override
    protected PowerManagerInternal getPowerManagerInternal() {
    PowerManagerInternal getPowerManagerInternal() {
        return getContext().powerManagerInternal;
    }

    @Override
    protected NotificationManager getNotificationManager() {
    NotificationManager getNotificationManager() {
        return getContext().notificationManager;
    }

    @Override
    protected IWindowManager newIWindowManager() {
    IWindowManager getIWindowManager() {
        return getContext().iwindowManager;
    }

    @Override
    protected IActivityManager getIActivityManager() {
    IActivityManager getIActivityManager() {
        return getContext().iactivityManager;
    }

    @Override
    protected LockPatternUtils newLockPatternUtils(Context context) {
    IPackageManager getIPackageManager() {
        return getContext().ipackageManager;
    }

    @Override
    LockPatternUtils newLockPatternUtils(Context context) {
        return getContext().lockPatternUtils;
    }

    @Override
    protected Looper getMyLooper() {
    Looper getMyLooper() {
        return Looper.getMainLooper();
    }

@@ -181,12 +187,32 @@ public class DevicePolicyManagerServiceTestable extends DevicePolicyManagerServi
    }

    @Override
    WakeLock powerManagerNewWakeLock(int levelAndFlags, String tag) {
        return getContext().powerManager.newWakeLock(levelAndFlags, tag);
    void powerManagerGoToSleep(long time, int reason, int flags) {
        getContext().powerManager.goToSleep(time, reason, flags);
    }

    @Override
    boolean systemPropertiesGetBoolean(String key, boolean def) {
        return getContext().systemProperties.getBoolean(key, def);
    }

    @Override
    void powerManagerGoToSleep(long time, int reason, int flags) {
        getContext().powerManager.goToSleep(time, reason, flags);
    long systemPropertiesGetLong(String key, long def) {
        return getContext().systemProperties.getLong(key, def);
    }

    @Override
    String systemPropertiesGet(String key, String def) {
        return getContext().systemProperties.get(key, def);
    }

    @Override
    String systemPropertiesGet(String key) {
        return getContext().systemProperties.get(key);
    }

    @Override
    void systemPropertiesSet(String key, String value) {
        getContext().systemProperties.set(key, value);
    }
}
+288 −43

File changed.

Preview size limit exceeded, changes collapsed.

+38 −10
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.server.devicepolicy;

import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.widget.LockPatternUtils;

import android.app.IActivityManager;
@@ -24,11 +25,13 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.IPackageManager;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.os.Handler;
import android.os.PowerManager.WakeLock;
import android.os.PowerManagerInternal;
import android.os.SystemProperties;
import android.os.UserHandle;
import android.os.UserManager;
import android.test.mock.MockContext;
@@ -71,27 +74,27 @@ public class DpmMockContext extends MockContext {
    public static final int SYSTEM_PID = 11111;

    public static class MockBinder {
        int mCallingUid = CALLER_UID;
        int mCallingPid = CALLER_PID;
        public int callingUid = CALLER_UID;
        public int callingPid = CALLER_PID;

        public long clearCallingIdentity() {
            final long token = (((long) mCallingUid) << 32) | (mCallingPid);
            mCallingUid = SYSTEM_UID;
            mCallingPid = SYSTEM_PID;
            final long token = (((long) callingUid) << 32) | (callingPid);
            callingUid = SYSTEM_UID;
            callingPid = SYSTEM_PID;
            return token;
        }

        public void restoreCallingIdentity(long token) {
            mCallingUid = (int) (token >> 32);
            mCallingPid = (int) token;
            callingUid = (int) (token >> 32);
            callingPid = (int) token;
        }

        public int getCallingUid() {
            return mCallingUid;
            return callingUid;
        }

        public int getCallingPid() {
            return mCallingPid;
            return callingPid;
        }

        public UserHandle getCallingUserHandle() {
@@ -99,7 +102,7 @@ public class DpmMockContext extends MockContext {
        }

        public boolean isCallerUidMyUid() {
            return mCallingUid == SYSTEM_UID;
            return callingUid == SYSTEM_UID;
        }
    }

@@ -118,6 +121,27 @@ public class DpmMockContext extends MockContext {
        }
    }

    public static class SystemPropertiesForMock {
        public boolean getBoolean(String key, boolean def) {
            return false;
        }

        public long getLong(String key, long def) {
            return 0;
        }

        public String get(String key, String def) {
            return null;
        }

        public String get(String key) {
            return null;
        }

        public void set(String key, String value) {
        }
    }

    public final Context realTestContext;

    /**
@@ -129,12 +153,14 @@ public class DpmMockContext extends MockContext {

    public final MockBinder binder;
    public final EnvironmentForMock environment;
    public final SystemPropertiesForMock systemProperties;
    public final UserManager userManager;
    public final PowerManagerForMock powerManager;
    public final PowerManagerInternal powerManagerInternal;
    public final NotificationManager notificationManager;
    public final IWindowManager iwindowManager;
    public final IActivityManager iactivityManager;
    public final IPackageManager ipackageManager;
    public final LockPatternUtils lockPatternUtils;

    /** Note this is a partial mock, not a real mock. */
@@ -146,12 +172,14 @@ public class DpmMockContext extends MockContext {
        realTestContext = context;
        binder = new MockBinder();
        environment = mock(EnvironmentForMock.class);
        systemProperties= mock(SystemPropertiesForMock.class);
        userManager = mock(UserManager.class);
        powerManager = mock(PowerManagerForMock.class);
        powerManagerInternal = mock(PowerManagerInternal.class);
        notificationManager = mock(NotificationManager.class);
        iwindowManager = mock(IWindowManager.class);
        iactivityManager = mock(IActivityManager.class);
        ipackageManager = mock(IPackageManager.class);
        lockPatternUtils = mock(LockPatternUtils.class);

        // Package manager is huge, so we use a partial mock instead.
Loading