Allow TouchControllers to override shouldDisableGestures

Currently only StatusBarTouchController overrides this to always return
false, so that you can swipe down for notifications during transition to
home screen from an app (in gesture nav).

Bug: 137161198
Change-Id: I803c37937d5294810cbe0c1bbffcd5dddcc5ca3b
diff --git a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/StatusBarTouchController.java b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/StatusBarTouchController.java
index f5ba372..18996dd 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/StatusBarTouchController.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/StatusBarTouchController.java
@@ -166,4 +166,10 @@
         mSysUiProxy = RecentsModel.INSTANCE.get(mLauncher).getSystemUiProxy();
         return mSysUiProxy != null;
     }
+
+    @Override
+    public boolean allowWhenGesturesDisabled() {
+        // Always allow intercepting touches for this controller.
+        return true;
+    }
 }
\ No newline at end of file
diff --git a/src/com/android/launcher3/util/TouchController.java b/src/com/android/launcher3/util/TouchController.java
index fc1d819..2cd28bb 100644
--- a/src/com/android/launcher3/util/TouchController.java
+++ b/src/com/android/launcher3/util/TouchController.java
@@ -32,5 +32,9 @@
      */
     boolean onControllerInterceptTouchEvent(MotionEvent ev);
 
+    default boolean allowWhenGesturesDisabled() {
+        return false;
+    }
+
     default void dump(String prefix, PrintWriter writer) { }
 }
diff --git a/src/com/android/launcher3/views/BaseDragLayer.java b/src/com/android/launcher3/views/BaseDragLayer.java
index 8bf33bf..4fe3d99 100644
--- a/src/com/android/launcher3/views/BaseDragLayer.java
+++ b/src/com/android/launcher3/views/BaseDragLayer.java
@@ -21,7 +21,6 @@
 import static android.view.MotionEvent.ACTION_UP;
 
 import static com.android.launcher3.Utilities.SINGLE_FRAME_MS;
-import static com.android.launcher3.Utilities.shouldDisableGestures;
 
 import android.annotation.TargetApi;
 import android.content.Context;
@@ -30,7 +29,6 @@
 import android.graphics.RectF;
 import android.os.Build;
 import android.util.AttributeSet;
-import android.util.Log;
 import android.util.Property;
 import android.view.MotionEvent;
 import android.view.View;
@@ -152,15 +150,17 @@
     }
 
     private TouchController findControllerToHandleTouch(MotionEvent ev) {
-        if (shouldDisableGestures(ev)) return null;
+        boolean gesturesEnabled = !Utilities.shouldDisableGestures(ev);
 
         AbstractFloatingView topView = AbstractFloatingView.getTopOpenView(mActivity);
-        if (topView != null && topView.onControllerInterceptTouchEvent(ev)) {
+        if (topView != null && (gesturesEnabled || topView.allowWhenGesturesDisabled())
+                && topView.onControllerInterceptTouchEvent(ev)) {
             return topView;
         }
 
         for (TouchController controller : mControllers) {
-            if (controller.onControllerInterceptTouchEvent(ev)) {
+            if ((gesturesEnabled || controller.allowWhenGesturesDisabled())
+                    && controller.onControllerInterceptTouchEvent(ev)) {
                 return controller;
             }
         }