Merge "Fix seeing a weird window animation above TaskFragment transition" into tm-dev
This commit is contained in:
@@ -5635,6 +5635,13 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
|
|||||||
return false;
|
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 (isChildWindow()) {
|
||||||
// If we are a child of the input method target we need this promotion.
|
// If we are a child of the input method target we need this promotion.
|
||||||
if (getParentWindow().isImeLayeringTarget()) {
|
if (getParentWindow().isImeLayeringTarget()) {
|
||||||
|
|||||||
@@ -854,12 +854,13 @@ public class WindowStateTests extends WindowTestsBase {
|
|||||||
assertTrue(mAtm.mActiveUids.hasNonAppVisibleWindow(uid));
|
assertTrue(mAtm.mActiveUids.hasNonAppVisibleWindow(uid));
|
||||||
}
|
}
|
||||||
|
|
||||||
@UseTestDisplay(addWindows = W_ACTIVITY)
|
@UseTestDisplay(addWindows = {W_ACTIVITY, W_INPUT_METHOD})
|
||||||
@Test
|
@Test
|
||||||
public void testNeedsRelativeLayeringToIme_notAttached() {
|
public void testNeedsRelativeLayeringToIme_notAttached() {
|
||||||
WindowState sameTokenWindow = createWindow(null, TYPE_BASE_APPLICATION, mAppWindow.mToken,
|
WindowState sameTokenWindow = createWindow(null, TYPE_BASE_APPLICATION, mAppWindow.mToken,
|
||||||
"SameTokenWindow");
|
"SameTokenWindow");
|
||||||
mDisplayContent.setImeLayeringTarget(mAppWindow);
|
mDisplayContent.setImeLayeringTarget(mAppWindow);
|
||||||
|
makeWindowVisible(mImeWindow);
|
||||||
sameTokenWindow.mActivityRecord.getRootTask().setWindowingMode(WINDOWING_MODE_MULTI_WINDOW);
|
sameTokenWindow.mActivityRecord.getRootTask().setWindowingMode(WINDOWING_MODE_MULTI_WINDOW);
|
||||||
assertTrue(sameTokenWindow.needsRelativeLayeringToIme());
|
assertTrue(sameTokenWindow.needsRelativeLayeringToIme());
|
||||||
sameTokenWindow.removeImmediately();
|
sameTokenWindow.removeImmediately();
|
||||||
@@ -872,6 +873,7 @@ public class WindowStateTests extends WindowTestsBase {
|
|||||||
WindowState sameTokenWindow = createWindow(null, TYPE_APPLICATION_STARTING,
|
WindowState sameTokenWindow = createWindow(null, TYPE_APPLICATION_STARTING,
|
||||||
mAppWindow.mToken, "SameTokenWindow");
|
mAppWindow.mToken, "SameTokenWindow");
|
||||||
mDisplayContent.setImeLayeringTarget(mAppWindow);
|
mDisplayContent.setImeLayeringTarget(mAppWindow);
|
||||||
|
makeWindowVisible(mImeWindow);
|
||||||
sameTokenWindow.mActivityRecord.getRootTask().setWindowingMode(WINDOWING_MODE_MULTI_WINDOW);
|
sameTokenWindow.mActivityRecord.getRootTask().setWindowingMode(WINDOWING_MODE_MULTI_WINDOW);
|
||||||
assertFalse(sameTokenWindow.needsRelativeLayeringToIme());
|
assertFalse(sameTokenWindow.needsRelativeLayeringToIme());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -274,6 +274,7 @@ public class ZOrderingTests extends WindowTestsBase {
|
|||||||
"imeAppTargetChildBelowWindow");
|
"imeAppTargetChildBelowWindow");
|
||||||
|
|
||||||
mDisplayContent.setImeLayeringTarget(imeAppTarget);
|
mDisplayContent.setImeLayeringTarget(imeAppTarget);
|
||||||
|
makeWindowVisible(mImeWindow);
|
||||||
mDisplayContent.assignChildLayers(mTransaction);
|
mDisplayContent.assignChildLayers(mTransaction);
|
||||||
|
|
||||||
// Ime should be above all app windows except for child windows that are z-ordered above it
|
// 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);
|
WINDOWING_MODE_MULTI_WINDOW);
|
||||||
mDisplayContent.setImeLayeringTarget(mAppWindow);
|
mDisplayContent.setImeLayeringTarget(mAppWindow);
|
||||||
mDisplayContent.setImeInputTarget(mAppWindow);
|
mDisplayContent.setImeInputTarget(mAppWindow);
|
||||||
|
makeWindowVisible(mImeWindow);
|
||||||
|
|
||||||
// Create a popupWindow
|
// Create a popupWindow
|
||||||
assertWindowHigher(mImeWindow, mAppWindow);
|
assertWindowHigher(mImeWindow, mAppWindow);
|
||||||
|
|||||||
Reference in New Issue
Block a user