Gesture-excluding activities also exclude Assistant gesture.
Bug: 157824552
Change-Id: Ie324ed86c8d7694fed263840975c02e676533ad1
diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/TouchInteractionService.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/TouchInteractionService.java
index 51eaba0..412a05a 100644
--- a/quickstep/recents_ui_overrides/src/com/android/quickstep/TouchInteractionService.java
+++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/TouchInteractionService.java
@@ -30,6 +30,7 @@
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_TRACING_ENABLED;
import android.annotation.TargetApi;
+import android.app.ActivityManager;
import android.app.PendingIntent;
import android.app.RemoteAction;
import android.app.Service;
@@ -487,18 +488,22 @@
ActiveGestureLog.INSTANCE.addLog("setInputConsumer: " + mConsumer.getName());
mUncheckedConsumer = mConsumer;
- } else if (mDeviceState.isUserUnlocked()
- && mDeviceState.isFullyGesturalNavMode()
- && mDeviceState.canTriggerAssistantAction(event)) {
+ } else if (mDeviceState.isUserUnlocked() && mDeviceState.isFullyGesturalNavMode()) {
newGestureState = createGestureState();
- // Do not change mConsumer as if there is an ongoing QuickSwitch gesture, we should
- // not interrupt it. QuickSwitch assumes that interruption can only happen if the
- // next gesture is also quick switch.
- mUncheckedConsumer = new AssistantInputConsumer(
- this,
- newGestureState,
- InputConsumer.NO_OP, mInputMonitorCompat,
- mOverviewComponentObserver.assistantGestureIsConstrained());
+ ActivityManager.RunningTaskInfo runningTask = newGestureState.getRunningTask();
+ if (mDeviceState.canTriggerAssistantAction(event, runningTask)) {
+ // Do not change mConsumer as if there is an ongoing QuickSwitch gesture, we
+ // should not interrupt it. QuickSwitch assumes that interruption can only
+ // happen if the next gesture is also quick switch.
+ mUncheckedConsumer = new AssistantInputConsumer(
+ this,
+ newGestureState,
+ InputConsumer.NO_OP, mInputMonitorCompat,
+ mOverviewComponentObserver.assistantGestureIsConstrained());
+ } else {
+ newGestureState = DEFAULT_STATE;
+ mUncheckedConsumer = InputConsumer.NO_OP;
+ }
} else {
newGestureState = DEFAULT_STATE;
mUncheckedConsumer = InputConsumer.NO_OP;
@@ -572,7 +577,7 @@
handleOrientationSetup(base);
}
if (mDeviceState.isFullyGesturalNavMode()) {
- if (mDeviceState.canTriggerAssistantAction(event)) {
+ if (mDeviceState.canTriggerAssistantAction(event, newGestureState.getRunningTask())) {
base = new AssistantInputConsumer(
this,
newGestureState,
diff --git a/quickstep/src/com/android/quickstep/RecentsAnimationDeviceState.java b/quickstep/src/com/android/quickstep/RecentsAnimationDeviceState.java
index 7f9a8bd..66e011d 100644
--- a/quickstep/src/com/android/quickstep/RecentsAnimationDeviceState.java
+++ b/quickstep/src/com/android/quickstep/RecentsAnimationDeviceState.java
@@ -525,13 +525,15 @@
/**
* @param ev An ACTION_DOWN motion event
- * @return whether the given motion event can trigger the assistant.
+ * @param task Info for the currently running task
+ * @return whether the given motion event can trigger the assistant over the current task.
*/
- public boolean canTriggerAssistantAction(MotionEvent ev) {
+ public boolean canTriggerAssistantAction(MotionEvent ev, ActivityManager.RunningTaskInfo task) {
return mAssistantAvailable
&& !QuickStepContract.isAssistantGestureDisabled(mSystemUiStateFlags)
&& mOrientationTouchTransformer.touchInAssistantRegion(ev)
- && !isLockToAppActive();
+ && !isLockToAppActive()
+ && !isGestureBlockedActivity(task);
}
/**