From 6bdb69c1f6d15d32a1b7a3c173024429a224195a Mon Sep 17 00:00:00 2001 From: Steve Elliott Date: Mon, 13 Jun 2022 18:26:28 -0400 Subject: [PATCH] Add logging to KeyguardNotifVisProvider Specifically, dump() the state tracked within the provider, and log when the notif pipeline is invalidated due to a state change from the provider (as well as what exactly changed). Bug: 234824085 Test: manual Change-Id: I608b857c9796ed37ba75ca51d8ab0d95df754fa4 --- .../coordinator/KeyguardCoordinator.java | 28 +++++++++---------- .../coordinator/SharedCoordinatorLogger.kt | 8 ++++++ .../KeyguardNotificationVisibilityProvider.kt | 13 +++++++++ .../coordinator/KeyguardCoordinatorTest.java | 8 ++++-- 4 files changed, 39 insertions(+), 18 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/KeyguardCoordinator.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/KeyguardCoordinator.java index 4895fa3fcb563..ef63be0633bf3 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/KeyguardCoordinator.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/KeyguardCoordinator.java @@ -16,14 +16,14 @@ package com.android.systemui.statusbar.notification.collection.coordinator; -import com.android.keyguard.KeyguardUpdateMonitor; +import androidx.annotation.NonNull; + import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.statusbar.StatusBarState; import com.android.systemui.statusbar.notification.collection.NotifPipeline; import com.android.systemui.statusbar.notification.collection.NotificationEntry; import com.android.systemui.statusbar.notification.collection.coordinator.dagger.CoordinatorScope; import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifFilter; -import com.android.systemui.statusbar.notification.collection.provider.HighPriorityProvider; import com.android.systemui.statusbar.notification.collection.provider.SectionHeaderVisibilityProvider; import com.android.systemui.statusbar.notification.interruption.KeyguardNotificationVisibilityProvider; @@ -36,24 +36,21 @@ import javax.inject.Inject; @CoordinatorScope public class KeyguardCoordinator implements Coordinator { private static final String TAG = "KeyguardCoordinator"; - private final StatusBarStateController mStatusBarStateController; - private final KeyguardUpdateMonitor mKeyguardUpdateMonitor; - private final HighPriorityProvider mHighPriorityProvider; - private final SectionHeaderVisibilityProvider mSectionHeaderVisibilityProvider; private final KeyguardNotificationVisibilityProvider mKeyguardNotificationVisibilityProvider; + private final SectionHeaderVisibilityProvider mSectionHeaderVisibilityProvider; + private final SharedCoordinatorLogger mLogger; + private final StatusBarStateController mStatusBarStateController; @Inject public KeyguardCoordinator( - StatusBarStateController statusBarStateController, - KeyguardUpdateMonitor keyguardUpdateMonitor, - HighPriorityProvider highPriorityProvider, + KeyguardNotificationVisibilityProvider keyguardNotificationVisibilityProvider, SectionHeaderVisibilityProvider sectionHeaderVisibilityProvider, - KeyguardNotificationVisibilityProvider keyguardNotificationVisibilityProvider) { - mStatusBarStateController = statusBarStateController; - mKeyguardUpdateMonitor = keyguardUpdateMonitor; - mHighPriorityProvider = highPriorityProvider; - mSectionHeaderVisibilityProvider = sectionHeaderVisibilityProvider; + SharedCoordinatorLogger logger, + StatusBarStateController statusBarStateController) { mKeyguardNotificationVisibilityProvider = keyguardNotificationVisibilityProvider; + mSectionHeaderVisibilityProvider = sectionHeaderVisibilityProvider; + mLogger = logger; + mStatusBarStateController = statusBarStateController; } @Override @@ -69,7 +66,7 @@ public class KeyguardCoordinator implements Coordinator { private final NotifFilter mNotifFilter = new NotifFilter(TAG) { @Override - public boolean shouldFilterOut(NotificationEntry entry, long now) { + public boolean shouldFilterOut(@NonNull NotificationEntry entry, long now) { return mKeyguardNotificationVisibilityProvider.shouldHideNotification(entry); } }; @@ -81,6 +78,7 @@ public class KeyguardCoordinator implements Coordinator { } private void invalidateListFromFilter(String reason) { + mLogger.logKeyguardCoordinatorInvalidated(reason); updateSectionHeadersVisibility(); mNotifFilter.invalidateList(); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/SharedCoordinatorLogger.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/SharedCoordinatorLogger.kt index c85fc1efee95d..25bc641f0a845 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/SharedCoordinatorLogger.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/SharedCoordinatorLogger.kt @@ -35,4 +35,12 @@ class SharedCoordinatorLogger @Inject constructor( "Current user or profiles changed. Current user is $int1; profiles are $str1" }) } + + fun logKeyguardCoordinatorInvalidated(reason: String) { + buffer.log("KeyguardCoordinator", LogLevel.DEBUG, { + str1 = reason + }, { + "KeyguardCoordinator invalidated: $str1" + }) + } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/KeyguardNotificationVisibilityProvider.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/KeyguardNotificationVisibilityProvider.kt index 6cd3a6a728654..0b6b929cd93c1 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/KeyguardNotificationVisibilityProvider.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/KeyguardNotificationVisibilityProvider.kt @@ -25,12 +25,15 @@ import com.android.systemui.statusbar.notification.collection.NotificationEntry import com.android.systemui.statusbar.notification.collection.provider.HighPriorityProvider import com.android.systemui.statusbar.policy.KeyguardStateController import com.android.systemui.util.ListenerSet +import com.android.systemui.util.asIndenting import com.android.systemui.util.settings.GlobalSettings import com.android.systemui.util.settings.SecureSettings +import com.android.systemui.util.withIncreasedIndent import dagger.Binds import dagger.Module import dagger.multibindings.ClassKey import dagger.multibindings.IntoMap +import java.io.PrintWriter import java.util.function.Consumer import javax.inject.Inject @@ -209,6 +212,16 @@ private class KeyguardNotificationVisibilityProviderImpl @Inject constructor( } } + override fun dump(pw: PrintWriter, args: Array) = pw.asIndenting().run { + println("isLockedOrLocking=$isLockedOrLocking") + withIncreasedIndent { + println("keyguardStateController.isShowing=${keyguardStateController.isShowing}") + println("statusBarStateController.currentOrUpcomingState=" + + "${statusBarStateController.currentOrUpcomingState}") + } + println("hideSilentNotificationsOnLockscreen=$hideSilentNotificationsOnLockscreen") + } + private val isLockedOrLocking get() = keyguardStateController.isShowing || statusBarStateController.currentOrUpcomingState == StatusBarState.KEYGUARD diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/KeyguardCoordinatorTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/KeyguardCoordinatorTest.java index d8a98d1e8ea46..6171e2f760d30 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/KeyguardCoordinatorTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/KeyguardCoordinatorTest.java @@ -16,6 +16,7 @@ package com.android.systemui.statusbar.notification.collection.coordinator; +import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; @@ -72,9 +73,10 @@ public class KeyguardCoordinatorTest extends SysuiTestCase { public void setup() { MockitoAnnotations.initMocks(this); KeyguardCoordinator keyguardCoordinator = new KeyguardCoordinator( - mStatusBarStateController, - mKeyguardUpdateMonitor, mHighPriorityProvider, mSectionHeaderVisibilityProvider, - mKeyguardNotificationVisibilityProvider); + mKeyguardNotificationVisibilityProvider, + mSectionHeaderVisibilityProvider, + mock(SharedCoordinatorLogger.class), + mStatusBarStateController); mEntry = new NotificationEntryBuilder() .setUser(new UserHandle(NOTIF_USER_ID))