From df5ad8d355f88873d4a42443a7722dd91f1581a9 Mon Sep 17 00:00:00 2001 From: Ats Jenk Date: Tue, 3 May 2022 11:46:38 -0700 Subject: [PATCH] Suppress home gesture when bubbles are expanded When bubbles are expanded we handle the home gesture there. This allows us to animate the expanded view in response to touch gestures. Bug: 170163464 Test: atest PlatformScenarioTests: android.platform.test.scenario.sysui.bubble.CollapseExpandedViewTest Change-Id: Ib97df2db089dd4613f6a749c6415fedddd939106 --- .../quickstep/TouchInteractionService.java | 30 +++++++++++++++---- 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/quickstep/src/com/android/quickstep/TouchInteractionService.java b/quickstep/src/com/android/quickstep/TouchInteractionService.java index f2583fb2c0..d7ee3cbc9d 100644 --- a/quickstep/src/com/android/quickstep/TouchInteractionService.java +++ b/quickstep/src/com/android/quickstep/TouchInteractionService.java @@ -51,6 +51,7 @@ import android.os.Bundle; import android.os.IBinder; import android.os.Looper; import android.os.SystemClock; +import android.os.SystemProperties; import android.util.Log; import android.view.Choreographer; import android.view.InputEvent; @@ -127,6 +128,9 @@ public class TouchInteractionService extends Service private static final String TAG = "TouchInteractionService"; + private static final boolean BUBBLES_HOME_GESTURE_ENABLED = + SystemProperties.getBoolean("persist.wm.debug.bubbles_home_gesture", false); + private static final String KEY_BACK_NOTIFICATION_COUNT = "backNotificationCount"; private static final String NOTIFY_ACTION_BACK = "com.android.quickstep.action.BACK_GESTURE"; private static final String HAS_ENABLED_QUICKSTEP_ONCE = "launcher.has_enabled_quickstep_once"; @@ -698,16 +702,30 @@ public class TouchInteractionService extends Service base = new TaskbarStashInputConsumer(this, base, mInputMonitorCompat, tac); } - // If Bubbles is expanded, use the overlay input consumer, which will close Bubbles - // instead of going all the way home when a swipe up is detected. - // Notification panel can be expanded on top of expanded bubbles. Bubbles remain - // expanded in the back. Make sure swipe up is not passed to bubbles in this case. - if ((mDeviceState.isBubblesExpanded() && !mDeviceState.isNotificationPanelExpanded()) - || mDeviceState.isSystemUiDialogShowing()) { + if (mDeviceState.isBubblesExpanded()) { + if (BUBBLES_HOME_GESTURE_ENABLED) { + // Bubbles can handle home gesture itself. + base = getDefaultInputConsumer(); + } else { + // If Bubbles is expanded, use the overlay input consumer, which will close + // Bubbles instead of going all the way home when a swipe up is detected. + // Notification panel can be expanded on top of expanded bubbles. Bubbles remain + // expanded in the back. Make sure swipe up is not passed to bubbles in this + // case. + if (!mDeviceState.isNotificationPanelExpanded()) { + base = new SysUiOverlayInputConsumer( + getBaseContext(), mDeviceState, mInputMonitorCompat); + } + } + } + + if (mDeviceState.isSystemUiDialogShowing()) { base = new SysUiOverlayInputConsumer( getBaseContext(), mDeviceState, mInputMonitorCompat); } + + if (mDeviceState.isScreenPinningActive()) { // Note: we only allow accessibility to wrap this, and it replaces the previous // base input consumer (which should be NO_OP anyway since topTaskLocked == true).