Fix fillsParent() always be false on finishing activity

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

Bug: 155343623
Test: Close a freeform activity and examine the app transition
Change-Id: I30f7071e5dadade8dc0aa3a7c8a573bf72c81f72
This commit is contained in:
Louis Chang
2020-05-08 16:02:26 +08:00
parent 950aca5795
commit c3bf552ca8
2 changed files with 13 additions and 4 deletions

View File

@@ -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);

View File

@@ -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);