Merge "Clean up NotificationIconAreaController.shouldShowNotificationIcon() for new pipeline" into udc-dev
This commit is contained in:
@@ -619,14 +619,6 @@ public final class NotificationEntry extends ListEntry {
|
|||||||
return row.isMediaRow();
|
return row.isMediaRow();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* We are a top level child if our parent is the list of notifications duh
|
|
||||||
* @return {@code true} if we're a top level notification
|
|
||||||
*/
|
|
||||||
public boolean isTopLevelChild() {
|
|
||||||
return row != null && row.isTopLevelChild();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void resetUserExpansion() {
|
public void resetUserExpansion() {
|
||||||
if (row != null) row.resetUserExpansion();
|
if (row != null) row.resetUserExpansion();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ import com.android.systemui.statusbar.notification.dagger.AlertingHeader;
|
|||||||
import com.android.systemui.statusbar.notification.dagger.SilentHeader;
|
import com.android.systemui.statusbar.notification.dagger.SilentHeader;
|
||||||
import com.android.systemui.statusbar.notification.stack.NotificationPriorityBucketKt;
|
import com.android.systemui.statusbar.notification.stack.NotificationPriorityBucketKt;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -78,6 +79,8 @@ public class RankingCoordinator implements Coordinator {
|
|||||||
public void attach(NotifPipeline pipeline) {
|
public void attach(NotifPipeline pipeline) {
|
||||||
mStatusBarStateController.addCallback(mStatusBarStateCallback);
|
mStatusBarStateController.addCallback(mStatusBarStateCallback);
|
||||||
mSectionStyleProvider.setMinimizedSections(Collections.singleton(mMinimizedNotifSectioner));
|
mSectionStyleProvider.setMinimizedSections(Collections.singleton(mMinimizedNotifSectioner));
|
||||||
|
mSectionStyleProvider.setSilentSections(
|
||||||
|
Arrays.asList(mSilentNotifSectioner, mMinimizedNotifSectioner));
|
||||||
|
|
||||||
pipeline.addPreGroupFilter(mSuspendedFilter);
|
pipeline.addPreGroupFilter(mSuspendedFilter);
|
||||||
pipeline.addPreGroupFilter(mDndVisualEffectsFilter);
|
pipeline.addPreGroupFilter(mDndVisualEffectsFilter);
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
package com.android.systemui.statusbar.notification.collection.provider
|
package com.android.systemui.statusbar.notification.collection.provider
|
||||||
|
|
||||||
import com.android.systemui.dagger.SysUISingleton
|
import com.android.systemui.dagger.SysUISingleton
|
||||||
|
import com.android.systemui.statusbar.notification.collection.ListEntry
|
||||||
import com.android.systemui.statusbar.notification.collection.listbuilder.NotifSection
|
import com.android.systemui.statusbar.notification.collection.listbuilder.NotifSection
|
||||||
import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifSectioner
|
import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifSectioner
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
@@ -27,6 +28,7 @@ import javax.inject.Inject
|
|||||||
*/
|
*/
|
||||||
@SysUISingleton
|
@SysUISingleton
|
||||||
class SectionStyleProvider @Inject constructor() {
|
class SectionStyleProvider @Inject constructor() {
|
||||||
|
private lateinit var silentSections: Set<NotifSectioner>
|
||||||
private lateinit var lowPrioritySections: Set<NotifSectioner>
|
private lateinit var lowPrioritySections: Set<NotifSectioner>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -38,9 +40,42 @@ class SectionStyleProvider @Inject constructor() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Determine if the given section is minimized
|
* Determine if the given section is minimized.
|
||||||
*/
|
*/
|
||||||
fun isMinimizedSection(section: NotifSection): Boolean {
|
fun isMinimizedSection(section: NotifSection): Boolean {
|
||||||
return lowPrioritySections.contains(section.sectioner)
|
return lowPrioritySections.contains(section.sectioner)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determine if the given entry is minimized.
|
||||||
|
*/
|
||||||
|
@JvmOverloads
|
||||||
|
fun isMinimized(entry: ListEntry, ifNotInSection: Boolean = true): Boolean {
|
||||||
|
val section = entry.section ?: return ifNotInSection
|
||||||
|
return isMinimizedSection(section)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Feed the provider the information it needs about which sections are silent, so that it can
|
||||||
|
* calculate which entries are in a "silent" section.
|
||||||
|
*/
|
||||||
|
fun setSilentSections(sections: Collection<NotifSectioner>) {
|
||||||
|
silentSections = sections.toSet()
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determine if the given section is silent.
|
||||||
|
*/
|
||||||
|
fun isSilentSection(section: NotifSection): Boolean {
|
||||||
|
return silentSections.contains(section.sectioner)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determine if the given entry is silent.
|
||||||
|
*/
|
||||||
|
@JvmOverloads
|
||||||
|
fun isSilent(entry: ListEntry, ifNotInSection: Boolean = true): Boolean {
|
||||||
|
val section = entry.section ?: return ifNotInSection
|
||||||
|
return isSilentSection(section)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -110,7 +110,6 @@ import com.android.systemui.statusbar.notification.stack.AmbientState;
|
|||||||
import com.android.systemui.statusbar.notification.stack.AnimationProperties;
|
import com.android.systemui.statusbar.notification.stack.AnimationProperties;
|
||||||
import com.android.systemui.statusbar.notification.stack.ExpandableViewState;
|
import com.android.systemui.statusbar.notification.stack.ExpandableViewState;
|
||||||
import com.android.systemui.statusbar.notification.stack.NotificationChildrenContainer;
|
import com.android.systemui.statusbar.notification.stack.NotificationChildrenContainer;
|
||||||
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout;
|
|
||||||
import com.android.systemui.statusbar.notification.stack.SwipeableView;
|
import com.android.systemui.statusbar.notification.stack.SwipeableView;
|
||||||
import com.android.systemui.statusbar.phone.KeyguardBypassController;
|
import com.android.systemui.statusbar.phone.KeyguardBypassController;
|
||||||
import com.android.systemui.statusbar.policy.HeadsUpManager;
|
import com.android.systemui.statusbar.policy.HeadsUpManager;
|
||||||
@@ -3587,10 +3586,6 @@ public class ExpandableNotificationRow extends ActivatableNotificationView
|
|||||||
return mEntry.getSbn().getNotification().isMediaNotification();
|
return mEntry.getSbn().getNotification().isMediaNotification();
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isTopLevelChild() {
|
|
||||||
return getParent() instanceof NotificationStackScrollLayout;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isGroupNotFullyVisible() {
|
public boolean isGroupNotFullyVisible() {
|
||||||
return getClipTopAmount() > 0 || getTranslationY() < 0;
|
return getClipTopAmount() > 0 || getTranslationY() < 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.android.systemui.statusbar.phone;
|
package com.android.systemui.statusbar.phone;
|
||||||
|
|
||||||
import android.app.NotificationManager;
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.graphics.Color;
|
import android.graphics.Color;
|
||||||
@@ -39,6 +38,7 @@ import com.android.systemui.statusbar.notification.NotificationWakeUpCoordinator
|
|||||||
import com.android.systemui.statusbar.notification.PropertyAnimator;
|
import com.android.systemui.statusbar.notification.PropertyAnimator;
|
||||||
import com.android.systemui.statusbar.notification.collection.ListEntry;
|
import com.android.systemui.statusbar.notification.collection.ListEntry;
|
||||||
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
|
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
|
||||||
|
import com.android.systemui.statusbar.notification.collection.provider.SectionStyleProvider;
|
||||||
import com.android.systemui.statusbar.notification.stack.AnimationProperties;
|
import com.android.systemui.statusbar.notification.stack.AnimationProperties;
|
||||||
import com.android.systemui.statusbar.window.StatusBarWindowController;
|
import com.android.systemui.statusbar.window.StatusBarWindowController;
|
||||||
import com.android.wm.shell.bubbles.Bubbles;
|
import com.android.wm.shell.bubbles.Bubbles;
|
||||||
@@ -73,6 +73,7 @@ public class NotificationIconAreaController implements
|
|||||||
private final NotificationWakeUpCoordinator mWakeUpCoordinator;
|
private final NotificationWakeUpCoordinator mWakeUpCoordinator;
|
||||||
private final KeyguardBypassController mBypassController;
|
private final KeyguardBypassController mBypassController;
|
||||||
private final DozeParameters mDozeParameters;
|
private final DozeParameters mDozeParameters;
|
||||||
|
private final SectionStyleProvider mSectionStyleProvider;
|
||||||
private final Optional<Bubbles> mBubblesOptional;
|
private final Optional<Bubbles> mBubblesOptional;
|
||||||
private final StatusBarWindowController mStatusBarWindowController;
|
private final StatusBarWindowController mStatusBarWindowController;
|
||||||
private final ScreenOffAnimationController mScreenOffAnimationController;
|
private final ScreenOffAnimationController mScreenOffAnimationController;
|
||||||
@@ -117,6 +118,7 @@ public class NotificationIconAreaController implements
|
|||||||
NotificationMediaManager notificationMediaManager,
|
NotificationMediaManager notificationMediaManager,
|
||||||
NotificationListener notificationListener,
|
NotificationListener notificationListener,
|
||||||
DozeParameters dozeParameters,
|
DozeParameters dozeParameters,
|
||||||
|
SectionStyleProvider sectionStyleProvider,
|
||||||
Optional<Bubbles> bubblesOptional,
|
Optional<Bubbles> bubblesOptional,
|
||||||
DemoModeController demoModeController,
|
DemoModeController demoModeController,
|
||||||
DarkIconDispatcher darkIconDispatcher,
|
DarkIconDispatcher darkIconDispatcher,
|
||||||
@@ -128,6 +130,7 @@ public class NotificationIconAreaController implements
|
|||||||
mStatusBarStateController.addCallback(this);
|
mStatusBarStateController.addCallback(this);
|
||||||
mMediaManager = notificationMediaManager;
|
mMediaManager = notificationMediaManager;
|
||||||
mDozeParameters = dozeParameters;
|
mDozeParameters = dozeParameters;
|
||||||
|
mSectionStyleProvider = sectionStyleProvider;
|
||||||
mWakeUpCoordinator = wakeUpCoordinator;
|
mWakeUpCoordinator = wakeUpCoordinator;
|
||||||
wakeUpCoordinator.addListener(this);
|
wakeUpCoordinator.addListener(this);
|
||||||
mBypassController = keyguardBypassController;
|
mBypassController = keyguardBypassController;
|
||||||
@@ -260,19 +263,13 @@ public class NotificationIconAreaController implements
|
|||||||
protected boolean shouldShowNotificationIcon(NotificationEntry entry,
|
protected boolean shouldShowNotificationIcon(NotificationEntry entry,
|
||||||
boolean showAmbient, boolean showLowPriority, boolean hideDismissed,
|
boolean showAmbient, boolean showLowPriority, boolean hideDismissed,
|
||||||
boolean hideRepliedMessages, boolean hideCurrentMedia, boolean hidePulsing) {
|
boolean hideRepliedMessages, boolean hideCurrentMedia, boolean hidePulsing) {
|
||||||
if (entry.getRanking().isAmbient() && !showAmbient) {
|
if (!showAmbient && mSectionStyleProvider.isMinimized(entry)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (hideCurrentMedia && entry.getKey().equals(mMediaManager.getMediaNotificationKey())) {
|
if (hideCurrentMedia && entry.getKey().equals(mMediaManager.getMediaNotificationKey())) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!showLowPriority && entry.getImportance() < NotificationManager.IMPORTANCE_DEFAULT) {
|
if (!showLowPriority && mSectionStyleProvider.isSilent(entry)) {
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (!entry.isTopLevelChild()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (entry.getRow().getVisibility() == View.GONE) {
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (entry.isRowDismissed() && hideDismissed) {
|
if (entry.isRowDismissed() && hideDismissed) {
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
|||||||
import com.android.systemui.statusbar.NotificationListener;
|
import com.android.systemui.statusbar.NotificationListener;
|
||||||
import com.android.systemui.statusbar.NotificationMediaManager;
|
import com.android.systemui.statusbar.NotificationMediaManager;
|
||||||
import com.android.systemui.statusbar.notification.NotificationWakeUpCoordinator;
|
import com.android.systemui.statusbar.notification.NotificationWakeUpCoordinator;
|
||||||
import com.android.systemui.statusbar.notification.collection.notifcollection.CommonNotifCollection;
|
import com.android.systemui.statusbar.notification.collection.provider.SectionStyleProvider;
|
||||||
import com.android.systemui.statusbar.window.StatusBarWindowController;
|
import com.android.systemui.statusbar.window.StatusBarWindowController;
|
||||||
import com.android.wm.shell.bubbles.Bubbles;
|
import com.android.wm.shell.bubbles.Bubbles;
|
||||||
|
|
||||||
@@ -62,7 +62,7 @@ public class NotificationIconAreaControllerTest extends SysuiTestCase {
|
|||||||
@Mock
|
@Mock
|
||||||
DozeParameters mDozeParameters;
|
DozeParameters mDozeParameters;
|
||||||
@Mock
|
@Mock
|
||||||
CommonNotifCollection mNotifCollection;
|
SectionStyleProvider mSectionStyleProvider;
|
||||||
@Mock
|
@Mock
|
||||||
DarkIconDispatcher mDarkIconDispatcher;
|
DarkIconDispatcher mDarkIconDispatcher;
|
||||||
@Mock
|
@Mock
|
||||||
@@ -87,6 +87,7 @@ public class NotificationIconAreaControllerTest extends SysuiTestCase {
|
|||||||
mNotificationMediaManager,
|
mNotificationMediaManager,
|
||||||
mListener,
|
mListener,
|
||||||
mDozeParameters,
|
mDozeParameters,
|
||||||
|
mSectionStyleProvider,
|
||||||
Optional.of(mBubbles),
|
Optional.of(mBubbles),
|
||||||
mDemoModeController,
|
mDemoModeController,
|
||||||
mDarkIconDispatcher,
|
mDarkIconDispatcher,
|
||||||
|
|||||||
Reference in New Issue
Block a user