summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/wm/Task.java20
1 files changed, 12 insertions, 8 deletions
diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java
index 640ae3f9bff7..4e95c84f4cb7 100644
--- a/services/core/java/com/android/server/wm/Task.java
+++ b/services/core/java/com/android/server/wm/Task.java
@@ -5255,17 +5255,21 @@ class Task extends TaskFragment {
// Ensure that we do not trigger entering PiP an activity on the root pinned task.
return;
}
- final boolean isTransient = opts != null && opts.getTransientLaunch();
- final Task targetRootTask = toFrontTask != null
- ? toFrontTask.getRootTask() : toFrontActivity.getRootTask();
- if (targetRootTask != null && (targetRootTask.isActivityTypeAssistant() || isTransient)) {
- // Ensure the task/activity being brought forward is not the assistant and is not
- // transient. In the case of transient-launch, we want to wait until the end of the
- // transition and only allow switch if the transient launch was committed.
+ final Task targetRootTask = toFrontTask != null ? toFrontTask.getRootTask()
+ : toFrontActivity != null ? toFrontActivity.getRootTask() : null;
+ if (targetRootTask == null) {
+ Slog.e(TAG, "No root task for enter pip, both to front task and activity are null?");
return;
}
- pipCandidate.supportsEnterPipOnTaskSwitch = true;
+ final boolean isTransient = opts != null && opts.getTransientLaunch()
+ || (targetRootTask.mTransitionController.isTransientHide(targetRootTask));
+ // Ensure the task/activity being brought forward is not the assistant and is not transient
+ // nor transient hide target. In the case of transient-launch, we want to wait until the end
+ // of the transition and only allow to enter pip on task switch after the transient launch
+ // was committed.
+ pipCandidate.supportsEnterPipOnTaskSwitch = !targetRootTask.isActivityTypeAssistant()
+ && !isTransient;
}
/**