From b9e67286a035b9b576b83f7505d3ee98cdda75f1 Mon Sep 17 00:00:00 2001 From: "jorgegil@google.com" Date: Thu, 11 Mar 2021 15:40:06 -0800 Subject: [PATCH] Check that PIP is active before setting the PIP exclusion bounds Fixes issue that caused the exclusion bounds to be set to the last PIP bounds even if the PIP window did not exist anymore, leading to the back gesture to not work. Bug: 176302696 Test: enter PIP, stash, exit via drag to bottom, enter dark mode - the back gesture should work on the region that was previously stashed pip Change-Id: Ife9abf6382c7d973d9cefbc6a3dc1f355989fa42 --- .../src/com/android/wm/shell/pip/phone/PipTouchHandler.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipTouchHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipTouchHandler.java index 543ecfcf1a332..44e262492b97b 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipTouchHandler.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipTouchHandler.java @@ -73,6 +73,7 @@ public class PipTouchHandler { // Allow PIP to resize to a slightly bigger state upon touch private boolean mEnableResize; private final Context mContext; + private final PipTaskOrganizer mPipTaskOrganizer; private final PipBoundsAlgorithm mPipBoundsAlgorithm; private final @NonNull PipBoundsState mPipBoundsState; private final PipUiEventLogger mPipUiEventLogger; @@ -169,6 +170,7 @@ public class PipTouchHandler { mContext = context; mMainExecutor = mainExecutor; mAccessibilityManager = context.getSystemService(AccessibilityManager.class); + mPipTaskOrganizer = pipTaskOrganizer; mPipBoundsAlgorithm = pipBoundsAlgorithm; mPipBoundsState = pipBoundsState; mMenuController = menuController; @@ -982,7 +984,9 @@ public class PipTouchHandler { void setPipExclusionBoundsChangeListener(Consumer pipExclusionBoundsChangeListener) { mPipExclusionBoundsChangeListener = new WeakReference<>(pipExclusionBoundsChangeListener); - pipExclusionBoundsChangeListener.accept(mPipBoundsState.getBounds()); + pipExclusionBoundsChangeListener.accept(mPipTaskOrganizer.isInPip() + ? mPipBoundsState.getBounds() : new Rect()); + } /**