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

Commit b3884d53 authored by Winson's avatar Winson
Browse files

Encapsulate parsing class fields

This hides all fields as private in preparation for exposing as
interfaces for mainline-ability and for automatic getter/setter testing
through kotlin-reflect.

Bug: 178852754

Test: atest com.android.server.pm.test.parsing.parcelling

Change-Id: I8f36898694368ce60b7efd4b099986c0ea29aba0
parent 87164aae
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -273,16 +273,16 @@ public class PackageInfoWithoutStateUtils {
                pi.requestedPermissionsFlags = new int[size];
                for (int i = 0; i < size; i++) {
                    final ParsedUsesPermission usesPermission = usesPermissions.get(i);
                    pi.requestedPermissions[i] = usesPermission.name;
                    pi.requestedPermissions[i] = usesPermission.getName();
                    // The notion of required permissions is deprecated but for compatibility.
                    pi.requestedPermissionsFlags[i] |=
                            PackageInfo.REQUESTED_PERMISSION_REQUIRED;
                    if (grantedPermissions != null
                            && grantedPermissions.contains(usesPermission.name)) {
                            && grantedPermissions.contains(usesPermission.getName())) {
                        pi.requestedPermissionsFlags[i] |=
                                PackageInfo.REQUESTED_PERMISSION_GRANTED;
                    }
                    if ((usesPermission.usesPermissionFlags
                    if ((usesPermission.getUsesPermissionFlags()
                            & ParsedUsesPermission.FLAG_NEVER_FOR_LOCATION) != 0) {
                        pi.requestedPermissionsFlags[i] |=
                                PackageInfo.REQUESTED_PERMISSION_NEVER_FOR_LOCATION;
@@ -713,7 +713,7 @@ public class PackageInfoWithoutStateUtils {
    @Nullable
    public static Attribution generateAttribution(ParsedAttribution pa) {
        if (pa == null) return null;
        return new Attribution(pa.tag, pa.label);
        return new Attribution(pa.getTag(), pa.getLabel());
    }

    private static void assignSharedFieldsForComponentInfo(@NonNull ComponentInfo componentInfo,
+2 −1
Original line number Diff line number Diff line
@@ -716,7 +716,8 @@ public class ParsingPackageImpl implements ParsingPackage, Parcelable {

        // Continue populating legacy data structures to avoid performance
        // issues until all that code can be migrated
        this.requestedPermissions = CollectionUtils.add(this.requestedPermissions, permission.name);
        this.requestedPermissions = CollectionUtils.add(this.requestedPermissions,
                permission.getName());

        return this;
    }
+4 −4
Original line number Diff line number Diff line
@@ -1298,8 +1298,8 @@ public class ParsingPackageUtils {
            final int size = usesPermissions.size();
            for (int i = 0; i < size; i++) {
                final ParsedUsesPermission usesPermission = usesPermissions.get(i);
                if (Objects.equals(usesPermission.name, name)) {
                    if (usesPermission.usesPermissionFlags != usesPermissionFlags) {
                if (Objects.equals(usesPermission.getName(), name)) {
                    if (usesPermission.getUsesPermissionFlags() != usesPermissionFlags) {
                        return input.error("Conflicting uses-permissions flags: "
                                + name + " in package: " + pkg.getPackageName() + " at: "
                                + parser.getPositionDescription());
@@ -2798,8 +2798,8 @@ public class ParsingPackageUtils {
            if (pkg.getTargetSdkVersion() >= info.sdkVersion) {
                break;
            }
            if (!pkg.getRequestedPermissions().contains(info.name)) {
                pkg.addImplicitPermission(info.name);
            if (!pkg.getRequestedPermissions().contains(info.getName())) {
                pkg.addImplicitPermission(info.getName());
            }
        }
    }
+2 −2
Original line number Diff line number Diff line
@@ -152,7 +152,7 @@ public class ComponentParseUtils {
    @Nullable
    public static CharSequence getNonLocalizedLabel(
            ParsedComponent component) {
        return component.nonLocalizedLabel;
        return component.getNonLocalizedLabel();
    }

    /**
@@ -161,7 +161,7 @@ public class ComponentParseUtils {
     * This is a method of the utility class to discourage use.
     */
    public static int getIcon(ParsedComponent component) {
        return component.icon;
        return component.getIcon();
    }

    public static boolean isMatch(PackageUserState state, boolean isSystem,
+115 −26
Original line number Diff line number Diff line
@@ -38,8 +38,8 @@ import com.android.internal.util.Parcelling.BuiltIn.ForInternedString;
/** @hide **/
public class ParsedActivity extends ParsedMainComponent {

    int theme;
    int uiOptions;
    private int theme;
    private int uiOptions;

    @Nullable
    @DataClass.ParcelWith(ForInternedString.class)
@@ -49,22 +49,22 @@ public class ParsedActivity extends ParsedMainComponent {
    @DataClass.ParcelWith(ForInternedString.class)
    private String parentActivityName;
    @Nullable
    String taskAffinity;
    int privateFlags;
    private String taskAffinity;
    private int privateFlags;
    @Nullable
    @DataClass.ParcelWith(ForInternedString.class)
    private String permission;

    int launchMode;
    int documentLaunchMode;
    int maxRecents;
    int configChanges;
    int softInputMode;
    int persistableMode;
    int lockTaskLaunchMode;
    private int launchMode;
    private int documentLaunchMode;
    private int maxRecents;
    private int configChanges;
    private int softInputMode;
    private int persistableMode;
    private int lockTaskLaunchMode;

    int screenOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
    int resizeMode = ActivityInfo.RESIZE_MODE_RESIZEABLE;
    private int screenOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
    private int resizeMode = ActivityInfo.RESIZE_MODE_RESIZEABLE;

    @Nullable
    private Float maxAspectRatio;
@@ -75,12 +75,12 @@ public class ParsedActivity extends ParsedMainComponent {
    private boolean supportsSizeChanges;

    @Nullable
    String requestedVrComponent;
    int rotationAnimation = -1;
    int colorMode;
    private String requestedVrComponent;
    private int rotationAnimation = -1;
    private int colorMode;

    @Nullable
    ActivityInfo.WindowLayout windowLayout;
    private ActivityInfo.WindowLayout windowLayout;

    public ParsedActivity(ParsedActivity other) {
        super(other);
@@ -188,6 +188,35 @@ public class ParsedActivity extends ParsedMainComponent {
//        alias.metaData = target.metaData;
    }

    public boolean isSupportsSizeChanges() {
        return supportsSizeChanges;
    }

    public ParsedActivity setColorMode(int colorMode) {
        this.colorMode = colorMode;
        return this;
    }

    public ParsedActivity setConfigChanges(int configChanges) {
        this.configChanges = configChanges;
        return this;
    }

    public ParsedActivity setDocumentLaunchMode(int documentLaunchMode) {
        this.documentLaunchMode = documentLaunchMode;
        return this;
    }

    public ParsedActivity setLaunchMode(int launchMode) {
        this.launchMode = launchMode;
        return this;
    }

    public ParsedActivity setLockTaskLaunchMode(int lockTaskLaunchMode) {
        this.lockTaskLaunchMode = lockTaskLaunchMode;
        return this;
    }

    public ParsedActivity setMaxAspectRatio(int resizeMode, float maxAspectRatio) {
        if (resizeMode == ActivityInfo.RESIZE_MODE_RESIZEABLE
                || resizeMode == ActivityInfo.RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION) {
@@ -204,6 +233,16 @@ public class ParsedActivity extends ParsedMainComponent {
        return this;
    }

    public ParsedActivity setMaxAspectRatio(Float maxAspectRatio) {
        this.maxAspectRatio = maxAspectRatio;
        return this;
    }

    public ParsedActivity setMaxRecents(int maxRecents) {
        this.maxRecents = maxRecents;
        return this;
    }

    public ParsedActivity setMinAspectRatio(int resizeMode, float minAspectRatio) {
        if (resizeMode == RESIZE_MODE_RESIZEABLE
                || resizeMode == RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION) {
@@ -220,13 +259,48 @@ public class ParsedActivity extends ParsedMainComponent {
        return this;
    }

    public ParsedActivity setSupportsSizeChanges(boolean supportsSizeChanges) {
        this.supportsSizeChanges = supportsSizeChanges;
    public ParsedActivity setMinAspectRatio(Float minAspectRatio) {
        this.minAspectRatio = minAspectRatio;
        return this;
    }

    public ParsedActivity setParentActivityName(String parentActivityName) {
        this.parentActivityName = parentActivityName;
        return this;
    }

    public ParsedActivity setPersistableMode(int persistableMode) {
        this.persistableMode = persistableMode;
        return this;
    }

    public ParsedActivity setFlags(int flags) {
        this.flags = flags;
    public ParsedActivity setPrivateFlags(int privateFlags) {
        this.privateFlags = privateFlags;
        return this;
    }

    public ParsedActivity setRequestedVrComponent(String requestedVrComponent) {
        this.requestedVrComponent = requestedVrComponent;
        return this;
    }

    public ParsedActivity setRotationAnimation(int rotationAnimation) {
        this.rotationAnimation = rotationAnimation;
        return this;
    }

    public ParsedActivity setScreenOrientation(int screenOrientation) {
        this.screenOrientation = screenOrientation;
        return this;
    }

    public ParsedActivity setSoftInputMode(int softInputMode) {
        this.softInputMode = softInputMode;
        return this;
    }

    public ParsedActivity setSupportsSizeChanges(boolean supportsSizeChanges) {
        this.supportsSizeChanges = supportsSizeChanges;
        return this;
    }

@@ -240,17 +314,32 @@ public class ParsedActivity extends ParsedMainComponent {
        return this;
    }

    public ParsedActivity setParentActivity(String parentActivity) {
        this.parentActivityName = TextUtils.safeIntern(parentActivity);
        return this;
    }

    public ParsedActivity setPermission(String permission) {
        // Empty string must be converted to null
        this.permission = TextUtils.isEmpty(permission) ? null : permission.intern();
        return this;
    }

    public ParsedActivity setTaskAffinity(String taskAffinity) {
        this.taskAffinity = taskAffinity;
        return this;
    }

    public ParsedActivity setTheme(int theme) {
        this.theme = theme;
        return this;
    }

    public ParsedActivity setUiOptions(int uiOptions) {
        this.uiOptions = uiOptions;
        return this;
    }

    public ParsedActivity setWindowLayout(ActivityInfo.WindowLayout windowLayout) {
        this.windowLayout = windowLayout;
        return this;
    }

    public String toString() {
        StringBuilder sb = new StringBuilder(128);
        sb.append("Activity{");
Loading