Loading packages/SystemUI/src/com/android/systemui/SystemUIFactory.java +2 −1 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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, Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconAreaController.java +15 −6 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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() { Loading Loading @@ -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); Loading Loading @@ -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; } Loading Loading @@ -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 Loading @@ -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()); Loading @@ -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)); } } Loading packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationIconAreaControllerTest.java +4 −1 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -47,6 +48,8 @@ public class NotificationIconAreaControllerTest extends SysuiTestCase { StatusBar mStatusBar; @Mock StatusBarStateController mStatusBarStateController; @Mock private NotificationMediaManager mMediaManager; private NotificationIconAreaController mController; @Before Loading @@ -54,7 +57,7 @@ public class NotificationIconAreaControllerTest extends SysuiTestCase { MockitoAnnotations.initMocks(this); mController = new NotificationIconAreaController(mContext, mStatusBar, mStatusBarStateController, mListener); mStatusBarStateController, mListener, mMediaManager); } @Test Loading Loading
packages/SystemUI/src/com/android/systemui/SystemUIFactory.java +2 −1 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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, Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconAreaController.java +15 −6 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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() { Loading Loading @@ -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); Loading Loading @@ -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; } Loading Loading @@ -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 Loading @@ -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()); Loading @@ -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)); } } Loading
packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationIconAreaControllerTest.java +4 −1 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -47,6 +48,8 @@ public class NotificationIconAreaControllerTest extends SysuiTestCase { StatusBar mStatusBar; @Mock StatusBarStateController mStatusBarStateController; @Mock private NotificationMediaManager mMediaManager; private NotificationIconAreaController mController; @Before Loading @@ -54,7 +57,7 @@ public class NotificationIconAreaControllerTest extends SysuiTestCase { MockitoAnnotations.initMocks(this); mController = new NotificationIconAreaController(mContext, mStatusBar, mStatusBarStateController, mListener); mStatusBarStateController, mListener, mMediaManager); } @Test Loading