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

Commit 619c5732 authored by Kholoud Mohamed's avatar Kholoud Mohamed Committed by Automerger Merge Worker
Browse files

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

Merge "Allow setting lock task features without setting packages" into udc-dev am: f0a411d6 am: 1fac50a2

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/22761399



Change-Id: If150c802ea8875cf3a4169380610f8d64622e2b0
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents f3f60777 1fac50a2
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,