Merge "Bug fix: fix System crash due to NullPointerException." into sc-dev
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java
index 4c11422..1b799df 100644
--- a/services/core/java/com/android/server/wm/DisplayContent.java
+++ b/services/core/java/com/android/server/wm/DisplayContent.java
@@ -733,15 +733,15 @@
// dismissing during the task switching to keep the window focus because IME window has
// higher window hierarchy, we don't give it focus if the next IME layering target
// doesn't request IME visible.
- if (w.mIsImWindow && (mImeLayeringTarget == null
+ if (w.mIsImWindow && w.isChildWindow() && (mImeLayeringTarget == null
|| !mImeLayeringTarget.getRequestedVisibility(ITYPE_IME))) {
- if (w.mAttrs.type == TYPE_INPUT_METHOD_DIALOG) {
- return false;
- }
-
- if (w.isChildWindow()) {
- return false;
- }
+ return false;
+ }
+ if (w.mAttrs.type == TYPE_INPUT_METHOD_DIALOG && mImeLayeringTarget != null
+ && !mImeLayeringTarget.getRequestedVisibility(ITYPE_IME)
+ && mImeLayeringTarget.isAnimating(PARENTS | TRANSITION,
+ ANIMATION_TYPE_APP_TRANSITION)) {
+ return false;
}
final ActivityRecord activity = w.mActivityRecord;
diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java b/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java
index c60b8dc..12fc2f4 100644
--- a/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java
@@ -2223,6 +2223,9 @@
// request IME visible.
final WindowState nextImeAppTarget =
createWindow(null, TYPE_BASE_APPLICATION, mDisplayContent, "nextImeAppTarget");
+ spyOn(nextImeAppTarget);
+ doReturn(true).when(nextImeAppTarget).isAnimating(PARENTS | TRANSITION,
+ ANIMATION_TYPE_APP_TRANSITION);
mDisplayContent.setImeLayeringTarget(nextImeAppTarget);
assertNotEquals(imeMenuDialog, mDisplayContent.findFocusedWindow());
}