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

Commit 2b04a598 authored by Ilyas Sung's avatar Ilyas Sung
Browse files

Pass the context for the calling user to DevicePolicyManager when checking for the Device Owner.

On Headless System User Mode, the Device Owner is not guaranteed to be on the system user, therefore this check fails

Bug: 329872452
Test: atest DeviceOwnerTest#testHardwarePropertiesManagerAsDeviceOwner
Change-Id: Ia8a3e70c726646b245175c85c920cb948ebcc380
parent 5afaf4bf
Loading
Loading
Loading
Loading
+12 −1
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.server;

import static android.app.admin.DevicePolicyManager.IS_DEVICE_OWNER_USER_AWARE;
import static android.os.HardwarePropertiesManager.DEVICE_TEMPERATURE_BATTERY;
import static android.os.HardwarePropertiesManager.DEVICE_TEMPERATURE_CPU;
import static android.os.HardwarePropertiesManager.DEVICE_TEMPERATURE_GPU;
@@ -28,12 +29,14 @@ import static android.os.HardwarePropertiesManager.TEMPERATURE_THROTTLING_BELOW_
import android.Manifest;
import android.app.AppOpsManager;
import android.app.admin.DevicePolicyManager;
import android.app.compat.CompatChanges;
import android.content.Context;
import android.content.pm.PackageManager;
import android.os.Binder;
import android.os.CpuUsageInfo;
import android.os.IHardwarePropertiesManager;
import android.os.UserHandle;
import android.permission.flags.Flags;

import com.android.internal.util.DumpUtils;
import com.android.server.vr.VrManagerInternal;
@@ -168,7 +171,15 @@ public class HardwarePropertiesManagerService extends IHardwarePropertiesManager
        mAppOps.checkPackage(Binder.getCallingUid(), callingPackage);
        final int userId = UserHandle.getUserId(Binder.getCallingUid());
        final VrManagerInternal vrService = LocalServices.getService(VrManagerInternal.class);
        final DevicePolicyManager dpm = mContext.getSystemService(DevicePolicyManager.class);
        final DevicePolicyManager dpm;
        if (Flags.systemServerRoleControllerEnabled()
                && CompatChanges.isChangeEnabled(IS_DEVICE_OWNER_USER_AWARE)) {
            final UserHandle handle = new UserHandle(userId);
            dpm = mContext.createContextAsUser(handle, 0)
                    .getSystemService(DevicePolicyManager.class);
        } else {
            dpm = mContext.getSystemService(DevicePolicyManager.class);
        }
        if (!dpm.isDeviceOwnerApp(callingPackage)
                && mContext.checkCallingOrSelfPermission(Manifest.permission.DEVICE_POWER)
                        != PackageManager.PERMISSION_GRANTED