Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6bdb69c1 authored by Steve Elliott's avatar Steve Elliott
Browse files

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
parent 8d98fcc5
Loading
Loading
Loading
Loading
+13 −15
Original line number Diff line number Diff line
@@ -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();
    }
+8 −0
Original line number Diff line number Diff line
@@ -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"
        })
    }
}
+13 −0
Original line number Diff line number Diff line
@@ -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<out String>) = 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
+5 −3
Original line number Diff line number Diff line
@@ -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))