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

Commit c70fe157 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Apply package name size limit to packages" into main

parents e567a85c 02222d94
Loading
Loading
Loading
Loading
+13 −13
Original line number Diff line number Diff line
@@ -28,18 +28,18 @@ import java.util.Set;
/**
 * @hide
 */
public final class StringSetPolicyValue extends PolicyValue<Set<String>> {
public final class PackageSetPolicyValue extends PolicyValue<Set<String>> {

    public StringSetPolicyValue(@NonNull Set<String> value) {
    public PackageSetPolicyValue(@NonNull Set<String> value) {
        super(value);
        if (Flags.devicePolicySizeTrackingInternalBugFixEnabled()) {
            for (String str : value) {
                PolicySizeVerifier.enforceMaxStringLength(str, "policyValue");
            for (String packageName : value) {
                PolicySizeVerifier.enforceMaxPackageNameLength(packageName);
            }
        }
    }

    public StringSetPolicyValue(Parcel source) {
    public PackageSetPolicyValue(Parcel source) {
        this(readValues(source));
    }

@@ -56,7 +56,7 @@ public final class StringSetPolicyValue extends PolicyValue<Set<String>> {
    public boolean equals(@Nullable Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        StringSetPolicyValue other = (StringSetPolicyValue) o;
        PackageSetPolicyValue other = (PackageSetPolicyValue) o;
        return Objects.equals(getValue(), other.getValue());
    }

@@ -67,7 +67,7 @@ public final class StringSetPolicyValue extends PolicyValue<Set<String>> {

    @Override
    public String toString() {
        return "StringSetPolicyValue { " + getValue() + " }";
        return "PackageNameSetPolicyValue { " + getValue() + " }";
    }

    @Override
@@ -84,16 +84,16 @@ public final class StringSetPolicyValue extends PolicyValue<Set<String>> {
    }

    @NonNull
    public static final Creator<StringSetPolicyValue> CREATOR =
            new Creator<StringSetPolicyValue>() {
    public static final Creator<PackageSetPolicyValue> CREATOR =
            new Creator<PackageSetPolicyValue>() {
                @Override
                public StringSetPolicyValue createFromParcel(Parcel source) {
                    return new StringSetPolicyValue(source);
                public PackageSetPolicyValue createFromParcel(Parcel source) {
                    return new PackageSetPolicyValue(source);
                }

                @Override
                public StringSetPolicyValue[] newArray(int size) {
                    return new StringSetPolicyValue[size];
                public PackageSetPolicyValue[] newArray(int size) {
                    return new PackageSetPolicyValue[size];
                }
            };
}
+10 −8
Original line number Diff line number Diff line
@@ -349,8 +349,8 @@ import android.app.admin.PolicyValue;
import android.app.admin.PreferentialNetworkServiceConfig;
import android.app.admin.SecurityLog;
import android.app.admin.SecurityLog.SecurityEvent;
import android.app.admin.PackageSetPolicyValue;
import android.app.admin.StartInstallingUpdateCallback;
import android.app.admin.StringSetPolicyValue;
import android.app.admin.SystemUpdateInfo;
import android.app.admin.SystemUpdatePolicy;
import android.app.admin.UnsafeStateException;
@@ -12073,7 +12073,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
                mDevicePolicyEngine.setLocalPolicy(
                        PolicyDefinition.PERMITTED_INPUT_METHODS,
                        admin,
                        new StringSetPolicyValue(new HashSet<>(packageList)),
                        new PackageSetPolicyValue(new HashSet<>(packageList)),
                        userId);
            }
        }
@@ -20358,12 +20358,12 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
            mDevicePolicyEngine.setGlobalPolicy(
                    PolicyDefinition.USER_CONTROLLED_DISABLED_PACKAGES,
                    enforcingAdmin,
                    new StringSetPolicyValue(packages));
                    new PackageSetPolicyValue(packages));
        } else {
            mDevicePolicyEngine.setLocalPolicy(
                    PolicyDefinition.USER_CONTROLLED_DISABLED_PACKAGES,
                    enforcingAdmin,
                    new StringSetPolicyValue(packages),
                    new PackageSetPolicyValue(packages),
                    caller.getUserId());
        }
    }
@@ -24045,7 +24045,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
                        mDevicePolicyEngine.setLocalPolicy(
                                PolicyDefinition.PERMITTED_INPUT_METHODS,
                                enforcingAdmin,
                                new StringSetPolicyValue(
                                new PackageSetPolicyValue(
                                        new HashSet<>(admin.permittedInputMethods)),
                                admin.getUserHandle().getIdentifier());
                    }
@@ -24054,7 +24054,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
                        mDevicePolicyEngine.setLocalPolicy(
                                PolicyDefinition.PERMITTED_INPUT_METHODS,
                                enforcingAdmin,
                                new StringSetPolicyValue(
                                new PackageSetPolicyValue(
                                        new HashSet<>(admin.getParentActiveAdmin()
                                                .permittedInputMethods)),
                                getProfileParentId(admin.getUserHandle().getIdentifier()));
@@ -24110,12 +24110,14 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
                        mDevicePolicyEngine.setGlobalPolicy(
                                PolicyDefinition.USER_CONTROLLED_DISABLED_PACKAGES,
                                enforcingAdmin,
                                new StringSetPolicyValue(new HashSet<>(admin.protectedPackages)));
                                new PackageSetPolicyValue(
                                        new HashSet<>(admin.protectedPackages)));
                    } else {
                        mDevicePolicyEngine.setLocalPolicy(
                                PolicyDefinition.USER_CONTROLLED_DISABLED_PACKAGES,
                                enforcingAdmin,
                                new StringSetPolicyValue(new HashSet<>(admin.protectedPackages)),
                                new PackageSetPolicyValue(
                                        new HashSet<>(admin.protectedPackages)),
                                admin.getUserHandle().getIdentifier());
                    }
                }
+4 −4
Original line number Diff line number Diff line
@@ -19,7 +19,7 @@ package com.android.server.devicepolicy;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.app.admin.PolicyValue;
import android.app.admin.StringSetPolicyValue;
import android.app.admin.PackageSetPolicyValue;
import android.util.Log;

import com.android.modules.utils.TypedXmlPullParser;
@@ -30,7 +30,7 @@ import java.util.Objects;
import java.util.Set;

// TODO(scottjonathan): Replace with generic set implementation
final class StringSetPolicySerializer extends PolicySerializer<Set<String>> {
final class PackageSetPolicySerializer extends PolicySerializer<Set<String>> {
    private static final String ATTR_VALUES = "strings";
    private static final String ATTR_VALUES_SEPARATOR = ";";
    @Override
@@ -45,10 +45,10 @@ final class StringSetPolicySerializer extends PolicySerializer<Set<String>> {
    PolicyValue<Set<String>> readFromXml(TypedXmlPullParser parser) {
        String valuesStr = parser.getAttributeValue(/* namespace= */ null, ATTR_VALUES);
        if (valuesStr == null) {
            Log.e(DevicePolicyEngine.TAG, "Error parsing StringSet policy value.");
            Log.e(DevicePolicyEngine.TAG, "Error parsing PackageSet policy value.");
            return null;
        }
        Set<String> values = Set.of(valuesStr.split(ATTR_VALUES_SEPARATOR));
        return new StringSetPolicyValue(values);
        return new PackageSetPolicyValue(values);
    }
}
+7 −6
Original line number Diff line number Diff line
@@ -18,14 +18,15 @@ package com.android.server.devicepolicy;

import android.annotation.NonNull;
import android.app.admin.PolicyValue;
import android.app.admin.StringSetPolicyValue;
import android.app.admin.PackageSetPolicyValue;
import android.app.admin.StringSetUnion;

import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.Objects;
import java.util.Set;

final class StringSetUnion extends ResolutionMechanism<Set<String>> {
final class PackageSetUnion extends ResolutionMechanism<Set<String>> {

