Dismiss docked stack on user switch

Having the docked stack across user switches currently leads
to issues like wrong configuration state for apps. Dismissing
docked stack for now until we find a better way to handle this.

Bug: 28195260
bug: 28221061
Change-Id: I568a2c69783b1f0d7016fe1a21df959f7c2c9145
diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
index 66bc51c..f192a9d 100644
--- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java
+++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
@@ -2997,7 +2997,11 @@
     }
 
     boolean switchUserLocked(int userId, UserState uss) {
-        mUserStackInFront.put(mCurrentUser, mFocusedStack.getStackId());
+        final int focusStackId = mFocusedStack.getStackId();
+        // We dismiss the docked stack whenever we switch users.
+        moveTasksToFullscreenStackLocked(DOCKED_STACK_ID, focusStackId == DOCKED_STACK_ID);
+
+        mUserStackInFront.put(mCurrentUser, focusStackId);
         final int restoreStackId = mUserStackInFront.get(userId, HOME_STACK_ID);
         mCurrentUser = userId;
 
@@ -3510,7 +3514,7 @@
 
             // Dismiss docked stack. If task appeared to be in docked stack but is not resizable -
             // we need to move it to top of fullscreen stack, otherwise it will be covered.
-            mService.moveTasksToFullscreenStack(DOCKED_STACK_ID, actualStackId == DOCKED_STACK_ID);
+            moveTasksToFullscreenStackLocked(DOCKED_STACK_ID, actualStackId == DOCKED_STACK_ID);
         } else if (task.mResizeMode == RESIZE_MODE_FORCE_RESIZEABLE) {
             String packageName = task.getTopActivity() != null
                     ? task.getTopActivity().appInfo.packageName : null;