Loading core/java/android/app/admin/DevicePolicyManagerInternal.java +7 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package android.app.admin; import android.annotation.Nullable; import android.annotation.UserIdInt; import android.content.ComponentName; import android.content.Intent; Loading Loading @@ -229,5 +230,11 @@ public abstract class DevicePolicyManagerInternal { /** * Returns the profile owner component for the given user, or {@code null} if there is not one. */ @Nullable public abstract ComponentName getProfileOwnerAsUser(int userHandle); /** * Returns whether the given package is a device owner or a profile owner in the calling user. */ public abstract boolean isDeviceOrProfileOwnerInCallingUser(String packageName); } services/core/java/com/android/server/wallpaper/WallpaperManagerService.java +3 −5 Original line number Diff line number Diff line Loading @@ -39,7 +39,7 @@ import android.app.WallpaperColors; import android.app.WallpaperInfo; import android.app.WallpaperManager; import android.app.WallpaperManager.SetWallpaperFlags; import android.app.admin.DevicePolicyManager; import android.app.admin.DevicePolicyManagerInternal; import android.app.backup.WallpaperBackupHelper; import android.content.BroadcastReceiver; import android.content.ComponentName; Loading Loading @@ -2846,10 +2846,8 @@ public class WallpaperManagerService extends IWallpaperManager.Stub if (!uidMatchPackage) { return false; // callingPackage was faked. } // TODO(b/144048540): DPM needs to take into account the userId, not just the package. final DevicePolicyManager dpm = mContext.getSystemService(DevicePolicyManager.class); if (dpm.isDeviceOwnerApp(callingPackage) || dpm.isProfileOwnerApp(callingPackage)) { if (LocalServices.getService(DevicePolicyManagerInternal.class) .isDeviceOrProfileOwnerInCallingUser(callingPackage)) { return true; } final int callingUserId = UserHandle.getCallingUserId(); Loading services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +21 −0 Original line number Diff line number Diff line Loading @@ -11611,6 +11611,27 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { public ComponentName getProfileOwnerAsUser(int userHandle) { return DevicePolicyManagerService.this.getProfileOwnerAsUser(userHandle); } @Override public boolean isDeviceOrProfileOwnerInCallingUser(String packageName) { return isDeviceOwnerInCallingUser(packageName) || isProfileOwnerInCallingUser(packageName); } private boolean isDeviceOwnerInCallingUser(String packageName) { final ComponentName deviceOwnerInCallingUser = DevicePolicyManagerService.this.getDeviceOwnerComponent( /* callingUserOnly= */ true); return deviceOwnerInCallingUser != null && packageName.equals(deviceOwnerInCallingUser.getPackageName()); } private boolean isProfileOwnerInCallingUser(String packageName) { final ComponentName profileOwnerInCallingUser = getProfileOwnerAsUser(UserHandle.getCallingUserId()); return profileOwnerInCallingUser != null && packageName.equals(profileOwnerInCallingUser.getPackageName()); } } private Intent createShowAdminSupportIntent(ComponentName admin, int userId) { Loading Loading
core/java/android/app/admin/DevicePolicyManagerInternal.java +7 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package android.app.admin; import android.annotation.Nullable; import android.annotation.UserIdInt; import android.content.ComponentName; import android.content.Intent; Loading Loading @@ -229,5 +230,11 @@ public abstract class DevicePolicyManagerInternal { /** * Returns the profile owner component for the given user, or {@code null} if there is not one. */ @Nullable public abstract ComponentName getProfileOwnerAsUser(int userHandle); /** * Returns whether the given package is a device owner or a profile owner in the calling user. */ public abstract boolean isDeviceOrProfileOwnerInCallingUser(String packageName); }
services/core/java/com/android/server/wallpaper/WallpaperManagerService.java +3 −5 Original line number Diff line number Diff line Loading @@ -39,7 +39,7 @@ import android.app.WallpaperColors; import android.app.WallpaperInfo; import android.app.WallpaperManager; import android.app.WallpaperManager.SetWallpaperFlags; import android.app.admin.DevicePolicyManager; import android.app.admin.DevicePolicyManagerInternal; import android.app.backup.WallpaperBackupHelper; import android.content.BroadcastReceiver; import android.content.ComponentName; Loading Loading @@ -2846,10 +2846,8 @@ public class WallpaperManagerService extends IWallpaperManager.Stub if (!uidMatchPackage) { return false; // callingPackage was faked. } // TODO(b/144048540): DPM needs to take into account the userId, not just the package. final DevicePolicyManager dpm = mContext.getSystemService(DevicePolicyManager.class); if (dpm.isDeviceOwnerApp(callingPackage) || dpm.isProfileOwnerApp(callingPackage)) { if (LocalServices.getService(DevicePolicyManagerInternal.class) .isDeviceOrProfileOwnerInCallingUser(callingPackage)) { return true; } final int callingUserId = UserHandle.getCallingUserId(); Loading
services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +21 −0 Original line number Diff line number Diff line Loading @@ -11611,6 +11611,27 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { public ComponentName getProfileOwnerAsUser(int userHandle) { return DevicePolicyManagerService.this.getProfileOwnerAsUser(userHandle); } @Override public boolean isDeviceOrProfileOwnerInCallingUser(String packageName) { return isDeviceOwnerInCallingUser(packageName) || isProfileOwnerInCallingUser(packageName); } private boolean isDeviceOwnerInCallingUser(String packageName) { final ComponentName deviceOwnerInCallingUser = DevicePolicyManagerService.this.getDeviceOwnerComponent( /* callingUserOnly= */ true); return deviceOwnerInCallingUser != null && packageName.equals(deviceOwnerInCallingUser.getPackageName()); } private boolean isProfileOwnerInCallingUser(String packageName) { final ComponentName profileOwnerInCallingUser = getProfileOwnerAsUser(UserHandle.getCallingUserId()); return profileOwnerInCallingUser != null && packageName.equals(profileOwnerInCallingUser.getPackageName()); } } private Intent createShowAdminSupportIntent(ComponentName admin, int userId) { Loading