Revert "Fix wrong ime parent in embedded activity"
This reverts commit 44cab45149892f1438e077c38a51286783a1ced6.
Reason for revert: Droidfood blocking bug: 270290011
Change-Id: I517dae46aa791fe9716cd092915bb49763b1eede
(cherry picked from commit 7db4d8b5007be74aaefc9644afb1500d8c22d9d8)
Merged-In: I517dae46aa791fe9716cd092915bb49763b1eede
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java
index ade2fe7..8cd22fe 100644
--- a/services/core/java/com/android/server/wm/DisplayContent.java
+++ b/services/core/java/com/android/server/wm/DisplayContent.java
@@ -4589,7 +4589,7 @@
*/
@VisibleForTesting
SurfaceControl computeImeParent() {
- if (!ImeTargetVisibilityPolicy.isValidToComputeImeParent(mImeLayeringTarget,
+ if (!ImeTargetVisibilityPolicy.isReadyToComputeImeParent(mImeLayeringTarget,
mImeInputTarget)) {
return null;
}
diff --git a/services/core/java/com/android/server/wm/ImeTargetVisibilityPolicy.java b/services/core/java/com/android/server/wm/ImeTargetVisibilityPolicy.java
index 471bdf2..49218ad 100644
--- a/services/core/java/com/android/server/wm/ImeTargetVisibilityPolicy.java
+++ b/services/core/java/com/android/server/wm/ImeTargetVisibilityPolicy.java
@@ -19,7 +19,6 @@
import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_STARTING;
-import android.annotation.Nullable;
import android.os.IBinder;
import android.view.WindowManager;
@@ -51,12 +50,10 @@
* Called when {@link DisplayContent#computeImeParent()} to check if it's valid to keep
* computing the ime parent.
*
- * @param imeLayeringTarget The window which IME target to layer on top of it.
- * @param imeInputTarget The window which start the input connection, receive input from IME.
* @return {@code true} to keep computing the ime parent, {@code false} to defer this operation
*/
- public static boolean isValidToComputeImeParent(@Nullable WindowState imeLayeringTarget,
- @Nullable InputTarget imeInputTarget) {
+ public static boolean isReadyToComputeImeParent(WindowState imeLayeringTarget,
+ InputTarget imeInputTarget) {
if (imeLayeringTarget == null) {
return false;
}
@@ -72,9 +69,7 @@
boolean imeLayeringTargetMayUseIme =
WindowManager.LayoutParams.mayUseInputMethod(imeLayeringTarget.mAttrs.flags)
|| imeLayeringTarget.mAttrs.type == TYPE_APPLICATION_STARTING;
- if (isImeTargetMismatchOnEmbedding(imeLayeringTarget, imeInputTarget)) {
- return true;
- }
+
// Do not change parent if the window hasn't requested IME.
var inputAndLayeringTargetsDisagree = (imeInputTarget == null
|| imeLayeringTarget.mActivityRecord != imeInputTarget.getActivityRecord());
@@ -82,27 +77,4 @@
return !inputTargetStale;
}
-
- private static boolean isImeTargetMismatchOnEmbedding(
- @Nullable WindowState imeLayeringTarget, @Nullable InputTarget imeInputTarget) {
- if (imeInputTarget == null || imeLayeringTarget == null) {
- return false;
- }
- final ActivityRecord inputTargetRecord = imeInputTarget.getActivityRecord();
- final ActivityRecord layeringTargetRecord = imeLayeringTarget.getActivityRecord();
- final WindowState inputTargetWindow = imeInputTarget.getWindowState();
- if (inputTargetRecord == null || layeringTargetRecord == null
- || inputTargetWindow == null) {
- return false;
- }
- final boolean isImeTargetEmbedded = inputTargetRecord.isEmbedded()
- && layeringTargetRecord.isEmbedded();
- // The IME layering target is calculated by the window hierarchy in DisplayContent.
- // The layering target and input target may be different when the window hasn't started
- // input connection, WMS hasn't received the target which reported from IMMS. We basically
- // won't update IME parent for better IME transition.
- // But in activity embedding, tapping a window won't update it to the top window so the IME
- // layering target may higher than input target. Update IME parent for this case.
- return isImeTargetEmbedded && imeLayeringTarget.compareTo(inputTargetWindow) > 0;
- }
}
diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskFragmentTest.java b/services/tests/wmtests/src/com/android/server/wm/TaskFragmentTest.java
index df3af7d..dab842c 100644
--- a/services/tests/wmtests/src/com/android/server/wm/TaskFragmentTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/TaskFragmentTest.java
@@ -24,7 +24,6 @@
import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSET;
import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
-import static android.view.WindowManager.LayoutParams.TYPE_BASE_APPLICATION;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.any;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.doNothing;
@@ -614,34 +613,4 @@
assertEquals(SCREEN_ORIENTATION_UNSPECIFIED, tf1.getOrientation(SCREEN_ORIENTATION_UNSET));
assertEquals(SCREEN_ORIENTATION_UNSPECIFIED, task.getOrientation(SCREEN_ORIENTATION_UNSET));
}
-
- @Test
- public void testUpdateImeParentForActivityEmbedding() {
- // Setup two activities in ActivityEmbedding.
- final Task task = createTask(mDisplayContent);
- final TaskFragment tf0 = new TaskFragmentBuilder(mAtm)
- .setParentTask(task)
- .createActivityCount(1)
- .setOrganizer(mOrganizer)
- .setFragmentToken(new Binder())
- .build();
- final TaskFragment tf1 = new TaskFragmentBuilder(mAtm)
- .setParentTask(task)
- .createActivityCount(1)
- .setOrganizer(mOrganizer)
- .setFragmentToken(new Binder())
- .build();
- final ActivityRecord activity0 = tf0.getTopMostActivity();
- final ActivityRecord activity1 = tf1.getTopMostActivity();
- final WindowState win0 = createWindow(null, TYPE_BASE_APPLICATION, activity0, "win0");
- final WindowState win1 = createWindow(null, TYPE_BASE_APPLICATION, activity1, "win1");
- doReturn(false).when(mDisplayContent).shouldImeAttachedToApp();
-
- mDisplayContent.setImeInputTarget(win0);
- mDisplayContent.setImeLayeringTarget(win1);
-
- // The ImeParent should be the display.
- assertEquals(mDisplayContent.getImeContainer().getParent().getSurfaceControl(),
- mDisplayContent.computeImeParent());
- }
}