From 661ec4710b30516a2c7a1101ba65ecac109af619 Mon Sep 17 00:00:00 2001 From: Adam Connors Date: Tue, 11 Feb 2014 13:59:46 +0000 Subject: Change API for setProfileOwner to require userId Previously the userId of the current process used but it makes the provisioning process cleaner to be able to pass it in explicitly. Change-Id: I670c4cf3638f1340f6d0bf856c3e01045df8c29e --- core/java/android/app/admin/DevicePolicyManager.java | 6 +++--- .../android/server/devicepolicy/DevicePolicyManagerService.java | 8 ++++++++ 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/core/java/android/app/admin/DevicePolicyManager.java b/core/java/android/app/admin/DevicePolicyManager.java index 40bdb7398129..0cc878e38f63 100644 --- a/core/java/android/app/admin/DevicePolicyManager.java +++ b/core/java/android/app/admin/DevicePolicyManager.java @@ -1690,16 +1690,16 @@ public class DevicePolicyManager { * user. Also, this method must be called before the user has been used for the first time. * @param packageName the package name of the application to be registered as profile owner. * @param ownerName the human readable name of the organisation associated with this DPM. + * @param userHandle the userId to set the profile owner for. * @return whether the package was successfully registered as the profile owner. * @throws IllegalArgumentException if packageName is null, the package isn't installed, or * the user has already been set up. */ - public boolean setProfileOwner(String packageName, String ownerName) + public boolean setProfileOwner(String packageName, String ownerName, int userHandle) throws IllegalArgumentException { if (mService != null) { try { - return mService.setProfileOwner(packageName, ownerName, - Process.myUserHandle().getIdentifier()); + return mService.setProfileOwner(packageName, ownerName, userHandle); } catch (RemoteException re) { Log.w(TAG, "Failed to set profile owner", re); throw new IllegalArgumentException("Couldn't set profile owner.", re); diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java index bb9654418197..12f0114691d5 100644 --- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java @@ -2830,6 +2830,14 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { return false; } mContext.enforceCallingOrSelfPermission(android.Manifest.permission.MANAGE_USERS, null); + + UserManager um = (UserManager) mContext.getSystemService(Context.USER_SERVICE); + if (um.getUserInfo(userHandle) == null) { + // User doesn't exist. + throw new IllegalArgumentException( + "Attempted to set profile owner for invalid userId: " + userHandle); + } + if (packageName == null || !DeviceOwner.isInstalledForUser(packageName, userHandle)) { throw new IllegalArgumentException("Package name " + packageName -- cgit v1.2.3-59-g8ed1b