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

Commit b927d9db authored by Alex Johnston's avatar Alex Johnston Committed by Android Build Coastguard Worker
Browse files

DPMS workaround to check the device owner type in PermissionController

Context:
* If the device is managed, then hibernation should not be
  handled unless the device is financed.
* We need a way to check if a device is financed in
  PermissionController. However, PermissionController
  is a mainline module so cannot call the TestAPI
  Dpm.getDeviceOwnerType

Change:
* User Global Settings to let permission controller know
  if the device is financed

Bug: 236283038
Test: Manual testing following go/hibernation-local-testing
Change-Id: Ib9a1a9116014d041c9514752882cdd364bfe777b
(cherry picked from commit 7d1eae2d)
Merged-In: Ib9a1a9116014d041c9514752882cdd364bfe777b
parent b5038298
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -1982,6 +1982,10 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
        synchronized (getLockObject()) {
            mOwners.load();
            setDeviceOwnershipSystemPropertyLocked();
            if (mOwners.hasDeviceOwner()) {
                setGlobalSettingDeviceOwnerType(
                        mOwners.getDeviceOwnerType(mOwners.getDeviceOwnerPackageName()));
            }
        }
    }
@@ -8811,6 +8815,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
        deleteTransferOwnershipBundleLocked(userId);
        toggleBackupServiceActive(UserHandle.USER_SYSTEM, true);
        pushUserControlDisabledPackagesLocked(userId);
        setGlobalSettingDeviceOwnerType(DEVICE_OWNER_TYPE_DEFAULT);
    }
    private void clearApplicationRestrictions(int userId) {
@@ -18377,6 +18382,14 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
                "Test only admins can only set the device owner type more than once");
        mOwners.setDeviceOwnerType(packageName, deviceOwnerType, isAdminTestOnly);
        setGlobalSettingDeviceOwnerType(deviceOwnerType);
    }
    // TODO(b/237065504): Allow mainline modules to get the device owner type. This is a workaround
    // to get the device owner type in PermissionController. See HibernationPolicy.kt.
    private void setGlobalSettingDeviceOwnerType(int deviceOwnerType) {
        mInjector.binderWithCleanCallingIdentity(
                () -> mInjector.settingsGlobalPutInt("device_owner_type", deviceOwnerType));
    }
    @Override