Populate buckets to ensure correct corner rounds on notifications am: 4ddf9d094c
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/16150890 Change-Id: Ifa19762abfd1bd11499311e528167fdc069c8c36
This commit is contained in:
@@ -19,8 +19,8 @@ import static android.app.Notification.VISIBILITY_SECRET;
|
|||||||
import static android.app.admin.DevicePolicyManager.ACTION_DEVICE_POLICY_MANAGER_STATE_CHANGED;
|
import static android.app.admin.DevicePolicyManager.ACTION_DEVICE_POLICY_MANAGER_STATE_CHANGED;
|
||||||
|
|
||||||
import static com.android.systemui.DejankUtils.whitelistIpcs;
|
import static com.android.systemui.DejankUtils.whitelistIpcs;
|
||||||
import static com.android.systemui.statusbar.notification.stack.NotificationSectionsManagerKt.BUCKET_MEDIA_CONTROLS;
|
import static com.android.systemui.statusbar.notification.stack.NotificationPriorityBucketKt.BUCKET_MEDIA_CONTROLS;
|
||||||
import static com.android.systemui.statusbar.notification.stack.NotificationSectionsManagerKt.BUCKET_SILENT;
|
import static com.android.systemui.statusbar.notification.stack.NotificationPriorityBucketKt.BUCKET_SILENT;
|
||||||
|
|
||||||
import android.app.ActivityManager;
|
import android.app.ActivityManager;
|
||||||
import android.app.KeyguardManager;
|
import android.app.KeyguardManager;
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_PEEK;
|
|||||||
import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_STATUS_BAR;
|
import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_STATUS_BAR;
|
||||||
|
|
||||||
import static com.android.systemui.statusbar.notification.collection.NotifCollection.REASON_NOT_CANCELED;
|
import static com.android.systemui.statusbar.notification.collection.NotifCollection.REASON_NOT_CANCELED;
|
||||||
import static com.android.systemui.statusbar.notification.stack.NotificationSectionsManagerKt.BUCKET_ALERTING;
|
import static com.android.systemui.statusbar.notification.stack.NotificationPriorityBucketKt.BUCKET_ALERTING;
|
||||||
|
|
||||||
import static java.util.Objects.requireNonNull;
|
import static java.util.Objects.requireNonNull;
|
||||||
|
|
||||||
|
|||||||
@@ -52,6 +52,7 @@ import com.android.systemui.statusbar.notification.collection.listbuilder.plugga
|
|||||||
import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifStabilityManager;
|
import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifStabilityManager;
|
||||||
import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.Pluggable;
|
import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.Pluggable;
|
||||||
import com.android.systemui.statusbar.notification.collection.notifcollection.CollectionReadyForBuildListener;
|
import com.android.systemui.statusbar.notification.collection.notifcollection.CollectionReadyForBuildListener;
|
||||||
|
import com.android.systemui.statusbar.notification.stack.NotificationPriorityBucketKt;
|
||||||
import com.android.systemui.util.Assert;
|
import com.android.systemui.util.Assert;
|
||||||
import com.android.systemui.util.time.SystemClock;
|
import com.android.systemui.util.time.SystemClock;
|
||||||
|
|
||||||
@@ -738,7 +739,7 @@ public class ShadeListBuilder implements Dumpable {
|
|||||||
if (entry instanceof GroupEntry) {
|
if (entry instanceof GroupEntry) {
|
||||||
GroupEntry parent = (GroupEntry) entry;
|
GroupEntry parent = (GroupEntry) entry;
|
||||||
for (NotificationEntry child : parent.getChildren()) {
|
for (NotificationEntry child : parent.getChildren()) {
|
||||||
child.getAttachState().setSection(section);
|
setEntrySection(child, section);
|
||||||
}
|
}
|
||||||
parent.sortChildren(sChildComparator);
|
parent.sortChildren(sChildComparator);
|
||||||
}
|
}
|
||||||
@@ -957,10 +958,18 @@ public class ShadeListBuilder implements Dumpable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
entry.getAttachState().setSection(finalSection);
|
setEntrySection(entry, finalSection);
|
||||||
return finalSection;
|
return finalSection;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void setEntrySection(ListEntry entry, NotifSection finalSection) {
|
||||||
|
entry.getAttachState().setSection(finalSection);
|
||||||
|
NotificationEntry representativeEntry = entry.getRepresentativeEntry();
|
||||||
|
if (representativeEntry != null && finalSection != null) {
|
||||||
|
representativeEntry.setBucket(finalSection.getBucket());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
private NotifSection findSection(ListEntry entry) {
|
private NotifSection findSection(ListEntry entry) {
|
||||||
for (int i = 0; i < mNotifSections.size(); i++) {
|
for (int i = 0; i < mNotifSections.size(); i++) {
|
||||||
@@ -1039,13 +1048,13 @@ public class ShadeListBuilder implements Dumpable {
|
|||||||
void onRenderList(@NonNull List<ListEntry> entries);
|
void onRenderList(@NonNull List<ListEntry> entries);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final NotifSectioner DEFAULT_SECTIONER =
|
private static final NotifSectioner DEFAULT_SECTIONER = new NotifSectioner("UnknownSection",
|
||||||
new NotifSectioner("UnknownSection") {
|
NotificationPriorityBucketKt.BUCKET_UNKNOWN) {
|
||||||
@Override
|
@Override
|
||||||
public boolean isInSection(ListEntry entry) {
|
public boolean isInSection(ListEntry entry) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
private static final int MIN_CHILDREN_FOR_GROUP = 2;
|
private static final int MIN_CHILDREN_FOR_GROUP = 2;
|
||||||
|
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ import com.android.systemui.statusbar.notification.collection.NotifPipeline;
|
|||||||
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
|
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
|
||||||
import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifFilter;
|
import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifFilter;
|
||||||
import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifSectioner;
|
import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifSectioner;
|
||||||
|
import com.android.systemui.statusbar.notification.stack.NotificationPriorityBucketKt;
|
||||||
import com.android.systemui.util.concurrency.DelayableExecutor;
|
import com.android.systemui.util.concurrency.DelayableExecutor;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
@@ -102,7 +103,8 @@ public class AppOpsCoordinator implements Coordinator {
|
|||||||
/**
|
/**
|
||||||
* Puts foreground service notifications into its own section.
|
* Puts foreground service notifications into its own section.
|
||||||
*/
|
*/
|
||||||
private final NotifSectioner mNotifSectioner = new NotifSectioner("ForegroundService") {
|
private final NotifSectioner mNotifSectioner = new NotifSectioner("ForegroundService",
|
||||||
|
NotificationPriorityBucketKt.BUCKET_FOREGROUND_SERVICE) {
|
||||||
@Override
|
@Override
|
||||||
public boolean isInSection(ListEntry entry) {
|
public boolean isInSection(ListEntry entry) {
|
||||||
NotificationEntry notificationEntry = entry.getRepresentativeEntry();
|
NotificationEntry notificationEntry = entry.getRepresentativeEntry();
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ import com.android.systemui.statusbar.notification.collection.render.NodeControl
|
|||||||
import com.android.systemui.statusbar.notification.dagger.PeopleHeader
|
import com.android.systemui.statusbar.notification.dagger.PeopleHeader
|
||||||
import com.android.systemui.statusbar.notification.people.PeopleNotificationIdentifier
|
import com.android.systemui.statusbar.notification.people.PeopleNotificationIdentifier
|
||||||
import com.android.systemui.statusbar.notification.people.PeopleNotificationIdentifier.Companion.TYPE_NON_PERSON
|
import com.android.systemui.statusbar.notification.people.PeopleNotificationIdentifier.Companion.TYPE_NON_PERSON
|
||||||
|
import com.android.systemui.statusbar.notification.stack.BUCKET_PEOPLE
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -45,7 +46,7 @@ class ConversationCoordinator @Inject constructor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val sectioner = object : NotifSectioner("People") {
|
val sectioner = object : NotifSectioner("People", BUCKET_PEOPLE) {
|
||||||
override fun isInSection(entry: ListEntry): Boolean =
|
override fun isInSection(entry: ListEntry): Boolean =
|
||||||
isConversation(entry.representativeEntry!!)
|
isConversation(entry.representativeEntry!!)
|
||||||
override fun getHeaderNodeController() =
|
override fun getHeaderNodeController() =
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ import com.android.systemui.statusbar.notification.collection.render.NodeControl
|
|||||||
import com.android.systemui.statusbar.notification.dagger.IncomingHeader;
|
import com.android.systemui.statusbar.notification.dagger.IncomingHeader;
|
||||||
import com.android.systemui.statusbar.notification.interruption.HeadsUpViewBinder;
|
import com.android.systemui.statusbar.notification.interruption.HeadsUpViewBinder;
|
||||||
import com.android.systemui.statusbar.notification.interruption.NotificationInterruptStateProvider;
|
import com.android.systemui.statusbar.notification.interruption.NotificationInterruptStateProvider;
|
||||||
|
import com.android.systemui.statusbar.notification.stack.NotificationPriorityBucketKt;
|
||||||
import com.android.systemui.statusbar.policy.HeadsUpManager;
|
import com.android.systemui.statusbar.policy.HeadsUpManager;
|
||||||
import com.android.systemui.statusbar.policy.OnHeadsUpChangedListener;
|
import com.android.systemui.statusbar.policy.OnHeadsUpChangedListener;
|
||||||
|
|
||||||
@@ -196,7 +197,8 @@ public class HeadsUpCoordinator implements Coordinator {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
private final NotifSectioner mNotifSectioner = new NotifSectioner("HeadsUp") {
|
private final NotifSectioner mNotifSectioner = new NotifSectioner("HeadsUp",
|
||||||
|
NotificationPriorityBucketKt.BUCKET_HEADS_UP) {
|
||||||
@Override
|
@Override
|
||||||
public boolean isInSection(ListEntry entry) {
|
public boolean isInSection(ListEntry entry) {
|
||||||
return isCurrentlyShowingHun(entry);
|
return isCurrentlyShowingHun(entry);
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ import com.android.systemui.statusbar.notification.collection.render.NodeControl
|
|||||||
import com.android.systemui.statusbar.notification.collection.render.SectionHeaderController;
|
import com.android.systemui.statusbar.notification.collection.render.SectionHeaderController;
|
||||||
import com.android.systemui.statusbar.notification.dagger.AlertingHeader;
|
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 java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -82,7 +83,8 @@ public class RankingCoordinator implements Coordinator {
|
|||||||
return mSilentNotifSectioner;
|
return mSilentNotifSectioner;
|
||||||
}
|
}
|
||||||
|
|
||||||
private final NotifSectioner mAlertingNotifSectioner = new NotifSectioner("Alerting") {
|
private final NotifSectioner mAlertingNotifSectioner = new NotifSectioner("Alerting",
|
||||||
|
NotificationPriorityBucketKt.BUCKET_ALERTING) {
|
||||||
@Override
|
@Override
|
||||||
public boolean isInSection(ListEntry entry) {
|
public boolean isInSection(ListEntry entry) {
|
||||||
return mHighPriorityProvider.isHighPriority(entry);
|
return mHighPriorityProvider.isHighPriority(entry);
|
||||||
@@ -99,7 +101,8 @@ public class RankingCoordinator implements Coordinator {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
private final NotifSectioner mSilentNotifSectioner = new NotifSectioner("Silent") {
|
private final NotifSectioner mSilentNotifSectioner = new NotifSectioner("Silent",
|
||||||
|
NotificationPriorityBucketKt.BUCKET_SILENT) {
|
||||||
@Override
|
@Override
|
||||||
public boolean isInSection(ListEntry entry) {
|
public boolean isInSection(ListEntry entry) {
|
||||||
return !mHighPriorityProvider.isHighPriority(entry);
|
return !mHighPriorityProvider.isHighPriority(entry);
|
||||||
|
|||||||
@@ -18,14 +18,17 @@ package com.android.systemui.statusbar.notification.collection.listbuilder
|
|||||||
|
|
||||||
import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifSectioner
|
import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifSectioner
|
||||||
import com.android.systemui.statusbar.notification.collection.render.NodeController
|
import com.android.systemui.statusbar.notification.collection.render.NodeController
|
||||||
|
import com.android.systemui.statusbar.notification.stack.PriorityBucket
|
||||||
|
|
||||||
data class NotifSection(
|
data class NotifSection(
|
||||||
val sectioner: NotifSectioner,
|
val sectioner: NotifSectioner,
|
||||||
val index: Int
|
val index: Int
|
||||||
) {
|
) {
|
||||||
val label: String
|
val label: String
|
||||||
get() = "Section($index, \"${sectioner.name}\")"
|
get() = "Section($index, $bucket, \"${sectioner.name}\")"
|
||||||
|
|
||||||
val headerController: NodeController?
|
val headerController: NodeController?
|
||||||
get() = sectioner.headerNodeController
|
get() = sectioner.headerNodeController
|
||||||
|
|
||||||
|
@PriorityBucket val bucket: Int = sectioner.bucket
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,15 +22,28 @@ import com.android.systemui.statusbar.notification.collection.ListEntry;
|
|||||||
import com.android.systemui.statusbar.notification.collection.ShadeListBuilder;
|
import com.android.systemui.statusbar.notification.collection.ShadeListBuilder;
|
||||||
import com.android.systemui.statusbar.notification.collection.render.NodeController;
|
import com.android.systemui.statusbar.notification.collection.render.NodeController;
|
||||||
import com.android.systemui.statusbar.notification.collection.render.NodeSpec;
|
import com.android.systemui.statusbar.notification.collection.render.NodeSpec;
|
||||||
|
import com.android.systemui.statusbar.notification.stack.PriorityBucket;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Pluggable for participating in notif sectioning. See {@link ShadeListBuilder#setSections}.
|
* Pluggable for participating in notif sectioning. See {@link ShadeListBuilder#setSectioners}.
|
||||||
*/
|
*/
|
||||||
public abstract class NotifSectioner extends Pluggable<NotifSectioner> {
|
public abstract class NotifSectioner extends Pluggable<NotifSectioner> {
|
||||||
protected NotifSectioner(String name) {
|
@PriorityBucket
|
||||||
|
private final int mBucket;
|
||||||
|
|
||||||
|
protected NotifSectioner(String name, @PriorityBucket int bucket) {
|
||||||
super(name);
|
super(name);
|
||||||
|
mBucket = bucket;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the "bucket" value to apply to entries in this section
|
||||||
|
*/
|
||||||
|
@PriorityBucket
|
||||||
|
public final int getBucket() {
|
||||||
|
return mBucket;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -16,12 +16,12 @@
|
|||||||
|
|
||||||
package com.android.systemui.statusbar.notification.logging;
|
package com.android.systemui.statusbar.notification.logging;
|
||||||
|
|
||||||
import static com.android.systemui.statusbar.notification.stack.NotificationSectionsManagerKt.BUCKET_ALERTING;
|
import static com.android.systemui.statusbar.notification.stack.NotificationPriorityBucketKt.BUCKET_ALERTING;
|
||||||
import static com.android.systemui.statusbar.notification.stack.NotificationSectionsManagerKt.BUCKET_FOREGROUND_SERVICE;
|
import static com.android.systemui.statusbar.notification.stack.NotificationPriorityBucketKt.BUCKET_FOREGROUND_SERVICE;
|
||||||
import static com.android.systemui.statusbar.notification.stack.NotificationSectionsManagerKt.BUCKET_HEADS_UP;
|
import static com.android.systemui.statusbar.notification.stack.NotificationPriorityBucketKt.BUCKET_HEADS_UP;
|
||||||
import static com.android.systemui.statusbar.notification.stack.NotificationSectionsManagerKt.BUCKET_MEDIA_CONTROLS;
|
import static com.android.systemui.statusbar.notification.stack.NotificationPriorityBucketKt.BUCKET_MEDIA_CONTROLS;
|
||||||
import static com.android.systemui.statusbar.notification.stack.NotificationSectionsManagerKt.BUCKET_PEOPLE;
|
import static com.android.systemui.statusbar.notification.stack.NotificationPriorityBucketKt.BUCKET_PEOPLE;
|
||||||
import static com.android.systemui.statusbar.notification.stack.NotificationSectionsManagerKt.BUCKET_SILENT;
|
import static com.android.systemui.statusbar.notification.stack.NotificationPriorityBucketKt.BUCKET_SILENT;
|
||||||
|
|
||||||
import android.annotation.Nullable;
|
import android.annotation.Nullable;
|
||||||
import android.service.notification.StatusBarNotification;
|
import android.service.notification.StatusBarNotification;
|
||||||
|
|||||||
@@ -0,0 +1,25 @@
|
|||||||
|
package com.android.systemui.statusbar.notification.stack
|
||||||
|
|
||||||
|
import android.annotation.IntDef
|
||||||
|
|
||||||
|
/**
|
||||||
|
* For now, declare the available notification buckets (sections) here so that other
|
||||||
|
* presentation code can decide what to do based on an entry's buckets
|
||||||
|
*/
|
||||||
|
@Retention(AnnotationRetention.SOURCE)
|
||||||
|
@IntDef(
|
||||||
|
prefix = ["BUCKET_"],
|
||||||
|
value = [
|
||||||
|
BUCKET_UNKNOWN, BUCKET_MEDIA_CONTROLS, BUCKET_HEADS_UP, BUCKET_FOREGROUND_SERVICE,
|
||||||
|
BUCKET_PEOPLE, BUCKET_ALERTING, BUCKET_SILENT
|
||||||
|
]
|
||||||
|
)
|
||||||
|
annotation class PriorityBucket
|
||||||
|
|
||||||
|
const val BUCKET_UNKNOWN = 0
|
||||||
|
const val BUCKET_MEDIA_CONTROLS = 1
|
||||||
|
const val BUCKET_HEADS_UP = 2
|
||||||
|
const val BUCKET_FOREGROUND_SERVICE = 3
|
||||||
|
const val BUCKET_PEOPLE = 4
|
||||||
|
const val BUCKET_ALERTING = 5
|
||||||
|
const val BUCKET_SILENT = 6
|
||||||
@@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
package com.android.systemui.statusbar.notification.stack;
|
package com.android.systemui.statusbar.notification.stack;
|
||||||
|
|
||||||
import static com.android.systemui.statusbar.notification.stack.NotificationSectionsManagerKt.BUCKET_MEDIA_CONTROLS;
|
import static com.android.systemui.statusbar.notification.stack.NotificationPriorityBucketKt.BUCKET_MEDIA_CONTROLS;
|
||||||
|
|
||||||
import android.animation.Animator;
|
import android.animation.Animator;
|
||||||
import android.animation.AnimatorListenerAdapter;
|
import android.animation.AnimatorListenerAdapter;
|
||||||
|
|||||||
@@ -16,7 +16,6 @@
|
|||||||
package com.android.systemui.statusbar.notification.stack
|
package com.android.systemui.statusbar.notification.stack
|
||||||
|
|
||||||
import android.annotation.ColorInt
|
import android.annotation.ColorInt
|
||||||
import android.annotation.IntDef
|
|
||||||
import android.annotation.LayoutRes
|
import android.annotation.LayoutRes
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
@@ -448,25 +447,3 @@ class NotificationSectionsManager @Inject internal constructor(
|
|||||||
private const val DEBUG = false
|
private const val DEBUG = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* For now, declare the available notification buckets (sections) here so that other
|
|
||||||
* presentation code can decide what to do based on an entry's buckets
|
|
||||||
*/
|
|
||||||
@Retention(AnnotationRetention.SOURCE)
|
|
||||||
@IntDef(
|
|
||||||
prefix = ["BUCKET_"],
|
|
||||||
value = [
|
|
||||||
BUCKET_UNKNOWN, BUCKET_MEDIA_CONTROLS, BUCKET_HEADS_UP, BUCKET_FOREGROUND_SERVICE,
|
|
||||||
BUCKET_PEOPLE, BUCKET_ALERTING, BUCKET_SILENT
|
|
||||||
]
|
|
||||||
)
|
|
||||||
annotation class PriorityBucket
|
|
||||||
|
|
||||||
const val BUCKET_UNKNOWN = 0
|
|
||||||
const val BUCKET_MEDIA_CONTROLS = 1
|
|
||||||
const val BUCKET_HEADS_UP = 2
|
|
||||||
const val BUCKET_FOREGROUND_SERVICE = 3
|
|
||||||
const val BUCKET_PEOPLE = 4
|
|
||||||
const val BUCKET_ALERTING = 5
|
|
||||||
const val BUCKET_SILENT = 6
|
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
package com.android.systemui.statusbar.notification.stack;
|
package com.android.systemui.statusbar.notification.stack;
|
||||||
|
|
||||||
import static com.android.internal.jank.InteractionJankMonitor.CUJ_NOTIFICATION_SHADE_SCROLL_FLING;
|
import static com.android.internal.jank.InteractionJankMonitor.CUJ_NOTIFICATION_SHADE_SCROLL_FLING;
|
||||||
import static com.android.systemui.statusbar.notification.stack.NotificationSectionsManagerKt.BUCKET_SILENT;
|
import static com.android.systemui.statusbar.notification.stack.NotificationPriorityBucketKt.BUCKET_SILENT;
|
||||||
import static com.android.systemui.statusbar.notification.stack.StackStateAnimator.ANIMATION_DURATION_SWIPE;
|
import static com.android.systemui.statusbar.notification.stack.StackStateAnimator.ANIMATION_DURATION_SWIPE;
|
||||||
import static com.android.systemui.util.Utils.shouldUseSplitNotificationShade;
|
import static com.android.systemui.util.Utils.shouldUseSplitNotificationShade;
|
||||||
|
|
||||||
|
|||||||
@@ -20,10 +20,10 @@ import static android.app.NotificationManager.IMPORTANCE_HIGH;
|
|||||||
import static android.app.NotificationManager.IMPORTANCE_LOW;
|
import static android.app.NotificationManager.IMPORTANCE_LOW;
|
||||||
import static android.content.Intent.ACTION_USER_SWITCHED;
|
import static android.content.Intent.ACTION_USER_SWITCHED;
|
||||||
|
|
||||||
import static com.android.systemui.statusbar.notification.stack.NotificationSectionsManagerKt.BUCKET_ALERTING;
|
import static com.android.systemui.statusbar.notification.stack.NotificationPriorityBucketKt.BUCKET_ALERTING;
|
||||||
import static com.android.systemui.statusbar.notification.stack.NotificationSectionsManagerKt.BUCKET_MEDIA_CONTROLS;
|
import static com.android.systemui.statusbar.notification.stack.NotificationPriorityBucketKt.BUCKET_MEDIA_CONTROLS;
|
||||||
import static com.android.systemui.statusbar.notification.stack.NotificationSectionsManagerKt.BUCKET_PEOPLE;
|
import static com.android.systemui.statusbar.notification.stack.NotificationPriorityBucketKt.BUCKET_PEOPLE;
|
||||||
import static com.android.systemui.statusbar.notification.stack.NotificationSectionsManagerKt.BUCKET_SILENT;
|
import static com.android.systemui.statusbar.notification.stack.NotificationPriorityBucketKt.BUCKET_SILENT;
|
||||||
|
|
||||||
import static junit.framework.Assert.assertFalse;
|
import static junit.framework.Assert.assertFalse;
|
||||||
import static junit.framework.Assert.assertTrue;
|
import static junit.framework.Assert.assertTrue;
|
||||||
|
|||||||
@@ -1660,7 +1660,7 @@ public class ShadeListBuilderTest extends SysuiTestCase {
|
|||||||
private final String mPackage;
|
private final String mPackage;
|
||||||
|
|
||||||
PackageSectioner(String pkg) {
|
PackageSectioner(String pkg) {
|
||||||
super("PackageSection_" + pkg);
|
super("PackageSection_" + pkg, 0);
|
||||||
mPackage = pkg;
|
mPackage = pkg;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -26,6 +26,10 @@ import com.android.systemui.statusbar.notification.collection.NotificationEntryB
|
|||||||
import com.android.systemui.statusbar.notification.collection.getAttachState
|
import com.android.systemui.statusbar.notification.collection.getAttachState
|
||||||
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 com.android.systemui.statusbar.notification.stack.BUCKET_ALERTING
|
||||||
|
import com.android.systemui.statusbar.notification.stack.BUCKET_PEOPLE
|
||||||
|
import com.android.systemui.statusbar.notification.stack.BUCKET_SILENT
|
||||||
|
import com.android.systemui.statusbar.notification.stack.PriorityBucket
|
||||||
import com.android.systemui.util.mockito.any
|
import com.android.systemui.util.mockito.any
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
@@ -45,11 +49,15 @@ class NodeSpecBuilderTest : SysuiTestCase() {
|
|||||||
private var headerController1: NodeController = buildFakeController("header1")
|
private var headerController1: NodeController = buildFakeController("header1")
|
||||||
private var headerController2: NodeController = buildFakeController("header2")
|
private var headerController2: NodeController = buildFakeController("header2")
|
||||||
|
|
||||||
private val section0 = buildSection(0, headerController0)
|
private val section0Bucket = BUCKET_PEOPLE
|
||||||
private val section0NoHeader = buildSection(0, null)
|
private val section1Bucket = BUCKET_ALERTING
|
||||||
private val section1 = buildSection(1, headerController1)
|
private val section2Bucket = BUCKET_SILENT
|
||||||
private val section1NoHeader = buildSection(1, null)
|
|
||||||
private val section2 = buildSection(2, headerController2)
|
private val section0 = buildSection(0, section0Bucket, headerController0)
|
||||||
|
private val section0NoHeader = buildSection(0, section0Bucket, null)
|
||||||
|
private val section1 = buildSection(1, section1Bucket, headerController1)
|
||||||
|
private val section1NoHeader = buildSection(1, section1Bucket, null)
|
||||||
|
private val section2 = buildSection(2, section2Bucket, headerController2)
|
||||||
|
|
||||||
private val fakeViewBarn = FakeViewBarn()
|
private val fakeViewBarn = FakeViewBarn()
|
||||||
|
|
||||||
@@ -297,8 +305,12 @@ private fun buildFakeController(name: String): NodeController {
|
|||||||
return controller
|
return controller
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun buildSection(index: Int, nodeController: NodeController?): NotifSection {
|
private fun buildSection(
|
||||||
return NotifSection(object : NotifSectioner("Section $index") {
|
index: Int,
|
||||||
|
@PriorityBucket bucket: Int,
|
||||||
|
nodeController: NodeController?
|
||||||
|
): NotifSection {
|
||||||
|
return NotifSection(object : NotifSectioner("Section $index (bucket=$bucket)", bucket) {
|
||||||
|
|
||||||
override fun isInSection(entry: ListEntry?): Boolean {
|
override fun isInSection(entry: ListEntry?): Boolean {
|
||||||
throw NotImplementedError("This should never be called")
|
throw NotImplementedError("This should never be called")
|
||||||
|
|||||||
@@ -18,11 +18,11 @@ package com.android.systemui.statusbar.notification.stack;
|
|||||||
|
|
||||||
import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;
|
import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;
|
||||||
|
|
||||||
import static com.android.systemui.statusbar.notification.stack.NotificationSectionsManagerKt.BUCKET_ALERTING;
|
import static com.android.systemui.statusbar.notification.stack.NotificationPriorityBucketKt.BUCKET_ALERTING;
|
||||||
import static com.android.systemui.statusbar.notification.stack.NotificationSectionsManagerKt.BUCKET_FOREGROUND_SERVICE;
|
import static com.android.systemui.statusbar.notification.stack.NotificationPriorityBucketKt.BUCKET_FOREGROUND_SERVICE;
|
||||||
import static com.android.systemui.statusbar.notification.stack.NotificationSectionsManagerKt.BUCKET_HEADS_UP;
|
import static com.android.systemui.statusbar.notification.stack.NotificationPriorityBucketKt.BUCKET_HEADS_UP;
|
||||||
import static com.android.systemui.statusbar.notification.stack.NotificationSectionsManagerKt.BUCKET_PEOPLE;
|
import static com.android.systemui.statusbar.notification.stack.NotificationPriorityBucketKt.BUCKET_PEOPLE;
|
||||||
import static com.android.systemui.statusbar.notification.stack.NotificationSectionsManagerKt.BUCKET_SILENT;
|
import static com.android.systemui.statusbar.notification.stack.NotificationPriorityBucketKt.BUCKET_SILENT;
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
@@ -64,7 +64,6 @@ import org.junit.Before;
|
|||||||
import org.junit.Rule;
|
import org.junit.Rule;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.mockito.Answers;
|
|
||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.junit.MockitoJUnit;
|
import org.mockito.junit.MockitoJUnit;
|
||||||
import org.mockito.junit.MockitoRule;
|
import org.mockito.junit.MockitoRule;
|
||||||
@@ -608,7 +607,7 @@ public class NotificationSectionsManagerTest extends SysuiTestCase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private View mockNotification(int bucket, boolean isGone) {
|
private View mockNotification(@PriorityBucket int bucket, boolean isGone) {
|
||||||
ExpandableNotificationRow notifRow =
|
ExpandableNotificationRow notifRow =
|
||||||
mock(ExpandableNotificationRow.class, RETURNS_DEEP_STUBS);
|
mock(ExpandableNotificationRow.class, RETURNS_DEEP_STUBS);
|
||||||
when(notifRow.getVisibility()).thenReturn(View.VISIBLE);
|
when(notifRow.getVisibility()).thenReturn(View.VISIBLE);
|
||||||
|
|||||||
Reference in New Issue
Block a user