Merge "Fix NPE in NotificationLogger for real this time"

This commit is contained in:
TreeHugger Robot
2019-01-03 20:27:25 +00:00
committed by Android (Google) Code Review
2 changed files with 13 additions and 1 deletions

View File

@@ -174,7 +174,7 @@ public class NotificationLogger implements StateListener {
NotificationVisibility visibility,
boolean lifetimeExtended,
boolean removedByUser) {
if (removedByUser && visibility != null && entry.notification != null) {
if (removedByUser && visibility != null && entry != null) {
logNotificationClear(key, entry.notification, visibility);
}
}

View File

@@ -42,6 +42,7 @@ import com.android.systemui.UiOffloadThread;
import com.android.systemui.statusbar.NotificationListener;
import com.android.systemui.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.notification.NotificationData;
import com.android.systemui.statusbar.notification.NotificationEntryListener;
import com.android.systemui.statusbar.notification.NotificationEntryManager;
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
import com.android.systemui.statusbar.notification.stack.NotificationListContainer;
@@ -51,6 +52,8 @@ import com.google.android.collect.Lists;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Captor;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
@@ -72,9 +75,11 @@ public class NotificationLoggerTest extends SysuiTestCase {
// Dependency mocks:
@Mock private NotificationEntryManager mEntryManager;
@Mock private NotificationListener mListener;
@Captor private ArgumentCaptor<NotificationEntryListener> mEntryListenerCaptor;
private NotificationData.Entry mEntry;
private TestableNotificationLogger mLogger;
private NotificationEntryListener mNotificationEntryListener;
private ConcurrentLinkedQueue<AssertionError> mErrorQueue = new ConcurrentLinkedQueue<>();
@Before
@@ -94,6 +99,8 @@ public class NotificationLoggerTest extends SysuiTestCase {
mLogger = new TestableNotificationLogger(mListener, Dependency.get(UiOffloadThread.class),
mEntryManager, mock(StatusBarStateController.class), mBarService);
mLogger.setUpWithContainer(mListContainer);
verify(mEntryManager).addNotificationEntryListener(mEntryListenerCaptor.capture());
mNotificationEntryListener = mEntryListenerCaptor.getValue();
}
@Test
@@ -152,6 +159,11 @@ public class NotificationLoggerTest extends SysuiTestCase {
verify(mBarService, times(1)).onNotificationVisibilityChanged(any(), any());
}
@Test
public void testHandleNullEntryOnEntryRemoved() {
mNotificationEntryListener.onEntryRemoved(null, "foobar", null, null, false, false);
}
private class TestableNotificationLogger extends NotificationLogger {
TestableNotificationLogger(NotificationListener notificationListener,