Avoid using secondary displays as launch params when not support
Activities were moved on secondary displays when layouting tasks by LaunchParamsController while the device has no multi-displays support. Bug: 136607870 Test: atest TaskLaunchParamsModifierTests Change-Id: If17f119008cb2fa9ab08090f128c83215f8523a0
This commit is contained in:
@@ -294,6 +294,10 @@ class TaskLaunchParamsModifier implements LaunchParamsModifier {
|
||||
|
||||
private int getPreferredLaunchDisplay(@Nullable TaskRecord task,
|
||||
@Nullable ActivityOptions options, ActivityRecord source, LaunchParams currentParams) {
|
||||
if (!mSupervisor.mService.mSupportsMultiDisplay) {
|
||||
return DEFAULT_DISPLAY;
|
||||
}
|
||||
|
||||
int displayId = INVALID_DISPLAY;
|
||||
final int optionLaunchId = options != null ? options.getLaunchDisplayId() : INVALID_DISPLAY;
|
||||
if (optionLaunchId != INVALID_DISPLAY) {
|
||||
|
||||
@@ -1251,6 +1251,22 @@ public class TaskLaunchParamsModifierTests extends ActivityTestsBase {
|
||||
assertEquals(startingBounds, adjustedBounds);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNoMultiDisplaySupports() {
|
||||
final boolean orgValue = mService.mSupportsMultiDisplay;
|
||||
final TestActivityDisplay display = createNewActivityDisplay(WINDOWING_MODE_FULLSCREEN);
|
||||
mCurrent.mPreferredDisplayId = display.mDisplayId;
|
||||
|
||||
try {
|
||||
mService.mSupportsMultiDisplay = false;
|
||||
assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, /* layout */ null,
|
||||
mActivity, /* source */ null, /* options */ null, mCurrent, mResult));
|
||||
assertEquals(DEFAULT_DISPLAY, mResult.mPreferredDisplayId);
|
||||
} finally {
|
||||
mService.mSupportsMultiDisplay = orgValue;
|
||||
}
|
||||
}
|
||||
|
||||
private TestActivityDisplay createNewActivityDisplay(int windowingMode) {
|
||||
final TestActivityDisplay display = addNewActivityDisplayAt(ActivityDisplay.POSITION_TOP);
|
||||
display.setWindowingMode(windowingMode);
|
||||
|
||||
Reference in New Issue
Block a user