    @Override
    PolicyValue<Set<String>> resolve(
@@ -38,17 +39,17 @@ final class StringSetUnion extends ResolutionMechanism<Set<String>> {
        for (PolicyValue<Set<String>> policy : adminPolicies.values()) {
            unionOfPolicies.addAll(policy.getValue());
        }
        return new StringSetPolicyValue(unionOfPolicies);
        return new PackageSetPolicyValue(unionOfPolicies);
    }

    @Override
    android.app.admin.StringSetUnion getParcelableResolutionMechanism() {
        return new android.app.admin.StringSetUnion();
    StringSetUnion getParcelableResolutionMechanism() {
        return new StringSetUnion();
    }


    @Override
    public String toString() {
        return "SetUnion {}";
        return "PackageSetUnion {}";
    }
}
+3 −3
Original line number Diff line number Diff line
@@ -162,9 +162,9 @@ final class PolicyDefinition<V> {
            new PolicyDefinition<>(
                    new NoArgsPolicyKey(
                            DevicePolicyIdentifiers.USER_CONTROL_DISABLED_PACKAGES_POLICY),
                    new StringSetUnion(),
                    new PackageSetUnion(),
                    PolicyEnforcerCallbacks::setUserControlDisabledPackages,
                    new StringSetPolicySerializer());
                    new PackageSetPolicySerializer());

    // This is saved in the static map sPolicyDefinitions so that we're able to reconstruct the
    // actual policy with the correct arguments (i.e. packageName) when reading the policies from
@@ -328,7 +328,7 @@ final class PolicyDefinition<V> {
            new MostRecent<>(),
            POLICY_FLAG_LOCAL_ONLY_POLICY | POLICY_FLAG_INHERITABLE,
            (Set<String> value, Context context, Integer userId, PolicyKey policyKey) -> true,
            new StringSetPolicySerializer());
            new PackageSetPolicySerializer());


    static PolicyDefinition<Boolean> SCREEN_CAPTURE_DISABLED = new PolicyDefinition<>(