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
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user