Added logging for setting mMotionAborted in NPVC

Added logs for when we flag motion events as aborted and
filled in gaps for when we throw away touches in NPVC

Bug: 258708442
Test: n/a
Change-Id: Ie696834fac32a02ac509b94d75d9feea5785946a
This commit is contained in:
Shawn Lee
2022-12-06 18:32:37 -08:00
parent cbb3c5d960
commit ee49e0270a
2 changed files with 68 additions and 14 deletions

View File

@@ -2141,7 +2141,6 @@ public final class NotificationPanelViewController implements Dumpable {
if ((h > touchSlop || (h < -touchSlop && mQsExpanded))
&& Math.abs(h) > Math.abs(x - mInitialTouchX)
&& shouldQuickSettingsIntercept(mInitialTouchX, mInitialTouchY, h)) {
debugLog("onQsIntercept - start tracking expansion");
mView.getParent().requestDisallowInterceptTouchEvent(true);
mShadeLog.onQsInterceptMoveQsTrackingEnabled(h);
mQsTracking = true;
@@ -2352,7 +2351,7 @@ public final class NotificationPanelViewController implements Dumpable {
if (!mSplitShadeEnabled
&& computeQsExpansionFraction() <= 0.01 && getExpandedFraction() < 1.0) {
mShadeLog.logMotionEvent(event,
"handleQsTouch: QQS touched while shade collapsing");
"handleQsTouch: QQS touched while shade collapsing, QS tracking disabled");
mQsTracking = false;
}
if (!mQsExpandImmediate && mQsTracking) {
@@ -5796,12 +5795,9 @@ public final class NotificationPanelViewController implements Dumpable {
/** @see ViewGroup#onInterceptTouchEvent(MotionEvent) */
public boolean onInterceptTouchEvent(MotionEvent event) {
mShadeLog.logMotionEvent(event, "NPVC onInterceptTouchEvent");
if (SPEW_LOGCAT) {
Log.v(TAG,
"NPVC onInterceptTouchEvent (" + event.getId() + "): (" + event.getX()
+ "," + event.getY() + ")");
}
if (mQs.disallowPanelTouches()) {
mShadeLog.logMotionEvent(event,
"NPVC not intercepting touch, panel touches disallowed");
return false;
}
initDownStates(event);
@@ -5834,8 +5830,15 @@ public final class NotificationPanelViewController implements Dumpable {
+ "QsIntercept");
return true;
}
if (mInstantExpanding || !mNotificationsDragEnabled || mTouchDisabled || (mMotionAborted
&& event.getActionMasked() != MotionEvent.ACTION_DOWN)) {
if (mInstantExpanding || !mNotificationsDragEnabled || mTouchDisabled) {
mShadeLog.logNotInterceptingTouchInstantExpanding(mInstantExpanding,
!mNotificationsDragEnabled, mTouchDisabled);
return false;
}
if (mMotionAborted && event.getActionMasked() != MotionEvent.ACTION_DOWN) {
mShadeLog.logMotionEventStatusBarState(event, mStatusBarStateController.getState(),
"NPVC MotionEvent not intercepted: non-down action, motion was aborted");
return false;
}
@@ -5890,6 +5893,9 @@ public final class NotificationPanelViewController implements Dumpable {
}
break;
case MotionEvent.ACTION_POINTER_DOWN:
mShadeLog.logMotionEventStatusBarState(event,
mStatusBarStateController.getState(),
"onInterceptTouchEvent: pointer down action");
if (mStatusBarStateController.getState() == StatusBarState.KEYGUARD) {
mMotionAborted = true;
mVelocityTracker.clear();
@@ -5931,7 +5937,8 @@ public final class NotificationPanelViewController implements Dumpable {
// events are received in this handler with identical downTimes. Until the
// source of the issue can be located, detect this case and ignore.
// see b/193350347
Log.w(TAG, "Duplicate down event detected... ignoring");
mShadeLog.logMotionEvent(event,
"onTouch: duplicate down event detected... ignoring");
return true;
}
mLastTouchDownTime = event.getDownTime();
@@ -5939,6 +5946,8 @@ public final class NotificationPanelViewController implements Dumpable {
if (mQsFullyExpanded && mQs != null && mQs.disallowPanelTouches()) {
mShadeLog.logMotionEvent(event,
"onTouch: ignore touch, panel touches disallowed and qs fully expanded");
return false;
}
@@ -5946,6 +5955,8 @@ public final class NotificationPanelViewController implements Dumpable {
// otherwise user would be able to pull down QS or expand the shade.
if (mCentralSurfaces.isBouncerShowingScrimmed()
|| mCentralSurfaces.isBouncerShowingOverDream()) {
mShadeLog.logMotionEvent(event,
"onTouch: ignore touch, bouncer scrimmed or showing over dream");
return false;
}
@@ -6003,15 +6014,17 @@ public final class NotificationPanelViewController implements Dumpable {
private boolean handleTouch(MotionEvent event) {
if (mInstantExpanding) {
mShadeLog.logMotionEvent(event, "onTouch: touch ignored due to instant expanding");
mShadeLog.logMotionEvent(event,
"handleTouch: touch ignored due to instant expanding");
return false;
}
if (mTouchDisabled && event.getActionMasked() != MotionEvent.ACTION_CANCEL) {
mShadeLog.logMotionEvent(event, "onTouch: non-cancel action, touch disabled");
mShadeLog.logMotionEvent(event, "handleTouch: non-cancel action, touch disabled");
return false;
}
if (mMotionAborted && event.getActionMasked() != MotionEvent.ACTION_DOWN) {
mShadeLog.logMotionEvent(event, "onTouch: non-down action, motion was aborted");
mShadeLog.logMotionEventStatusBarState(event, mStatusBarStateController.getState(),
"handleTouch: non-down action, motion was aborted");
return false;
}
@@ -6021,7 +6034,7 @@ public final class NotificationPanelViewController implements Dumpable {
// Turn off tracking if it's on or the shade can get stuck in the down position.
onTrackingStopped(true /* expand */);
}
mShadeLog.logMotionEvent(event, "onTouch: drag not enabled");
mShadeLog.logMotionEvent(event, "handleTouch: drag not enabled");
return false;
}
@@ -6094,6 +6107,9 @@ public final class NotificationPanelViewController implements Dumpable {
}
break;
case MotionEvent.ACTION_POINTER_DOWN:
mShadeLog.logMotionEventStatusBarState(event,
mStatusBarStateController.getState(),
"handleTouch: pointer down action");
if (mStatusBarStateController.getState() == StatusBarState.KEYGUARD) {
mMotionAborted = true;
endMotionEvent(event, x, y, true /* forceCancel */);

View File

@@ -98,6 +98,29 @@ class ShadeLogger @Inject constructor(@ShadeLog private val buffer: LogBuffer) {
)
}
fun logMotionEventStatusBarState(event: MotionEvent, statusBarState: Int, message: String) {
log(
LogLevel.VERBOSE,
{
str1 = message
long1 = event.eventTime
long2 = event.downTime
int1 = event.action
int2 = statusBarState
double1 = event.y.toDouble()
},
{
"$str1\neventTime=$long1,downTime=$long2,y=$double1,action=$int1," +
"statusBarState=${when (int2) {
0 -> "SHADE"
1 -> "KEYGUARD"
2 -> "SHADE_LOCKED"
else -> "UNKNOWN:$int2"
}}"
}
)
}
fun logExpansionChanged(
message: String,
fraction: Float,
@@ -164,4 +187,19 @@ class ShadeLogger @Inject constructor(@ShadeLog private val buffer: LogBuffer) {
"tap to be detected: proximityIsNotNear: $bool1, isNotFalseTap: $bool2"
})
}
fun logNotInterceptingTouchInstantExpanding(
instantExpanding: Boolean,
notificationsDragEnabled: Boolean,
touchDisabled: Boolean
) {
log(LogLevel.VERBOSE, {
bool1 = instantExpanding
bool2 = notificationsDragEnabled
bool3 = touchDisabled
}, {
"NPVC not intercepting touch, instantExpanding: $bool1, " +
"!notificationsDragEnabled: $bool2, touchDisabled: $bool3"
})
}
}