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

Commit 2b206725 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "[wm] Introduce meta-data tag (android.supports_size_changes)" into rvc-dev am: 247144d4

Original change: undetermined

Change-Id: I235f8efd7645edc8266b1d0def365b5c067ebbe2
parents 062f27dc 247144d4
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -244,6 +244,13 @@ public class ActivityInfo extends ComponentInfo implements Parcelable {
     */
    public float minAspectRatio;

    /**
     * Indicates that the activity works well with size changes like display changing size.
     *
     * @hide
     */
    public boolean supportsSizeChanges;

    /**
     * Name of the VrListenerService component to run for this activity.
     * @see android.R.attr#enableVrMode
@@ -1013,6 +1020,7 @@ public class ActivityInfo extends ComponentInfo implements Parcelable {
        colorMode = orig.colorMode;
        maxAspectRatio = orig.maxAspectRatio;
        minAspectRatio = orig.minAspectRatio;
        supportsSizeChanges = orig.supportsSizeChanges;
    }

    /**
@@ -1188,6 +1196,9 @@ public class ActivityInfo extends ComponentInfo implements Parcelable {
        if (minAspectRatio != 0) {
            pw.println(prefix + "minAspectRatio=" + minAspectRatio);
        }
        if (supportsSizeChanges) {
            pw.println(prefix + "supportsSizeChanges=true");
        }
        super.dumpBack(pw, prefix, dumpFlags);
    }

@@ -1232,6 +1243,7 @@ public class ActivityInfo extends ComponentInfo implements Parcelable {
        dest.writeInt(colorMode);
        dest.writeFloat(maxAspectRatio);
        dest.writeFloat(minAspectRatio);
        dest.writeBoolean(supportsSizeChanges);
    }

    /**
@@ -1350,6 +1362,7 @@ public class ActivityInfo extends ComponentInfo implements Parcelable {
        colorMode = source.readInt();
        maxAspectRatio = source.readFloat();
        minAspectRatio = source.readFloat();
        supportsSizeChanges = source.readBoolean();
    }

    /**
+15 −0
Original line number Diff line number Diff line
@@ -207,6 +207,7 @@ public class PackageParser {
    public static final String TAG_USES_SPLIT = "uses-split";

    public static final String METADATA_MAX_ASPECT_RATIO = "android.max_aspect";
    public static final String METADATA_SUPPORTS_SIZE_CHANGES = "android.supports_size_changes";
    public static final String METADATA_ACTIVITY_WINDOW_LAYOUT_AFFINITY =
            "android.activity_window_layout_affinity";

@@ -3897,6 +3898,7 @@ public class PackageParser {
        // every activity info has had a chance to set it from its attributes.
        setMaxAspectRatio(owner);
        setMinAspectRatio(owner);
        setSupportsSizeChanges(owner);

        if (hasDomainURLs(owner)) {
            owner.applicationInfo.privateFlags |= ApplicationInfo.PRIVATE_FLAG_HAS_DOMAIN_URLS;
@@ -4694,6 +4696,18 @@ public class PackageParser {
        }
    }

    private void setSupportsSizeChanges(Package owner) {
        final boolean supportsSizeChanges = owner.mAppMetaData != null
                && owner.mAppMetaData.getBoolean(METADATA_SUPPORTS_SIZE_CHANGES, false);

        for (Activity activity : owner.activities) {
            if (supportsSizeChanges || (activity.metaData != null
                    && activity.metaData.getBoolean(METADATA_SUPPORTS_SIZE_CHANGES, false))) {
                activity.info.supportsSizeChanges = true;
            }
        }
    }

    /**
     * @param configChanges The bit mask of configChanges fetched from AndroidManifest.xml.
     * @param recreateOnConfigChanges The bit mask recreateOnConfigChanges fetched from
@@ -4863,6 +4877,7 @@ public class PackageParser {
        info.resizeMode = target.info.resizeMode;
        info.maxAspectRatio = target.info.maxAspectRatio;
        info.minAspectRatio = target.info.minAspectRatio;
        info.supportsSizeChanges = target.info.supportsSizeChanges;
        info.requestedVrComponent = target.info.requestedVrComponent;

        info.directBootAware = target.info.directBootAware;
+1 −0
Original line number Diff line number Diff line
@@ -445,6 +445,7 @@ public class PackageInfoWithoutStateUtils {
        ai.maxAspectRatio = maxAspectRatio != null ? maxAspectRatio : 0f;
        Float minAspectRatio = a.getMinAspectRatio();
        ai.minAspectRatio = minAspectRatio != null ? minAspectRatio : 0f;
        ai.supportsSizeChanges = a.getSupportsSizeChanges();
        ai.requestedVrComponent = a.getRequestedVrComponent();
        ai.rotationAnimation = a.getRotationAnimation();
        ai.colorMode = a.getColorMode();
+18 −0
Original line number Diff line number Diff line
@@ -1912,6 +1912,7 @@ public class ParsingPackageUtils {
        // every activity info has had a chance to set it from its attributes.
        setMaxAspectRatio(pkg);
        setMinAspectRatio(pkg);
        setSupportsSizeChanges(pkg);

        pkg.setHasDomainUrls(hasDomainURLs(pkg));

@@ -2366,6 +2367,23 @@ public class ParsingPackageUtils {
        }
    }

    private void setSupportsSizeChanges(ParsingPackage pkg) {
        final Bundle appMetaData = pkg.getMetaData();
        final boolean supportsSizeChanges = appMetaData != null
                && appMetaData.getBoolean(PackageParser.METADATA_SUPPORTS_SIZE_CHANGES, false);

        List<ParsedActivity> activities = pkg.getActivities();
        int activitiesSize = activities.size();
        for (int index = 0; index < activitiesSize; index++) {
            ParsedActivity activity = activities.get(index);
            if (supportsSizeChanges || (activity.getMetaData() != null
                    && activity.getMetaData().getBoolean(
                            PackageParser.METADATA_SUPPORTS_SIZE_CHANGES, false))) {
                activity.setSupportsSizeChanges(true);
            }
        }
    }

    private static ParseResult<ParsingPackage> parseOverlay(ParseInput input, ParsingPackage pkg,
            Resources res, XmlResourceParser parser) {
        TypedArray sa = res.obtainAttributes(parser, R.styleable.AndroidManifestResourceOverlay);
+15 −0
Original line number Diff line number Diff line
@@ -73,6 +73,8 @@ public class ParsedActivity extends ParsedMainComponent {
    @Nullable
    private Float minAspectRatio;

    private boolean supportsSizeChanges;

    @Nullable
    String requestedVrComponent;
    int rotationAnimation = -1;
@@ -101,6 +103,7 @@ public class ParsedActivity extends ParsedMainComponent {
        this.resizeMode = other.resizeMode;
        this.maxAspectRatio = other.maxAspectRatio;
        this.minAspectRatio = other.minAspectRatio;
        this.supportsSizeChanges = other.supportsSizeChanges;
        this.requestedVrComponent = other.requestedVrComponent;
        this.rotationAnimation = other.rotationAnimation;
        this.colorMode = other.colorMode;
@@ -165,6 +168,7 @@ public class ParsedActivity extends ParsedMainComponent {
        alias.resizeMode = target.resizeMode;
        alias.maxAspectRatio = target.maxAspectRatio;
        alias.minAspectRatio = target.minAspectRatio;
        alias.supportsSizeChanges = target.supportsSizeChanges;
        alias.requestedVrComponent = target.requestedVrComponent;
        alias.directBootAware = target.directBootAware;
        alias.setProcessName(target.getProcessName());
@@ -217,6 +221,11 @@ public class ParsedActivity extends ParsedMainComponent {
        return this;
    }

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

    public ParsedActivity setFlags(int flags) {
        this.flags = flags;
        return this;
@@ -279,6 +288,7 @@ public class ParsedActivity extends ParsedMainComponent {
        dest.writeInt(this.resizeMode);
        dest.writeValue(this.maxAspectRatio);
        dest.writeValue(this.minAspectRatio);
        dest.writeBoolean(this.supportsSizeChanges);
        dest.writeString(this.requestedVrComponent);
        dest.writeInt(this.rotationAnimation);
        dest.writeInt(this.colorMode);
@@ -315,6 +325,7 @@ public class ParsedActivity extends ParsedMainComponent {
        this.resizeMode = in.readInt();
        this.maxAspectRatio = (Float) in.readValue(Float.class.getClassLoader());
        this.minAspectRatio = (Float) in.readValue(Float.class.getClassLoader());
        this.supportsSizeChanges = in.readBoolean();
        this.requestedVrComponent = in.readString();
        this.rotationAnimation = in.readInt();
        this.colorMode = in.readInt();
@@ -414,6 +425,10 @@ public class ParsedActivity extends ParsedMainComponent {
        return minAspectRatio;
    }

    public boolean getSupportsSizeChanges() {
        return supportsSizeChanges;
    }

    @Nullable
    public String getRequestedVrComponent() {
        return requestedVrComponent;
Loading