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

Commit bc64fb04 authored by Beverly's avatar Beverly
Browse files

Create NotifGroupManagerHelper interface

This fixes group expansion for the new notif pipeline.

Creates a new interface, NotifGroupManagerHelper, which helps
controllers determine group information (ie: summary, parent, children)
given a notification entry. This is necessary for parts of the
notification pipeline that are shared between the old and new pipelines
that require querying group information (ie: HighPriorityProvider,
PeopleNotificationIdentifier).

Many parts of the old pipeline directly inject
NotificationGroupManagerLegacy. This indicates that when migrated to the new pipeline,
we can delete the old group manager's functionality since the new
pipeline handles the logic elsewhere (most likely in ShadeListBuilder)
For example, the new pipeline no longer needs to
track isolated entries nor suppressed summaries.

Test: test SystemUITests
Change-Id: Id716f881aa7122c08be6dada8fb43058594d89f1
parent d72af5ff
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -52,10 +52,10 @@ import com.android.systemui.statusbar.NotificationLockscreenUserManager;
import com.android.systemui.statusbar.NotificationLockscreenUserManagerImpl;
import com.android.systemui.statusbar.NotificationLockscreenUserManagerImpl;
import com.android.systemui.statusbar.NotificationShadeWindowController;
import com.android.systemui.statusbar.NotificationShadeWindowController;
import com.android.systemui.statusbar.notification.NotificationEntryManager;
import com.android.systemui.statusbar.notification.NotificationEntryManager;
import com.android.systemui.statusbar.notification.collection.render.GroupMembershipManager;
import com.android.systemui.statusbar.phone.HeadsUpManagerPhone;
import com.android.systemui.statusbar.phone.HeadsUpManagerPhone;
import com.android.systemui.statusbar.phone.KeyguardBypassController;
import com.android.systemui.statusbar.phone.KeyguardBypassController;
import com.android.systemui.statusbar.phone.KeyguardEnvironmentImpl;
import com.android.systemui.statusbar.phone.KeyguardEnvironmentImpl;
import com.android.systemui.statusbar.phone.NotificationGroupManager;
import com.android.systemui.statusbar.phone.ShadeController;
import com.android.systemui.statusbar.phone.ShadeController;
import com.android.systemui.statusbar.phone.ShadeControllerImpl;
import com.android.systemui.statusbar.phone.ShadeControllerImpl;
import com.android.systemui.statusbar.policy.BatteryController;
import com.android.systemui.statusbar.policy.BatteryController;
@@ -92,7 +92,7 @@ abstract class CarSystemUIModule {
            Context context,
            Context context,
            StatusBarStateController statusBarStateController,
            StatusBarStateController statusBarStateController,
            KeyguardBypassController bypassController,
            KeyguardBypassController bypassController,
            NotificationGroupManager groupManager,
            GroupMembershipManager groupManager,
            ConfigurationController configurationController) {
            ConfigurationController configurationController) {
        return new HeadsUpManagerPhone(context, statusBarStateController, bypassController,
        return new HeadsUpManagerPhone(context, statusBarStateController, bypassController,
                groupManager, configurationController);
                groupManager, configurationController);
+3 −3
Original line number Original line Diff line number Diff line
@@ -77,6 +77,7 @@ import com.android.systemui.statusbar.VibratorHelper;
import com.android.systemui.statusbar.notification.NotificationEntryManager;
import com.android.systemui.statusbar.notification.NotificationEntryManager;
import com.android.systemui.statusbar.notification.NotificationEntryManager.KeyguardEnvironment;
import com.android.systemui.statusbar.notification.NotificationEntryManager.KeyguardEnvironment;
import com.android.systemui.statusbar.notification.NotificationFilter;
import com.android.systemui.statusbar.notification.NotificationFilter;
import com.android.systemui.statusbar.notification.collection.legacy.NotificationGroupManagerLegacy;
import com.android.systemui.statusbar.notification.collection.legacy.VisualStabilityManager;
import com.android.systemui.statusbar.notification.collection.legacy.VisualStabilityManager;
import com.android.systemui.statusbar.notification.logging.NotificationLogger;
import com.android.systemui.statusbar.notification.logging.NotificationLogger;
import com.android.systemui.statusbar.notification.row.NotificationBlockingHelperManager;
import com.android.systemui.statusbar.notification.row.NotificationBlockingHelperManager;
@@ -88,7 +89,6 @@ import com.android.systemui.statusbar.phone.LightBarController;
import com.android.systemui.statusbar.phone.LockscreenGestureLogger;
import com.android.systemui.statusbar.phone.LockscreenGestureLogger;
import com.android.systemui.statusbar.phone.ManagedProfileController;
import com.android.systemui.statusbar.phone.ManagedProfileController;
import com.android.systemui.statusbar.phone.NotificationGroupAlertTransferHelper;
import com.android.systemui.statusbar.phone.NotificationGroupAlertTransferHelper;
import com.android.systemui.statusbar.phone.NotificationGroupManager;
import com.android.systemui.statusbar.phone.ShadeController;
import com.android.systemui.statusbar.phone.ShadeController;
import com.android.systemui.statusbar.phone.StatusBar;
import com.android.systemui.statusbar.phone.StatusBar;
import com.android.systemui.statusbar.phone.StatusBarIconController;
import com.android.systemui.statusbar.phone.StatusBarIconController;
@@ -276,7 +276,7 @@ public class Dependency {
    @Inject Lazy<StatusBarStateController> mStatusBarStateController;
    @Inject Lazy<StatusBarStateController> mStatusBarStateController;
    @Inject Lazy<NotificationLockscreenUserManager> mNotificationLockscreenUserManager;
    @Inject Lazy<NotificationLockscreenUserManager> mNotificationLockscreenUserManager;
    @Inject Lazy<NotificationGroupAlertTransferHelper> mNotificationGroupAlertTransferHelper;
    @Inject Lazy<NotificationGroupAlertTransferHelper> mNotificationGroupAlertTransferHelper;
    @Inject Lazy<NotificationGroupManager> mNotificationGroupManager;
    @Inject Lazy<NotificationGroupManagerLegacy> mNotificationGroupManager;
    @Inject Lazy<VisualStabilityManager> mVisualStabilityManager;
    @Inject Lazy<VisualStabilityManager> mVisualStabilityManager;
    @Inject Lazy<NotificationGutsManager> mNotificationGutsManager;
    @Inject Lazy<NotificationGutsManager> mNotificationGutsManager;
    @Inject Lazy<NotificationMediaManager> mNotificationMediaManager;
    @Inject Lazy<NotificationMediaManager> mNotificationMediaManager;
@@ -468,7 +468,7 @@ public class Dependency {
        mProviders.put(NotificationLockscreenUserManager.class,
        mProviders.put(NotificationLockscreenUserManager.class,
                mNotificationLockscreenUserManager::get);
                mNotificationLockscreenUserManager::get);
        mProviders.put(VisualStabilityManager.class, mVisualStabilityManager::get);
        mProviders.put(VisualStabilityManager.class, mVisualStabilityManager::get);
        mProviders.put(NotificationGroupManager.class, mNotificationGroupManager::get);
        mProviders.put(NotificationGroupManagerLegacy.class, mNotificationGroupManager::get);
        mProviders.put(NotificationGroupAlertTransferHelper.class,
        mProviders.put(NotificationGroupAlertTransferHelper.class,
                mNotificationGroupAlertTransferHelper::get);
                mNotificationGroupAlertTransferHelper::get);
        mProviders.put(NotificationMediaManager.class, mNotificationMediaManager::get);
        mProviders.put(NotificationMediaManager.class, mNotificationMediaManager::get);
+7 −8
Original line number Original line Diff line number Diff line
@@ -104,11 +104,11 @@ import com.android.systemui.statusbar.notification.collection.NotifCollection;
import com.android.systemui.statusbar.notification.collection.NotifPipeline;
import com.android.systemui.statusbar.notification.collection.NotifPipeline;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.notification.collection.coordinator.BubbleCoordinator;
import com.android.systemui.statusbar.notification.collection.coordinator.BubbleCoordinator;
import com.android.systemui.statusbar.notification.collection.legacy.NotificationGroupManagerLegacy;
import com.android.systemui.statusbar.notification.collection.notifcollection.DismissedByUserStats;
import com.android.systemui.statusbar.notification.collection.notifcollection.DismissedByUserStats;
import com.android.systemui.statusbar.notification.collection.notifcollection.NotifCollectionListener;
import com.android.systemui.statusbar.notification.collection.notifcollection.NotifCollectionListener;
import com.android.systemui.statusbar.notification.interruption.NotificationInterruptStateProvider;
import com.android.systemui.statusbar.notification.interruption.NotificationInterruptStateProvider;
import com.android.systemui.statusbar.notification.logging.NotificationLogger;
import com.android.systemui.statusbar.notification.logging.NotificationLogger;
import com.android.systemui.statusbar.phone.NotificationGroupManager;
import com.android.systemui.statusbar.phone.ScrimController;
import com.android.systemui.statusbar.phone.ScrimController;
import com.android.systemui.statusbar.phone.ShadeController;
import com.android.systemui.statusbar.phone.ShadeController;
import com.android.systemui.statusbar.phone.StatusBar;
import com.android.systemui.statusbar.phone.StatusBar;
@@ -164,7 +164,7 @@ public class BubbleController implements ConfigurationController.ConfigurationLi
    private final BubbleTaskStackListener mTaskStackListener;
    private final BubbleTaskStackListener mTaskStackListener;
    private BubbleExpandListener mExpandListener;
    private BubbleExpandListener mExpandListener;
    @Nullable private BubbleStackView.SurfaceSynchronizer mSurfaceSynchronizer;
    @Nullable private BubbleStackView.SurfaceSynchronizer mSurfaceSynchronizer;
    private final NotificationGroupManager mNotificationGroupManager;
    private final NotificationGroupManagerLegacy mNotificationGroupManager;
    private final ShadeController mShadeController;
    private final ShadeController mShadeController;
    private final FloatingContentCoordinator mFloatingContentCoordinator;
    private final FloatingContentCoordinator mFloatingContentCoordinator;
    private final BubbleDataRepository mDataRepository;
    private final BubbleDataRepository mDataRepository;
@@ -355,7 +355,7 @@ public class BubbleController implements ConfigurationController.ConfigurationLi
            NotificationInterruptStateProvider interruptionStateProvider,
            NotificationInterruptStateProvider interruptionStateProvider,
            ZenModeController zenModeController,
            ZenModeController zenModeController,
            NotificationLockscreenUserManager notifUserManager,
            NotificationLockscreenUserManager notifUserManager,
            NotificationGroupManager groupManager,
            NotificationGroupManagerLegacy groupManager,
            NotificationEntryManager entryManager,
            NotificationEntryManager entryManager,
            NotifPipeline notifPipeline,
            NotifPipeline notifPipeline,
            FeatureFlags featureFlags,
            FeatureFlags featureFlags,
@@ -588,11 +588,11 @@ public class BubbleController implements ConfigurationController.ConfigurationLi
                    }
                    }
                });
                });


        mNotificationGroupManager.addOnGroupChangeListener(
        mNotificationGroupManager.registerGroupChangeListener(
                new NotificationGroupManager.OnGroupChangeListener() {
                new NotificationGroupManagerLegacy.OnGroupChangeListener() {
                    @Override
                    @Override
                    public void onGroupSuppressionChanged(
                    public void onGroupSuppressionChanged(
                            NotificationGroupManager.NotificationGroup group,
                            NotificationGroupManagerLegacy.NotificationGroup group,
                            boolean suppressed) {
                            boolean suppressed) {
                        // More notifications could be added causing summary to no longer
                        // More notifications could be added causing summary to no longer
                        // be suppressed -- in this case need to remove the key.
                        // be suppressed -- in this case need to remove the key.
@@ -650,8 +650,7 @@ public class BubbleController implements ConfigurationController.ConfigurationLi
                // 3. User removes all bubbles
                // 3. User removes all bubbles
                // 4. We expect all the removed bubbles AND the summary (note: the summary was
                // 4. We expect all the removed bubbles AND the summary (note: the summary was
                // never added to the suppressedSummary list in BubbleData, so we add this check)
                // never added to the suppressedSummary list in BubbleData, so we add this check)
                NotificationEntry summary =
                NotificationEntry summary = mNotificationGroupManager.getLogicalGroupSummary(entry);
                        mNotificationGroupManager.getLogicalGroupSummary(entry.getSbn());
                if (summary != null) {
                if (summary != null) {
                    ArrayList<NotificationEntry> summaryChildren =
                    ArrayList<NotificationEntry> summaryChildren =
                            mNotificationGroupManager.getLogicalChildren(summary.getSbn());
                            mNotificationGroupManager.getLogicalChildren(summary.getSbn());
+2 −2
Original line number Original line Diff line number Diff line
@@ -34,8 +34,8 @@ import com.android.systemui.statusbar.NotificationLockscreenUserManager;
import com.android.systemui.statusbar.NotificationShadeWindowController;
import com.android.systemui.statusbar.NotificationShadeWindowController;
import com.android.systemui.statusbar.notification.NotificationEntryManager;
import com.android.systemui.statusbar.notification.NotificationEntryManager;
import com.android.systemui.statusbar.notification.collection.NotifPipeline;
import com.android.systemui.statusbar.notification.collection.NotifPipeline;
import com.android.systemui.statusbar.notification.collection.legacy.NotificationGroupManagerLegacy;
import com.android.systemui.statusbar.notification.interruption.NotificationInterruptStateProvider;
import com.android.systemui.statusbar.notification.interruption.NotificationInterruptStateProvider;
import com.android.systemui.statusbar.phone.NotificationGroupManager;
import com.android.systemui.statusbar.phone.ShadeController;
import com.android.systemui.statusbar.phone.ShadeController;
import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.ZenModeController;
import com.android.systemui.statusbar.policy.ZenModeController;
@@ -62,7 +62,7 @@ public interface BubbleModule {
            NotificationInterruptStateProvider interruptionStateProvider,
            NotificationInterruptStateProvider interruptionStateProvider,
            ZenModeController zenModeController,
            ZenModeController zenModeController,
            NotificationLockscreenUserManager notifUserManager,
            NotificationLockscreenUserManager notifUserManager,
            NotificationGroupManager groupManager,
            NotificationGroupManagerLegacy groupManager,
            NotificationEntryManager entryManager,
            NotificationEntryManager entryManager,
            NotifPipeline notifPipeline,
            NotifPipeline notifPipeline,
            FeatureFlags featureFlags,
            FeatureFlags featureFlags,
+2 −2
Original line number Original line Diff line number Diff line
@@ -46,11 +46,11 @@ import com.android.systemui.statusbar.NotificationLockscreenUserManager;
import com.android.systemui.statusbar.NotificationLockscreenUserManagerImpl;
import com.android.systemui.statusbar.NotificationLockscreenUserManagerImpl;
import com.android.systemui.statusbar.NotificationShadeWindowController;
import com.android.systemui.statusbar.NotificationShadeWindowController;
import com.android.systemui.statusbar.notification.NotificationEntryManager;
import com.android.systemui.statusbar.notification.NotificationEntryManager;
import com.android.systemui.statusbar.notification.collection.render.GroupMembershipManager;
import com.android.systemui.statusbar.phone.DozeServiceHost;
import com.android.systemui.statusbar.phone.DozeServiceHost;
import com.android.systemui.statusbar.phone.HeadsUpManagerPhone;
import com.android.systemui.statusbar.phone.HeadsUpManagerPhone;
import com.android.systemui.statusbar.phone.KeyguardBypassController;
import com.android.systemui.statusbar.phone.KeyguardBypassController;
import com.android.systemui.statusbar.phone.KeyguardEnvironmentImpl;
import com.android.systemui.statusbar.phone.KeyguardEnvironmentImpl;
import com.android.systemui.statusbar.phone.NotificationGroupManager;
import com.android.systemui.statusbar.phone.NotificationShadeWindowControllerImpl;
import com.android.systemui.statusbar.phone.NotificationShadeWindowControllerImpl;
import com.android.systemui.statusbar.phone.ShadeController;
import com.android.systemui.statusbar.phone.ShadeController;
import com.android.systemui.statusbar.phone.ShadeControllerImpl;
import com.android.systemui.statusbar.phone.ShadeControllerImpl;
@@ -143,7 +143,7 @@ public abstract class SystemUIDefaultModule {
            Context context,
            Context context,
            StatusBarStateController statusBarStateController,
            StatusBarStateController statusBarStateController,
            KeyguardBypassController bypassController,
            KeyguardBypassController bypassController,
            NotificationGroupManager groupManager,
            GroupMembershipManager groupManager,
            ConfigurationController configurationController) {
            ConfigurationController configurationController) {
        return new HeadsUpManagerPhone(context, statusBarStateController, bypassController,
        return new HeadsUpManagerPhone(context, statusBarStateController, bypassController,
                groupManager, configurationController);
                groupManager, configurationController);
Loading