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

Commit c11a6fde 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 am: f0a411d6

parents 18e09835 f0a411d6
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,