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

Commit f0a411d6 authored by Kholoud Mohamed's avatar Kholoud Mohamed Committed by Android (Google) Code Review
Browse files

Merge "Allow setting lock task features without setting packages" into udc-dev

parents f83766ec bae1a7a2
Loading
Loading
Loading
Loading
+17 −6
Original line number Diff line number Diff line
@@ -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);
    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);
    }
+31 −23
Original line number Diff line number Diff line
@@ -14744,12 +14744,6 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
            synchronized (getLockObject()) {
                enforcingAdmin = enforceCanCallLockTaskLocked(who, caller.getPackageName());
            }
            if (packages.length == 0) {
                mDevicePolicyEngine.removeLocalPolicy(
                        PolicyDefinition.LOCK_TASK,
                        enforcingAdmin,
                        caller.getUserId());
            } else {
            LockTaskPolicy currentPolicy = mDevicePolicyEngine.getLocalPolicySetByAdmin(
                    PolicyDefinition.LOCK_TASK,
                    enforcingAdmin,
@@ -14761,7 +14755,13 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
                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 {
                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.");
            }
            LockTaskPolicy policy = new LockTaskPolicy(currentPolicy);
                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());
            }
        } else {
            Objects.requireNonNull(who, "ComponentName is null");
            synchronized (getLockObject()) {
+0 −4
Original line number Diff line number Diff line
@@ -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,