Merge "Consider sourceRecord when launching with adjacent flag" into tm-qpr-dev

This commit is contained in:
TreeHugger Robot
2022-05-24 10:39:45 +00:00
committed by Android (Google) Code Review
2 changed files with 13 additions and 9 deletions

View File

@@ -2451,6 +2451,11 @@ class ActivityStarter {
}
}
if ((mLaunchFlags & FLAG_ACTIVITY_LAUNCH_ADJACENT) != 0 && mSourceRecord == null) {
// ignore the flag if there is no the sourceRecord
mLaunchFlags &= ~FLAG_ACTIVITY_LAUNCH_ADJACENT;
}
// We'll invoke onUserLeaving before onPause only if the launching
// activity did not explicitly state that this is an automated launch.
mSupervisor.mUserLeaving = (mLaunchFlags & FLAG_ACTIVITY_NO_USER_ACTION) == 0;

View File

@@ -1120,28 +1120,27 @@ public class ActivityStarterTests extends WindowTestsBase {
}
@Test
public void testTargetStackInSplitScreen() {
public void testTargetTaskInSplitScreen() {
final ActivityStarter starter =
prepareStarter(FLAG_ACTIVITY_LAUNCH_ADJACENT, false /* mockGetRootTask */);
final ActivityRecord top = new ActivityBuilder(mAtm).setCreateTask(true).build();
final ActivityOptions options = ActivityOptions.makeBasic();
final ActivityRecord[] outActivity = new ActivityRecord[1];
// Activity must not land on split-screen stack if currently not in split-screen mode.
// Activity must not land on split-screen task if currently not in split-screen mode.
starter.setActivityOptions(options.toBundle())
.setReason("testWindowingModeOptionsLaunchAdjacent")
.setReason("testTargetTaskInSplitScreen")
.setOutActivity(outActivity).execute();
assertThat(outActivity[0].inMultiWindowMode()).isFalse();
// Move activity to split-screen-primary stack and make sure it has the focus.
// Move activity to split-screen-primary task and make sure it has the focus.
TestSplitOrganizer splitOrg = new TestSplitOrganizer(mAtm, top.getDisplayContent());
top.getRootTask().reparent(splitOrg.mPrimary, POSITION_BOTTOM);
top.getRootTask().moveToFront("testWindowingModeOptionsLaunchAdjacent");
top.getRootTask().moveToFront("testTargetTaskInSplitScreen");
// Activity must landed on split-screen-secondary when launch adjacent.
starter.setActivityOptions(options.toBundle())
.setReason("testWindowingModeOptionsLaunchAdjacent")
.setOutActivity(outActivity).execute();
// Activity must land on split-screen-secondary when launch adjacent.
startActivityInner(starter, outActivity[0], top, options, null /* inTask */,
null /* taskFragment*/);
assertThat(outActivity[0].inMultiWindowMode()).isTrue();
}