summaryrefslogtreecommitdiff
path: root/packages/SettingsLib/src/com/android/settingslib/RestrictedLockUtilsInternal.java
diff options
context:
space:
mode:
authorPhilip P. Moltmann <moltmann@google.com>2018-10-08 10:47:25 -0700
committerPhilip P. Moltmann <moltmann@google.com>2018-10-09 12:38:23 -0700
commit0ada0a60448cddd4442fee29f01ae113df8b7105 (patch)
tree2ea829d149598fe624b4d4f253da4307d19e563c /packages/SettingsLib/src/com/android/settingslib/RestrictedLockUtilsInternal.java
parent421f1a152c44192bff66ff99a13af8080c6b618c (diff)
Change DevicePolicyManager APIs as requested
This requires RestrictedLockUtils to change which then causes further changes. I left the old APIs available for non-system-api customers. Test: RunSettingsLibRoboTests Bug: 116798569 Change-Id: Id5384ee074bb245e615012b7e0d5298b8bf27ba4
Diffstat (limited to 'packages/SettingsLib/src/com/android/settingslib/RestrictedLockUtilsInternal.java')
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/RestrictedLockUtilsInternal.java48
1 files changed, 33 insertions, 15 deletions
diff --git a/packages/SettingsLib/src/com/android/settingslib/RestrictedLockUtilsInternal.java b/packages/SettingsLib/src/com/android/settingslib/RestrictedLockUtilsInternal.java
index c03ba9a93294..f57122e6708d 100644
--- a/packages/SettingsLib/src/com/android/settingslib/RestrictedLockUtilsInternal.java
+++ b/packages/SettingsLib/src/com/android/settingslib/RestrictedLockUtilsInternal.java
@@ -164,6 +164,17 @@ public class RestrictedLockUtilsInternal extends RestrictedLockUtils {
}
/**
+ * @return the UserHandle for a userId. Return null for USER_NULL
+ */
+ private static UserHandle getUserHandleOf(@UserIdInt int userId) {
+ if (userId == UserHandle.USER_NULL) {
+ return null;
+ } else {
+ return UserHandle.of(userId);
+ }
+ }
+
+ /**
* Filter a set of device admins based on a predicate {@code check}. This is equivalent to
* {@code admins.stream().filter(check).map(x → new EnforcedAdmin(admin, userId)} except it's
* returning a zero/one/many-type thing.
@@ -183,11 +194,13 @@ public class RestrictedLockUtilsInternal extends RestrictedLockUtils {
if (admins == null) {
return null;
}
+
+ final UserHandle user = getUserHandleOf(userId);
EnforcedAdmin enforcedAdmin = null;
for (ComponentName admin : admins) {
if (check.isEnforcing(dpm, admin, userId)) {
if (enforcedAdmin == null) {
- enforcedAdmin = new EnforcedAdmin(admin, userId);
+ enforcedAdmin = new EnforcedAdmin(admin, user);
} else {
return EnforcedAdmin.MULTIPLE_ENFORCED_ADMIN;
}
@@ -211,7 +224,7 @@ public class RestrictedLockUtilsInternal extends RestrictedLockUtils {
IPackageManager ipm = AppGlobals.getPackageManager();
try {
if (ipm.getBlockUninstallForUser(packageName, userId)) {
- return getProfileOrDeviceOwner(context, userId);
+ return getProfileOrDeviceOwner(context, getUserHandleOf(userId));
}
} catch (RemoteException e) {
// Nothing to do
@@ -230,7 +243,7 @@ public class RestrictedLockUtilsInternal extends RestrictedLockUtils {
IPackageManager ipm = AppGlobals.getPackageManager();
try {
if (ipm.isPackageSuspendedForUser(packageName, userId)) {
- return getProfileOrDeviceOwner(context, userId);
+ return getProfileOrDeviceOwner(context, getUserHandleOf(userId));
}
} catch (RemoteException | IllegalArgumentException e) {
// Nothing to do
@@ -245,14 +258,15 @@ public class RestrictedLockUtilsInternal extends RestrictedLockUtils {
if (dpm == null) {
return null;
}
- EnforcedAdmin admin = getProfileOrDeviceOwner(context, userId);
+ EnforcedAdmin admin = getProfileOrDeviceOwner(context, getUserHandleOf(userId));
boolean permitted = true;
if (admin != null) {
permitted = dpm.isInputMethodPermittedByAdmin(admin.component,
packageName, userId);
}
int managedProfileId = getManagedProfileId(context, userId);
- EnforcedAdmin profileAdmin = getProfileOrDeviceOwner(context, managedProfileId);
+ EnforcedAdmin profileAdmin = getProfileOrDeviceOwner(context,
+ getUserHandleOf(managedProfileId));
boolean permittedByProfileAdmin = true;
if (profileAdmin != null) {
permittedByProfileAdmin = dpm.isInputMethodPermittedByAdmin(profileAdmin.component,
@@ -298,14 +312,15 @@ public class RestrictedLockUtilsInternal extends RestrictedLockUtils {
if (dpm == null) {
return null;
}
- EnforcedAdmin admin = getProfileOrDeviceOwner(context, userId);
+ EnforcedAdmin admin = getProfileOrDeviceOwner(context, getUserHandleOf(userId));
boolean permitted = true;
if (admin != null) {
permitted = dpm.isAccessibilityServicePermittedByAdmin(admin.component,
packageName, userId);
}
int managedProfileId = getManagedProfileId(context, userId);
- EnforcedAdmin profileAdmin = getProfileOrDeviceOwner(context, managedProfileId);
+ EnforcedAdmin profileAdmin = getProfileOrDeviceOwner(context,
+ getUserHandleOf(managedProfileId));
boolean permittedByProfileAdmin = true;
if (profileAdmin != null) {
permittedByProfileAdmin = dpm.isAccessibilityServicePermittedByAdmin(
@@ -365,7 +380,7 @@ public class RestrictedLockUtilsInternal extends RestrictedLockUtils {
if (!isAccountTypeDisabled) {
return null;
}
- return getProfileOrDeviceOwner(context, userId);
+ return getProfileOrDeviceOwner(context, getUserHandleOf(userId));
}
/**
@@ -377,7 +392,8 @@ public class RestrictedLockUtilsInternal extends RestrictedLockUtils {
*/
public static EnforcedAdmin checkIfMeteredDataRestricted(Context context,
String packageName, int userId) {
- final EnforcedAdmin enforcedAdmin = getProfileOrDeviceOwner(context, userId);
+ final EnforcedAdmin enforcedAdmin = getProfileOrDeviceOwner(context,
+ getUserHandleOf(userId));
if (enforcedAdmin == null) {
return null;
}
@@ -402,7 +418,7 @@ public class RestrictedLockUtilsInternal extends RestrictedLockUtils {
return null;
}
ComponentName adminComponent = dpm.getDeviceOwnerComponentOnCallingUser();
- return new EnforcedAdmin(adminComponent, UserHandle.myUserId());
+ return new EnforcedAdmin(adminComponent, getUserHandleOf(UserHandle.myUserId()));
}
/**
@@ -434,10 +450,11 @@ public class RestrictedLockUtilsInternal extends RestrictedLockUtils {
return null;
}
EnforcedAdmin enforcedAdmin = null;
+ final UserHandle user = getUserHandleOf(userId);
for (ComponentName admin : admins) {
if (check.isEnforcing(dpm, admin, userId)) {
if (enforcedAdmin == null) {
- enforcedAdmin = new EnforcedAdmin(admin, userId);
+ enforcedAdmin = new EnforcedAdmin(admin, user);
} else {
return EnforcedAdmin.MULTIPLE_ENFORCED_ADMIN;
}
@@ -488,13 +505,14 @@ public class RestrictedLockUtilsInternal extends RestrictedLockUtils {
if (admins == null) {
continue;
}
+ final UserHandle user = getUserHandleOf(userInfo.id);
final boolean isSeparateProfileChallengeEnabled =
sProxy.isSeparateProfileChallengeEnabled(lockPatternUtils, userInfo.id);
for (ComponentName admin : admins) {
if (!isSeparateProfileChallengeEnabled) {
if (check.isEnforcing(dpm, admin, userInfo.id)) {
if (enforcedAdmin == null) {
- enforcedAdmin = new EnforcedAdmin(admin, userInfo.id);
+ enforcedAdmin = new EnforcedAdmin(admin, user);
} else {
return EnforcedAdmin.MULTIPLE_ENFORCED_ADMIN;
}
@@ -511,7 +529,7 @@ public class RestrictedLockUtilsInternal extends RestrictedLockUtils {
DevicePolicyManager parentDpm = sProxy.getParentProfileInstance(dpm, userInfo);
if (check.isEnforcing(parentDpm, admin, userInfo.id)) {
if (enforcedAdmin == null) {
- enforcedAdmin = new EnforcedAdmin(admin, userInfo.id);
+ enforcedAdmin = new EnforcedAdmin(admin, user);
} else {
return EnforcedAdmin.MULTIPLE_ENFORCED_ADMIN;
}
@@ -535,7 +553,7 @@ public class RestrictedLockUtilsInternal extends RestrictedLockUtils {
ComponentName adminComponent = dpm.getDeviceOwnerComponentOnAnyUser();
if (adminComponent != null) {
return new EnforcedAdmin(
- adminComponent, enforcedRestriction, dpm.getDeviceOwnerUserId());
+ adminComponent, enforcedRestriction, dpm.getDeviceOwnerUser());
}
return null;
}
@@ -556,7 +574,7 @@ public class RestrictedLockUtilsInternal extends RestrictedLockUtils {
}
ComponentName adminComponent = dpm.getProfileOwnerAsUser(userId);
if (adminComponent != null) {
- return new EnforcedAdmin(adminComponent, enforcedRestriction, userId);
+ return new EnforcedAdmin(adminComponent, enforcedRestriction, getUserHandleOf(userId));
}
return null;
}