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

Commit 20403372 authored by Lucas Dupin's avatar Lucas Dupin
Browse files

Do not show media icon on AOD for active stream

Otherwise it would be duplicated in the keyguard slice area

Test: visual
Fixes: 124139684
Change-Id: Id86f1c034e7ac860849c2c1ba876dabaff71f911
parent b68b8a84
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ import com.android.systemui.statusbar.KeyguardIndicationController;
import com.android.systemui.statusbar.NotificationListener;
import com.android.systemui.statusbar.NotificationLockscreenUserManager;
import com.android.systemui.statusbar.NotificationLockscreenUserManagerImpl;
import com.android.systemui.statusbar.NotificationMediaManager;
import com.android.systemui.statusbar.ScrimView;
import com.android.systemui.statusbar.notification.NotificationEntryManager;
import com.android.systemui.statusbar.notification.NotificationInterruptionStateProvider;
@@ -141,7 +142,7 @@ public class SystemUIFactory {
            StatusBar statusBar, StatusBarStateController statusBarStateController,
            NotificationListener listener) {
        return new NotificationIconAreaController(context, statusBar, statusBarStateController,
                listener);
                listener, Dependency.get(NotificationMediaManager.class));
    }

    public KeyguardIndicationController createKeyguardIndicationController(Context context,
+15 −6
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import com.android.systemui.plugins.DarkIconDispatcher;
import com.android.systemui.plugins.DarkIconDispatcher.DarkReceiver;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.NotificationListener;
import com.android.systemui.statusbar.NotificationMediaManager;
import com.android.systemui.statusbar.NotificationShelf;
import com.android.systemui.statusbar.StatusBarIconView;
import com.android.systemui.statusbar.notification.NotificationEntryManager;
@@ -47,6 +48,7 @@ public class NotificationIconAreaController implements DarkReceiver,
    private final NotificationEntryManager mEntryManager;
    private final Runnable mUpdateStatusBarIcons = this::updateStatusBarIcons;
    private final StatusBarStateController mStatusBarStateController;
    private final NotificationMediaManager mMediaManager;
    @VisibleForTesting
    final NotificationListener.NotificationSettingsListener mSettingsListener =
            new NotificationListener.NotificationSettingsListener() {
@@ -93,13 +95,15 @@ public class NotificationIconAreaController implements DarkReceiver,

    public NotificationIconAreaController(Context context, StatusBar statusBar,
            StatusBarStateController statusBarStateController,
            NotificationListener notificationListener) {
            NotificationListener notificationListener,
            NotificationMediaManager notificationMediaManager) {
        mStatusBar = statusBar;
        mContrastColorUtil = ContrastColorUtil.getInstance(context);
        mContext = context;
        mEntryManager = Dependency.get(NotificationEntryManager.class);
        mStatusBarStateController = statusBarStateController;
        mStatusBarStateController.addCallback(this);
        mMediaManager = notificationMediaManager;
        notificationListener.addNotificationSettingsListener(mSettingsListener);

        initializeNotificationAreaViews(context);
@@ -192,10 +196,13 @@ public class NotificationIconAreaController implements DarkReceiver,

    protected boolean shouldShowNotificationIcon(NotificationEntry entry,
            boolean showAmbient, boolean showLowPriority, boolean hideDismissed,
            boolean hideRepliedMessages) {
            boolean hideRepliedMessages, boolean hideCurrentMedia) {
        if (mEntryManager.getNotificationData().isAmbient(entry.key) && !showAmbient) {
            return false;
        }
        if (hideCurrentMedia && entry.key.equals(mMediaManager.getMediaNotificationKey())) {
            return false;
        }
        if (!showLowPriority && !entry.isHighPriority()) {
            return false;
        }
@@ -235,14 +242,16 @@ public class NotificationIconAreaController implements DarkReceiver,
    private void updateShelfIcons() {
        updateIconsForLayout(entry -> entry.expandedIcon, mShelfIcons,
                true /* showAmbient */, !mFullyDark /* showLowPriority */,
                false /* hideDismissed */, mFullyDark /* hideRepliedMessages */);
                false /* hideDismissed */, mFullyDark /* hideRepliedMessages */,
                mFullyDark /* hideCurrentMedia */);
    }

    public void updateStatusBarIcons() {
        updateIconsForLayout(entry -> entry.icon, mNotificationIcons,
                false /* showAmbient */, mShowLowPriority /* showLowPriority */,
                true /* hideDismissed */,
                true /* hideRepliedMessages */);
                true /* hideRepliedMessages */,
                false /* hideCurrentMedia */);
    }

    @VisibleForTesting
@@ -261,7 +270,7 @@ public class NotificationIconAreaController implements DarkReceiver,
     */
    private void updateIconsForLayout(Function<NotificationEntry, StatusBarIconView> function,
            NotificationIconContainer hostLayout, boolean showAmbient, boolean showLowPriority,
            boolean hideDismissed, boolean hideRepliedMessages) {
            boolean hideDismissed, boolean hideRepliedMessages, boolean hideCurrentMedia) {
        ArrayList<StatusBarIconView> toShow = new ArrayList<>(
                mNotificationScrollLayout.getChildCount());

@@ -271,7 +280,7 @@ public class NotificationIconAreaController implements DarkReceiver,
            if (view instanceof ExpandableNotificationRow) {
                NotificationEntry ent = ((ExpandableNotificationRow) view).getEntry();
                if (shouldShowNotificationIcon(ent, showAmbient, showLowPriority, hideDismissed,
                        hideRepliedMessages)) {
                        hideRepliedMessages, hideCurrentMedia)) {
                    toShow.add(function.apply(ent));
                }
            }
+4 −1
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@ import android.testing.TestableLooper;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.NotificationListener;
import com.android.systemui.statusbar.NotificationMediaManager;

import org.junit.Before;
import org.junit.Test;
@@ -47,6 +48,8 @@ public class NotificationIconAreaControllerTest extends SysuiTestCase {
    StatusBar mStatusBar;
    @Mock
    StatusBarStateController mStatusBarStateController;
    @Mock
    private NotificationMediaManager mMediaManager;
    private NotificationIconAreaController mController;

    @Before
@@ -54,7 +57,7 @@ public class NotificationIconAreaControllerTest extends SysuiTestCase {
        MockitoAnnotations.initMocks(this);

        mController = new NotificationIconAreaController(mContext, mStatusBar,
                mStatusBarStateController, mListener);
                mStatusBarStateController, mListener, mMediaManager);
    }

    @Test