diff --git a/core/java/android/view/KeyEvent.java b/core/java/android/view/KeyEvent.java
index 846d1ea61ce1a48b551d8fc28a898a4e8064c96e..72decc96d784904d75d90b44c073ca4c1cec74e6 100644
--- a/core/java/android/view/KeyEvent.java
+++ b/core/java/android/view/KeyEvent.java
@@ -1212,6 +1212,12 @@ public class KeyEvent extends InputEvent implements Parcelable {
      */
     public static final int FLAG_TRACKING = 0x200;
 
+    /**
+     * Private flag that indicates that event was sent from EdgeBackGestureHandler.
+     * @hide
+     */
+    public static final int FLAG_LONG_SWIPE = 0x800;
+
     /**
      * Set when a key event has been synthesized to implement default behavior
      * for an event that the application did not handle.
diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/EdgeBackGestureHandler.java b/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/EdgeBackGestureHandler.java
index 5dfa88583d8f8e0ac03250a00acf0944a70b9fee..94cc165499e7a52c8f433e70226d61faeeadfc68 100644
--- a/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/EdgeBackGestureHandler.java
+++ b/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/EdgeBackGestureHandler.java
@@ -276,9 +276,9 @@ public class EdgeBackGestureHandler extends CurrentUserTracker
                     // TODO(b/186519446): use a different method than isFalseTouch
                     mFalsingManager.isFalseTouch(BACK_GESTURE);
                     boolean sendDown = sendEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK,
-                            isLongPress ? KeyEvent.FLAG_LONG_PRESS : 0);
+                            isLongPress ? KeyEvent.FLAG_LONG_SWIPE : 0);
                     boolean sendUp = sendEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_BACK,
-                            isLongPress ? KeyEvent.FLAG_LONG_PRESS : 0);
+                            isLongPress ? KeyEvent.FLAG_LONG_SWIPE : 0);
                     if (DEBUG_MISSING_GESTURE) {
                         Log.d(DEBUG_MISSING_GESTURE_TAG, "Triggered back: down=" + sendDown
                                 + ", up=" + sendUp);
diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java
index e50adccb0751d90ede03058daf110392b6027421..cbd53de2d9aee70066b94c039ecc9c65e9a562c7 100644
--- a/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -691,8 +691,6 @@ public class PhoneWindowManager implements WindowManagerPolicy {
     private LineageHardwareManager mLineageHardware;
 
     private boolean mLongSwipeDown;
-    private static final int LONG_SWIPE_FLAGS = KeyEvent.FLAG_LONG_PRESS
-            | KeyEvent.FLAG_FROM_SYSTEM | KeyEvent.FLAG_VIRTUAL_HARD_KEY;
 
     private class PolicyHandler extends Handler {
         @Override
@@ -4034,7 +4032,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
         // Handle special keys.
         switch (keyCode) {
             case KeyEvent.KEYCODE_BACK: {
-                boolean isLongSwipe = (event.getFlags() & LONG_SWIPE_FLAGS) == LONG_SWIPE_FLAGS;
+                boolean isLongSwipe = (event.getFlags() & KeyEvent.FLAG_LONG_SWIPE) != 0;
                 if (mLongSwipeDown && isLongSwipe && !down) {
                     // Trigger long swipe action
                     performKeyAction(mEdgeLongSwipeAction, event);