Additional logging for dropped shade touches
Add additional info to log buffers to help debug a cluster of recent
issues related to dropped Shade touches.
Bug: 341596939
Bug: 341916203
Test: Logging only, so presubmits are sufficient
Flag: EXEMPT logging only
Change-Id: I8ca94078f8faeebf65e14d6536c6ef229586d945
diff --git a/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowViewController.java b/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowViewController.java
index e41f99b..47fd494 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowViewController.java
+++ b/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowViewController.java
@@ -427,7 +427,11 @@
} else {
return logDownDispatch(ev, "hidden or hiding", true);
}
+ } else {
+ mShadeLogger.d("NSWVC: bouncer not showing");
}
+ } else {
+ mShadeLogger.d("NSWVC: touch not within view");
}
} else if (mIsTrackingBarGesture) {
final boolean sendToStatusBar = mStatusBarViewController.sendTouchToView(ev);
@@ -437,6 +441,9 @@
return logDownDispatch(ev, "sending bar gesture to status bar",
sendToStatusBar);
}
+ if (isDown) {
+ mShadeLogger.logNoTouchDispatch(mIsTrackingBarGesture, mExpandAnimationRunning);
+ }
return logDownDispatch(ev, "no custom touch dispatch of down event", null);
}
@@ -698,12 +705,22 @@
@Override
public void dump(PrintWriter pw, String[] args) {
+ pw.print(" mExpandingBelowNotch=");
+ pw.println(mExpandingBelowNotch);
pw.print(" mExpandAnimationRunning=");
pw.println(mExpandAnimationRunning);
- pw.print(" mTouchCancelled=");
- pw.println(mTouchCancelled);
+ pw.print(" mExternalTouchIntercepted=");
+ pw.println(mExternalTouchIntercepted);
+ pw.print(" mIsOcclusionTransitionRunning=");
+ pw.println(mIsOcclusionTransitionRunning);
+ pw.print(" mIsTrackingBarGesture=");
+ pw.println(mIsTrackingBarGesture);
+ pw.print(" mLaunchAnimationTimeout=");
+ pw.println(mLaunchAnimationTimeout);
pw.print(" mTouchActive=");
pw.println(mTouchActive);
+ pw.print(" mTouchCancelled=");
+ pw.println(mTouchCancelled);
}
@VisibleForTesting
diff --git a/packages/SystemUI/src/com/android/systemui/shade/ShadeLogger.kt b/packages/SystemUI/src/com/android/systemui/shade/ShadeLogger.kt
index b5b46f1..66a310c 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/ShadeLogger.kt
+++ b/packages/SystemUI/src/com/android/systemui/shade/ShadeLogger.kt
@@ -72,79 +72,78 @@
},
{
"QsTrackingNotStarted: downTime=$str1,initTouchY=$int1,y=$int2,h=$long1," +
- "slop=$double1,qsExpanded=$bool1,keyguardShowing=$bool2,qsExpansion=$bool3"
+ "slop=$double1,qsExpanded=$bool1,keyguardShowing=$bool2,qsExpansion=$bool3"
}
)
}
fun logMotionEvent(event: MotionEvent, message: String) {
buffer.log(
- TAG,
- LogLevel.VERBOSE,
- {
- str1 = message
- long1 = event.eventTime
- long2 = event.downTime
- int1 = event.action
- int2 = event.classification
- },
- {
- "$str1: eventTime=$long1,downTime=$long2,action=$int1,class=$int2"
- }
+ TAG,
+ LogLevel.VERBOSE,
+ {
+ str1 = message
+ long1 = event.eventTime
+ long2 = event.downTime
+ int1 = event.action
+ int2 = event.classification
+ },
+ { "$str1: eventTime=$long1,downTime=$long2,action=$int1,class=$int2" }
)
}
/** Logs motion event dispatch results from NotificationShadeWindowViewController. */
fun logShadeWindowDispatch(event: MotionEvent, message: String, result: Boolean?) {
buffer.log(
- TAG,
- LogLevel.VERBOSE,
- {
- str1 = message
- long1 = event.eventTime
- long2 = event.downTime
- },
- {
- val prefix = when (result) {
+ TAG,
+ LogLevel.VERBOSE,
+ {
+ str1 = message
+ long1 = event.eventTime
+ long2 = event.downTime
+ },
+ {
+ val prefix =
+ when (result) {
true -> "SHADE TOUCH REROUTED"
false -> "SHADE TOUCH BLOCKED"
null -> "SHADE TOUCH DISPATCHED"
}
- "$prefix: eventTime=$long1,downTime=$long2, reason=$str1"
- }
+ "$prefix: eventTime=$long1,downTime=$long2, reason=$str1"
+ }
)
}
fun logMotionEventStatusBarState(event: MotionEvent, statusBarState: Int, message: String) {
buffer.log(
- TAG,
- 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) {
+ TAG,
+ 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,
- expanded: Boolean,
- tracking: Boolean,
- dragDownPxAmount: Float,
+ message: String,
+ fraction: Float,
+ expanded: Boolean,
+ tracking: Boolean,
+ dragDownPxAmount: Float,
) {
buffer.log(
TAG,
@@ -158,7 +157,8 @@
},
{
"$str1 fraction=$double1,expanded=$bool1," +
- "tracking=$bool2," + "dragDownPxAmount=$dragDownPxAmount"
+ "tracking=$bool2," +
+ "dragDownPxAmount=$dragDownPxAmount"
}
)
}
@@ -176,24 +176,17 @@
}
fun logQsExpandImmediateChanged(newValue: Boolean) {
- buffer.log(
- TAG,
- LogLevel.VERBOSE,
- {
- bool1 = newValue
- },
- { "qsExpandImmediate=$bool1" }
- )
+ buffer.log(TAG, LogLevel.VERBOSE, { bool1 = newValue }, { "qsExpandImmediate=$bool1" })
}
fun logQsExpansionChanged(
- message: String,
- qsExpanded: Boolean,
- qsMinExpansionHeight: Int,
- qsMaxExpansionHeight: Int,
- stackScrollerOverscrolling: Boolean,
- qsAnimatorExpand: Boolean,
- animatingQs: Boolean
+ message: String,
+ qsExpanded: Boolean,
+ qsMinExpansionHeight: Int,
+ qsMaxExpansionHeight: Int,
+ stackScrollerOverscrolling: Boolean,
+ qsAnimatorExpand: Boolean,
+ animatingQs: Boolean
) {
buffer.log(
TAG,
@@ -227,8 +220,10 @@
},
{
"PulsingGestureListener#onSingleTapUp all of this must true for single " +
- "tap to be detected: isDozing: $bool1, singleTapEnabled: $bool2, isNotDocked: $bool3"
- })
+ "tap to be detected: isDozing: $bool1, singleTapEnabled: $bool2," +
+ " isNotDocked: $bool3"
+ }
+ )
}
fun logSingleTapUpFalsingState(proximityIsNotNear: Boolean, isNotFalseTap: Boolean) {
@@ -247,9 +242,9 @@
}
fun logNotInterceptingTouchInstantExpanding(
- instantExpanding: Boolean,
- notificationsDragEnabled: Boolean,
- touchDisabled: Boolean
+ instantExpanding: Boolean,
+ notificationsDragEnabled: Boolean,
+ touchDisabled: Boolean
) {
buffer.log(
TAG,
@@ -276,12 +271,12 @@
}
fun logFlingExpands(
- vel: Float,
- vectorVel: Float,
- interactionType: Int,
- minVelocityPxPerSecond: Float,
- expansionOverHalf: Boolean,
- allowExpandForSmallExpansion: Boolean
+ vel: Float,
+ vectorVel: Float,
+ interactionType: Int,
+ minVelocityPxPerSecond: Float,
+ expansionOverHalf: Boolean,
+ allowExpandForSmallExpansion: Boolean
) {
buffer.log(
TAG,
@@ -294,9 +289,11 @@
bool1 = expansionOverHalf
bool2 = allowExpandForSmallExpansion
},
- { "NPVC flingExpands called with vel: $long1, vectorVel: $long2, " +
+ {
+ "NPVC flingExpands called with vel: $long1, vectorVel: $long2, " +
"interactionType: $int1, minVelocityPxPerSecond: $double1 " +
- "expansionOverHalf: $bool1, allowExpandForSmallExpansion: $bool2" }
+ "expansionOverHalf: $bool1, allowExpandForSmallExpansion: $bool2"
+ }
)
}
@@ -338,9 +335,7 @@
buffer.log(
TAG,
LogLevel.VERBOSE,
- {
- str1 = panelState.panelStateToString()
- },
+ { str1 = panelState.panelStateToString() },
{ "New panel State: $str1" }
)
}
@@ -357,12 +352,13 @@
)
}
- private fun flingTypeToString(flingType: Int) = when (flingType) {
- FLING_EXPAND -> "FLING_EXPAND"
- FLING_COLLAPSE -> "FLING_COLLAPSE"
- FLING_HIDE -> "FLING_HIDE"
- else -> "UNKNOWN"
- }
+ private fun flingTypeToString(flingType: Int) =
+ when (flingType) {
+ FLING_EXPAND -> "FLING_EXPAND"
+ FLING_COLLAPSE -> "FLING_COLLAPSE"
+ FLING_HIDE -> "FLING_HIDE"
+ else -> "UNKNOWN"
+ }
fun logSplitShadeChanged(splitShadeEnabled: Boolean) {
buffer.log(
@@ -392,8 +388,26 @@
},
{
"CentralSurfaces updateNotificationPanelTouchState set disabled to: $bool1\n" +
- "isGoingToSleep: $bool2, !shouldControlScreenOff: $bool3," +
- "!mDeviceInteractive: $bool4, !isPulsing: $str1"
+ "isGoingToSleep: $bool2, !shouldControlScreenOff: $bool3," +
+ "!mDeviceInteractive: $bool4, !isPulsing: $str1"
+ }
+ )
+ }
+
+ fun logNoTouchDispatch(
+ isTrackingBarGesture: Boolean,
+ isExpandAnimationRunning: Boolean,
+ ) {
+ buffer.log(
+ TAG,
+ LogLevel.VERBOSE,
+ {
+ bool1 = isTrackingBarGesture
+ bool2 = isExpandAnimationRunning
+ },
+ {
+ "NSWVC: touch not dispatched: isTrackingBarGesture: $bool1, " +
+ "isExpandAnimationRunning: $bool2"
}
)
}