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

Commit 5932fbb9 authored by Makoto Onuki's avatar Makoto Onuki Committed by Android (Google) Code Review
Browse files

Merge "Test more DPM APIs."

parents 329d20d5 f76b06a6
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