From 8afd10c9665c8f521ad8c076c2695d9fc6924368 Mon Sep 17 00:00:00 2001 From: Winson Chung Date: Mon, 8 Mar 2021 20:20:12 -0800 Subject: Ensure that ML model results are still bounded by the gesture insets - In some cases, the ML model may return that it is a valid swipe even if it is out of the current inset bounds Bug: 178561216 Test: Enable ML model, rotate to landscape and try to swipe near the edges Change-Id: Iaecd11acf50a1a19fe5964e11e06fb564ca6988c --- .../gestural/EdgeBackGestureHandler.java | 29 +++++++++++----------- 1 file changed, 15 insertions(+), 14 deletions(-) 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 088743cd0f94..9e3be69c414e 100644 --- a/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/EdgeBackGestureHandler.java +++ b/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/EdgeBackGestureHandler.java @@ -609,20 +609,21 @@ public class EdgeBackGestureHandler extends CurrentUserTracker implements Displa if (mVocab != null) { app = mVocab.getOrDefault(mPackageName, -1); } - // Check if we are within the tightest bounds beyond which - // we would not need to run the ML model. - boolean withinRange = x < mMLEnableWidth + mLeftInset - || x >= (mDisplaySize.x - mMLEnableWidth - mRightInset); - if (!withinRange) { + + // Denotes whether we should proceed with the gesture. Even if it is false, we may want to + // log it assuming it is not invalid due to exclusion. + boolean withinRange = x < mEdgeWidthLeft + mLeftInset + || x >= (mDisplaySize.x - mEdgeWidthRight - mRightInset); + if (withinRange) { int results = -1; - if (mUseMLModel && (results = getBackGesturePredictionsCategory(x, y, app)) != -1) { - withinRange = results == 1; - } else { - // Denotes whether we should proceed with the gesture. - // Even if it is false, we may want to log it assuming - // it is not invalid due to exclusion. - withinRange = x < mEdgeWidthLeft + mLeftInset - || x >= (mDisplaySize.x - mEdgeWidthRight - mRightInset); + + // Check if we are within the tightest bounds beyond which we would not need to run the + // ML model + boolean withinMinRange = x < mMLEnableWidth + mLeftInset + || x >= (mDisplaySize.x - mMLEnableWidth - mRightInset); + if (!withinMinRange && mUseMLModel + && (results = getBackGesturePredictionsCategory(x, y, app)) != -1) { + withinRange = (results == 1); } } @@ -726,7 +727,7 @@ public class EdgeBackGestureHandler extends CurrentUserTracker implements Displa mGestureLog.removeFirst(); } mGestureLog.addLast(String.format( - "Gesture [%d,alw=%B,%B, %B,%B,disp=%s,wl=%d,il=%d,wr=%d,ir=%d,excl=%s]", + "Gesture [%d,alw=%B,%B,%B,%B,disp=%s,wl=%d,il=%d,wr=%d,ir=%d,excl=%s]", System.currentTimeMillis(), mAllowGesture, mIsOnLeftEdge, mIsBackGestureAllowed, QuickStepContract.isBackGestureDisabled(mSysUiFlags), mDisplaySize, mEdgeWidthLeft, mLeftInset, mEdgeWidthRight, mRightInset, mExcludeRegion)); -- cgit v1.2.3-59-g8ed1b