Merge "Fix seeing a weird window animation above TaskFragment transition" into tm-dev

This commit is contained in:
Ming-Shin Lu
2022-03-31 12:54:25 +00:00
committed by Android (Google) Code Review
3 changed files with 12 additions and 1 deletions

View File

@@ -5635,6 +5635,13 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
return false;
}
// We don't need to set the window to be relatively above IME if the IME is not visible.
// In case seeing the window is animating above the app transition layer because its
// relative layer is above the IME container on the display area but actually not necessary.
if (!getDisplayContent().getImeContainer().isVisible()) {
return false;
}
if (isChildWindow()) {
// If we are a child of the input method target we need this promotion.
if (getParentWindow().isImeLayeringTarget()) {

View File

@@ -854,12 +854,13 @@ public class WindowStateTests extends WindowTestsBase {
assertTrue(mAtm.mActiveUids.hasNonAppVisibleWindow(uid));
}
@UseTestDisplay(addWindows = W_ACTIVITY)
@UseTestDisplay(addWindows = {W_ACTIVITY, W_INPUT_METHOD})
@Test
public void testNeedsRelativeLayeringToIme_notAttached() {
WindowState sameTokenWindow = createWindow(null, TYPE_BASE_APPLICATION, mAppWindow.mToken,
"SameTokenWindow");
mDisplayContent.setImeLayeringTarget(mAppWindow);
makeWindowVisible(mImeWindow);
sameTokenWindow.mActivityRecord.getRootTask().setWindowingMode(WINDOWING_MODE_MULTI_WINDOW);
assertTrue(sameTokenWindow.needsRelativeLayeringToIme());
sameTokenWindow.removeImmediately();
@@ -872,6 +873,7 @@ public class WindowStateTests extends WindowTestsBase {
WindowState sameTokenWindow = createWindow(null, TYPE_APPLICATION_STARTING,
mAppWindow.mToken, "SameTokenWindow");
mDisplayContent.setImeLayeringTarget(mAppWindow);
makeWindowVisible(mImeWindow);
sameTokenWindow.mActivityRecord.getRootTask().setWindowingMode(WINDOWING_MODE_MULTI_WINDOW);
assertFalse(sameTokenWindow.needsRelativeLayeringToIme());
}

View File

@@ -274,6 +274,7 @@ public class ZOrderingTests extends WindowTestsBase {
"imeAppTargetChildBelowWindow");
mDisplayContent.setImeLayeringTarget(imeAppTarget);
makeWindowVisible(mImeWindow);
mDisplayContent.assignChildLayers(mTransaction);
// Ime should be above all app windows except for child windows that are z-ordered above it
@@ -599,6 +600,7 @@ public class ZOrderingTests extends WindowTestsBase {
WINDOWING_MODE_MULTI_WINDOW);
mDisplayContent.setImeLayeringTarget(mAppWindow);
mDisplayContent.setImeInputTarget(mAppWindow);
makeWindowVisible(mImeWindow);
// Create a popupWindow
assertWindowHigher(mImeWindow, mAppWindow);