From f9e4f713744b1ddbcc1ac88f7b130744aa9a25d0 Mon Sep 17 00:00:00 2001 From: Garfield Tan Date: Mon, 14 Dec 2020 13:49:01 -0800 Subject: [PATCH 1/2] Remove warning about cases where root is null We didn't see any issues for that since the introduction of this class so we can just remove the warning. Bug: 175627594 Test: N/A Change-Id: Ibe2a0e57b859d67793f2206f556cf4005dd06f42 --- .../java/com/android/server/wm/TaskLaunchParamsModifier.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java b/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java index a7306c97bd2ab..bcacf17b6c986 100644 --- a/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java +++ b/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java @@ -126,10 +126,6 @@ class TaskLaunchParamsModifier implements LaunchParamsModifier { root = activity; } - // TODO: Investigate whether we can safely ignore all cases where we don't have root - // activity available. Note we can't know if the bounds are valid if we're not sure of the - // requested orientation of the root activity. Therefore if we found such a case we may need - // to pass the activity into this modifier in that case. if (root == null) { // There is a case that can lead us here. The caller is moving the top activity that is // in a task that has multiple activities to PIP mode. For that the caller is creating a From 8e64f2b0dee7a2998a747f00ff2e2407e1d868b5 Mon Sep 17 00:00:00 2001 From: Garfield Tan Date: Mon, 14 Dec 2020 16:57:56 -0800 Subject: [PATCH 2/2] Some cleanup around LaunchParamsModifier. 1. Move parameter requst before parameter phase so that it's closer to other in-params. 2. Change the way of dispatching calculate calls in TaskLaunchParamsModifierTests so that we don't have change all tests after changing the signature. Bug: 175627594 Test: atest WmTests:com.android.server.wm.TaskLaunchParamsModifierTests Test: atest WmTests:com.android.server.wm.ActivityStarterTests Test: atest WmTests:com.android.server.wm.LaunchParamsControllerTests Change-Id: I483bfde489bec2d99ee4ec6721779142dda52fcb --- .../android/server/wm/ActivityStarter.java | 4 +- .../server/wm/LaunchParamsController.java | 23 +- .../server/wm/TaskLaunchParamsModifier.java | 28 +- .../server/wm/ActivityStarterTests.java | 2 +- .../wm/LaunchParamsControllerTests.java | 65 ++- .../wm/TaskLaunchParamsModifierTests.java | 391 +++++++++--------- 6 files changed, 251 insertions(+), 262 deletions(-) diff --git a/services/core/java/com/android/server/wm/ActivityStarter.java b/services/core/java/com/android/server/wm/ActivityStarter.java index ecbf266c89cb8..1b0bec5f34026 100644 --- a/services/core/java/com/android/server/wm/ActivityStarter.java +++ b/services/core/java/com/android/server/wm/ActivityStarter.java @@ -1883,7 +1883,7 @@ class ActivityStarter { } mSupervisor.getLaunchParamsController().calculate(targetTask, r.info.windowLayout, r, - sourceRecord, mOptions, PHASE_BOUNDS, mLaunchParams, mRequest); + sourceRecord, mOptions, mRequest, PHASE_BOUNDS, mLaunchParams); mPreferredTaskDisplayArea = mLaunchParams.hasPreferredTaskDisplayArea() ? mLaunchParams.mPreferredTaskDisplayArea : mRootWindowContainer.getDefaultTaskDisplayArea(); @@ -2274,7 +2274,7 @@ class ActivityStarter { // Preferred display id is the only state we need for now and it could be updated again // after we located a reusable task (which might be resided in another display). mSupervisor.getLaunchParamsController().calculate(inTask, r.info.windowLayout, r, - sourceRecord, options, PHASE_DISPLAY, mLaunchParams, mRequest); + sourceRecord, options, mRequest, PHASE_DISPLAY, mLaunchParams); mPreferredTaskDisplayArea = mLaunchParams.hasPreferredTaskDisplayArea() ? mLaunchParams.mPreferredTaskDisplayArea : mRootWindowContainer.getDefaultTaskDisplayArea(); diff --git a/services/core/java/com/android/server/wm/LaunchParamsController.java b/services/core/java/com/android/server/wm/LaunchParamsController.java index 8745e95dba4d9..35653f96a14a6 100644 --- a/services/core/java/com/android/server/wm/LaunchParamsController.java +++ b/services/core/java/com/android/server/wm/LaunchParamsController.java @@ -73,11 +73,12 @@ class LaunchParamsController { * @param activity The {@link ActivityRecord} currently being positioned. * @param source The {@link ActivityRecord} from which activity was started from. * @param options The {@link ActivityOptions} specified for the activity. - * @param result The resulting params. * @param request The optional request from the activity starter. + * @param phase The {@link LaunchParamsModifier.Phase} that the resolution should finish. + * @param result The resulting params. */ void calculate(Task task, WindowLayout layout, ActivityRecord activity, ActivityRecord source, - ActivityOptions options, int phase, LaunchParams result, @Nullable Request request) { + ActivityOptions options, @Nullable Request request, int phase, LaunchParams result) { result.reset(); if (task != null || activity != null) { @@ -92,8 +93,8 @@ class LaunchParamsController { mTmpResult.reset(); final LaunchParamsModifier modifier = mModifiers.get(i); - switch(modifier.onCalculate(task, layout, activity, source, options, phase, mTmpCurrent, - mTmpResult, request)) { + switch(modifier.onCalculate(task, layout, activity, source, options, request, phase, + mTmpCurrent, mTmpResult)) { case RESULT_SKIP: // Do not apply any results when we are told to skip continue; @@ -130,8 +131,8 @@ class LaunchParamsController { boolean layoutTask(Task task, WindowLayout layout, ActivityRecord activity, ActivityRecord source, ActivityOptions options) { - calculate(task, layout, activity, source, options, PHASE_BOUNDS, mTmpParams, - null /* request */); + calculate(task, layout, activity, source, options, null /* request */, PHASE_BOUNDS, + mTmpParams); // No changes, return. if (mTmpParams.isEmpty()) { @@ -308,17 +309,17 @@ class LaunchParamsController { * launched should have this be non-null. * @param source the Activity that launched a new task. Could be {@code null}. * @param options {@link ActivityOptions} used to start the activity with. + * @param request Optional data to give more context on the launch * @param phase the calculation phase, see {@link Phase} * @param currentParams launching params after the process of last {@link * LaunchParamsModifier}. * @param outParams the result params to be set. - * @param request Optional data to give more context on the launch * @return see {@link LaunchParamsModifier.Result} */ @Result - int onCalculate(@Nullable Task task, WindowLayout layout, ActivityRecord activity, - ActivityRecord source, ActivityOptions options, @Phase int phase, - LaunchParams currentParams, LaunchParams outParams, - @Nullable Request request); + int onCalculate(@Nullable Task task, @Nullable WindowLayout layout, + @Nullable ActivityRecord activity, @Nullable ActivityRecord source, + @Nullable ActivityOptions options, @Nullable Request request, + @Phase int phase, LaunchParams currentParams, LaunchParams outParams); } } diff --git a/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java b/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java index bcacf17b6c986..12f86112d751e 100644 --- a/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java +++ b/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java @@ -95,30 +95,22 @@ class TaskLaunchParamsModifier implements LaunchParamsModifier { mSupervisor = supervisor; } - @VisibleForTesting - int onCalculate(Task task, ActivityInfo.WindowLayout layout, ActivityRecord activity, - ActivityRecord source, ActivityOptions options, LaunchParams currentParams, - LaunchParams outParams) { - return onCalculate(task, layout, activity, source, options, PHASE_BOUNDS, currentParams, - outParams, null); - } - @Override - public int onCalculate(@Nullable Task task, @NonNull ActivityInfo.WindowLayout layout, - @NonNull ActivityRecord activity, @Nullable ActivityRecord source, - ActivityOptions options, int phase, LaunchParams currentParams, LaunchParams outParams, - @Nullable Request request) { + public int onCalculate(@Nullable Task task, @Nullable ActivityInfo.WindowLayout layout, + @Nullable ActivityRecord activity, @Nullable ActivityRecord source, + @Nullable ActivityOptions options, @Nullable Request request, int phase, + LaunchParams currentParams, LaunchParams outParams) { initLogBuilder(task, activity); - final int result = calculate(task, layout, activity, source, options, phase, currentParams, - outParams, request); + final int result = calculate(task, layout, activity, source, options, request, phase, + currentParams, outParams); outputLog(); return result; } - private int calculate(@Nullable Task task, @NonNull ActivityInfo.WindowLayout layout, - @NonNull ActivityRecord activity, @Nullable ActivityRecord source, - ActivityOptions options, int phase, LaunchParams currentParams, LaunchParams outParams, - @Nullable Request request) { + private int calculate(@Nullable Task task, @Nullable ActivityInfo.WindowLayout layout, + @Nullable ActivityRecord activity, @Nullable ActivityRecord source, + @Nullable ActivityOptions options, @Nullable Request request, int phase, + LaunchParams currentParams, LaunchParams outParams) { final ActivityRecord root; if (task != null) { root = task.getRootActivity() == null ? activity : task.getRootActivity(); diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java index 5695412394ce7..76e98ab74c036 100644 --- a/services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java @@ -422,7 +422,7 @@ public class ActivityStarterTests extends WindowTestsBase { // verify that values are passed to the modifier. Values are passed thrice -- two for // setting initial state, another when task is created. verify(modifier, times(3)).onCalculate(any(), eq(windowLayout), any(), any(), eq(options), - anyInt(), any(), any(), any()); + any(), anyInt(), any(), any()); } /** diff --git a/services/tests/wmtests/src/com/android/server/wm/LaunchParamsControllerTests.java b/services/tests/wmtests/src/com/android/server/wm/LaunchParamsControllerTests.java index a99e40cc19ec5..089fd20824124 100644 --- a/services/tests/wmtests/src/com/android/server/wm/LaunchParamsControllerTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/LaunchParamsControllerTests.java @@ -95,10 +95,10 @@ public class LaunchParamsControllerTests extends WindowTestsBase { final ActivityOptions options = mock(ActivityOptions.class); final Request request = new Request(); - mController.calculate(record.getTask(), layout, record, source, options, PHASE_BOUNDS, - new LaunchParams(), request); + mController.calculate(record.getTask(), layout, record, source, options, request, + PHASE_BOUNDS, new LaunchParams()); verify(positioner, times(1)).onCalculate(eq(record.getTask()), eq(layout), eq(record), - eq(source), eq(options), anyInt(), any(), any(), eq(request)); + eq(source), eq(options), eq(request), anyInt(), any(), any()); } /** @@ -121,9 +121,9 @@ public class LaunchParamsControllerTests extends WindowTestsBase { mPersister.putLaunchParams(userId, name, expected); mController.calculate(activity.getTask(), null /*layout*/, activity, null /*source*/, - null /*options*/, PHASE_BOUNDS, new LaunchParams(), null /* request */); - verify(positioner, times(1)).onCalculate(any(), any(), any(), any(), any(), anyInt(), - eq(expected), any(), any()); + null /*options*/, null /*request*/, PHASE_BOUNDS, new LaunchParams()); + verify(positioner, times(1)).onCalculate(any(), any(), any(), any(), any(), any(), + anyInt(), eq(expected), any()); } /** @@ -141,10 +141,10 @@ public class LaunchParamsControllerTests extends WindowTestsBase { mController.registerModifier(earlyExitPositioner); mController.calculate(null /*task*/, null /*layout*/, null /*activity*/, - null /*source*/, null /*options*/, PHASE_BOUNDS, new LaunchParams(), - null /* request */); - verify(ignoredPositioner, never()).onCalculate(any(), any(), any(), any(), any(), anyInt(), - any(), any(), any()); + null /*source*/, null /*options*/, null /*request*/, + PHASE_BOUNDS, new LaunchParams()); + verify(ignoredPositioner, never()).onCalculate(any(), any(), any(), any(), any(), any(), + anyInt(), any(), any()); } /** @@ -160,22 +160,22 @@ public class LaunchParamsControllerTests extends WindowTestsBase { mController.registerModifier(firstPositioner); mController.calculate(null /*task*/, null /*layout*/, null /*activity*/, - null /*source*/, null /*options*/, PHASE_BOUNDS, new LaunchParams(), - null /* request */); - verify(firstPositioner, times(1)).onCalculate(any(), any(), any(), any(), any(), anyInt(), - any(), any(), any()); + null /*source*/, null /*options*/, null /*request*/, PHASE_BOUNDS, + new LaunchParams()); + verify(firstPositioner, times(1)).onCalculate(any(), any(), any(), any(), any(), any(), + anyInt(), any(), any()); final LaunchParamsModifier secondPositioner = spy(earlyExitPositioner); mController.registerModifier(secondPositioner); mController.calculate(null /*task*/, null /*layout*/, null /*activity*/, - null /*source*/, null /*options*/, PHASE_BOUNDS, new LaunchParams(), - null /* request */); - verify(firstPositioner, times(1)).onCalculate(any(), any(), any(), any(), any(), anyInt(), - any(), any(), any()); - verify(secondPositioner, times(1)).onCalculate(any(), any(), any(), any(), any(), anyInt(), - any(), any(), any()); + null /*source*/, null /*options*/, null /*request*/, PHASE_BOUNDS, + new LaunchParams()); + verify(firstPositioner, times(1)).onCalculate(any(), any(), any(), any(), any(), any(), + anyInt(), any(), any()); + verify(secondPositioner, times(1)).onCalculate(any(), any(), any(), any(), any(), any(), + anyInt(), any(), any()); } /** @@ -197,10 +197,10 @@ public class LaunchParamsControllerTests extends WindowTestsBase { mController.registerModifier(positioner2); mController.calculate(null /*task*/, null /*layout*/, null /*activity*/, null /*source*/, - null /*options*/, PHASE_BOUNDS, new LaunchParams(), null /* request */); + null /*options*/, null /*request*/, PHASE_BOUNDS, new LaunchParams()); - verify(positioner1, times(1)).onCalculate(any(), any(), any(), any(), any(), anyInt(), - eq(positioner2.getLaunchParams()), any(), any()); + verify(positioner1, times(1)).onCalculate(any(), any(), any(), any(), any(), any(), + anyInt(), eq(positioner2.getLaunchParams()), any()); } /** @@ -223,7 +223,7 @@ public class LaunchParamsControllerTests extends WindowTestsBase { final LaunchParams result = new LaunchParams(); mController.calculate(null /*task*/, null /*layout*/, null /*activity*/, null /*source*/, - null /*options*/, PHASE_BOUNDS, result, null /* request */); + null /*options*/, null /*request*/, PHASE_BOUNDS, result); assertEquals(result, positioner2.getLaunchParams()); } @@ -242,17 +242,17 @@ public class LaunchParamsControllerTests extends WindowTestsBase { // VR activities should always land on default display. mController.calculate(null /*task*/, null /*layout*/, vrActivity /*activity*/, - null /*source*/, null /*options*/, PHASE_BOUNDS, result, null /* request */); + null /*source*/, null /*options*/, null/*request*/, PHASE_BOUNDS, result); assertEquals(mRootWindowContainer.getDefaultTaskDisplayArea(), result.mPreferredTaskDisplayArea); // Otherwise, always lands on VR 2D display. final ActivityRecord vr2dActivity = new ActivityBuilder(mAtm).build(); mController.calculate(null /*task*/, null /*layout*/, vr2dActivity /*activity*/, - null /*source*/, null /*options*/, PHASE_BOUNDS, result, null /* request */); + null /*source*/, null /*options*/, null /*request*/, PHASE_BOUNDS, result); assertEquals(vrDisplay.getDefaultTaskDisplayArea(), result.mPreferredTaskDisplayArea); mController.calculate(null /*task*/, null /*layout*/, null /*activity*/, null /*source*/, - null /*options*/, PHASE_BOUNDS, result, null /* request */); + null /*options*/, null /*request*/, PHASE_BOUNDS, result); assertEquals(vrDisplay.getDefaultTaskDisplayArea(), result.mPreferredTaskDisplayArea); mAtm.mVr2dDisplayId = INVALID_DISPLAY; @@ -273,10 +273,10 @@ public class LaunchParamsControllerTests extends WindowTestsBase { final WindowLayout layout = new WindowLayout(0, 0, 0, 0, 0, 0, 0); final ActivityOptions options = mock(ActivityOptions.class); - mController.calculate(record.getTask(), layout, record, source, options, PHASE_BOUNDS, - new LaunchParams(), null /* request */); + mController.calculate(record.getTask(), layout, record, source, options, null/*request*/, + PHASE_BOUNDS, new LaunchParams()); verify(positioner, times(1)).onCalculate(eq(record.getTask()), eq(layout), eq(record), - eq(source), eq(options), eq(PHASE_BOUNDS), any(), any(), any()); + eq(source), eq(options), any(), eq(PHASE_BOUNDS), any(), any()); } /** @@ -408,9 +408,8 @@ public class LaunchParamsControllerTests extends WindowTestsBase { @Override public int onCalculate(Task task, WindowLayout layout, ActivityRecord activity, - ActivityRecord source, ActivityOptions options, int phase, - LaunchParams currentParams, LaunchParams outParams, - Request request) { + ActivityRecord source, ActivityOptions options, Request request, int phase, + LaunchParams currentParams, LaunchParams outParams) { outParams.set(mParams); return mReturnVal; } diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskLaunchParamsModifierTests.java b/services/tests/wmtests/src/com/android/server/wm/TaskLaunchParamsModifierTests.java index 269ce5d833f26..99bdf9f1caa41 100644 --- a/services/tests/wmtests/src/com/android/server/wm/TaskLaunchParamsModifierTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/TaskLaunchParamsModifierTests.java @@ -36,6 +36,7 @@ import static android.view.InsetsState.ITYPE_STATUS_BAR; import static com.android.dx.mockito.inline.extended.ExtendedMockito.doNothing; import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn; import static com.android.server.wm.ActivityStarter.Request; +import static com.android.server.wm.LaunchParamsController.LaunchParamsModifier.PHASE_BOUNDS; import static com.android.server.wm.LaunchParamsController.LaunchParamsModifier.RESULT_CONTINUE; import static com.android.server.wm.LaunchParamsController.LaunchParamsModifier.RESULT_SKIP; @@ -60,6 +61,7 @@ import android.view.InsetsState; import androidx.test.filters.SmallTest; import com.android.server.wm.LaunchParamsController.LaunchParams; +import com.android.server.wm.LaunchParamsController.LaunchParamsModifier.Result; import org.junit.Before; import org.junit.Test; @@ -108,8 +110,7 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { @Test public void testReturnsSkipWithEmptyActivity() { final Task task = new TaskBuilder(mSupervisor).build(); - assertEquals(RESULT_SKIP, mTarget.onCalculate(task, /* layout */ null, - /* activity */ null, /* source */ null, /* options */ null, mCurrent, mResult)); + assertEquals(RESULT_SKIP, new CalculateRequestBuilder().setActivity(null).calculate()); } // ============================= @@ -119,8 +120,7 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { public void testDefaultToPrimaryDisplayArea() { createNewDisplayContent(WINDOWING_MODE_FREEFORM); - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, /* layout */ null, - mActivity, /* source */ null, /* options */ null, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, new CalculateRequestBuilder().calculate()); assertEquals(mRootWindowContainer.getDefaultTaskDisplayArea(), mResult.mPreferredTaskDisplayArea); @@ -133,8 +133,7 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { mCurrent.mPreferredTaskDisplayArea = display.getDefaultTaskDisplayArea(); - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, /* layout */ null, - mActivity, /* source */ null, /* options */ null, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, new CalculateRequestBuilder().calculate()); assertEquals(display.getDefaultTaskDisplayArea(), mResult.mPreferredTaskDisplayArea); } @@ -150,8 +149,7 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { ActivityRecord source = createSourceActivity(fullscreenDisplay); - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, /* layout */ null, - mActivity, source, /* options */ null, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, new CalculateRequestBuilder().setSource(source).calculate()); assertEquals(fullscreenDisplay.getDefaultTaskDisplayArea(), mResult.mPreferredTaskDisplayArea); @@ -170,8 +168,8 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { ActivityOptions options = ActivityOptions.makeBasic(); options.setLaunchDisplayId(fullscreenDisplay.mDisplayId); - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, /* layout */ null, - mActivity, source, options, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setSource(source).setOptions(options).calculate()); assertEquals(fullscreenDisplay.getDefaultTaskDisplayArea(), mResult.mPreferredTaskDisplayArea); @@ -191,8 +189,8 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { options.setLaunchTaskDisplayArea(fullscreenDisplay.getDefaultTaskDisplayArea() .mRemoteToken.toWindowContainerToken()); - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, /* layout */ null, - mActivity, source, options, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setSource(source).setOptions(options).calculate()); assertEquals(fullscreenDisplay.getDefaultTaskDisplayArea(), mResult.mPreferredTaskDisplayArea); @@ -209,8 +207,11 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { ActivityRecord reusableActivity = createSourceActivity(fullscreenDisplay); ActivityRecord source = createSourceActivity(freeformDisplay); - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(reusableActivity.getTask(), - /* layout */ null, mActivity, source, /* options */ null, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder() + .setTask(reusableActivity.getTask()) + .setSource(source) + .calculate()); assertEquals(fullscreenDisplay.getDefaultTaskDisplayArea(), mResult.mPreferredTaskDisplayArea); @@ -222,8 +223,10 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { WINDOWING_MODE_FREEFORM); ActivityRecord source = createSourceActivity(freeformDisplay); - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(source.getTask(), null /* layout */, - null /* activity */, null /* source */, null /* options */, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder() + .setTask(source.getTask()) + .calculate()); assertEquals(freeformDisplay.getDefaultTaskDisplayArea(), mResult.mPreferredTaskDisplayArea); @@ -242,8 +245,11 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { source.mHandoverLaunchDisplayId = freeformDisplay.mDisplayId; source.noDisplay = true; - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(reusableActivity.getTask(), - null /* layout */, mActivity, source, null /* options */, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder() + .setTask(reusableActivity.getTask()) + .setSource(source) + .calculate()); assertEquals(freeformDisplay.getDefaultTaskDisplayArea(), mResult.mPreferredTaskDisplayArea); @@ -262,8 +268,11 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { source.mHandoverTaskDisplayArea = freeformDisplay.getDefaultTaskDisplayArea(); source.noDisplay = true; - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(reusableActivity.getTask(), - null /* layout */, mActivity, source, null /* options */, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder() + .setTask(reusableActivity.getTask()) + .setSource(source) + .calculate()); assertEquals(freeformDisplay.getDefaultTaskDisplayArea(), mResult.mPreferredTaskDisplayArea); @@ -273,7 +282,6 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { public void testUsesDisplayAreaFromTopMostActivityInApplicationIfAvailable() { final String processName = "processName"; final int uid = 124214; - final TestDisplayContent firstScreen = createNewDisplayContent(WINDOWING_MODE_FULLSCREEN); final TestDisplayContent secondScreen = createNewDisplayContent(WINDOWING_MODE_FULLSCREEN); final TaskDisplayArea expectedDisplayArea = secondScreen.getDefaultTaskDisplayArea(); final WindowProcessController controller = mock(WindowProcessController.class); @@ -286,17 +294,7 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { .when(mSupervisor.mService) .getProcessController(processName, uid); - assertEquals(RESULT_CONTINUE, mTarget.onCalculate( - null /* task */, - null /* layout */, - mActivity /* activity */, - null /* source */, - null /* options */, - -1 /* phase */, - mCurrent, - mResult, - null /* request */ - )); + assertEquals(RESULT_CONTINUE, new CalculateRequestBuilder().calculate()); assertEquals(expectedDisplayArea, mResult.mPreferredTaskDisplayArea); } @@ -305,7 +303,6 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { public void testUsesDisplayAreaFromLaunchingActivityIfApplicationLaunching() { final String processName = "processName"; final int uid = 124214; - final TestDisplayContent firstScreen = createNewDisplayContent(WINDOWING_MODE_FULLSCREEN); final TestDisplayContent secondScreen = createNewDisplayContent(WINDOWING_MODE_FULLSCREEN); final TaskDisplayArea expectedTaskDisplayArea = secondScreen.getDefaultTaskDisplayArea(); final WindowProcessController controller = mock(WindowProcessController.class); @@ -322,17 +319,7 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { .when(mSupervisor.mService) .getProcessController(mActivity.launchedFromPid, mActivity.launchedFromUid); - assertEquals(RESULT_CONTINUE, mTarget.onCalculate( - null /* task */, - null /* layout */, - mActivity /* activity */, - null /* source */, - null /* options */, - -1 /* phase */, - mCurrent, - mResult, - null /* request */ - )); + assertEquals(RESULT_CONTINUE, new CalculateRequestBuilder().calculate()); assertEquals(expectedTaskDisplayArea, mResult.mPreferredTaskDisplayArea); } @@ -363,17 +350,7 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { .when(mSupervisor.mService) .getProcessController(mActivity.launchedFromPid, mActivity.launchedFromUid); - assertEquals(RESULT_CONTINUE, mTarget.onCalculate( - null /* task */, - null /* layout */, - mActivity /* activity */, - null /* source */, - null /* options */, - -1 /* phase */, - mCurrent, - mResult, - null /* request */ - )); + assertEquals(RESULT_CONTINUE, new CalculateRequestBuilder().calculate()); assertEquals(expectedTaskDisplayArea, mResult.mPreferredTaskDisplayArea); } @@ -403,17 +380,8 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { .when(mSupervisor.mService) .getProcessController(request.realCallingPid, request.realCallingUid); - assertEquals(RESULT_CONTINUE, mTarget.onCalculate( - null /* task */, - null /* layout */, - mActivity /* activity */, - null /* source */, - null /* options */, - -1 /* phase */, - mCurrent, - mResult, - request - )); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setRequest(request).calculate()); assertEquals(expectedTaskDisplayArea, mResult.mPreferredTaskDisplayArea); } @@ -428,17 +396,7 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { .when(mSupervisor.mService) .getProcessController(mActivity.launchedFromPid, mActivity.launchedFromUid); - assertEquals(RESULT_CONTINUE, mTarget.onCalculate( - null /* task */, - null /* layout */, - mActivity /* activity */, - null /* source */, - null /* options */, - -1 /* phase */, - mCurrent, - mResult, - null /* request */ - )); + assertEquals(RESULT_CONTINUE, new CalculateRequestBuilder().calculate()); assertEquals(DEFAULT_DISPLAY, mResult.mPreferredTaskDisplayArea.getDisplayId()); } @@ -456,8 +414,8 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { mCurrent.mPreferredTaskDisplayArea = freeformDisplay.getDefaultTaskDisplayArea(); - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, /* layout */ null, - mActivity, /* source */ null, options, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setOptions(options).calculate()); assertEquivalentWindowingMode(WINDOWING_MODE_FREEFORM, mResult.mWindowingMode, WINDOWING_MODE_FREEFORM); @@ -470,8 +428,8 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { mCurrent.mPreferredTaskDisplayArea = mRootWindowContainer.getDefaultTaskDisplayArea(); - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, /* layout */ null, - mActivity, /* source */ null, options, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setOptions(options).calculate()); assertEquivalentWindowingMode(WINDOWING_MODE_FULLSCREEN, mResult.mWindowingMode, WINDOWING_MODE_FULLSCREEN); @@ -484,8 +442,8 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { final ActivityRecord source = createSourceActivity(fullscreenDisplay); source.setWindowingMode(WINDOWING_MODE_FREEFORM); - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, /* layout */ null, - mActivity, source, /* options */ null, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setSource(source).calculate()); assertEquivalentWindowingMode(WINDOWING_MODE_FREEFORM, mResult.mWindowingMode, WINDOWING_MODE_FULLSCREEN); @@ -501,8 +459,8 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { mCurrent.mPreferredTaskDisplayArea = freeformDisplay.getDefaultTaskDisplayArea(); - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, /* layout */ null, - mActivity, /* source */ null, options, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setOptions(options).calculate()); assertEquivalentWindowingMode(WINDOWING_MODE_PINNED, mResult.mWindowingMode, WINDOWING_MODE_FREEFORM); @@ -519,8 +477,8 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { mCurrent.mPreferredTaskDisplayArea = freeformDisplay.getDefaultTaskDisplayArea(); - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, /* layout */ null, - mActivity, /* source */ null, options, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setOptions(options).calculate()); assertEquivalentWindowingMode(WINDOWING_MODE_PINNED, mResult.mWindowingMode, WINDOWING_MODE_FREEFORM); @@ -533,8 +491,8 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { mCurrent.mPreferredTaskDisplayArea = mRootWindowContainer.getDefaultTaskDisplayArea(); - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, /* layout */ null, - mActivity, /* source */ null, options, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setOptions(options).calculate()); assertEquivalentWindowingMode(WINDOWING_MODE_FULLSCREEN, mResult.mWindowingMode, WINDOWING_MODE_FULLSCREEN); @@ -550,8 +508,8 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { final ActivityInfo.WindowLayout layout = new WindowLayoutBuilder() .setWidth(120).setHeight(80).build(); - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, layout, mActivity, - /* source */ null, /* options */ null, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setLayout(layout).calculate()); assertEquivalentWindowingMode(WINDOWING_MODE_FREEFORM, mResult.mWindowingMode, WINDOWING_MODE_FREEFORM); @@ -567,8 +525,8 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { final ActivityInfo.WindowLayout layout = new WindowLayoutBuilder() .setGravity(Gravity.LEFT).build(); - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, layout, mActivity, - /* source */ null, /* options */ null, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setLayout(layout).calculate()); assertEquivalentWindowingMode(WINDOWING_MODE_FREEFORM, mResult.mWindowingMode, WINDOWING_MODE_FREEFORM); @@ -581,8 +539,8 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { mCurrent.mPreferredTaskDisplayArea = mRootWindowContainer.getDefaultTaskDisplayArea(); - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, layout, mActivity, - /* source */ null, /* options */ null, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setLayout(layout).calculate()); assertEquivalentWindowingMode(WINDOWING_MODE_FULLSCREEN, mResult.mWindowingMode, WINDOWING_MODE_FULLSCREEN); @@ -594,8 +552,7 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { mCurrent.mWindowingMode = WINDOWING_MODE_FREEFORM; mCurrent.mBounds.set(0, 0, 200, 100); - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, /* layout */ null, - mActivity, /* source */ null, /* options */ null, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, new CalculateRequestBuilder().calculate()); assertEquivalentWindowingMode(WINDOWING_MODE_FULLSCREEN, mResult.mWindowingMode, WINDOWING_MODE_FULLSCREEN); @@ -609,8 +566,7 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { mCurrent.mPreferredTaskDisplayArea = freeformDisplay.getDefaultTaskDisplayArea(); mCurrent.mWindowingMode = WINDOWING_MODE_FULLSCREEN; - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, /* layout */ null, - mActivity, /* source */ null, /* options */ null, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, new CalculateRequestBuilder().calculate()); assertEquivalentWindowingMode(WINDOWING_MODE_FULLSCREEN, mResult.mWindowingMode, WINDOWING_MODE_FREEFORM); @@ -625,8 +581,7 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { mCurrent.mWindowingMode = WINDOWING_MODE_FREEFORM; mCurrent.mBounds.set(0, 0, 200, 100); - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, /* layout */ null, - mActivity, /* source */ null, /* options */ null, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, new CalculateRequestBuilder().calculate()); assertEquivalentWindowingMode(WINDOWING_MODE_FREEFORM, mResult.mWindowingMode, WINDOWING_MODE_FREEFORM); @@ -648,8 +603,8 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { mActivity.info.resizeMode = RESIZE_MODE_UNRESIZEABLE; - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, /* layout */ null, - mActivity, /* source */ null, options, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setOptions(options).calculate()); assertEquivalentWindowingMode(WINDOWING_MODE_FULLSCREEN, mResult.mWindowingMode, WINDOWING_MODE_FREEFORM); @@ -673,8 +628,8 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { mActivity.info.resizeMode = RESIZE_MODE_UNRESIZEABLE; - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, /* layout */ null, - mActivity, /* source */ null, options, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setOptions(options).calculate()); assertEquals(expectedLaunchBounds, mResult.mBounds); @@ -694,8 +649,8 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { mActivity.info.resizeMode = RESIZE_MODE_UNRESIZEABLE; - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, /* layout */ null, - mActivity, /* source */ null, options, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setOptions(options).calculate()); assertEquivalentWindowingMode(WINDOWING_MODE_FREEFORM, mResult.mWindowingMode, WINDOWING_MODE_FULLSCREEN); @@ -706,8 +661,8 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { final ActivityOptions options = ActivityOptions.makeBasic(); options.setLaunchDisplayId(DEFAULT_DISPLAY); - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, /* layout */ null, - mActivity, /* source */ null, options, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setOptions(options).calculate()); assertEquivalentWindowingMode(WINDOWING_MODE_FULLSCREEN, mResult.mWindowingMode, WINDOWING_MODE_FULLSCREEN); @@ -722,8 +677,8 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { options.setLaunchDisplayId(freeformDisplay.mDisplayId); options.setLaunchWindowingMode(WINDOWING_MODE_FULLSCREEN); - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, /* layout */ null, - mActivity, /* source */ null, options, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setOptions(options).calculate()); assertEquivalentWindowingMode(WINDOWING_MODE_FULLSCREEN, mResult.mWindowingMode, WINDOWING_MODE_FREEFORM); @@ -737,8 +692,8 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { final ActivityOptions options = ActivityOptions.makeBasic(); options.setLaunchDisplayId(freeformDisplay.mDisplayId); - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, /* layout */ null, - mActivity, /* source */ null, options, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setOptions(options).calculate()); assertEquivalentWindowingMode(WINDOWING_MODE_FREEFORM, mResult.mWindowingMode, WINDOWING_MODE_FREEFORM); @@ -754,8 +709,8 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { mActivity.info.applicationInfo.targetSdkVersion = Build.VERSION_CODES.LOLLIPOP; - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, /* layout */ null, - mActivity, /* source */ null, options, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setOptions(options).calculate()); assertEquivalentWindowingMode(WINDOWING_MODE_FREEFORM, mResult.mWindowingMode, WINDOWING_MODE_FREEFORM); @@ -768,8 +723,8 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { mActivity.info.applicationInfo.targetSdkVersion = Build.VERSION_CODES.LOLLIPOP; - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, /* layout */ null, - mActivity, /* source */ null, options, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setOptions(options).calculate()); assertEquivalentWindowingMode(WINDOWING_MODE_FULLSCREEN, mResult.mWindowingMode, WINDOWING_MODE_FULLSCREEN); @@ -791,8 +746,8 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { mCurrent.mPreferredTaskDisplayArea = freeformDisplay.getDefaultTaskDisplayArea(); - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, /* layout */ null, - mActivity, /* source */ null, options, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setOptions(options).calculate()); assertEquals(expected, mResult.mBounds); } @@ -808,8 +763,8 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { final Rect expected = new Rect(0, 0, 150, 150); options.setLaunchBounds(expected); - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, /* layout */ null, - mActivity, source, options, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setSource(source).setOptions(options).calculate()); assertEquals(expected, mResult.mBounds); } @@ -824,8 +779,8 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { final ActivityInfo.WindowLayout layout = new WindowLayoutBuilder() .setGravity(Gravity.LEFT).build(); - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, layout, mActivity, - /* source */ null, /* options */ null, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setLayout(layout).calculate()); assertEquals(DISPLAY_STABLE_BOUNDS.left, mResult.mBounds.left); } @@ -840,8 +795,8 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { final ActivityInfo.WindowLayout layout = new WindowLayoutBuilder() .setGravity(Gravity.TOP).build(); - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, layout, mActivity, - /* source */ null, /* options */ null, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setLayout(layout).calculate()); assertEquals(DISPLAY_STABLE_BOUNDS.top, mResult.mBounds.top); } @@ -856,8 +811,8 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { final ActivityInfo.WindowLayout layout = new WindowLayoutBuilder() .setGravity(Gravity.TOP | Gravity.LEFT).build(); - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, layout, mActivity, - /* source */ null, /* options */ null, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setLayout(layout).calculate()); assertEquals(DISPLAY_STABLE_BOUNDS.left, mResult.mBounds.left); assertEquals(DISPLAY_STABLE_BOUNDS.top, mResult.mBounds.top); @@ -873,8 +828,8 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { final ActivityInfo.WindowLayout layout = new WindowLayoutBuilder() .setGravity(Gravity.RIGHT).build(); - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, layout, mActivity, - /* source */ null, /* options */ null, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setLayout(layout).calculate()); assertEquals(DISPLAY_STABLE_BOUNDS.right, mResult.mBounds.right); } @@ -889,8 +844,8 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { final ActivityInfo.WindowLayout layout = new WindowLayoutBuilder() .setGravity(Gravity.BOTTOM).build(); - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, layout, mActivity, - /* source */ null, /* options */ null, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setLayout(layout).calculate()); assertEquals(DISPLAY_STABLE_BOUNDS.bottom, mResult.mBounds.bottom); } @@ -905,8 +860,8 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { final ActivityInfo.WindowLayout layout = new WindowLayoutBuilder() .setGravity(Gravity.BOTTOM | Gravity.RIGHT).build(); - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, layout, mActivity, - /* source */ null, /* options */ null, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setLayout(layout).calculate()); assertEquals(DISPLAY_STABLE_BOUNDS.right, mResult.mBounds.right); assertEquals(DISPLAY_STABLE_BOUNDS.bottom, mResult.mBounds.bottom); @@ -922,8 +877,8 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { final ActivityInfo.WindowLayout layout = new WindowLayoutBuilder() .setWidth(120).setHeight(80).build(); - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, layout, mActivity, - /* source */ null, /* options */ null, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setLayout(layout).calculate()); assertEquals(new Rect(800, 400, 920, 480), mResult.mBounds); } @@ -938,8 +893,8 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { final ActivityInfo.WindowLayout layout = new WindowLayoutBuilder() .setWidth(120).setHeight(80).setGravity(Gravity.LEFT).build(); - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, layout, mActivity, - /* source */ null, /* options */ null, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setLayout(layout).calculate()); assertEquals(new Rect(100, 400, 220, 480), mResult.mBounds); } @@ -954,8 +909,8 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { final ActivityInfo.WindowLayout layout = new WindowLayoutBuilder() .setWidth(120).setHeight(80).setGravity(Gravity.TOP).build(); - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, layout, mActivity, - /* source */ null, /* options */ null, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setLayout(layout).calculate()); assertEquals(new Rect(800, 200, 920, 280), mResult.mBounds); } @@ -970,8 +925,8 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { final ActivityInfo.WindowLayout layout = new WindowLayoutBuilder() .setWidth(120).setHeight(80).setGravity(Gravity.TOP | Gravity.LEFT).build(); - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, layout, mActivity, - /* source */ null, /* options */ null, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setLayout(layout).calculate()); assertEquals(new Rect(100, 200, 220, 280), mResult.mBounds); } @@ -986,8 +941,8 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { final ActivityInfo.WindowLayout layout = new WindowLayoutBuilder() .setWidth(120).setHeight(80).setGravity(Gravity.RIGHT).build(); - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, layout, mActivity, - /* source */ null, /* options */ null, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setLayout(layout).calculate()); assertEquals(new Rect(1500, 400, 1620, 480), mResult.mBounds); } @@ -1002,8 +957,8 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { final ActivityInfo.WindowLayout layout = new WindowLayoutBuilder() .setWidth(120).setHeight(80).setGravity(Gravity.BOTTOM).build(); - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, layout, mActivity, - /* source */ null, /* options */ null, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setLayout(layout).calculate()); assertEquals(new Rect(800, 600, 920, 680), mResult.mBounds); } @@ -1018,8 +973,8 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { final ActivityInfo.WindowLayout layout = new WindowLayoutBuilder() .setWidth(120).setHeight(80).setGravity(Gravity.BOTTOM | Gravity.RIGHT).build(); - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, layout, mActivity, - /* source */ null, /* options */ null, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setLayout(layout).calculate()); assertEquals(new Rect(1500, 600, 1620, 680), mResult.mBounds); } @@ -1034,8 +989,8 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { final ActivityInfo.WindowLayout layout = new WindowLayoutBuilder() .setWidthFraction(0.125f).setHeightFraction(0.1f).build(); - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, layout, mActivity, - /* source */ null, /* options */ null, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setLayout(layout).calculate()); assertEquals(new Rect(765, 416, 955, 464), mResult.mBounds); } @@ -1049,8 +1004,7 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { mCurrent.mWindowingMode = WINDOWING_MODE_FREEFORM; mCurrent.mBounds.set(0, 0, 200, 100); - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, /* layout */ null, - mActivity, /* source */ null, /* options */ null, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, new CalculateRequestBuilder().calculate()); assertEquals(new Rect(0, 0, 200, 100), mResult.mBounds); } @@ -1064,8 +1018,7 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { mCurrent.mWindowingMode = WINDOWING_MODE_FULLSCREEN; mCurrent.mBounds.set(0, 0, 200, 100); - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, /* layout */ null, - mActivity, /* source */ null, /* options */ null, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, new CalculateRequestBuilder().calculate()); assertEquals(new Rect(0, 0, 200, 100), mResult.mBounds); } @@ -1081,8 +1034,8 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { mActivity.info.screenOrientation = SCREEN_ORIENTATION_NOSENSOR; - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, /* layout */ null, - mActivity, /* source */ null, options, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setOptions(options).calculate()); final int orientationForDisplay = orientationFromBounds(freeformDisplay.getBounds()); final int orientationForTask = orientationFromBounds(mResult.mBounds); @@ -1105,8 +1058,8 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { mActivity.info.screenOrientation = SCREEN_ORIENTATION_LANDSCAPE; - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, /* layout */ null, - mActivity, /* source */ null, options, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setOptions(options).calculate()); assertEquals(SCREEN_ORIENTATION_LANDSCAPE, orientationFromBounds(mResult.mBounds)); } @@ -1122,8 +1075,8 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { mActivity.info.screenOrientation = SCREEN_ORIENTATION_PORTRAIT; - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, /* layout */ null, - mActivity, /* source */ null, options, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setOptions(options).calculate()); assertEquals(SCREEN_ORIENTATION_PORTRAIT, orientationFromBounds(mResult.mBounds)); } @@ -1138,8 +1091,8 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { mActivity.info.applicationInfo.targetSdkVersion = Build.VERSION_CODES.LOLLIPOP; - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, /* layout */ null, - mActivity, /* source */ null, options, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setOptions(options).calculate()); final int resultWidth = mResult.mBounds.width(); final int displayWidth = freeformDisplay.getBounds().width(); @@ -1162,8 +1115,8 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { mActivity.info.applicationInfo.targetSdkVersion = Build.VERSION_CODES.LOLLIPOP; - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, /* layout */ null, - mActivity, /* source */ null, options, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setOptions(options).calculate()); assertEquals("Distance to left and right should be equal.", mResult.mBounds.left - DISPLAY_STABLE_BOUNDS.left, @@ -1186,8 +1139,8 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { mActivity.info.applicationInfo.targetSdkVersion = Build.VERSION_CODES.LOLLIPOP; - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, /* layout */ null, - mActivity, source, options, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setSource(source).setOptions(options).calculate()); final Rect displayBounds = freeformDisplay.getBounds(); assertTrue("Left bounds should be larger than 0.", mResult.mBounds.left > 0); @@ -1213,8 +1166,8 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { mActivity.info.applicationInfo.targetSdkVersion = Build.VERSION_CODES.LOLLIPOP; - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, /* layout */ null, - mActivity, source, options, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setSource(source).setOptions(options).calculate()); final Rect displayBounds = freeformDisplay.getBounds(); assertTrue("display bounds doesn't contain result. display bounds: " @@ -1235,8 +1188,8 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { mActivity.info.applicationInfo.targetSdkVersion = Build.VERSION_CODES.LOLLIPOP; - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, /* layout */ null, - mActivity, source, options, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setSource(source).setOptions(options).calculate()); final Rect displayBounds = freeformDisplay.getBounds(); assertTrue("display bounds doesn't contain result. display bounds: " @@ -1257,8 +1210,8 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { mActivity.info.applicationInfo.targetSdkVersion = Build.VERSION_CODES.LOLLIPOP; - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, /* layout */ null, - mActivity, /* source */ null, options, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setOptions(options).calculate()); assertTrue("Result bounds should start from app bounds's origin, but it's " + mResult.mBounds, @@ -1284,8 +1237,8 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { mActivity.info.applicationInfo.targetSdkVersion = Build.VERSION_CODES.LOLLIPOP; - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, /* layout */ null, - mActivity, /* source */ null, options, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setOptions(options).calculate()); assertTrue("Result bounds should start from top-right corner of app bounds, but " + "it's " + mResult.mBounds, @@ -1311,8 +1264,8 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { mActivity.info.applicationInfo.targetSdkVersion = Build.VERSION_CODES.LOLLIPOP; - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, layout, mActivity, - /* source */ null, options, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setLayout(layout).setOptions(options).calculate()); assertEquals(500, mResult.mBounds.width()); assertEquals(800, mResult.mBounds.height()); @@ -1329,8 +1282,8 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { mActivity.info.screenOrientation = SCREEN_ORIENTATION_PORTRAIT; - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, /* layout */ null, - mActivity, /* source */ null, options, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setOptions(options).calculate()); assertEquals(new Rect(200, 0, 400, 400), mResult.mBounds); } @@ -1346,8 +1299,8 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { options.setLaunchDisplayId(freeformDisplay.mDisplayId); options.setLaunchBounds(new Rect(50, 50, 500, 300)); - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, /* layout */ null, - mActivity, /* source */ null, options, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setOptions(options).calculate()); assertEquals(new Rect(170, 50, 620, 300), mResult.mBounds); } @@ -1363,8 +1316,8 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { options.setLaunchDisplayId(freeformDisplay.mDisplayId); options.setLaunchBounds(new Rect(1720, 50, 1850, 300)); - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, /* layout */ null, - mActivity, /* source */ null, options, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setOptions(options).calculate()); assertEquals(new Rect(1600, 50, 1730, 300), mResult.mBounds); } @@ -1380,8 +1333,8 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { options.setLaunchDisplayId(freeformDisplay.mDisplayId); options.setLaunchBounds(new Rect(0, 0, 1800, 200)); - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, /* layout */ null, - mActivity, /* source */ null, options, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setOptions(options).calculate()); assertEquals(new Rect(120, 0, 1920, 200), mResult.mBounds); } @@ -1397,8 +1350,8 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { options.setLaunchDisplayId(freeformDisplay.mDisplayId); options.setLaunchBounds(new Rect(120, 0, 1860, 200)); - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, /* layout */ null, - mActivity, /* source */ null, options, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setOptions(options).calculate()); assertEquals(new Rect(0, 0, 1740, 200), mResult.mBounds); } @@ -1414,8 +1367,8 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { options.setLaunchDisplayId(freeformDisplay.mDisplayId); options.setLaunchBounds(new Rect(120, 0, 1800, 1013)); - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, /* layout */ null, - mActivity, /* source */ null, options, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setOptions(options).calculate()); assertEquals(new Rect(240, 67, 1920, 1080), mResult.mBounds); } @@ -1431,8 +1384,8 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { options.setLaunchDisplayId(freeformDisplay.mDisplayId); options.setLaunchBounds(new Rect(120, 67, 1800, 1020)); - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, /* layout */ null, - mActivity, /* source */ null, options, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setOptions(options).calculate()); assertEquals(new Rect(0, 0, 1680, 953), mResult.mBounds); } @@ -1443,8 +1396,7 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { mCurrent.mWindowingMode = WINDOWING_MODE_FREEFORM; mCurrent.mBounds.set(0, 0, 200, 100); - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, /* layout */ null, - mActivity, /* source */ null, /* options */ null, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, new CalculateRequestBuilder().calculate()); // Returned bounds with in fullscreen mode will be set to last non-fullscreen bounds. assertEquals(new Rect(0, 0, 200, 100), mResult.mBounds); @@ -1462,8 +1414,8 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { final ActivityOptions options = ActivityOptions.makeBasic(); options.setLaunchDisplayId(freeformDisplay.mDisplayId); - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, /* layout */ null, - mActivity, /* source */ null, options, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setOptions(options).calculate()); assertEquals(new Rect(100, 200, 400, 500), mResult.mBounds); } @@ -1479,8 +1431,7 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { mCurrent.mWindowingMode = WINDOWING_MODE_FREEFORM; mCurrent.mBounds.set(0, 0, 200, 100); - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, /* layout */ null, - mActivity, /* source */ null, /* options */ null, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, new CalculateRequestBuilder().calculate()); assertEquals(new Rect(120, 0, 320, 100), mResult.mBounds); } @@ -1510,8 +1461,7 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { try { mAtm.mSupportsMultiDisplay = false; - assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, /* layout */ null, - mActivity, /* source */ null, /* options */ null, mCurrent, mResult)); + assertEquals(RESULT_CONTINUE, new CalculateRequestBuilder().calculate()); assertEquals(mRootWindowContainer.getDefaultTaskDisplayArea(), mResult.mPreferredTaskDisplayArea); } finally { @@ -1592,6 +1542,53 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { : SCREEN_ORIENTATION_PORTRAIT; } + private class CalculateRequestBuilder { + private Task mTask; + private ActivityInfo.WindowLayout mLayout; + private ActivityRecord mActivity = TaskLaunchParamsModifierTests.this.mActivity; + private ActivityRecord mSource; + private ActivityOptions mOptions; + private Request mRequest; + private int mPhase = PHASE_BOUNDS; + private LaunchParams mCurrentParams = mCurrent; + private LaunchParams mOutParams = mResult; + + private CalculateRequestBuilder setTask(Task task) { + mTask = task; + return this; + } + + private CalculateRequestBuilder setLayout(ActivityInfo.WindowLayout layout) { + mLayout = layout; + return this; + } + + private CalculateRequestBuilder setActivity(ActivityRecord activity) { + mActivity = activity; + return this; + } + + private CalculateRequestBuilder setSource(ActivityRecord source) { + mSource = source; + return this; + } + + private CalculateRequestBuilder setOptions(ActivityOptions options) { + mOptions = options; + return this; + } + + private CalculateRequestBuilder setRequest(Request request) { + mRequest = request; + return this; + } + + private @Result int calculate() { + return mTarget.onCalculate(mTask, mLayout, mActivity, mSource, mOptions, mRequest, + mPhase, mCurrentParams, mOutParams); + } + } + private static class WindowLayoutBuilder { private int mWidth = -1; private int mHeight = -1;