Make PINNED mode alwaysCreateStack

Now that we don't have a re-used pinned stack anymore, this is
how it should be. This also helps CTS align closer to actual
app usage.

Also don't perform transactions on detached containers (but log
an error). This is because CTS triggers various pip events which
fire callbacks after the test tears-down.

Bug: 153201813
Test: PinnedStackTests pass
Change-Id: I57bf4db35f7c05c18a69d2bf39b66ccca07d39f2
diff --git a/services/core/java/com/android/server/wm/TaskDisplayArea.java b/services/core/java/com/android/server/wm/TaskDisplayArea.java
index ea9a362..d71e561 100644
--- a/services/core/java/com/android/server/wm/TaskDisplayArea.java
+++ b/services/core/java/com/android/server/wm/TaskDisplayArea.java
@@ -879,6 +879,11 @@
                     + windowingMode);
         }
 
+        if (windowingMode == WINDOWING_MODE_PINNED && getRootPinnedTask() != null) {
+            // Only 1 stack can be PINNED at a time, so dismiss the existing one
+            getRootPinnedTask().dismissPip();
+        }
+
         final int stackId = getNextStackId();
         return createStackUnchecked(windowingMode, activityType, stackId, onTop, info, intent,
                 createdByOrganizer);