Merge "Fix issues with assistant stack visibility."
diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java
index 6087fb3..b948c15 100644
--- a/services/core/java/com/android/server/am/ActivityStack.java
+++ b/services/core/java/com/android/server/am/ActivityStack.java
@@ -1526,10 +1526,11 @@
return false;
}
- if (!isHomeOrRecentsStack() && r.frontOfTask
- && task.isOverHomeStack() && !StackId.isHomeOrRecentsStack(stackBehindId)) {
+ if (!isHomeOrRecentsStack() && r.frontOfTask && task.isOverHomeStack()
+ && !StackId.isHomeOrRecentsStack(stackBehindId) && !isAssistantStack()) {
// Stack isn't translucent if it's top activity should have the home stack
- // behind it and the stack currently behind it isn't the home or recents stack.
+ // behind it and the stack currently behind it isn't the home or recents stack
+ // or the assistant stack.
return false;
}
}
@@ -1572,10 +1573,18 @@
}
if (mStackId == DOCKED_STACK_ID) {
- // Docked stack is always visible, except in the case where the top running activity
- // task in the focus stack doesn't support any form of resizing but we show it for the
- // home task even though it's not resizable.
final ActivityRecord r = topStack.topRunningActivityLocked();
+
+ // If the assistant stack is focused and translucent, then the docked stack is always
+ // visible
+ if (topStack.isAssistantStack()
+ && topStack.isStackTranslucent(starting, DOCKED_STACK_ID)) {
+ return STACK_VISIBLE;
+ }
+
+ // Otherwise, the docked stack is always visible, except in the case where the top
+ // running activity task in the focus stack doesn't support any form of resizing but we
+ // show it for the home task even though it's not resizable.
final TaskRecord task = r != null ? r.task : null;
return task == null || task.supportsSplitScreen() || task.isHomeTask() ? STACK_VISIBLE
: STACK_INVISIBLE;