Loading api/test-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -481,6 +481,7 @@ package android.app { field public static final int WINDOWING_MODE_FREEFORM = 5; // 0x5 field public static final int WINDOWING_MODE_FULLSCREEN = 1; // 0x1 field public static final int WINDOWING_MODE_FULLSCREEN_OR_SPLIT_SCREEN_SECONDARY = 4; // 0x4 field public static final int WINDOWING_MODE_MULTI_WINDOW = 6; // 0x6 field public static final int WINDOWING_MODE_PINNED = 2; // 0x2 field public static final int WINDOWING_MODE_SPLIT_SCREEN_PRIMARY = 3; // 0x3 field public static final int WINDOWING_MODE_SPLIT_SCREEN_SECONDARY = 4; // 0x4 Loading core/java/android/app/WindowConfiguration.java +15 −5 Original line number Diff line number Diff line Loading @@ -50,7 +50,7 @@ public class WindowConfiguration implements Parcelable, Comparable<WindowConfigu /** * bounds that can differ from app bounds, which may include things such as insets. * * TODO: Investigate combining with {@link mAppBounds}. Can the latter be a product of the * TODO: Investigate combining with {@link #mAppBounds}. Can the latter be a product of the * former? */ private Rect mBounds = new Rect(); Loading Loading @@ -87,6 +87,7 @@ public class WindowConfiguration implements Parcelable, Comparable<WindowConfigu /** Always on-top (always visible). of other siblings in its parent container. */ public static final int WINDOWING_MODE_PINNED = 2; /** The primary container driving the screen to be in split-screen mode. */ // TODO: Remove once split-screen is migrated to wm-shell. public static final int WINDOWING_MODE_SPLIT_SCREEN_PRIMARY = 3; /** * The containers adjacent to the {@link #WINDOWING_MODE_SPLIT_SCREEN_PRIMARY} container in Loading @@ -97,6 +98,7 @@ public class WindowConfiguration implements Parcelable, Comparable<WindowConfigu * mode * @see #WINDOWING_MODE_FULLSCREEN_OR_SPLIT_SCREEN_SECONDARY */ // TODO: Remove once split-screen is migrated to wm-shell. public static final int WINDOWING_MODE_SPLIT_SCREEN_SECONDARY = 4; /** * Alias for {@link #WINDOWING_MODE_SPLIT_SCREEN_SECONDARY} that makes it clear that the usage Loading @@ -104,15 +106,20 @@ public class WindowConfiguration implements Parcelable, Comparable<WindowConfigu * will launch into fullscreen or split-screen secondary depending on if the device is currently * in fullscreen mode or split-screen mode. */ // TODO: Remove once split-screen is migrated to wm-shell. public static final int WINDOWING_MODE_FULLSCREEN_OR_SPLIT_SCREEN_SECONDARY = WINDOWING_MODE_SPLIT_SCREEN_SECONDARY; /** Can be freely resized within its parent container. */ // TODO: Remove once freeform is migrated to wm-shell. public static final int WINDOWING_MODE_FREEFORM = 5; /** Generic multi-window with no presentation attribution from the window manager. */ public static final int WINDOWING_MODE_MULTI_WINDOW = 6; /** @hide */ @IntDef(prefix = { "WINDOWING_MODE_" }, value = { WINDOWING_MODE_UNDEFINED, WINDOWING_MODE_FULLSCREEN, WINDOWING_MODE_MULTI_WINDOW, WINDOWING_MODE_PINNED, WINDOWING_MODE_SPLIT_SCREEN_PRIMARY, WINDOWING_MODE_SPLIT_SCREEN_SECONDARY, Loading Loading @@ -669,7 +676,7 @@ public class WindowConfiguration implements Parcelable, Comparable<WindowConfigu * @hide */ public boolean hasWindowShadow() { return tasksAreFloating(); return mWindowingMode != WINDOWING_MODE_MULTI_WINDOW && tasksAreFloating(); } /** Loading @@ -688,7 +695,8 @@ public class WindowConfiguration implements Parcelable, Comparable<WindowConfigu * @hide */ public boolean canResizeTask() { return mWindowingMode == WINDOWING_MODE_FREEFORM; return mWindowingMode == WINDOWING_MODE_FREEFORM || mWindowingMode == WINDOWING_MODE_MULTI_WINDOW; } /** Returns true if the task bounds should persist across power cycles. Loading Loading @@ -738,8 +746,9 @@ public class WindowConfiguration implements Parcelable, Comparable<WindowConfigu * @hide */ public boolean isAlwaysOnTop() { return mWindowingMode == WINDOWING_MODE_PINNED || (mWindowingMode == WINDOWING_MODE_FREEFORM && mAlwaysOnTop == ALWAYS_ON_TOP_ON); return mWindowingMode == WINDOWING_MODE_PINNED || (mAlwaysOnTop == ALWAYS_ON_TOP_ON && (mWindowingMode == WINDOWING_MODE_FREEFORM || mWindowingMode == WINDOWING_MODE_MULTI_WINDOW)); } /** Loading Loading @@ -797,6 +806,7 @@ public class WindowConfiguration implements Parcelable, Comparable<WindowConfigu switch (windowingMode) { case WINDOWING_MODE_UNDEFINED: return "undefined"; case WINDOWING_MODE_FULLSCREEN: return "fullscreen"; case WINDOWING_MODE_MULTI_WINDOW: return "multi-window"; case WINDOWING_MODE_PINNED: return "pinned"; case WINDOWING_MODE_SPLIT_SCREEN_PRIMARY: return "split-screen-primary"; case WINDOWING_MODE_SPLIT_SCREEN_SECONDARY: return "split-screen-secondary"; Loading packages/SystemUI/shared/src/com/android/systemui/shared/system/WindowManagerWrapper.java +2 −0 Original line number Diff line number Diff line Loading @@ -73,6 +73,8 @@ public class WindowManagerWrapper { public static final int WINDOWING_MODE_UNDEFINED = WindowConfiguration.WINDOWING_MODE_UNDEFINED; public static final int WINDOWING_MODE_FULLSCREEN = WindowConfiguration.WINDOWING_MODE_FULLSCREEN; public static final int WINDOWING_MODE_MULTI_WINDOW = WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW; public static final int WINDOWING_MODE_PINNED = WindowConfiguration.WINDOWING_MODE_PINNED; public static final int WINDOWING_MODE_SPLIT_SCREEN_PRIMARY = WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY; Loading services/core/java/com/android/server/wm/ActivityMetricsLogger.java +5 −0 Original line number Diff line number Diff line Loading @@ -8,6 +8,7 @@ import static android.app.WaitResult.LAUNCH_STATE_HOT; import static android.app.WaitResult.LAUNCH_STATE_WARM; import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM; import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; import static android.app.WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW; import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED; import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY; import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_SECONDARY; Loading Loading @@ -119,6 +120,7 @@ class ActivityMetricsLogger { private static final int WINDOW_STATE_SIDE_BY_SIDE = 1; private static final int WINDOW_STATE_FREEFORM = 2; private static final int WINDOW_STATE_ASSISTANT = 3; private static final int WINDOW_STATE_MULTI_WINDOW = 4; private static final int WINDOW_STATE_INVALID = -1; /** Loading Loading @@ -420,6 +422,9 @@ class ActivityMetricsLogger { case WINDOWING_MODE_FREEFORM: mWindowState = WINDOW_STATE_FREEFORM; break; case WINDOWING_MODE_MULTI_WINDOW: mWindowState = WINDOW_STATE_MULTI_WINDOW; break; default: if (windowingMode != WINDOWING_MODE_UNDEFINED) { throw new IllegalStateException("Unknown windowing mode for stack=" + stack Loading services/core/java/com/android/server/wm/ActivityStack.java +4 −1 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED; import static android.app.WindowConfiguration.PINNED_WINDOWING_MODE_ELEVATION_IN_DIP; import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM; import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; import static android.app.WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW; import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED; import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY; import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_SECONDARY; Loading Loading @@ -1979,7 +1980,9 @@ class ActivityStack extends WindowContainer<WindowContainer> implements BoundsAn return false; } final int windowingMode = getWindowingMode(); return windowingMode != WINDOWING_MODE_FREEFORM && windowingMode != WINDOWING_MODE_PINNED; return windowingMode != WINDOWING_MODE_FREEFORM && windowingMode != WINDOWING_MODE_PINNED && windowingMode != WINDOWING_MODE_MULTI_WINDOW; } /** Loading Loading
api/test-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -481,6 +481,7 @@ package android.app { field public static final int WINDOWING_MODE_FREEFORM = 5; // 0x5 field public static final int WINDOWING_MODE_FULLSCREEN = 1; // 0x1 field public static final int WINDOWING_MODE_FULLSCREEN_OR_SPLIT_SCREEN_SECONDARY = 4; // 0x4 field public static final int WINDOWING_MODE_MULTI_WINDOW = 6; // 0x6 field public static final int WINDOWING_MODE_PINNED = 2; // 0x2 field public static final int WINDOWING_MODE_SPLIT_SCREEN_PRIMARY = 3; // 0x3 field public static final int WINDOWING_MODE_SPLIT_SCREEN_SECONDARY = 4; // 0x4 Loading
core/java/android/app/WindowConfiguration.java +15 −5 Original line number Diff line number Diff line Loading @@ -50,7 +50,7 @@ public class WindowConfiguration implements Parcelable, Comparable<WindowConfigu /** * bounds that can differ from app bounds, which may include things such as insets. * * TODO: Investigate combining with {@link mAppBounds}. Can the latter be a product of the * TODO: Investigate combining with {@link #mAppBounds}. Can the latter be a product of the * former? */ private Rect mBounds = new Rect(); Loading Loading @@ -87,6 +87,7 @@ public class WindowConfiguration implements Parcelable, Comparable<WindowConfigu /** Always on-top (always visible). of other siblings in its parent container. */ public static final int WINDOWING_MODE_PINNED = 2; /** The primary container driving the screen to be in split-screen mode. */ // TODO: Remove once split-screen is migrated to wm-shell. public static final int WINDOWING_MODE_SPLIT_SCREEN_PRIMARY = 3; /** * The containers adjacent to the {@link #WINDOWING_MODE_SPLIT_SCREEN_PRIMARY} container in Loading @@ -97,6 +98,7 @@ public class WindowConfiguration implements Parcelable, Comparable<WindowConfigu * mode * @see #WINDOWING_MODE_FULLSCREEN_OR_SPLIT_SCREEN_SECONDARY */ // TODO: Remove once split-screen is migrated to wm-shell. public static final int WINDOWING_MODE_SPLIT_SCREEN_SECONDARY = 4; /** * Alias for {@link #WINDOWING_MODE_SPLIT_SCREEN_SECONDARY} that makes it clear that the usage Loading @@ -104,15 +106,20 @@ public class WindowConfiguration implements Parcelable, Comparable<WindowConfigu * will launch into fullscreen or split-screen secondary depending on if the device is currently * in fullscreen mode or split-screen mode. */ // TODO: Remove once split-screen is migrated to wm-shell. public static final int WINDOWING_MODE_FULLSCREEN_OR_SPLIT_SCREEN_SECONDARY = WINDOWING_MODE_SPLIT_SCREEN_SECONDARY; /** Can be freely resized within its parent container. */ // TODO: Remove once freeform is migrated to wm-shell. public static final int WINDOWING_MODE_FREEFORM = 5; /** Generic multi-window with no presentation attribution from the window manager. */ public static final int WINDOWING_MODE_MULTI_WINDOW = 6; /** @hide */ @IntDef(prefix = { "WINDOWING_MODE_" }, value = { WINDOWING_MODE_UNDEFINED, WINDOWING_MODE_FULLSCREEN, WINDOWING_MODE_MULTI_WINDOW, WINDOWING_MODE_PINNED, WINDOWING_MODE_SPLIT_SCREEN_PRIMARY, WINDOWING_MODE_SPLIT_SCREEN_SECONDARY, Loading Loading @@ -669,7 +676,7 @@ public class WindowConfiguration implements Parcelable, Comparable<WindowConfigu * @hide */ public boolean hasWindowShadow() { return tasksAreFloating(); return mWindowingMode != WINDOWING_MODE_MULTI_WINDOW && tasksAreFloating(); } /** Loading @@ -688,7 +695,8 @@ public class WindowConfiguration implements Parcelable, Comparable<WindowConfigu * @hide */ public boolean canResizeTask() { return mWindowingMode == WINDOWING_MODE_FREEFORM; return mWindowingMode == WINDOWING_MODE_FREEFORM || mWindowingMode == WINDOWING_MODE_MULTI_WINDOW; } /** Returns true if the task bounds should persist across power cycles. Loading Loading @@ -738,8 +746,9 @@ public class WindowConfiguration implements Parcelable, Comparable<WindowConfigu * @hide */ public boolean isAlwaysOnTop() { return mWindowingMode == WINDOWING_MODE_PINNED || (mWindowingMode == WINDOWING_MODE_FREEFORM && mAlwaysOnTop == ALWAYS_ON_TOP_ON); return mWindowingMode == WINDOWING_MODE_PINNED || (mAlwaysOnTop == ALWAYS_ON_TOP_ON && (mWindowingMode == WINDOWING_MODE_FREEFORM || mWindowingMode == WINDOWING_MODE_MULTI_WINDOW)); } /** Loading Loading @@ -797,6 +806,7 @@ public class WindowConfiguration implements Parcelable, Comparable<WindowConfigu switch (windowingMode) { case WINDOWING_MODE_UNDEFINED: return "undefined"; case WINDOWING_MODE_FULLSCREEN: return "fullscreen"; case WINDOWING_MODE_MULTI_WINDOW: return "multi-window"; case WINDOWING_MODE_PINNED: return "pinned"; case WINDOWING_MODE_SPLIT_SCREEN_PRIMARY: return "split-screen-primary"; case WINDOWING_MODE_SPLIT_SCREEN_SECONDARY: return "split-screen-secondary"; Loading
packages/SystemUI/shared/src/com/android/systemui/shared/system/WindowManagerWrapper.java +2 −0 Original line number Diff line number Diff line Loading @@ -73,6 +73,8 @@ public class WindowManagerWrapper { public static final int WINDOWING_MODE_UNDEFINED = WindowConfiguration.WINDOWING_MODE_UNDEFINED; public static final int WINDOWING_MODE_FULLSCREEN = WindowConfiguration.WINDOWING_MODE_FULLSCREEN; public static final int WINDOWING_MODE_MULTI_WINDOW = WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW; public static final int WINDOWING_MODE_PINNED = WindowConfiguration.WINDOWING_MODE_PINNED; public static final int WINDOWING_MODE_SPLIT_SCREEN_PRIMARY = WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY; Loading
services/core/java/com/android/server/wm/ActivityMetricsLogger.java +5 −0 Original line number Diff line number Diff line Loading @@ -8,6 +8,7 @@ import static android.app.WaitResult.LAUNCH_STATE_HOT; import static android.app.WaitResult.LAUNCH_STATE_WARM; import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM; import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; import static android.app.WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW; import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED; import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY; import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_SECONDARY; Loading Loading @@ -119,6 +120,7 @@ class ActivityMetricsLogger { private static final int WINDOW_STATE_SIDE_BY_SIDE = 1; private static final int WINDOW_STATE_FREEFORM = 2; private static final int WINDOW_STATE_ASSISTANT = 3; private static final int WINDOW_STATE_MULTI_WINDOW = 4; private static final int WINDOW_STATE_INVALID = -1; /** Loading Loading @@ -420,6 +422,9 @@ class ActivityMetricsLogger { case WINDOWING_MODE_FREEFORM: mWindowState = WINDOW_STATE_FREEFORM; break; case WINDOWING_MODE_MULTI_WINDOW: mWindowState = WINDOW_STATE_MULTI_WINDOW; break; default: if (windowingMode != WINDOWING_MODE_UNDEFINED) { throw new IllegalStateException("Unknown windowing mode for stack=" + stack Loading
services/core/java/com/android/server/wm/ActivityStack.java +4 −1 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED; import static android.app.WindowConfiguration.PINNED_WINDOWING_MODE_ELEVATION_IN_DIP; import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM; import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; import static android.app.WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW; import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED; import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY; import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_SECONDARY; Loading Loading @@ -1979,7 +1980,9 @@ class ActivityStack extends WindowContainer<WindowContainer> implements BoundsAn return false; } final int windowingMode = getWindowingMode(); return windowingMode != WINDOWING_MODE_FREEFORM && windowingMode != WINDOWING_MODE_PINNED; return windowingMode != WINDOWING_MODE_FREEFORM && windowingMode != WINDOWING_MODE_PINNED && windowingMode != WINDOWING_MODE_MULTI_WINDOW; } /** Loading