Loading services/tests/servicestests/src/com/android/server/wm/ZOrderingTests.java +74 −71 Original line number Diff line number Diff line Loading @@ -76,11 +76,11 @@ public class ZOrderingTests extends WindowTestsBase { return super.setRelativeLayer(sc, relativeTo, layer); } private int getLayer(SurfaceControl sc) { int getLayer(SurfaceControl sc) { return mLayersForControl.getOrDefault(sc, 0); } private SurfaceControl getRelativeLayer(SurfaceControl sc) { SurfaceControl getRelativeLayer(SurfaceControl sc) { return mRelativeLayersForControl.get(sc); } }; Loading Loading @@ -148,9 +148,8 @@ public class ZOrderingTests extends WindowTestsBase { return p; } void assertZOrderGreaterThan(LayerRecordingTransaction t, SurfaceControl left, SurfaceControl right) throws Exception { void assertZOrderGreaterThan(LayerRecordingTransaction t, SurfaceControl left, SurfaceControl right) throws Exception { final LinkedList<SurfaceControl> leftParentChain = getAncestors(t, left); final LinkedList<SurfaceControl> rightParentChain = getAncestors(t, right); Loading @@ -174,12 +173,9 @@ public class ZOrderingTests extends WindowTestsBase { } } void assertWindowHigher(WindowState left, WindowState right) throws Exception { assertZOrderGreaterThan(mTransaction, left.getSurfaceControl(), right.getSurfaceControl()); } WindowState createWindow(String name) { return createWindow(null, TYPE_BASE_APPLICATION, mDisplayContent, name); void assertWindowLayerGreaterThan(LayerRecordingTransaction t, WindowState left, WindowState right) throws Exception { assertZOrderGreaterThan(t, left.getSurfaceControl(), right.getSurfaceControl()); } @Test Loading @@ -190,37 +186,38 @@ public class ZOrderingTests extends WindowTestsBase { // The Ime has an higher base layer than app windows and lower base layer than system // windows, so it should be above app windows and below system windows if there isn't an IME // target. assertWindowHigher(mImeWindow, mChildAppWindowAbove); assertWindowHigher(mImeWindow, mAppWindow); assertWindowHigher(mNavBarWindow, mImeWindow); assertWindowHigher(mStatusBarWindow, mImeWindow); assertWindowLayerGreaterThan(mTransaction, mImeWindow, mChildAppWindowAbove); assertWindowLayerGreaterThan(mTransaction, mImeWindow, mAppWindow); assertWindowLayerGreaterThan(mTransaction, mNavBarWindow, mImeWindow); assertWindowLayerGreaterThan(mTransaction, mStatusBarWindow, mImeWindow); // And, IME dialogs should always have an higher layer than the IME. assertWindowHigher(mImeDialogWindow, mImeWindow); assertWindowLayerGreaterThan(mTransaction, mImeDialogWindow, mImeWindow); } @Test public void testAssignWindowLayers_ForImeWithAppTarget() throws Exception { final WindowState imeAppTarget = createWindow("imeAppTarget"); final WindowState imeAppTarget = createWindow(null, TYPE_BASE_APPLICATION, mDisplayContent, "imeAppTarget"); sWm.mInputMethodTarget = imeAppTarget; mDisplayContent.assignChildLayers(mTransaction); // Ime should be above all app windows and below system windows if it is targeting an app // window. assertWindowHigher(mImeWindow, imeAppTarget); assertWindowHigher(mImeWindow, mChildAppWindowAbove); assertWindowHigher(mImeWindow, mAppWindow); assertWindowHigher(mNavBarWindow, mImeWindow); assertWindowHigher(mStatusBarWindow, mImeWindow); assertWindowLayerGreaterThan(mTransaction, mImeWindow, imeAppTarget); assertWindowLayerGreaterThan(mTransaction, mImeWindow, mChildAppWindowAbove); assertWindowLayerGreaterThan(mTransaction, mImeWindow, mAppWindow); assertWindowLayerGreaterThan(mTransaction, mNavBarWindow, mImeWindow); assertWindowLayerGreaterThan(mTransaction, mStatusBarWindow, mImeWindow); // And, IME dialogs should always have an higher layer than the IME. assertWindowHigher(mImeDialogWindow, mImeWindow); assertWindowLayerGreaterThan(mTransaction, mImeDialogWindow, mImeWindow); } @Test public void testAssignWindowLayers_ForImeWithAppTargetWithChildWindows() throws Exception { final WindowState imeAppTarget = createWindow("imeAppTarget"); final WindowState imeAppTarget = createWindow(null, TYPE_BASE_APPLICATION, mDisplayContent, "imeAppTarget"); final WindowState imeAppTargetChildAboveWindow = createWindow(imeAppTarget, TYPE_APPLICATION_ATTACHED_DIALOG, imeAppTarget.mToken, "imeAppTargetChildAboveWindow"); Loading @@ -233,38 +230,41 @@ public class ZOrderingTests extends WindowTestsBase { // Ime should be above all app windows except for child windows that are z-ordered above it // and below system windows if it is targeting an app window. assertWindowHigher(mImeWindow, imeAppTarget); assertWindowHigher(imeAppTargetChildAboveWindow, mImeWindow); assertWindowHigher(mImeWindow, mChildAppWindowAbove); assertWindowHigher(mImeWindow, mAppWindow); assertWindowHigher(mNavBarWindow, mImeWindow); assertWindowHigher(mStatusBarWindow, mImeWindow); assertWindowLayerGreaterThan(mTransaction, mImeWindow, imeAppTarget); assertWindowLayerGreaterThan(mTransaction, imeAppTargetChildAboveWindow, mImeWindow); assertWindowLayerGreaterThan(mTransaction, mImeWindow, mChildAppWindowAbove); assertWindowLayerGreaterThan(mTransaction, mImeWindow, mAppWindow); assertWindowLayerGreaterThan(mTransaction, mNavBarWindow, mImeWindow); assertWindowLayerGreaterThan(mTransaction, mStatusBarWindow, mImeWindow); // And, IME dialogs should always have an higher layer than the IME. assertWindowHigher(mImeDialogWindow, mImeWindow); assertWindowLayerGreaterThan(mTransaction, mImeDialogWindow, mImeWindow); } @Test public void testAssignWindowLayers_ForImeWithAppTargetAndAppAbove() throws Exception { final WindowState appBelowImeTarget = createWindow("appBelowImeTarget"); final WindowState imeAppTarget = createWindow("imeAppTarget"); final WindowState appAboveImeTarget = createWindow("appAboveImeTarget"); final WindowState appBelowImeTarget = createWindow(null, TYPE_BASE_APPLICATION, mDisplayContent, "appBelowImeTarget"); final WindowState imeAppTarget = createWindow(null, TYPE_BASE_APPLICATION, mDisplayContent, "imeAppTarget"); final WindowState appAboveImeTarget = createWindow(null, TYPE_BASE_APPLICATION, mDisplayContent, "appAboveImeTarget"); sWm.mInputMethodTarget = imeAppTarget; mDisplayContent.assignChildLayers(mTransaction); // Ime should be above all app windows except for non-fullscreen app window above it and // below system windows if it is targeting an app window. assertWindowHigher(mImeWindow, imeAppTarget); assertWindowHigher(mImeWindow, appBelowImeTarget); assertWindowHigher(appAboveImeTarget, mImeWindow); assertWindowHigher(mImeWindow, mChildAppWindowAbove); assertWindowHigher(mImeWindow, mAppWindow); assertWindowHigher(mNavBarWindow, mImeWindow); assertWindowHigher(mStatusBarWindow, mImeWindow); assertWindowLayerGreaterThan(mTransaction, mImeWindow, imeAppTarget); assertWindowLayerGreaterThan(mTransaction, mImeWindow, appBelowImeTarget); assertWindowLayerGreaterThan(mTransaction, appAboveImeTarget, mImeWindow); assertWindowLayerGreaterThan(mTransaction, mImeWindow, mChildAppWindowAbove); assertWindowLayerGreaterThan(mTransaction, mImeWindow, mAppWindow); assertWindowLayerGreaterThan(mTransaction, mNavBarWindow, mImeWindow); assertWindowLayerGreaterThan(mTransaction, mStatusBarWindow, mImeWindow); // And, IME dialogs should always have an higher layer than the IME. assertWindowHigher(mImeDialogWindow, mImeWindow); assertWindowLayerGreaterThan(mTransaction, mImeDialogWindow, mImeWindow); } @Test Loading @@ -278,20 +278,20 @@ public class ZOrderingTests extends WindowTestsBase { // The IME target base layer is higher than all window except for the nav bar window, so the // IME should be above all windows except for the nav bar. assertWindowHigher(mImeWindow, imeSystemOverlayTarget); assertWindowHigher(mImeWindow, mChildAppWindowAbove); assertWindowHigher(mImeWindow, mAppWindow); assertWindowHigher(mImeWindow, mDockedDividerWindow); assertWindowLayerGreaterThan(mTransaction, mImeWindow, imeSystemOverlayTarget); assertWindowLayerGreaterThan(mTransaction, mImeWindow, mChildAppWindowAbove); assertWindowLayerGreaterThan(mTransaction, mImeWindow, mAppWindow); assertWindowLayerGreaterThan(mTransaction, mImeWindow, mDockedDividerWindow); // The IME has a higher base layer than the status bar so we may expect it to go // above the status bar once they are both in the Non-App layer, as past versions of this // test enforced. However this seems like the wrong behavior unless the status bar is the // IME target. assertWindowHigher(mNavBarWindow, mImeWindow); assertWindowHigher(mStatusBarWindow, mImeWindow); assertWindowLayerGreaterThan(mTransaction, mNavBarWindow, mImeWindow); assertWindowLayerGreaterThan(mTransaction, mStatusBarWindow, mImeWindow); // And, IME dialogs should always have an higher layer than the IME. assertWindowHigher(mImeDialogWindow, mImeWindow); assertWindowLayerGreaterThan(mTransaction, mImeDialogWindow, mImeWindow); } @Test Loading @@ -299,18 +299,19 @@ public class ZOrderingTests extends WindowTestsBase { sWm.mInputMethodTarget = mStatusBarWindow; mDisplayContent.assignChildLayers(mTransaction); assertWindowHigher(mImeWindow, mChildAppWindowAbove); assertWindowHigher(mImeWindow, mAppWindow); assertWindowHigher(mImeWindow, mDockedDividerWindow); assertWindowHigher(mImeWindow, mStatusBarWindow); assertWindowLayerGreaterThan(mTransaction, mImeWindow, mChildAppWindowAbove); assertWindowLayerGreaterThan(mTransaction, mImeWindow, mAppWindow); assertWindowLayerGreaterThan(mTransaction, mImeWindow, mDockedDividerWindow); assertWindowLayerGreaterThan(mTransaction, mImeWindow, mStatusBarWindow); // And, IME dialogs should always have an higher layer than the IME. assertWindowHigher(mImeDialogWindow, mImeWindow); assertWindowLayerGreaterThan(mTransaction, mImeDialogWindow, mImeWindow); } @Test public void testStackLayers() throws Exception { final WindowState anyWindow1 = createWindow("anyWindow"); final WindowState anyWindow1 = createWindow(null, TYPE_BASE_APPLICATION, mDisplayContent, "anyWindow"); final WindowState pinnedStackWindow = createWindowOnStack(null, WINDOWING_MODE_PINNED, ACTIVITY_TYPE_STANDARD, TYPE_BASE_APPLICATION, mDisplayContent, "pinnedStackWindow"); Loading @@ -320,17 +321,18 @@ public class ZOrderingTests extends WindowTestsBase { final WindowState assistantStackWindow = createWindowOnStack(null, WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_ASSISTANT, TYPE_BASE_APPLICATION, mDisplayContent, "assistantStackWindow"); final WindowState anyWindow2 = createWindow("anyWindow2"); final WindowState anyWindow2 = createWindow(null, TYPE_BASE_APPLICATION, mDisplayContent, "anyWindow"); mDisplayContent.assignChildLayers(mTransaction); // We compare the split-screen windowing mode to two different normal windowing // mode windows added before and after it to ensure the correct Z ordering irrespective // of ordering in the child list. assertWindowHigher(dockedStackWindow, anyWindow1); assertWindowHigher(dockedStackWindow, anyWindow2); assertWindowHigher(assistantStackWindow, dockedStackWindow); assertWindowHigher(pinnedStackWindow, assistantStackWindow); assertWindowLayerGreaterThan(mTransaction, dockedStackWindow, anyWindow1); assertWindowLayerGreaterThan(mTransaction, dockedStackWindow, anyWindow2); assertWindowLayerGreaterThan(mTransaction, assistantStackWindow, dockedStackWindow); assertWindowLayerGreaterThan(mTransaction, pinnedStackWindow, assistantStackWindow); } @Test Loading @@ -345,9 +347,9 @@ public class ZOrderingTests extends WindowTestsBase { // Ime should be above all app windows and below system windows if it is targeting an app // window. assertWindowHigher(navBarPanel, mNavBarWindow); assertWindowHigher(statusBarPanel, mStatusBarWindow); assertWindowHigher(statusBarSubPanel, statusBarPanel); assertWindowLayerGreaterThan(mTransaction, navBarPanel, mNavBarWindow); assertWindowLayerGreaterThan(mTransaction, statusBarPanel, mStatusBarWindow); assertWindowLayerGreaterThan(mTransaction, statusBarSubPanel, statusBarPanel); } @Test Loading @@ -355,7 +357,8 @@ public class ZOrderingTests extends WindowTestsBase { // TODO(b/70040778): We should aim to eliminate the last user of TYPE_APPLICATION_MEDIA // then we can drop all negative layering on the windowing side. final WindowState anyWindow = createWindow("anyWindow"); final WindowState anyWindow = createWindow(null, TYPE_BASE_APPLICATION, mDisplayContent, "anyWindow"); final WindowState child = createWindow(anyWindow, TYPE_APPLICATION_MEDIA, mDisplayContent, "TypeApplicationMediaChild"); final WindowState mediaOverlayChild = createWindow(anyWindow, TYPE_APPLICATION_MEDIA_OVERLAY, Loading @@ -363,8 +366,8 @@ public class ZOrderingTests extends WindowTestsBase { mDisplayContent.assignChildLayers(mTransaction); assertWindowHigher(anyWindow, mediaOverlayChild); assertWindowHigher(mediaOverlayChild, child); assertWindowLayerGreaterThan(mTransaction, anyWindow, mediaOverlayChild); assertWindowLayerGreaterThan(mTransaction, mediaOverlayChild, child); } @Test Loading @@ -386,9 +389,9 @@ public class ZOrderingTests extends WindowTestsBase { mDisplayContent.assignChildLayers(mTransaction); assertWindowHigher(dockedDividerWindow, splitScreenWindow); assertWindowHigher(dockedDividerWindow, splitScreenSecondaryWindow); assertWindowHigher(assistantStackWindow, dockedDividerWindow); assertWindowHigher(pinnedStackWindow, dockedDividerWindow); assertWindowLayerGreaterThan(mTransaction, dockedDividerWindow, splitScreenWindow); assertWindowLayerGreaterThan(mTransaction, dockedDividerWindow, splitScreenSecondaryWindow); assertWindowLayerGreaterThan(mTransaction, assistantStackWindow, dockedDividerWindow); assertWindowLayerGreaterThan(mTransaction, pinnedStackWindow, dockedDividerWindow); } } Loading
services/tests/servicestests/src/com/android/server/wm/ZOrderingTests.java +74 −71 Original line number Diff line number Diff line Loading @@ -76,11 +76,11 @@ public class ZOrderingTests extends WindowTestsBase { return super.setRelativeLayer(sc, relativeTo, layer); } private int getLayer(SurfaceControl sc) { int getLayer(SurfaceControl sc) { return mLayersForControl.getOrDefault(sc, 0); } private SurfaceControl getRelativeLayer(SurfaceControl sc) { SurfaceControl getRelativeLayer(SurfaceControl sc) { return mRelativeLayersForControl.get(sc); } }; Loading Loading @@ -148,9 +148,8 @@ public class ZOrderingTests extends WindowTestsBase { return p; } void assertZOrderGreaterThan(LayerRecordingTransaction t, SurfaceControl left, SurfaceControl right) throws Exception { void assertZOrderGreaterThan(LayerRecordingTransaction t, SurfaceControl left, SurfaceControl right) throws Exception { final LinkedList<SurfaceControl> leftParentChain = getAncestors(t, left); final LinkedList<SurfaceControl> rightParentChain = getAncestors(t, right); Loading @@ -174,12 +173,9 @@ public class ZOrderingTests extends WindowTestsBase { } } void assertWindowHigher(WindowState left, WindowState right) throws Exception { assertZOrderGreaterThan(mTransaction, left.getSurfaceControl(), right.getSurfaceControl()); } WindowState createWindow(String name) { return createWindow(null, TYPE_BASE_APPLICATION, mDisplayContent, name); void assertWindowLayerGreaterThan(LayerRecordingTransaction t, WindowState left, WindowState right) throws Exception { assertZOrderGreaterThan(t, left.getSurfaceControl(), right.getSurfaceControl()); } @Test Loading @@ -190,37 +186,38 @@ public class ZOrderingTests extends WindowTestsBase { // The Ime has an higher base layer than app windows and lower base layer than system // windows, so it should be above app windows and below system windows if there isn't an IME // target. assertWindowHigher(mImeWindow, mChildAppWindowAbove); assertWindowHigher(mImeWindow, mAppWindow); assertWindowHigher(mNavBarWindow, mImeWindow); assertWindowHigher(mStatusBarWindow, mImeWindow); assertWindowLayerGreaterThan(mTransaction, mImeWindow, mChildAppWindowAbove); assertWindowLayerGreaterThan(mTransaction, mImeWindow, mAppWindow); assertWindowLayerGreaterThan(mTransaction, mNavBarWindow, mImeWindow); assertWindowLayerGreaterThan(mTransaction, mStatusBarWindow, mImeWindow); // And, IME dialogs should always have an higher layer than the IME. assertWindowHigher(mImeDialogWindow, mImeWindow); assertWindowLayerGreaterThan(mTransaction, mImeDialogWindow, mImeWindow); } @Test public void testAssignWindowLayers_ForImeWithAppTarget() throws Exception { final WindowState imeAppTarget = createWindow("imeAppTarget"); final WindowState imeAppTarget = createWindow(null, TYPE_BASE_APPLICATION, mDisplayContent, "imeAppTarget"); sWm.mInputMethodTarget = imeAppTarget; mDisplayContent.assignChildLayers(mTransaction); // Ime should be above all app windows and below system windows if it is targeting an app // window. assertWindowHigher(mImeWindow, imeAppTarget); assertWindowHigher(mImeWindow, mChildAppWindowAbove); assertWindowHigher(mImeWindow, mAppWindow); assertWindowHigher(mNavBarWindow, mImeWindow); assertWindowHigher(mStatusBarWindow, mImeWindow); assertWindowLayerGreaterThan(mTransaction, mImeWindow, imeAppTarget); assertWindowLayerGreaterThan(mTransaction, mImeWindow, mChildAppWindowAbove); assertWindowLayerGreaterThan(mTransaction, mImeWindow, mAppWindow); assertWindowLayerGreaterThan(mTransaction, mNavBarWindow, mImeWindow); assertWindowLayerGreaterThan(mTransaction, mStatusBarWindow, mImeWindow); // And, IME dialogs should always have an higher layer than the IME. assertWindowHigher(mImeDialogWindow, mImeWindow); assertWindowLayerGreaterThan(mTransaction, mImeDialogWindow, mImeWindow); } @Test public void testAssignWindowLayers_ForImeWithAppTargetWithChildWindows() throws Exception { final WindowState imeAppTarget = createWindow("imeAppTarget"); final WindowState imeAppTarget = createWindow(null, TYPE_BASE_APPLICATION, mDisplayContent, "imeAppTarget"); final WindowState imeAppTargetChildAboveWindow = createWindow(imeAppTarget, TYPE_APPLICATION_ATTACHED_DIALOG, imeAppTarget.mToken, "imeAppTargetChildAboveWindow"); Loading @@ -233,38 +230,41 @@ public class ZOrderingTests extends WindowTestsBase { // Ime should be above all app windows except for child windows that are z-ordered above it // and below system windows if it is targeting an app window. assertWindowHigher(mImeWindow, imeAppTarget); assertWindowHigher(imeAppTargetChildAboveWindow, mImeWindow); assertWindowHigher(mImeWindow, mChildAppWindowAbove); assertWindowHigher(mImeWindow, mAppWindow); assertWindowHigher(mNavBarWindow, mImeWindow); assertWindowHigher(mStatusBarWindow, mImeWindow); assertWindowLayerGreaterThan(mTransaction, mImeWindow, imeAppTarget); assertWindowLayerGreaterThan(mTransaction, imeAppTargetChildAboveWindow, mImeWindow); assertWindowLayerGreaterThan(mTransaction, mImeWindow, mChildAppWindowAbove); assertWindowLayerGreaterThan(mTransaction, mImeWindow, mAppWindow); assertWindowLayerGreaterThan(mTransaction, mNavBarWindow, mImeWindow); assertWindowLayerGreaterThan(mTransaction, mStatusBarWindow, mImeWindow); // And, IME dialogs should always have an higher layer than the IME. assertWindowHigher(mImeDialogWindow, mImeWindow); assertWindowLayerGreaterThan(mTransaction, mImeDialogWindow, mImeWindow); } @Test public void testAssignWindowLayers_ForImeWithAppTargetAndAppAbove() throws Exception { final WindowState appBelowImeTarget = createWindow("appBelowImeTarget"); final WindowState imeAppTarget = createWindow("imeAppTarget"); final WindowState appAboveImeTarget = createWindow("appAboveImeTarget"); final WindowState appBelowImeTarget = createWindow(null, TYPE_BASE_APPLICATION, mDisplayContent, "appBelowImeTarget"); final WindowState imeAppTarget = createWindow(null, TYPE_BASE_APPLICATION, mDisplayContent, "imeAppTarget"); final WindowState appAboveImeTarget = createWindow(null, TYPE_BASE_APPLICATION, mDisplayContent, "appAboveImeTarget"); sWm.mInputMethodTarget = imeAppTarget; mDisplayContent.assignChildLayers(mTransaction); // Ime should be above all app windows except for non-fullscreen app window above it and // below system windows if it is targeting an app window. assertWindowHigher(mImeWindow, imeAppTarget); assertWindowHigher(mImeWindow, appBelowImeTarget); assertWindowHigher(appAboveImeTarget, mImeWindow); assertWindowHigher(mImeWindow, mChildAppWindowAbove); assertWindowHigher(mImeWindow, mAppWindow); assertWindowHigher(mNavBarWindow, mImeWindow); assertWindowHigher(mStatusBarWindow, mImeWindow); assertWindowLayerGreaterThan(mTransaction, mImeWindow, imeAppTarget); assertWindowLayerGreaterThan(mTransaction, mImeWindow, appBelowImeTarget); assertWindowLayerGreaterThan(mTransaction, appAboveImeTarget, mImeWindow); assertWindowLayerGreaterThan(mTransaction, mImeWindow, mChildAppWindowAbove); assertWindowLayerGreaterThan(mTransaction, mImeWindow, mAppWindow); assertWindowLayerGreaterThan(mTransaction, mNavBarWindow, mImeWindow); assertWindowLayerGreaterThan(mTransaction, mStatusBarWindow, mImeWindow); // And, IME dialogs should always have an higher layer than the IME. assertWindowHigher(mImeDialogWindow, mImeWindow); assertWindowLayerGreaterThan(mTransaction, mImeDialogWindow, mImeWindow); } @Test Loading @@ -278,20 +278,20 @@ public class ZOrderingTests extends WindowTestsBase { // The IME target base layer is higher than all window except for the nav bar window, so the // IME should be above all windows except for the nav bar. assertWindowHigher(mImeWindow, imeSystemOverlayTarget); assertWindowHigher(mImeWindow, mChildAppWindowAbove); assertWindowHigher(mImeWindow, mAppWindow); assertWindowHigher(mImeWindow, mDockedDividerWindow); assertWindowLayerGreaterThan(mTransaction, mImeWindow, imeSystemOverlayTarget); assertWindowLayerGreaterThan(mTransaction, mImeWindow, mChildAppWindowAbove); assertWindowLayerGreaterThan(mTransaction, mImeWindow, mAppWindow); assertWindowLayerGreaterThan(mTransaction, mImeWindow, mDockedDividerWindow); // The IME has a higher base layer than the status bar so we may expect it to go // above the status bar once they are both in the Non-App layer, as past versions of this // test enforced. However this seems like the wrong behavior unless the status bar is the // IME target. assertWindowHigher(mNavBarWindow, mImeWindow); assertWindowHigher(mStatusBarWindow, mImeWindow); assertWindowLayerGreaterThan(mTransaction, mNavBarWindow, mImeWindow); assertWindowLayerGreaterThan(mTransaction, mStatusBarWindow, mImeWindow); // And, IME dialogs should always have an higher layer than the IME. assertWindowHigher(mImeDialogWindow, mImeWindow); assertWindowLayerGreaterThan(mTransaction, mImeDialogWindow, mImeWindow); } @Test Loading @@ -299,18 +299,19 @@ public class ZOrderingTests extends WindowTestsBase { sWm.mInputMethodTarget = mStatusBarWindow; mDisplayContent.assignChildLayers(mTransaction); assertWindowHigher(mImeWindow, mChildAppWindowAbove); assertWindowHigher(mImeWindow, mAppWindow); assertWindowHigher(mImeWindow, mDockedDividerWindow); assertWindowHigher(mImeWindow, mStatusBarWindow); assertWindowLayerGreaterThan(mTransaction, mImeWindow, mChildAppWindowAbove); assertWindowLayerGreaterThan(mTransaction, mImeWindow, mAppWindow); assertWindowLayerGreaterThan(mTransaction, mImeWindow, mDockedDividerWindow); assertWindowLayerGreaterThan(mTransaction, mImeWindow, mStatusBarWindow); // And, IME dialogs should always have an higher layer than the IME. assertWindowHigher(mImeDialogWindow, mImeWindow); assertWindowLayerGreaterThan(mTransaction, mImeDialogWindow, mImeWindow); } @Test public void testStackLayers() throws Exception { final WindowState anyWindow1 = createWindow("anyWindow"); final WindowState anyWindow1 = createWindow(null, TYPE_BASE_APPLICATION, mDisplayContent, "anyWindow"); final WindowState pinnedStackWindow = createWindowOnStack(null, WINDOWING_MODE_PINNED, ACTIVITY_TYPE_STANDARD, TYPE_BASE_APPLICATION, mDisplayContent, "pinnedStackWindow"); Loading @@ -320,17 +321,18 @@ public class ZOrderingTests extends WindowTestsBase { final WindowState assistantStackWindow = createWindowOnStack(null, WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_ASSISTANT, TYPE_BASE_APPLICATION, mDisplayContent, "assistantStackWindow"); final WindowState anyWindow2 = createWindow("anyWindow2"); final WindowState anyWindow2 = createWindow(null, TYPE_BASE_APPLICATION, mDisplayContent, "anyWindow"); mDisplayContent.assignChildLayers(mTransaction); // We compare the split-screen windowing mode to two different normal windowing // mode windows added before and after it to ensure the correct Z ordering irrespective // of ordering in the child list. assertWindowHigher(dockedStackWindow, anyWindow1); assertWindowHigher(dockedStackWindow, anyWindow2); assertWindowHigher(assistantStackWindow, dockedStackWindow); assertWindowHigher(pinnedStackWindow, assistantStackWindow); assertWindowLayerGreaterThan(mTransaction, dockedStackWindow, anyWindow1); assertWindowLayerGreaterThan(mTransaction, dockedStackWindow, anyWindow2); assertWindowLayerGreaterThan(mTransaction, assistantStackWindow, dockedStackWindow); assertWindowLayerGreaterThan(mTransaction, pinnedStackWindow, assistantStackWindow); } @Test Loading @@ -345,9 +347,9 @@ public class ZOrderingTests extends WindowTestsBase { // Ime should be above all app windows and below system windows if it is targeting an app // window. assertWindowHigher(navBarPanel, mNavBarWindow); assertWindowHigher(statusBarPanel, mStatusBarWindow); assertWindowHigher(statusBarSubPanel, statusBarPanel); assertWindowLayerGreaterThan(mTransaction, navBarPanel, mNavBarWindow); assertWindowLayerGreaterThan(mTransaction, statusBarPanel, mStatusBarWindow); assertWindowLayerGreaterThan(mTransaction, statusBarSubPanel, statusBarPanel); } @Test Loading @@ -355,7 +357,8 @@ public class ZOrderingTests extends WindowTestsBase { // TODO(b/70040778): We should aim to eliminate the last user of TYPE_APPLICATION_MEDIA // then we can drop all negative layering on the windowing side. final WindowState anyWindow = createWindow("anyWindow"); final WindowState anyWindow = createWindow(null, TYPE_BASE_APPLICATION, mDisplayContent, "anyWindow"); final WindowState child = createWindow(anyWindow, TYPE_APPLICATION_MEDIA, mDisplayContent, "TypeApplicationMediaChild"); final WindowState mediaOverlayChild = createWindow(anyWindow, TYPE_APPLICATION_MEDIA_OVERLAY, Loading @@ -363,8 +366,8 @@ public class ZOrderingTests extends WindowTestsBase { mDisplayContent.assignChildLayers(mTransaction); assertWindowHigher(anyWindow, mediaOverlayChild); assertWindowHigher(mediaOverlayChild, child); assertWindowLayerGreaterThan(mTransaction, anyWindow, mediaOverlayChild); assertWindowLayerGreaterThan(mTransaction, mediaOverlayChild, child); } @Test Loading @@ -386,9 +389,9 @@ public class ZOrderingTests extends WindowTestsBase { mDisplayContent.assignChildLayers(mTransaction); assertWindowHigher(dockedDividerWindow, splitScreenWindow); assertWindowHigher(dockedDividerWindow, splitScreenSecondaryWindow); assertWindowHigher(assistantStackWindow, dockedDividerWindow); assertWindowHigher(pinnedStackWindow, dockedDividerWindow); assertWindowLayerGreaterThan(mTransaction, dockedDividerWindow, splitScreenWindow); assertWindowLayerGreaterThan(mTransaction, dockedDividerWindow, splitScreenSecondaryWindow); assertWindowLayerGreaterThan(mTransaction, assistantStackWindow, dockedDividerWindow); assertWindowLayerGreaterThan(mTransaction, pinnedStackWindow, dockedDividerWindow); } }