diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index 667a4fa0ae263..15625bb850620 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -7483,7 +7483,10 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A if (mVisibleRequested) { // It may toggle the UI for user to restart the size compatibility mode activity. display.handleActivitySizeCompatModeIfNeeded(this); - } else if (mCompatDisplayInsets != null) { + } else if (mCompatDisplayInsets != null && !visibleIgnoringKeyguard) { + // visibleIgnoringKeyguard is checked to avoid clearing mCompatDisplayInsets during + // displays change. Displays are turned off during the change so mVisibleRequested + // can be false. // The override changes can only be obtained from display, because we don't have the // difference of full configuration in each hierarchy. final int displayChanges = display.getCurrentOverrideConfigurationChanges(); diff --git a/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java b/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java index 0925e12224bef..9bd62c09ac473 100644 --- a/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java @@ -521,6 +521,7 @@ public class SizeCompatTests extends WindowTestsBase { mActivity.setState(STOPPED, "testSizeCompatMode"); mActivity.mVisibleRequested = false; + mActivity.visibleIgnoringKeyguard = false; mActivity.app.setReportedProcState(ActivityManager.PROCESS_STATE_CACHED_ACTIVITY); // Simulate the display changes orientation.