OSDN Git Service

Do not allow registration of null callbacks
authorLucas Dupin <dupin@google.com>
Fri, 22 Mar 2019 22:04:02 +0000 (15:04 -0700)
committerLucas Dupin <dupin@google.com>
Fri, 22 Mar 2019 22:15:36 +0000 (15:15 -0700)
Some client is registering null callbacks and causing NPE.
Let's crash earilier to figure out what's causing the behavior.

Fixes: 128895449
Test: start systemui, stop systemui
Test: all sysui tests and boot health tests still pass
Change-Id: I8caafc980c2dde0f9187fbd6205dbd2027233e60

packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardMonitorImpl.java

index 3c8ed6e..b53ff0e 100644 (file)
 
 package com.android.systemui.statusbar.policy;
 
+import android.annotation.NonNull;
 import android.app.ActivityManager;
 import android.content.Context;
 
+import com.android.internal.util.Preconditions;
 import com.android.keyguard.KeyguardUpdateMonitor;
 import com.android.keyguard.KeyguardUpdateMonitorCallback;
 import com.android.systemui.settings.CurrentUserTracker;
@@ -69,7 +71,8 @@ public class KeyguardMonitorImpl extends KeyguardUpdateMonitorCallback
     }
 
     @Override
-    public void addCallback(Callback callback) {
+    public void addCallback(@NonNull Callback callback) {
+        Preconditions.checkNotNull(callback, "Callback must not be null. b/128895449");
         mCallbacks.add(callback);
         if (mCallbacks.size() != 0 && !mListening) {
             mListening = true;
@@ -81,7 +84,8 @@ public class KeyguardMonitorImpl extends KeyguardUpdateMonitorCallback
     }
 
     @Override
-    public void removeCallback(Callback callback) {
+    public void removeCallback(@NonNull Callback callback) {
+        Preconditions.checkNotNull(callback, "Callback must not be null. b/128895449");
         if (mCallbacks.remove(callback) && mCallbacks.size() == 0 && mListening) {
             mListening = false;
             mKeyguardUpdateMonitor.removeCallback(this);