Merge "Fix unexpected starting window removal timeout when in fixed-rotation" into udc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
228c3d300f
@@ -1884,7 +1884,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
|
||||
|
||||
/** Returns {@code true} if the IME is possible to show on the launching activity. */
|
||||
boolean mayImeShowOnLaunchingActivity(@NonNull ActivityRecord r) {
|
||||
final WindowState win = r.findMainWindow();
|
||||
final WindowState win = r.findMainWindow(false /* exclude starting window */);
|
||||
if (win == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -53,6 +53,8 @@ import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_M
|
||||
import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;
|
||||
import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_NO_MOVE_ANIMATION;
|
||||
import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_UNRESTRICTED_GESTURE_EXCLUSION;
|
||||
import static android.view.WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN;
|
||||
import static android.view.WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN;
|
||||
import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION;
|
||||
import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_ATTACHED_DIALOG;
|
||||
import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
|
||||
@@ -2827,6 +2829,26 @@ public class DisplayContentTests extends WindowTestsBase {
|
||||
mDisplayContent.getKeepClearAreas());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMayImeShowOnLaunchingActivity_negativeWhenSoftInputModeHidden() {
|
||||
final ActivityRecord app = createActivityRecord(mDisplayContent);
|
||||
final WindowState appWin = createWindow(null, TYPE_BASE_APPLICATION, app, "appWin");
|
||||
createWindow(null, TYPE_APPLICATION_STARTING, app, "startingWin");
|
||||
app.mStartingData = mock(SnapshotStartingData.class);
|
||||
// Assume the app has shown IME before and warm launching with a snapshot window.
|
||||
doReturn(true).when(app.mStartingData).hasImeSurface();
|
||||
|
||||
// Expect true when this IME focusable activity will show IME during launching.
|
||||
assertTrue(WindowManager.LayoutParams.mayUseInputMethod(appWin.mAttrs.flags));
|
||||
assertTrue(mDisplayContent.mayImeShowOnLaunchingActivity(app));
|
||||
|
||||
// Not expect IME will be shown during launching if the app's softInputMode is hidden.
|
||||
appWin.mAttrs.softInputMode = SOFT_INPUT_STATE_ALWAYS_HIDDEN;
|
||||
assertFalse(mDisplayContent.mayImeShowOnLaunchingActivity(app));
|
||||
appWin.mAttrs.softInputMode = SOFT_INPUT_STATE_HIDDEN;
|
||||
assertFalse(mDisplayContent.mayImeShowOnLaunchingActivity(app));
|
||||
}
|
||||
|
||||
private void removeRootTaskTests(Runnable runnable) {
|
||||
final TaskDisplayArea taskDisplayArea = mRootWindowContainer.getDefaultTaskDisplayArea();
|
||||
final Task rootTask1 = taskDisplayArea.createRootTask(WINDOWING_MODE_FULLSCREEN,
|
||||
|
||||
Reference in New Issue
Block a user