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

Commit c3bf552c authored by Louis Chang's avatar Louis Chang
Browse files

Fix fillsParent() always be false on finishing activity

ActivityRecord#occludesParent() returns true only if the activity
is not finish and is opaque since 99d6f0e8, which caused side-effects
to ActivityRecord#fillParent().

Bug: 155343623
Test: Close a freeform activity and examine the app transition
Change-Id: I30f7071e5dadade8dc0aa3a7c8a573bf72c81f72
parent 950aca57
Loading
Loading
Loading
Loading
+12 −4
Original line number Diff line number Diff line
@@ -2115,12 +2115,20 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A

    @Override
    boolean fillsParent() {
        return occludesParent();
        return occludesParent(true /* includingFinishing */);
    }

    /** Returns true if this activity is opaque and fills the entire space of this task. */
    /** Returns true if this activity is not finishing, is opaque and fills the entire space of
     * this task. */
    boolean occludesParent() {
        return !finishing && mOccludesParent;
        return occludesParent(false /* includingFinishing */);
    }

    private boolean occludesParent(boolean includingFinishing) {
        if (!includingFinishing && finishing) {
            return false;
        }
        return mOccludesParent;
    }

    boolean setOccludesParent(boolean occludesParent) {
@@ -7539,7 +7547,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
        if (mThumbnail != null){
            mThumbnail.dumpDebug(proto, THUMBNAIL);
        }
        proto.write(FILLS_PARENT, mOccludesParent);
        proto.write(FILLS_PARENT, fillsParent());
        proto.write(APP_STOPPED, mAppStopped);
        proto.write(TRANSLUCENT, !occludesParent());
        proto.write(VISIBLE, mVisible);
+1 −0
Original line number Diff line number Diff line
@@ -295,6 +295,7 @@ class ActivityTestsBase extends SystemServiceTestsBase {
                // fullscreen value is normally read from resources in ctor, so for testing we need
                // to set it somewhere else since we can't mock resources.
                doReturn(true).when(activity).occludesParent();
                doReturn(true).when(activity).fillsParent();
                mTask.addChild(activity);
                // Make visible by default...
                activity.setVisible(true);