From 48f269b539843d8afc5a81b541762678047c5089 Mon Sep 17 00:00:00 2001 From: Matt Pietal Date: Mon, 21 Sep 2020 14:09:50 -0400 Subject: [PATCH] Fix Wakefullness lifecycle NPE It appears that observers can occasionally be null. Check for nulls, and skip notifying. Fixes: 169016820 Test: atest WakefulnesslifecycleTest Change-Id: I5efa91a9b2ec70e3c58005e3fce8ed7e40cc16a8 --- .../src/com/android/systemui/keyguard/Lifecycle.java | 7 +++++-- .../systemui/keyguard/WakefulnessLifecycleTest.java | 6 +++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/Lifecycle.java b/packages/SystemUI/src/com/android/systemui/keyguard/Lifecycle.java index 1b20cfbc4e550..3da6caf319689 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/Lifecycle.java +++ b/packages/SystemUI/src/com/android/systemui/keyguard/Lifecycle.java @@ -16,7 +16,10 @@ package com.android.systemui.keyguard; +import androidx.annotation.NonNull; + import java.util.ArrayList; +import java.util.Objects; import java.util.function.Consumer; /** @@ -26,8 +29,8 @@ public class Lifecycle { private ArrayList mObservers = new ArrayList<>(); - public void addObserver(T observer) { - mObservers.add(observer); + public void addObserver(@NonNull T observer) { + mObservers.add(Objects.requireNonNull(observer)); } public void removeObserver(T observer) { diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/WakefulnessLifecycleTest.java b/packages/SystemUI/tests/src/com/android/systemui/keyguard/WakefulnessLifecycleTest.java index 1dc415048f74b..2e8e3ed664b34 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/WakefulnessLifecycleTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/WakefulnessLifecycleTest.java @@ -122,4 +122,8 @@ public class WakefulnessLifecycleTest extends SysuiTestCase { mWakefulness.dump(null, new PrintWriter(new ByteArrayOutputStream()), new String[0]); } -} \ No newline at end of file + @Test(expected = NullPointerException.class) + public void throwNPEOnNullObserver() { + mWakefulness.addObserver(null); + } +}