Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bebd6e0e authored by Hyunyoung Song's avatar Hyunyoung Song Committed by android-build-merger
Browse files

Merge "Log various types of back gesture using StatsLog Bug: 135152789 Test: m...

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 am: fa38ed52
am: 2984f340

Change-Id: I1c0beaee10b628e2b57c1a4c20a25fb7685c6572
parents 46dc0529 2984f340
Loading
Loading
Loading
Loading
+27 −1
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ import android.os.SystemClock;
import android.os.SystemProperties;
import android.util.Log;
import android.util.MathUtils;
import android.util.StatsLog;
import android.view.Gravity;
import android.view.IPinnedStackController;
import android.view.IPinnedStackListener;
@@ -107,7 +108,11 @@ public class EdgeBackGestureHandler implements DisplayListener {
                public void onSystemGestureExclusionChanged(int displayId,
                        Region systemGestureExclusion, Region unrestrictedOrNull) {
                    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 Region mExcludeRegion = new Region();
    private final Region mUnrestrictedExcludeRegion = new Region();

    // The edge width where touch down is allowed
    private int mEdgeWidth;
    // 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 boolean mThresholdCrossed = false;
    private boolean mAllowGesture = false;
    private boolean mInRejectedExclusion = false;
    private boolean mIsOnLeftEdge;

    private int mImeHeight = 0;
@@ -318,6 +326,12 @@ public class EdgeBackGestureHandler implements DisplayListener {
        if (isInExcludedRegion) {
            mOverviewProxyService.notifyBackAction(false /* completed */, -1, -1,
                    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;
    }
@@ -325,6 +339,7 @@ public class EdgeBackGestureHandler implements DisplayListener {
    private void cancelGesture(MotionEvent ev) {
        // Send action cancel to reset all the touch events
        mAllowGesture = false;
        mInRejectedExclusion = false;
        MotionEvent cancelEv = MotionEvent.obtain(ev);
        cancelEv.setAction(MotionEvent.ACTION_CANCEL);
        mEdgePanel.handleTouch(cancelEv);
@@ -338,6 +353,7 @@ public class EdgeBackGestureHandler implements DisplayListener {
            // either the bouncer is showing or the notification panel is hidden
            int stateFlags = mOverviewProxyService.getSystemUiStateFlags();
            mIsOnLeftEdge = ev.getX() <= mEdgeWidth + mLeftInset;
            mInRejectedExclusion = false;
            mAllowGesture = !QuickStepContract.isBackGestureDisabled(stateFlags)
                    && isWithinTouchRegion((int) ev.getX(), (int) ev.getY());
            if (mAllowGesture) {
@@ -392,6 +408,14 @@ public class EdgeBackGestureHandler implements DisplayListener {
                }
                mOverviewProxyService.notifyBackAction(performAction, (int) mDownPoint.x,
                        (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) {
                mRegionSamplingHelper.stop();
@@ -463,7 +487,9 @@ public class EdgeBackGestureHandler implements DisplayListener {
        pw.println("EdgeBackGestureHandler:");
        pw.println("  mIsEnabled=" + mIsEnabled);
        pw.println("  mAllowGesture=" + mAllowGesture);
        pw.println("  mInRejectedExclusion" + mInRejectedExclusion);
        pw.println("  mExcludeRegion=" + mExcludeRegion);
        pw.println("  mUnrestrictedExcludeRegion=" + mUnrestrictedExcludeRegion);
        pw.println("  mImeHeight=" + mImeHeight);
        pw.println("  mIsAttached=" + mIsAttached);
        pw.println("  mEdgeWidth=" + mEdgeWidth);