From a136ebb701e31645597e1748b75b5d401215642d Mon Sep 17 00:00:00 2001 From: Evan Rosky Date: Mon, 2 May 2022 18:35:55 -0700 Subject: [PATCH] Pass NO_USER_ACTION activity option along to shell transition When this is set, it means that an app should not enter pip. So, just make sure to communicate this to shell-transition as well so it doesn't try to pip. Bug: 231150295 Test: atest PinnedStackTests#testAutoPipOnLaunchingActivityWithNoUserAction Change-Id: Id373716015d47cdaba0525fd9dea923f4b40303c --- .../core/java/com/android/server/wm/ActivityStarter.java | 4 ++++ .../java/com/android/server/wm/TransitionController.java | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/services/core/java/com/android/server/wm/ActivityStarter.java b/services/core/java/com/android/server/wm/ActivityStarter.java index d443201b2a56c..7af4166ef2b20 100644 --- a/services/core/java/com/android/server/wm/ActivityStarter.java +++ b/services/core/java/com/android/server/wm/ActivityStarter.java @@ -1747,6 +1747,10 @@ class ActivityStarter { // until after we launched to identify the relevant activity. transitionController.setTransientLaunch(mLastStartActivityRecord, mPriorAboveTask); } + if (!mSupervisor.mUserLeaving) { + // no-user-leaving implies not entering PiP. + transitionController.setCanPipOnFinish(false /* canPipOnFinish */); + } if (newTransition != null) { transitionController.requestStartTransition(newTransition, mTargetTask == null ? started.getTask() : mTargetTask, diff --git a/services/core/java/com/android/server/wm/TransitionController.java b/services/core/java/com/android/server/wm/TransitionController.java index 417e6ed6a07ee..6491d6bbe26e5 100644 --- a/services/core/java/com/android/server/wm/TransitionController.java +++ b/services/core/java/com/android/server/wm/TransitionController.java @@ -544,6 +544,12 @@ class TransitionController { } } + /** @see Transition#setCanPipOnFinish */ + void setCanPipOnFinish(boolean canPipOnFinish) { + if (mCollectingTransition == null) return; + mCollectingTransition.setCanPipOnFinish(canPipOnFinish); + } + void legacyDetachNavigationBarFromApp(@NonNull IBinder token) { final Transition transition = Transition.fromBinder(token); if (transition == null || !mPlayingTransitions.contains(transition)) {