Non colliding positioning of entering resizeable tasks.

When a new task enters freeform work space, it becomes full screen. This
CL makes it non fullscreen upon entry and also tries to position the
task in a way, that won't collide with existing tasks (so it's clear to
the user, that they are still there).

Change-Id: Ia04fdcadd0e85b268c323358cd4b3e04affa7939
diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
index 12b848b..0bdeed7 100644
--- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java
+++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
@@ -2977,7 +2977,7 @@
 
             }
         }
-        stack.mBounds = stack.mFullscreen ? null : new Rect(bounds);
+        stack.setBounds(bounds);
 
         if (r != null) {
             final boolean updated = stack.ensureActivityConfigurationLocked(r, 0);
@@ -3112,7 +3112,7 @@
                 "Added restored task=" + task + " to stack=" + stack);
         final ArrayList<ActivityRecord> activities = task.mActivities;
         for (int activityNdx = activities.size() - 1; activityNdx >= 0; --activityNdx) {
-            stack.addAppToken(activities.get(activityNdx), task);
+            stack.addConfigOverride(activities.get(activityNdx), task);
         }
         return true;
     }
@@ -4387,13 +4387,8 @@
             if (DEBUG_STACK) Slog.d(TAG_STACK, "attachToDisplayLocked: " + this
                     + " to display=" + activityDisplay + " onTop=" + onTop);
             mActivityDisplay = activityDisplay;
-            mStack.mDisplayId = activityDisplay.mDisplayId;
-            mStack.mStacks = activityDisplay.mStacks;
-
+            mStack.attachDisplay(activityDisplay, onTop);
             activityDisplay.attachActivities(mStack, onTop);
-            mStack.mBounds =
-                    mWindowManager.attachStack(mStackId, activityDisplay.mDisplayId, onTop);
-            mStack.mFullscreen = mStack.mBounds == null;
         }
 
         @Override
@@ -4465,9 +4460,7 @@
             if (mActivityDisplay != null) {
                 mActivityDisplay.detachActivitiesLocked(mStack);
                 mActivityDisplay = null;
-                mStack.mDisplayId = -1;
-                mStack.mStacks = null;
-                mWindowManager.detachStack(mStackId);
+                mStack.detachDisplay();
             }
         }