summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Shawn Lee <syeonlee@google.com> 2023-04-06 14:54:29 -0700
committer Shawn Lee <syeonlee@google.com> 2023-04-06 23:31:34 +0000
commitca1b48515824a53b647ba2aca273a84de96e1bcc (patch)
tree58b1d805405ccf9e9d0eee649e7faf18ed67ed42
parentffa6d53e82e21951db97cf69e701038d71b02e0d (diff)
Filling in holes in shade touch handling logging
Adding logs to try and narrow down a gnarly touch handling bug Bug: 274843725 Test: n/a Change-Id: I9e23d030204d780cd2b15d080d40c2e2ddcddb8a
-rw-r--r--packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java2
-rw-r--r--packages/SystemUI/src/com/android/systemui/shade/ShadeLogger.kt76
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java8
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CentralSurfacesImplTest.java3
4 files changed, 89 insertions, 0 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java b/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java
index 79d3b26e01c7..c255c58827f8 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java
+++ b/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java
@@ -4925,6 +4925,7 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump
}
handled |= handleTouch(event);
+ mShadeLog.logOnTouchEventLastReturn(event, !mDozing, handled);
return !mDozing || handled;
}
@@ -5107,6 +5108,7 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump
}
break;
}
+ mShadeLog.logHandleTouchLastReturn(event, !mGestureWaitForTouchSlop, mTracking);
return !mGestureWaitForTouchSlop || mTracking;
}
diff --git a/packages/SystemUI/src/com/android/systemui/shade/ShadeLogger.kt b/packages/SystemUI/src/com/android/systemui/shade/ShadeLogger.kt
index da4944c20f6e..a93183865a3f 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/ShadeLogger.kt
+++ b/packages/SystemUI/src/com/android/systemui/shade/ShadeLogger.kt
@@ -316,4 +316,80 @@ class ShadeLogger @Inject constructor(@ShadeLog private val buffer: LogBuffer) {
{ "QSC NotificationsClippingTopBound set to $int1 - $int2" }
)
}
+
+ fun logOnTouchEventLastReturn(
+ event: MotionEvent,
+ dozing: Boolean,
+ handled: Boolean,
+ ) {
+ buffer.log(
+ TAG,
+ LogLevel.VERBOSE,
+ {
+ bool1 = dozing
+ bool2 = handled
+ long1 = event.eventTime
+ long2 = event.downTime
+ int1 = event.action
+ int2 = event.classification
+ double1 = event.y.toDouble()
+ },
+ {
+ "NPVC onTouchEvent last return: !mDozing: $bool1 || handled: $bool2 " +
+ "\neventTime=$long1,downTime=$long2,y=$double1,action=$int1,class=$int2"
+ }
+ )
+ }
+
+ fun logHandleTouchLastReturn(
+ event: MotionEvent,
+ gestureWaitForTouchSlop: Boolean,
+ tracking: Boolean,
+ ) {
+ buffer.log(
+ TAG,
+ LogLevel.VERBOSE,
+ {
+ bool1 = gestureWaitForTouchSlop
+ bool2 = tracking
+ long1 = event.eventTime
+ long2 = event.downTime
+ int1 = event.action
+ int2 = event.classification
+ double1 = event.y.toDouble()
+ },
+ {
+ "NPVC handleTouch last return: !mGestureWaitForTouchSlop: $bool1 " +
+ "|| mTracking: $bool2 " +
+ "\neventTime=$long1,downTime=$long2,y=$double1,action=$int1,class=$int2"
+ }
+ )
+ }
+
+ fun logUpdateNotificationPanelTouchState(
+ disabled: Boolean,
+ isGoingToSleep: Boolean,
+ shouldControlScreenOff: Boolean,
+ deviceInteractive: Boolean,
+ isPulsing: Boolean,
+ isFrpActive: Boolean,
+ ) {
+ buffer.log(
+ TAG,
+ LogLevel.VERBOSE,
+ {
+ bool1 = disabled
+ bool2 = isGoingToSleep
+ bool3 = shouldControlScreenOff
+ bool4 = deviceInteractive
+ str1 = isPulsing.toString()
+ str2 = isFrpActive.toString()
+ },
+ {
+ "CentralSurfaces updateNotificationPanelTouchState set disabled to: $bool1\n" +
+ "isGoingToSleep: $bool2, !shouldControlScreenOff: $bool3," +
+ "!mDeviceInteractive: $bool4, !isPulsing: $str1, isFrpActive: $str2"
+ }
+ )
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java
index 0c8e9e56b04a..7596ce08a53c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java
@@ -192,6 +192,7 @@ import com.android.systemui.shade.ShadeController;
import com.android.systemui.shade.ShadeExpansionChangeEvent;
import com.android.systemui.shade.ShadeExpansionStateManager;
import com.android.systemui.shared.recents.utilities.Utilities;
+import com.android.systemui.shade.ShadeLogger;
import com.android.systemui.statusbar.AutoHideUiElement;
import com.android.systemui.statusbar.BackDropView;
import com.android.systemui.statusbar.CircleReveal;
@@ -505,6 +506,7 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces {
/** Controller for the Shade. */
@VisibleForTesting
NotificationPanelViewController mNotificationPanelViewController;
+ private final ShadeLogger mShadeLogger;
// settings
private QSPanelController mQSPanelController;
@@ -738,6 +740,7 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces {
KeyguardViewMediator keyguardViewMediator,
DisplayMetrics displayMetrics,
MetricsLogger metricsLogger,
+ ShadeLogger shadeLogger,
@UiBackground Executor uiBgExecutor,
NotificationMediaManager notificationMediaManager,
NotificationLockscreenUserManager lockScreenUserManager,
@@ -830,6 +833,7 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces {
mKeyguardViewMediator = keyguardViewMediator;
mDisplayMetrics = displayMetrics;
mMetricsLogger = metricsLogger;
+ mShadeLogger = shadeLogger;
mUiBgExecutor = uiBgExecutor;
mMediaManager = notificationMediaManager;
mLockscreenUserManager = lockScreenUserManager;
@@ -3672,6 +3676,10 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces {
boolean disabled = (!mDeviceInteractive && !mDozeServiceHost.isPulsing())
|| goingToSleepWithoutAnimation
|| mDeviceProvisionedController.isFrpActive();
+ mShadeLogger.logUpdateNotificationPanelTouchState(disabled, isGoingToSleep(),
+ !mDozeParameters.shouldControlScreenOff(), !mDeviceInteractive,
+ !mDozeServiceHost.isPulsing(), mDeviceProvisionedController.isFrpActive());
+
mNotificationPanelViewController.setTouchAndAnimationDisabled(disabled);
mNotificationIconAreaController.setAnimationsEnabled(!disabled);
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CentralSurfacesImplTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CentralSurfacesImplTest.java
index 32f0adfa1954..48710a42f616 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CentralSurfacesImplTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CentralSurfacesImplTest.java
@@ -133,6 +133,7 @@ import com.android.systemui.shade.QuickSettingsController;
import com.android.systemui.shade.ShadeController;
import com.android.systemui.shade.ShadeControllerImpl;
import com.android.systemui.shade.ShadeExpansionStateManager;
+import com.android.systemui.shade.ShadeLogger;
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.KeyguardIndicationController;
import com.android.systemui.statusbar.LockscreenShadeTransitionController;
@@ -221,6 +222,7 @@ public class CentralSurfacesImplTest extends SysuiTestCase {
@Mock private NotificationListContainer mNotificationListContainer;
@Mock private HeadsUpManagerPhone mHeadsUpManager;
@Mock private NotificationPanelViewController mNotificationPanelViewController;
+ @Mock private ShadeLogger mShadeLogger;
@Mock private NotificationPanelView mNotificationPanelView;
@Mock private QuickSettingsController mQuickSettingsController;
@Mock private IStatusBarService mBarService;
@@ -469,6 +471,7 @@ public class CentralSurfacesImplTest extends SysuiTestCase {
mKeyguardViewMediator,
new DisplayMetrics(),
mMetricsLogger,
+ mShadeLogger,
mUiBgExecutor,
mNotificationMediaManager,
mLockscreenUserManager,