summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Mady Mellor <madym@google.com> 2019-04-01 14:47:55 -0700
committer Mady Mellor <madym@google.com> 2019-04-02 15:57:00 -0700
commitfc02cc3bffcb9f4a66ce2162ac09109ec1ddeb16 (patch)
tree3f84a567cb6a633a857848e40dd1f5659314636e
parentea94b7869d02d3bb5b5ae45e01b712da9f371d0f (diff)
Use FLAG_BUBBLE rather than setting the value ourselves
This flag will be the thing we use to know if something should be in the bubble state, so lets get rid of this extra notion. Previously we relied on BubbleController flagging the entry when onPendingEntryAdded is called in the NotifEntryListener, now we can rely on NoMan to tell us the right thing. Also cleans up a little how createBubble works in NotifTestHelper Bug: 129147774 Test: atest BubbleControllerTest Change-Id: I828af8740ac9b62680b249d877da519a8a2271d0
-rw-r--r--packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java1
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationEntry.java12
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/bubbles/BubbleControllerTest.java33
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationTestHelper.java22
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarterTest.java1
5 files changed, 21 insertions, 48 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java
index 3aa9f73939ac..a5aed87f5e21 100644
--- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java
+++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java
@@ -395,7 +395,6 @@ public class BubbleController implements BubbleExpandedView.OnBubbleBlockedListe
}
if (shouldAutoBubbleForFlags(mContext, entry) || shouldBubble(entry)) {
// TODO: handle group summaries
- entry.setIsBubble(true);
boolean suppressNotification = entry.getBubbleMetadata() != null
&& entry.getBubbleMetadata().getSuppressInitialNotification()
&& isForegroundApp(entry.notification.getPackageName());
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationEntry.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationEntry.java
index f1373d142402..4f4dcbc9ce92 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationEntry.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationEntry.java
@@ -21,6 +21,7 @@ import static android.app.Notification.CATEGORY_CALL;
import static android.app.Notification.CATEGORY_EVENT;
import static android.app.Notification.CATEGORY_MESSAGE;
import static android.app.Notification.CATEGORY_REMINDER;
+import static android.app.Notification.FLAG_BUBBLE;
import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_AMBIENT;
import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_FULL_SCREEN_INTENT;
import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_NOTIFICATION_LIST;
@@ -146,11 +147,6 @@ public final class NotificationEntry {
private boolean hasSentReply;
/**
- * Whether this notification should be displayed as a bubble.
- */
- private boolean mIsBubble;
-
- /**
* Whether this notification has been approved globally, at the app level, and at the channel
* level for bubbling.
*/
@@ -222,12 +218,8 @@ public final class NotificationEntry {
this.mHighPriority = highPriority;
}
- public void setIsBubble(boolean bubbleable) {
- mIsBubble = bubbleable;
- }
-
public boolean isBubble() {
- return mIsBubble;
+ return (notification.getNotification().flags & FLAG_BUBBLE) != 0;
}
public void setBubbleDismissed(boolean userDismissed) {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/bubbles/BubbleControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/bubbles/BubbleControllerTest.java
index 9fa85d307d2a..5e16721fe548 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/bubbles/BubbleControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/bubbles/BubbleControllerTest.java
@@ -18,9 +18,12 @@ package com.android.systemui.bubbles;
import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
+import static com.google.common.truth.Truth.assertThat;
+
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.Mockito.atLeastOnce;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
@@ -42,7 +45,6 @@ import android.widget.FrameLayout;
import androidx.test.filters.SmallTest;
-import com.android.internal.statusbar.NotificationVisibility;
import com.android.systemui.R;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.statusbar.NotificationTestHelper;
@@ -96,9 +98,9 @@ public class BubbleControllerTest extends SysuiTestCase {
private NotificationTestHelper mNotificationTestHelper;
private ExpandableNotificationRow mRow;
private ExpandableNotificationRow mRow2;
- private ExpandableNotificationRow mNoChannelRow;
private ExpandableNotificationRow mAutoExpandRow;
private ExpandableNotificationRow mSuppressNotifRow;
+ private ExpandableNotificationRow mNonBubbleNotifRow;
@Mock
private NotificationData mNotificationData;
@@ -107,9 +109,6 @@ public class BubbleControllerTest extends SysuiTestCase {
@Mock
private BubbleController.BubbleExpandListener mBubbleExpandListener;
@Mock
- NotificationVisibility mNotificationVisibility;
-
- @Mock
private PendingIntent mDeleteIntent;
private BubbleData mBubbleData;
@@ -129,7 +128,7 @@ public class BubbleControllerTest extends SysuiTestCase {
mNotificationTestHelper = new NotificationTestHelper(mContext);
mRow = mNotificationTestHelper.createBubble(mDeleteIntent);
mRow2 = mNotificationTestHelper.createBubble(mDeleteIntent);
- mNoChannelRow = mNotificationTestHelper.createBubble(mDeleteIntent);
+ mNonBubbleNotifRow = mNotificationTestHelper.createRow();
// Some bubbles want to auto expand
Notification.BubbleMetadata autoExpandMetadata =
@@ -146,7 +145,6 @@ public class BubbleControllerTest extends SysuiTestCase {
// Return non-null notification data from the NEM
when(mNotificationEntryManager.getNotificationData()).thenReturn(mNotificationData);
when(mNotificationData.getChannel(mRow.getEntry().key)).thenReturn(mRow.getEntry().channel);
- when(mNotificationData.getChannel(mNoChannelRow.getEntry().key)).thenReturn(null);
mBubbleData = new BubbleData();
mBubbleController = new TestableBubbleController(mContext, mStatusBarWindowController,
@@ -391,8 +389,7 @@ public class BubbleControllerTest extends SysuiTestCase {
mEntryListener.onPendingEntryAdded(mSuppressNotifRow.getEntry());
mBubbleController.updateBubble(mSuppressNotifRow.getEntry(), true /* updatePosition */);
- // Should be a bubble & should show in shade because we weren't forground
- assertTrue(mSuppressNotifRow.getEntry().isBubble());
+ // Should show in shade because we weren't forground
assertTrue(mSuppressNotifRow.getEntry().showInShadeWhenBubble());
// # of bubbles should change
@@ -428,8 +425,7 @@ public class BubbleControllerTest extends SysuiTestCase {
mEntryListener.onPendingEntryAdded(mSuppressNotifRow.getEntry());
mBubbleController.updateBubble(mSuppressNotifRow.getEntry(), true /* updatePosition */);
- // Should be a bubble & should NOT show in shade because we were foreground
- assertTrue(mSuppressNotifRow.getEntry().isBubble());
+ // Should NOT show in shade because we were foreground
assertFalse(mSuppressNotifRow.getEntry().showInShadeWhenBubble());
// # of bubbles should change
@@ -444,8 +440,6 @@ public class BubbleControllerTest extends SysuiTestCase {
mEntryListener.onPendingEntryAdded(mRow.getEntry());
mBubbleController.updateBubble(mRow.getEntry(), true /* updatePosition */);
- assertTrue(mRow.getEntry().isBubble());
-
// Simulate notification cancellation.
mEntryListener.onEntryRemoved(mRow.getEntry(), null /* notificationVisibility (unused) */,
false /* removedbyUser */);
@@ -454,15 +448,18 @@ public class BubbleControllerTest extends SysuiTestCase {
}
@Test
- public void testMarkNewNotificationAsBubble() {
+ public void testMarkNewNotificationAsShowInShade() {
mEntryListener.onPendingEntryAdded(mRow.getEntry());
- assertTrue(mRow.getEntry().isBubble());
+ assertTrue(mRow.getEntry().showInShadeWhenBubble());
}
@Test
- public void testMarkNewNotificationAsShowInShade() {
- mEntryListener.onPendingEntryAdded(mRow.getEntry());
- assertTrue(mRow.getEntry().showInShadeWhenBubble());
+ public void testAddNotif_notBubble() {
+ mEntryListener.onPendingEntryAdded(mNonBubbleNotifRow.getEntry());
+ mEntryListener.onPreEntryUpdated(mNonBubbleNotifRow.getEntry());
+
+ verify(mBubbleStateChangeListener, never()).onHasBubblesChanged(anyBoolean());
+ assertThat(mBubbleController.hasBubbles()).isFalse();
}
@Test
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationTestHelper.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationTestHelper.java
index 7e089a653b9e..8cc1571b925f 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationTestHelper.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationTestHelper.java
@@ -16,6 +16,7 @@
package com.android.systemui.statusbar;
+import static android.app.Notification.FLAG_BUBBLE;
import static android.app.NotificationManager.IMPORTANCE_DEFAULT;
import static android.app.NotificationManager.IMPORTANCE_HIGH;
@@ -154,9 +155,7 @@ public class NotificationTestHelper {
*/
public ExpandableNotificationRow createBubble()
throws Exception {
- Notification n = createNotification(false /* isGroupSummary */,
- null /* groupKey */, makeBubbleMetadata(null));
- return generateRow(n, PKG, UID, USER_HANDLE, 0 /* extraInflationFlags */, IMPORTANCE_HIGH);
+ return createBubble(makeBubbleMetadata(null), PKG);
}
/**
@@ -166,21 +165,7 @@ public class NotificationTestHelper {
*/
public ExpandableNotificationRow createBubble(@Nullable PendingIntent deleteIntent)
throws Exception {
- Notification n = createNotification(false /* isGroupSummary */,
- null /* groupKey */, makeBubbleMetadata(deleteIntent));
- return generateRow(n, PKG, UID, USER_HANDLE, 0 /* extraInflationFlags */, IMPORTANCE_HIGH);
- }
-
- /**
- * Returns an {@link ExpandableNotificationRow} that should be shown as a bubble.
- *
- * @param bubbleMetadata the {@link BubbleMetadata} to use
- */
- public ExpandableNotificationRow createBubble(BubbleMetadata bubbleMetadata)
- throws Exception {
- Notification n = createNotification(false /* isGroupSummary */,
- null /* groupKey */, bubbleMetadata);
- return generateRow(n, PKG, UID, USER_HANDLE, 0 /* extraInflationFlags */, IMPORTANCE_HIGH);
+ return createBubble(makeBubbleMetadata(deleteIntent), PKG);
}
/**
@@ -192,6 +177,7 @@ public class NotificationTestHelper {
throws Exception {
Notification n = createNotification(false /* isGroupSummary */,
null /* groupKey */, bubbleMetadata);
+ n.flags |= FLAG_BUBBLE;
return generateRow(n, pkg, UID, USER_HANDLE, 0 /* extraInflationFlags */, IMPORTANCE_HIGH);
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarterTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarterTest.java
index 41e82cbeac36..51fb47bd049c 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarterTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarterTest.java
@@ -152,7 +152,6 @@ public class StatusBarNotificationActivityStarterTest extends SysuiTestCase {
bubbleSbn.getNotification().contentIntent = mContentIntent;
bubbleSbn.getNotification().flags |= Notification.FLAG_AUTO_CANCEL;
// Do what BubbleController's NotificationEntryListener#onPendingEntryAdded does:
- mBubbleNotificationRow.getEntry().setIsBubble(true);
mBubbleNotificationRow.getEntry().setShowInShadeWhenBubble(true);
mActiveNotifications = new ArrayList<>();