Merge "Prevent execute app transition too early when performClearTask" into sc-v2-dev am: f49cb0da83
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15784351 Change-Id: Id0de28967f91119ffbc8d53904dc794d9673a24d
This commit is contained in:
@@ -1606,9 +1606,15 @@ class Task extends TaskFragment {
|
||||
} else {
|
||||
forAllActivities((r) -> {
|
||||
if (r.finishing) return;
|
||||
// TODO: figure-out how to avoid object creation due to capture of reason variable.
|
||||
r.finishIfPossible(Activity.RESULT_CANCELED,
|
||||
null /* resultData */, null /* resultGrants */, reason, false /* oomAdj */);
|
||||
// Prevent the transition from being executed too early if the top activity is
|
||||
// resumed but the mVisibleRequested of any other activity is true, the transition
|
||||
// should wait until next activity resumed.
|
||||
if (r.isState(RESUMED) || (r.isVisible()
|
||||
&& !mDisplayContent.mAppTransition.containsTransitRequest(TRANSIT_CLOSE))) {
|
||||
r.finishIfPossible(reason, false /* oomAdj */);
|
||||
} else {
|
||||
r.destroyIfPossible(reason);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -102,6 +102,20 @@ public class AppTransitionControllerTest extends WindowTestsBase {
|
||||
mDisplayContent.mChangingContainers, null, null, false));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testClearTaskSkipAppExecuteTransition() {
|
||||
final ActivityRecord behind = createActivityRecord(mDisplayContent,
|
||||
WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD);
|
||||
final Task task = behind.getTask();
|
||||
final ActivityRecord top = createActivityRecord(task);
|
||||
top.setState(ActivityRecord.State.RESUMED, "test");
|
||||
behind.setState(ActivityRecord.State.STARTED, "test");
|
||||
behind.mVisibleRequested = true;
|
||||
|
||||
task.performClearTask("test");
|
||||
assertFalse(mDisplayContent.mAppTransition.isReady());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTranslucentOpen() {
|
||||
final ActivityRecord behind = createActivityRecord(mDisplayContent,
|
||||
|
||||
Reference in New Issue
Block a user