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

Commit 6d097222 authored by Steve Elliott's avatar Steve Elliott Committed by Android (Google) Code Review
Browse files

Merge "Inline notif pipeline flag into SBNPresenter" into tm-qpr-dev

parents 7eef3f9e 78212309
Loading
Loading
Loading
Loading
+0 −95
Original line number Diff line number Diff line
@@ -30,13 +30,9 @@ import android.util.Log;
import android.util.Slog;
import android.view.View;
import android.view.accessibility.AccessibilityManager;
import android.widget.TextView;

import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.internal.statusbar.IStatusBarService;
import com.android.internal.widget.MessagingGroup;
import com.android.internal.widget.MessagingMessage;
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.systemui.Dependency;
import com.android.systemui.ForegroundServiceNotificationListener;
import com.android.systemui.InitController;
@@ -57,7 +53,6 @@ import com.android.systemui.statusbar.SysuiStatusBarStateController;
import com.android.systemui.statusbar.notification.AboveShelfObserver;
import com.android.systemui.statusbar.notification.DynamicPrivacyController;
import com.android.systemui.statusbar.notification.NotifPipelineFlags;
import com.android.systemui.statusbar.notification.NotificationEntryManager;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.notification.collection.inflation.NotificationRowBinderImpl;
import com.android.systemui.statusbar.notification.collection.render.NotifShadeEventSource;
@@ -72,16 +67,12 @@ import com.android.systemui.statusbar.notification.stack.NotificationListContain
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController;
import com.android.systemui.statusbar.phone.LockscreenGestureLogger.LockscreenUiEvent;
import com.android.systemui.statusbar.phone.dagger.CentralSurfacesComponent;
import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.KeyguardStateController;

import java.util.List;

import javax.inject.Inject;

@CentralSurfacesComponent.CentralSurfacesScope
class StatusBarNotificationPresenter implements NotificationPresenter,
        ConfigurationController.ConfigurationListener,
        NotificationRowBinderImpl.BindRowCallback,
        CommandQueue.Callbacks {
    private static final String TAG = "StatusBarNotificationPresenter";
@@ -92,10 +83,8 @@ class StatusBarNotificationPresenter implements NotificationPresenter,
    private final NotificationLockscreenUserManager mLockscreenUserManager;
    private final SysuiStatusBarStateController mStatusBarStateController;
    private final NotifShadeEventSource mNotifShadeEventSource;
    private final NotificationEntryManager mEntryManager;
    private final NotificationMediaManager mMediaManager;
    private final NotificationGutsManager mGutsManager;
    private final KeyguardUpdateMonitor mKeyguardUpdateMonitor;
    private final LockscreenGestureLogger mLockscreenGestureLogger;

    private final NotificationPanelViewController mNotificationPanel;
@@ -116,9 +105,6 @@ class StatusBarNotificationPresenter implements NotificationPresenter,
    private final IStatusBarService mBarService;
    private final DynamicPrivacyController mDynamicPrivacyController;
    private final NotificationListContainer mNotifListContainer;
    private boolean mReinflateNotificationsOnUserSwitched;
    private boolean mDispatchUiModeChangeOnUserSwitched;
    private TextView mNotificationPanelDebugText;

    protected boolean mVrMode;

@@ -143,15 +129,12 @@ class StatusBarNotificationPresenter implements NotificationPresenter,
            NotificationLockscreenUserManager lockscreenUserManager,
            SysuiStatusBarStateController sysuiStatusBarStateController,
            NotifShadeEventSource notifShadeEventSource,
            NotificationEntryManager notificationEntryManager,
            NotificationMediaManager notificationMediaManager,
            NotificationGutsManager notificationGutsManager,
            KeyguardUpdateMonitor keyguardUpdateMonitor,
            LockscreenGestureLogger lockscreenGestureLogger,
            InitController initController,
            NotificationInterruptStateProvider notificationInterruptStateProvider,
            NotificationRemoteInputManager remoteInputManager,
            ConfigurationController configurationController,
            NotifPipelineFlags notifPipelineFlags,
            NotificationRemoteInputManager.Callback remoteInputManagerCallback,
            NotificationListContainer notificationListContainer) {
@@ -170,10 +153,8 @@ class StatusBarNotificationPresenter implements NotificationPresenter,
        mLockscreenUserManager = lockscreenUserManager;
        mStatusBarStateController = sysuiStatusBarStateController;
        mNotifShadeEventSource = notifShadeEventSource;
        mEntryManager = notificationEntryManager;
        mMediaManager = notificationMediaManager;
        mGutsManager = notificationGutsManager;
        mKeyguardUpdateMonitor = keyguardUpdateMonitor;
        mLockscreenGestureLogger = lockscreenGestureLogger;
        mAboveShelfObserver = new AboveShelfObserver(stackScrollerController.getView());
        mNotificationShadeWindowController = notificationShadeWindowController;
@@ -208,11 +189,6 @@ class StatusBarNotificationPresenter implements NotificationPresenter,
                    mNotifListContainer);
            mNotifShadeEventSource.setShadeEmptiedCallback(this::maybeClosePanelForShadeEmptied);
            mNotifShadeEventSource.setNotifRemovedByUserCallback(this::maybeEndAmbientPulse);
            if (!mNotifPipelineFlags.isNewPipelineEnabled()) {
                mEntryManager.setUpWithPresenter(this);
                mEntryManager.addNotificationLifetimeExtender(mHeadsUpManager);
                mEntryManager.addNotificationLifetimeExtender(mGutsManager);
            }
            notificationInterruptStateProvider.addSuppressor(mInterruptSuppressor);
            mLockscreenUserManager.setUpWithPresenter(this);
            mMediaManager.setUpWithPresenter(this);
