Merge "Relax condition to hide unready IME with fixed rotation" into udc-dev am: 0b7071fab9
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/21738760
Change-Id: Iff325ece325254ffa19efaf49838ce32b97ee954
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/services/core/java/com/android/server/wm/AsyncRotationController.java b/services/core/java/com/android/server/wm/AsyncRotationController.java
index 0dc6e0f..5c9c813 100644
--- a/services/core/java/com/android/server/wm/AsyncRotationController.java
+++ b/services/core/java/com/android/server/wm/AsyncRotationController.java
@@ -364,6 +364,7 @@
/** Hides the window immediately until it is drawn in new rotation. */
void hideImmediately(WindowToken windowToken) {
+ if (isTargetToken(windowToken)) return;
final boolean original = mHideImmediately;
mHideImmediately = true;
final Operation op = new Operation(Operation.ACTION_FADE);
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java
index 947edde..87f5703b 100644
--- a/services/core/java/com/android/server/wm/DisplayContent.java
+++ b/services/core/java/com/android/server/wm/DisplayContent.java
@@ -4158,13 +4158,13 @@
/** @see WindowManagerInternal#onToggleImeRequested */
void onShowImeRequested() {
- if (mImeLayeringTarget == null || mInputMethodWindow == null) {
+ if (mInputMethodWindow == null) {
return;
}
// If IME window will be shown on the rotated activity, share the transformed state to
// IME window so it can compute rotated frame with rotated configuration.
- if (mImeLayeringTarget.mToken.isFixedRotationTransforming()) {
- mInputMethodWindow.mToken.linkFixedRotationTransform(mImeLayeringTarget.mToken);
+ if (mFixedRotationLaunchingApp != null) {
+ mInputMethodWindow.mToken.linkFixedRotationTransform(mFixedRotationLaunchingApp);
// Hide the window until the rotation is done to avoid intermediate artifacts if the
// parent surface of IME container is changed.
if (mAsyncRotationController != null) {
diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java
index 87e87b9..09f7fb6 100644
--- a/services/core/java/com/android/server/wm/WindowState.java
+++ b/services/core/java/com/android/server/wm/WindowState.java
@@ -2342,9 +2342,11 @@
@Override
public void onConfigurationChanged(Configuration newParentConfig) {
- mTempConfiguration.setTo(getConfiguration());
+ // Get from super to avoid using the updated global config from the override method.
+ final Configuration selfConfiguration = super.getConfiguration();
+ mTempConfiguration.setTo(selfConfiguration);
super.onConfigurationChanged(newParentConfig);
- final int diff = getConfiguration().diff(mTempConfiguration);
+ final int diff = selfConfiguration.diff(mTempConfiguration);
if (diff != 0) {
mLastConfigReportedToClient = false;
}
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 aaeae23..3379beb 100644
--- a/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java
@@ -1620,7 +1620,6 @@
// If the rotated activity requests to show IME, the IME window should use the
// transformation from activity to lay out in the same orientation.
- mDisplayContent.setImeLayeringTarget(mAppWindow);
LocalServices.getService(WindowManagerInternal.class).onToggleImeRequested(true /* show */,
app.token, app.token, mDisplayContent.mDisplayId);
assertTrue(asyncRotationController.isTargetToken(mImeWindow.mToken));