Make LaunchingTaskPositioner stateless.
The initial design cached calculations based on the available bounds.
This required the positioner to be involved in stack lifecycle events
and tied to a particular stack.
This changelist removes these dependencies and makes the
ActivityStackSupervisor the owner.
Bug: 64144308
Test: bit FrameworksServicesTests:com.android.server.am.LaunchBoundsTests
Change-Id: I4e2df4398b0818cec71d3d90fe409012191406c0
diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
index bac71c7..c5cb5bb 100644
--- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java
+++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
@@ -293,6 +293,8 @@
WindowManagerService mWindowManager;
DisplayManager mDisplayManager;
+ LaunchingTaskPositioner mTaskPositioner = new LaunchingTaskPositioner();
+
/** Counter for next free stack ID to use for dynamic activity stacks. */
private int mNextFreeStackId = 0;
@@ -2138,6 +2140,10 @@
|| mService.mSupportsFreeformWindowManagement;
}
+ LaunchingTaskPositioner getLaunchingTaskPositioner() {
+ return mTaskPositioner;
+ }
+
protected <T extends ActivityStack> T getStack(int stackId) {
for (int i = mActivityDisplays.size() - 1; i >= 0; --i) {
final T stack = mActivityDisplays.valueAt(i).getStack(stackId);