API for an Activity to enter picture-in-picture mode.

Bug: 25580820
Change-Id: I5c1bf17dd5dd92622458a61517bc9941e4ee5277
diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
index 9117806..f7d66af 100644
--- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java
+++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
@@ -3623,24 +3623,30 @@
             return false;
         }
 
+        moveActivityToStackLocked(r, PINNED_STACK_ID, "moveTopActivityToPinnedStack", bounds);
+        return true;
+    }
+
+    void moveActivityToStackLocked(ActivityRecord r, int stackId, String reason, Rect bounds) {
         final TaskRecord task = r.task;
         if (task.mActivities.size() == 1) {
             // There is only one activity in the task. So, we can just move the task over to the
-            // pinned stack without re-parenting the activity in a different task.
-            moveTaskToStackLocked(task.taskId, PINNED_STACK_ID, ON_TOP, FORCE_FOCUS,
-                    "moveTopActivityToPinnedStack", true /* animate */);
+            // stack without re-parenting the activity in a different task.
+            moveTaskToStackLocked(
+                    task.taskId, stackId, ON_TOP, FORCE_FOCUS, reason, true /* animate */);
         } else {
             final ActivityStack pinnedStack = getStack(PINNED_STACK_ID, CREATE_IF_NEEDED, ON_TOP);
             pinnedStack.moveActivityToStack(r);
         }
 
-        resizeStackLocked(PINNED_STACK_ID, bounds, !PRESERVE_WINDOWS, true);
+        if (bounds != null) {
+            resizeStackLocked(PINNED_STACK_ID, bounds, !PRESERVE_WINDOWS, true);
+        }
 
         // The task might have already been running and its visibility needs to be synchronized with
         // the visibility of the stack / windows.
         ensureActivitiesVisibleLocked(null, 0, !PRESERVE_WINDOWS);
         resumeTopActivitiesLocked();
-        return true;
     }
 
     void positionTaskInStackLocked(int taskId, int stackId, int position) {