Loading api/current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -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 core/java/android/content/pm/ActivityInfo.java +10 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -1426,6 +1433,7 @@ public class ActivityInfo extends ComponentInfo implements Parcelable { this.gravity = gravity; this.minWidth = minWidth; this.minHeight = minHeight; this.windowLayoutAffinity = windowLayoutAffinity; } /** @hide */ Loading Loading @@ -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; Loading core/java/android/content/pm/parsing/component/ParsedActivityUtils.java +16 −9 Original line number Diff line number Diff line Loading @@ -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(); } Loading @@ -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); } Loading Loading @@ -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 { Loading Loading @@ -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(); } Loading @@ -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( Loading @@ -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); } } core/res/res/values/attrs_manifest.xml +9 −0 Original line number Diff line number Diff line Loading @@ -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 Loading core/res/res/values/public.xml +1 −0 Original line number Diff line number Diff line Loading @@ -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 Loading
api/current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -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
core/java/android/content/pm/ActivityInfo.java +10 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -1426,6 +1433,7 @@ public class ActivityInfo extends ComponentInfo implements Parcelable { this.gravity = gravity; this.minWidth = minWidth; this.minHeight = minHeight; this.windowLayoutAffinity = windowLayoutAffinity; } /** @hide */ Loading Loading @@ -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; Loading
core/java/android/content/pm/parsing/component/ParsedActivityUtils.java +16 −9 Original line number Diff line number Diff line Loading @@ -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(); } Loading @@ -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); } Loading Loading @@ -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 { Loading Loading @@ -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(); } Loading @@ -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( Loading @@ -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); } }
core/res/res/values/attrs_manifest.xml +9 −0 Original line number Diff line number Diff line Loading @@ -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 Loading
core/res/res/values/public.xml +1 −0 Original line number Diff line number Diff line Loading @@ -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