diff --git a/packages/SystemUI/src/com/android/systemui/recents/misc/SystemServicesProxy.java b/packages/SystemUI/src/com/android/systemui/recents/misc/SystemServicesProxy.java index 87cfcff1066e3..2882cecc60621 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/misc/SystemServicesProxy.java +++ b/packages/SystemUI/src/com/android/systemui/recents/misc/SystemServicesProxy.java @@ -378,13 +378,19 @@ public class SystemServicesProxy { ActivityManager.StackInfo stackInfo = null; try { stackInfo = mIam.getStackInfo(DOCKED_STACK_ID); - if (stackInfo != null && stackInfo.userId != getCurrentUser()) { - return false; - } } catch (RemoteException e) { e.printStackTrace(); } - return stackInfo != null; + + if (stackInfo != null) { + int userId = getCurrentUser(); + boolean hasUserTask = false; + for (int i = stackInfo.taskUserIds.length - 1; i >= 0 && !hasUserTask; i--) { + hasUserTask = (stackInfo.taskUserIds[i] == userId); + } + return hasUserTask; + } + return false; } /** diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 1021411084c34..64563258fb6b1 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -5349,9 +5349,31 @@ public class WindowManagerService extends IWindowManager.Stub rebuildAppWindowListLocked(displayContent); } mWindowPlacerLocked.performSurfacePlacement(); + + // Notify whether the docked stack exists for the current user + getDefaultDisplayContentLocked().mDividerControllerLocked + .notifyDockedStackExistsChanged(hasDockedTasksForUser(newUserId)); } } + /** + * Returns whether there is a docked task for the current user. + */ + boolean hasDockedTasksForUser(int userId) { + final TaskStack stack = mStackIdToStack.get(DOCKED_STACK_ID); + if (stack == null) { + return false; + } + + final ArrayList tasks = stack.getTasks(); + boolean hasUserTask = false; + for (int i = tasks.size() - 1; i >= 0 && !hasUserTask; i--) { + final Task task = tasks.get(i); + hasUserTask = (task.mUserId == userId); + } + return hasUserTask; + } + /* Called by WindowState */ boolean isCurrentProfileLocked(int userId) { if (userId == mCurrentUserId) return true;