Merge "Allow setting lock task features without setting packages" into udc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
f0a411d69c
@@ -38,6 +38,7 @@ public final class LockTaskPolicy extends PolicyValue<LockTaskPolicy> {
|
||||
/**
|
||||
* @hide
|
||||
*/
|
||||
// We default on the power button menu, in order to be consistent with pre-P behaviour
|
||||
public static final int DEFAULT_LOCK_TASK_FLAG =
|
||||
DevicePolicyManager.LOCK_TASK_FEATURE_GLOBAL_ACTIONS;
|
||||
|
||||
@@ -72,18 +73,28 @@ public final class LockTaskPolicy extends PolicyValue<LockTaskPolicy> {
|
||||
/**
|
||||
* @hide
|
||||
*/
|
||||
public LockTaskPolicy(@NonNull Set<String> packages) {
|
||||
Objects.requireNonNull(packages);
|
||||
mPackages.addAll(packages);
|
||||
public LockTaskPolicy(@Nullable Set<String> packages) {
|
||||
if (packages != null) {
|
||||
mPackages.addAll(packages);
|
||||
}
|
||||
setValue(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* @hide
|
||||
*/
|
||||
public LockTaskPolicy(@NonNull Set<String> packages, int flags) {
|
||||
Objects.requireNonNull(packages);
|
||||
mPackages = new HashSet<>(packages);
|
||||
public LockTaskPolicy(int flags) {
|
||||
mFlags = flags;
|
||||
setValue(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* @hide
|
||||
*/
|
||||
public LockTaskPolicy(@Nullable Set<String> packages, int flags) {
|
||||
if (packages != null) {
|
||||
mPackages.addAll(packages);
|
||||
}
|
||||
mFlags = flags;
|
||||
setValue(this);
|
||||
}
|
||||
|
||||
@@ -14744,24 +14744,24 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
|
||||
synchronized (getLockObject()) {
|
||||
enforcingAdmin = enforceCanCallLockTaskLocked(who, caller.getPackageName());
|
||||
}
|
||||
if (packages.length == 0) {
|
||||
LockTaskPolicy currentPolicy = mDevicePolicyEngine.getLocalPolicySetByAdmin(
|
||||
PolicyDefinition.LOCK_TASK,
|
||||
enforcingAdmin,
|
||||
caller.getUserId());
|
||||
LockTaskPolicy policy;
|
||||
if (currentPolicy == null) {
|
||||
policy = new LockTaskPolicy(Set.of(packages));
|
||||
} else {
|
||||
policy = new LockTaskPolicy(currentPolicy);
|
||||
policy.setPackages(Set.of(packages));
|
||||
}
|
||||
if (policy.getPackages().isEmpty()
|
||||
&& policy.getFlags() == DevicePolicyManager.LOCK_TASK_FEATURE_NONE) {
|
||||
mDevicePolicyEngine.removeLocalPolicy(
|
||||
PolicyDefinition.LOCK_TASK,
|
||||
enforcingAdmin,
|
||||
caller.getUserId());
|
||||
} else {
|
||||
LockTaskPolicy currentPolicy = mDevicePolicyEngine.getLocalPolicySetByAdmin(
|
||||
PolicyDefinition.LOCK_TASK,
|
||||
enforcingAdmin,
|
||||
caller.getUserId());
|
||||
LockTaskPolicy policy;
|
||||
if (currentPolicy == null) {
|
||||
policy = new LockTaskPolicy(Set.of(packages));
|
||||
} else {
|
||||
policy = new LockTaskPolicy(currentPolicy);
|
||||
policy.setPackages(Set.of(packages));
|
||||
}
|
||||
|
||||
mDevicePolicyEngine.setLocalPolicy(
|
||||
PolicyDefinition.LOCK_TASK,
|
||||
enforcingAdmin,
|
||||
@@ -14876,18 +14876,26 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
|
||||
PolicyDefinition.LOCK_TASK,
|
||||
enforcingAdmin,
|
||||
caller.getUserId());
|
||||
LockTaskPolicy policy;
|
||||
if (currentPolicy == null) {
|
||||
throw new IllegalArgumentException("Can't set a lock task flags without setting "
|
||||
+ "lock task packages first.");
|
||||
policy = new LockTaskPolicy(flags);
|
||||
} else {
|
||||
policy = new LockTaskPolicy(currentPolicy);
|
||||
policy.setFlags(flags);
|
||||
}
|
||||
if (policy.getPackages().isEmpty()
|
||||
&& policy.getFlags() == DevicePolicyManager.LOCK_TASK_FEATURE_NONE) {
|
||||
mDevicePolicyEngine.removeLocalPolicy(
|
||||
PolicyDefinition.LOCK_TASK,
|
||||
enforcingAdmin,
|
||||
caller.getUserId());
|
||||
} else {
|
||||
mDevicePolicyEngine.setLocalPolicy(
|
||||
PolicyDefinition.LOCK_TASK,
|
||||
enforcingAdmin,
|
||||
policy,
|
||||
caller.getUserId());
|
||||
}
|
||||
LockTaskPolicy policy = new LockTaskPolicy(currentPolicy);
|
||||
policy.setFlags(flags);
|
||||
|
||||
mDevicePolicyEngine.setLocalPolicy(
|
||||
PolicyDefinition.LOCK_TASK,
|
||||
enforcingAdmin,
|
||||
policy,
|
||||
caller.getUserId());
|
||||
} else {
|
||||
Objects.requireNonNull(who, "ComponentName is null");
|
||||
synchronized (getLockObject()) {
|
||||
|
||||
@@ -42,10 +42,6 @@ final class LockTaskPolicySerializer extends PolicySerializer<LockTaskPolicy> {
|
||||
void saveToXml(PolicyKey policyKey, TypedXmlSerializer serializer,
|
||||
@NonNull LockTaskPolicy value) throws IOException {
|
||||
Objects.requireNonNull(value);
|
||||
if (value.getPackages() == null || value.getPackages().isEmpty()) {
|
||||
throw new IllegalArgumentException("Error saving LockTaskPolicy to file, lock task "
|
||||
+ "packages must be present");
|
||||
}
|
||||
serializer.attribute(
|
||||
/* namespace= */ null,
|
||||
ATTR_PACKAGES,
|
||||
|
||||
Reference in New Issue
Block a user