@@ -225,7 +201,6 @@ class StatusBarNotificationPresenter implements NotificationPresenter,

            onUserSwitched(mLockscreenUserManager.getCurrentUserId());
        });
        configurationController.addCallback(this);
    }

    /** Called when the shade has been emptied to attempt to close the shade */
@@ -239,65 +214,6 @@ class StatusBarNotificationPresenter implements NotificationPresenter,
        }
    }

    @Override
    public void onDensityOrFontScaleChanged() {
        // TODO(b/145659174): Remove legacy pipeline code
        if (mNotifPipelineFlags.isNewPipelineEnabled()) return;
        MessagingMessage.dropCache();
        MessagingGroup.dropCache();
        if (!mKeyguardUpdateMonitor.isSwitchingUser()) {
            updateNotificationsOnDensityOrFontScaleChanged();
        } else {
            mReinflateNotificationsOnUserSwitched = true;
        }
    }

    @Override
    public void onUiModeChanged() {
        // TODO(b/145659174): Remove legacy pipeline code
        if (mNotifPipelineFlags.isNewPipelineEnabled()) return;
        if (!mKeyguardUpdateMonitor.isSwitchingUser()) {
            updateNotificationsOnUiModeChanged();
        } else {
            mDispatchUiModeChangeOnUserSwitched = true;
        }
    }

    @Override
    public void onThemeChanged() {
        onDensityOrFontScaleChanged();
    }

    private void updateNotificationsOnUiModeChanged() {
        // TODO(b/145659174): Remove legacy pipeline code
        if (mNotifPipelineFlags.isNewPipelineEnabled()) return;
        List<NotificationEntry> userNotifications =
                mEntryManager.getActiveNotificationsForCurrentUser();
        for (int i = 0; i < userNotifications.size(); i++) {
            NotificationEntry entry = userNotifications.get(i);
            ExpandableNotificationRow row = entry.getRow();
            if (row != null) {
                row.onUiModeChanged();
            }
        }
    }

    private void updateNotificationsOnDensityOrFontScaleChanged() {
        // TODO(b/145659174): Remove legacy pipeline code
        if (mNotifPipelineFlags.isNewPipelineEnabled()) return;
        List<NotificationEntry> userNotifications =
                mEntryManager.getActiveNotificationsForCurrentUser();
        for (int i = 0; i < userNotifications.size(); i++) {
            NotificationEntry entry = userNotifications.get(i);
            entry.onDensityOrFontScaleChanged();
            boolean exposedGuts = entry.areGutsExposed();
            if (exposedGuts) {
                mGutsManager.onDensityOrFontScaleChanged(entry);
            }
        }
    }


    @Override
    public boolean isCollapsing() {
        return mNotificationPanel.isCollapsing()
@@ -338,17 +254,6 @@ class StatusBarNotificationPresenter implements NotificationPresenter,
        // End old BaseStatusBar.userSwitched
        if (MULTIUSER_DEBUG) mNotificationPanel.setHeaderDebugInfo("USER " + newUserId);
        mCommandQueue.animateCollapsePanels();
        if (!mNotifPipelineFlags.isNewPipelineEnabled()) {
            if (mReinflateNotificationsOnUserSwitched) {
                updateNotificationsOnDensityOrFontScaleChanged();
                mReinflateNotificationsOnUserSwitched = false;
            }
            if (mDispatchUiModeChangeOnUserSwitched) {
                updateNotificationsOnUiModeChanged();
                mDispatchUiModeChangeOnUserSwitched = false;
            }
            updateNotificationViews("user switched");
        }
        mMediaManager.clearCurrentMediaNotification();
        mCentralSurfaces.setLockscreenUser(newUserId);
        updateMediaMetaData(true, false);
+0 −6
Original line number Diff line number Diff line
@@ -33,7 +33,6 @@ import androidx.test.filters.SmallTest;

import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.internal.logging.testing.FakeMetricsLogger;
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.systemui.ForegroundServiceNotificationListener;
import com.android.systemui.InitController;
import com.android.systemui.SysuiTestCase;
@@ -50,7 +49,6 @@ import com.android.systemui.statusbar.NotificationViewHierarchyManager;
import com.android.systemui.statusbar.SysuiStatusBarStateController;
import com.android.systemui.statusbar.notification.DynamicPrivacyController;
import com.android.systemui.statusbar.notification.NotifPipelineFlags;
import com.android.systemui.statusbar.notification.NotificationEntryManager;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder;
import com.android.systemui.statusbar.notification.collection.render.NotifShadeEventSource;
@@ -61,7 +59,6 @@ import com.android.systemui.statusbar.notification.row.NotificationGutsManager;
import com.android.systemui.statusbar.notification.stack.NotificationListContainer;
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout;
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController;
import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.KeyguardStateController;

import org.junit.Before;
@@ -125,15 +122,12 @@ public class StatusBarNotificationPresenterTest extends SysuiTestCase {
                mock(NotificationLockscreenUserManager.class),
                mock(SysuiStatusBarStateController.class),
                mock(NotifShadeEventSource.class),
                mock(NotificationEntryManager.class),
                mock(NotificationMediaManager.class),
                mock(NotificationGutsManager.class),
                mock(KeyguardUpdateMonitor.class),
                lockscreenGestureLogger,
                mInitController,
                mNotificationInterruptStateProvider,
                mock(NotificationRemoteInputManager.class),
                mock(ConfigurationController.class),
                mock(NotifPipelineFlags.class),
                mock(NotificationRemoteInputManager.Callback.class),
                mock(NotificationListContainer.class));