Merge "Log various types of back gesture using StatsLog Bug: 135152789 Test: m statsd_testdrive -j31 Test: out/host/linux-x86/bin/statsd_testdrive 224" into qt-r1-dev

This commit is contained in:
TreeHugger Robot
2019-08-12 23:18:04 +00:00
committed by Android (Google) Code Review

View File

@@ -34,6 +34,7 @@ import android.os.SystemClock;
import android.os.SystemProperties; import android.os.SystemProperties;
import android.util.Log; import android.util.Log;
import android.util.MathUtils; import android.util.MathUtils;
import android.util.StatsLog;
import android.view.Gravity; import android.view.Gravity;
import android.view.IPinnedStackController; import android.view.IPinnedStackController;
import android.view.IPinnedStackListener; import android.view.IPinnedStackListener;
@@ -107,7 +108,11 @@ public class EdgeBackGestureHandler implements DisplayListener {
public void onSystemGestureExclusionChanged(int displayId, public void onSystemGestureExclusionChanged(int displayId,
Region systemGestureExclusion, Region unrestrictedOrNull) { Region systemGestureExclusion, Region unrestrictedOrNull) {
if (displayId == mDisplayId) { if (displayId == mDisplayId) {
mMainExecutor.execute(() -> mExcludeRegion.set(systemGestureExclusion)); mMainExecutor.execute(() -> {
mExcludeRegion.set(systemGestureExclusion);
mUnrestrictedExcludeRegion.set(unrestrictedOrNull != null
? unrestrictedOrNull : systemGestureExclusion);
});
} }
} }
}; };
@@ -121,6 +126,8 @@ public class EdgeBackGestureHandler implements DisplayListener {
private final Executor mMainExecutor; private final Executor mMainExecutor;
private final Region mExcludeRegion = new Region(); private final Region mExcludeRegion = new Region();
private final Region mUnrestrictedExcludeRegion = new Region();
// The edge width where touch down is allowed // The edge width where touch down is allowed
private int mEdgeWidth; private int mEdgeWidth;
// The slop to distinguish between horizontal and vertical motion // The slop to distinguish between horizontal and vertical motion
@@ -139,6 +146,7 @@ public class EdgeBackGestureHandler implements DisplayListener {
private final PointF mDownPoint = new PointF(); private final PointF mDownPoint = new PointF();
private boolean mThresholdCrossed = false; private boolean mThresholdCrossed = false;
private boolean mAllowGesture = false; private boolean mAllowGesture = false;
private boolean mInRejectedExclusion = false;
private boolean mIsOnLeftEdge; private boolean mIsOnLeftEdge;
private int mImeHeight = 0; private int mImeHeight = 0;
@@ -318,6 +326,12 @@ public class EdgeBackGestureHandler implements DisplayListener {
if (isInExcludedRegion) { if (isInExcludedRegion) {
mOverviewProxyService.notifyBackAction(false /* completed */, -1, -1, mOverviewProxyService.notifyBackAction(false /* completed */, -1, -1,
false /* isButton */, !mIsOnLeftEdge); false /* isButton */, !mIsOnLeftEdge);
StatsLog.write(StatsLog.BACK_GESTURE_REPORTED_REPORTED,
StatsLog.BACK_GESTURE__TYPE__INCOMPLETE_EXCLUDED, y,
mIsOnLeftEdge ? StatsLog.BACK_GESTURE__X_LOCATION__LEFT :
StatsLog.BACK_GESTURE__X_LOCATION__RIGHT);
} else {
mInRejectedExclusion = mUnrestrictedExcludeRegion.contains(x, y);
} }
return !isInExcludedRegion; return !isInExcludedRegion;
} }
@@ -325,6 +339,7 @@ public class EdgeBackGestureHandler implements DisplayListener {
private void cancelGesture(MotionEvent ev) { private void cancelGesture(MotionEvent ev) {
// Send action cancel to reset all the touch events // Send action cancel to reset all the touch events
mAllowGesture = false; mAllowGesture = false;
mInRejectedExclusion = false;
MotionEvent cancelEv = MotionEvent.obtain(ev); MotionEvent cancelEv = MotionEvent.obtain(ev);
cancelEv.setAction(MotionEvent.ACTION_CANCEL); cancelEv.setAction(MotionEvent.ACTION_CANCEL);
mEdgePanel.handleTouch(cancelEv); mEdgePanel.handleTouch(cancelEv);
@@ -338,6 +353,7 @@ public class EdgeBackGestureHandler implements DisplayListener {
// either the bouncer is showing or the notification panel is hidden // either the bouncer is showing or the notification panel is hidden
int stateFlags = mOverviewProxyService.getSystemUiStateFlags(); int stateFlags = mOverviewProxyService.getSystemUiStateFlags();
mIsOnLeftEdge = ev.getX() <= mEdgeWidth + mLeftInset; mIsOnLeftEdge = ev.getX() <= mEdgeWidth + mLeftInset;
mInRejectedExclusion = false;
mAllowGesture = !QuickStepContract.isBackGestureDisabled(stateFlags) mAllowGesture = !QuickStepContract.isBackGestureDisabled(stateFlags)
&& isWithinTouchRegion((int) ev.getX(), (int) ev.getY()); && isWithinTouchRegion((int) ev.getX(), (int) ev.getY());
if (mAllowGesture) { if (mAllowGesture) {
@@ -392,6 +408,14 @@ public class EdgeBackGestureHandler implements DisplayListener {
} }
mOverviewProxyService.notifyBackAction(performAction, (int) mDownPoint.x, mOverviewProxyService.notifyBackAction(performAction, (int) mDownPoint.x,
(int) mDownPoint.y, false /* isButton */, !mIsOnLeftEdge); (int) mDownPoint.y, false /* isButton */, !mIsOnLeftEdge);
int backtype = performAction ? (mInRejectedExclusion
? StatsLog.BACK_GESTURE__TYPE__COMPLETED_REJECTED :
StatsLog.BACK_GESTURE__TYPE__COMPLETED) :
StatsLog.BACK_GESTURE__TYPE__INCOMPLETE;
StatsLog.write(StatsLog.BACK_GESTURE_REPORTED_REPORTED, backtype,
(int) mDownPoint.y, mIsOnLeftEdge
? StatsLog.BACK_GESTURE__X_LOCATION__LEFT :
StatsLog.BACK_GESTURE__X_LOCATION__RIGHT);
} }
if (isUp || action == MotionEvent.ACTION_CANCEL) { if (isUp || action == MotionEvent.ACTION_CANCEL) {
mRegionSamplingHelper.stop(); mRegionSamplingHelper.stop();
@@ -463,7 +487,9 @@ public class EdgeBackGestureHandler implements DisplayListener {
pw.println("EdgeBackGestureHandler:"); pw.println("EdgeBackGestureHandler:");
pw.println(" mIsEnabled=" + mIsEnabled); pw.println(" mIsEnabled=" + mIsEnabled);
pw.println(" mAllowGesture=" + mAllowGesture); pw.println(" mAllowGesture=" + mAllowGesture);
pw.println(" mInRejectedExclusion" + mInRejectedExclusion);
pw.println(" mExcludeRegion=" + mExcludeRegion); pw.println(" mExcludeRegion=" + mExcludeRegion);
pw.println(" mUnrestrictedExcludeRegion=" + mUnrestrictedExcludeRegion);
pw.println(" mImeHeight=" + mImeHeight); pw.println(" mImeHeight=" + mImeHeight);
pw.println(" mIsAttached=" + mIsAttached); pw.println(" mIsAttached=" + mIsAttached);
pw.println(" mEdgeWidth=" + mEdgeWidth); pw.println(" mEdgeWidth=" + mEdgeWidth);