Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 437319e1 authored by Mariia Sandrikova's avatar Mariia Sandrikova
Browse files

Don't clear size compat mode on fold/unfold.

With ag/14036667, the displays are turned off during fold and unfold transitions. While screen is off, ActivityRecord#mVisibleRequested is set to false and mCompatDisplatInsets is cleared in onConfigurationChanged > restartProcessIfVisible > clearSizeCompatMode. As a result, unresizable activities don't enter size compat mode after fold/unfold as they should. To address this checking that visibleIgnoringKeyguard is set to false before clearing mCompatDisplayInsets.

Fix: 187338605
Test: atest SizeCompatMode
Change-Id: I75ea5bba106d04c849e6b7ab446f77fcd8928981
parent d8ee5fbd
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -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();
+1 −0
Original line number Diff line number Diff line
@@ -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.