From fc1ea085d52997b0a16982a0cd69de8397f659d2 Mon Sep 17 00:00:00 2001 From: Dave Mankoff Date: Tue, 4 May 2021 17:06:05 -0400 Subject: [PATCH] Prevent NPE on ExpandableNotificationRow. An NPE could happen, related to falsing, if the very first gesture to happen is a tap on an ExpandableNotificationRow. Fixes: 187196123 Test: atest SystemUITests Change-Id: I8a82fc4d85ba5676a6c198a0b6ddb67009c8ad8e --- .../android/systemui/classifier/FalsingDataProvider.java | 2 +- .../systemui/classifier/FalsingDataProviderTest.java | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/SystemUI/src/com/android/systemui/classifier/FalsingDataProvider.java b/packages/SystemUI/src/com/android/systemui/classifier/FalsingDataProvider.java index 2e60a65c3bd10..2f688dd9d2470 100644 --- a/packages/SystemUI/src/com/android/systemui/classifier/FalsingDataProvider.java +++ b/packages/SystemUI/src/com/android/systemui/classifier/FalsingDataProvider.java @@ -49,7 +49,7 @@ public class FalsingDataProvider { private TimeLimitedMotionEventBuffer mRecentMotionEvents = new TimeLimitedMotionEventBuffer(MOTION_EVENT_AGE_MS); - private List mPriorMotionEvents; + private List mPriorMotionEvents = new ArrayList<>(); private boolean mDirty = true; diff --git a/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingDataProviderTest.java b/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingDataProviderTest.java index 42387bcf9adc6..1fe694e97bcfa 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingDataProviderTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingDataProviderTest.java @@ -290,4 +290,11 @@ public class FalsingDataProviderTest extends ClassifierTest { mDataProvider.onMotionEvent(appendDownEvent(0, 200)); verify(listener).onGestureFinalized(100); } + + @Test + public void test_GetPriorEventsEarly() { + // Ensure that if we ask for prior events before any events were added, we at least get + // an empty array. + assertThat(mDataProvider.getPriorMotionEvents()).isNotNull(); + } }