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

Commit 2ef3f142 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add WindowLayoutAffinity attribute."

parents 853f102f c8f947ac
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -1613,6 +1613,7 @@ package android {
    field public static final int windowHideAnimation = 16842935; // 0x10100b7
    field public static final int windowIsFloating = 16842839; // 0x1010057
    field public static final int windowIsTranslucent = 16842840; // 0x1010058
    field public static final int windowLayoutAffinity = 16844313; // 0x1010619
    field public static final int windowLayoutInDisplayCutoutMode = 16844166; // 0x1010586
    field public static final int windowLightNavigationBar = 16844140; // 0x101056c
    field public static final int windowLightStatusBar = 16844000; // 0x10104e0
+10 −0
Original line number Diff line number Diff line
@@ -1419,6 +1419,13 @@ public class ActivityInfo extends ComponentInfo implements Parcelable {
    public static final class WindowLayout {
        public WindowLayout(int width, float widthFraction, int height, float heightFraction,
                int gravity, int minWidth, int minHeight) {
            this(width, widthFraction, height, heightFraction, gravity, minWidth, minHeight,
                    null /* windowLayoutAffinity */);
        }

        /** @hide */
        public WindowLayout(int width, float widthFraction, int height, float heightFraction,
                int gravity, int minWidth, int minHeight, String windowLayoutAffinity) {
            this.width = width;
            this.widthFraction = widthFraction;
            this.height = height;
@@ -1426,6 +1433,7 @@ public class ActivityInfo extends ComponentInfo implements Parcelable {
            this.gravity = gravity;
            this.minWidth = minWidth;
            this.minHeight = minHeight;
            this.windowLayoutAffinity = windowLayoutAffinity;
        }

        /** @hide */
@@ -1506,6 +1514,8 @@ public class ActivityInfo extends ComponentInfo implements Parcelable {
        /**
         * Affinity of window layout parameters. Activities with the same UID and window layout
         * affinity will share the same window dimension record.
         *
         * @attr ref android.R.styleable#AndroidManifestLayout_windowLayoutAffinity
         * @hide
         */
        public String windowLayoutAffinity;
+16 −9
Original line number Diff line number Diff line
@@ -368,8 +368,8 @@ public class ParsedActivityUtils {
                }
                result = intentResult;
            } else if (!isReceiver && !isAlias && parser.getName().equals("layout")) {
                ParseResult<ActivityInfo.WindowLayout> layoutResult = parseLayout(resources, parser,
                        input);
                ParseResult<ActivityInfo.WindowLayout> layoutResult =
                        parseActivityWindowLayout(resources, parser, input);
                if (layoutResult.isSuccess()) {
                    activity.windowLayout = layoutResult.getResult();
                }
@@ -383,7 +383,8 @@ public class ParsedActivityUtils {
            }
        }

        ParseResult<ActivityInfo.WindowLayout> layoutResult = resolveWindowLayout(activity, input);
        ParseResult<ActivityInfo.WindowLayout> layoutResult =
                resolveActivityWindowLayout(activity, input);
        if (layoutResult.isError()) {
            return input.error(layoutResult);
        }
@@ -468,7 +469,7 @@ public class ParsedActivityUtils {
    }

    @NonNull
    private static ParseResult<ActivityInfo.WindowLayout> parseLayout(Resources res,
    private static ParseResult<ActivityInfo.WindowLayout> parseActivityWindowLayout(Resources res,
            AttributeSet attrs, ParseInput input) {
        TypedArray sw = res.obtainAttributes(attrs, R.styleable.AndroidManifestLayout);
        try {
@@ -496,8 +497,13 @@ public class ParsedActivityUtils {
            int minWidth = sw.getDimensionPixelSize(R.styleable.AndroidManifestLayout_minWidth, -1);
            int minHeight = sw.getDimensionPixelSize(R.styleable.AndroidManifestLayout_minHeight,
                    -1);
            return input.success(new ActivityInfo.WindowLayout(width, widthFraction, height,
                    heightFraction, gravity, minWidth, minHeight));
            String windowLayoutAffinity =
                    sw.getNonConfigurationString(
                            R.styleable.AndroidManifestLayout_windowLayoutAffinity, 0);
            final ActivityInfo.WindowLayout windowLayout = new ActivityInfo.WindowLayout(width,
                    widthFraction, height, heightFraction, gravity, minWidth, minHeight,
                    windowLayoutAffinity);
            return input.success(windowLayout);
        } finally {
            sw.recycle();
        }
@@ -509,7 +515,7 @@ public class ParsedActivityUtils {
     * <p>{@link ActivityInfo.WindowLayout#windowLayoutAffinity} has a fallback metadata used in
     * Android R and some variants of pre-R.
     */
    private static ParseResult<ActivityInfo.WindowLayout> resolveWindowLayout(
    private static ParseResult<ActivityInfo.WindowLayout> resolveActivityWindowLayout(
            ParsedActivity activity, ParseInput input) {
        // There isn't a metadata for us to fall back. Whatever is in layout is correct.
        if (activity.metaData == null || !activity.metaData.containsKey(
@@ -528,9 +534,10 @@ public class ParsedActivityUtils {
        if (layout == null) {
            layout = new ActivityInfo.WindowLayout(-1 /* width */, -1 /* widthFraction */,
                    -1 /* height */, -1 /* heightFraction */, Gravity.NO_GRAVITY,
                    -1 /* minWidth */, -1 /* minHeight */);
        }
                    -1 /* minWidth */, -1 /* minHeight */, windowLayoutAffinity);
        } else {
            layout.windowLayoutAffinity = windowLayoutAffinity;
        }
        return input.success(layout);
    }
}
+9 −0
Original line number Diff line number Diff line
@@ -3200,6 +3200,15 @@
         then the system will set the same minimal height on all other activities in the task. It
         will also ignore any other minimal height attributes of non-root activities. -->
        <attr name="minHeight" />

        <!-- Window layout affinity of this activity. Activities with the same window layout
          affinity will share the same layout record. If an activity is launched in freeform window,
          the activity will be launched to the latest position and size where any task, if the root
          activity of that task shares the same window layout affinity with the activity being
          launched. Window layout affinity is shared only among activities with the same UID.

          <p>By default activity doesn't share any affinity with other activities. -->
        <attr name="windowLayoutAffinity" format="string" />
    </declare-styleable>

    <!-- <code>restrict-update</code> tag restricts system apps from being updated unless the
+1 −0
Original line number Diff line number Diff line
@@ -3046,6 +3046,7 @@
  <public-group type="attr" first-id="0x01010617">
    <public name="rollbackDataPolicy" />
    <public name="allowClickWhenDisabled" />
    <public name="windowLayoutAffinity" />
  </public-group>

  <public-group type="drawable" first-id="0x010800b5">
Loading