summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Kevin Han <kevhan@google.com> 2020-04-07 18:13:36 -0700
committer Kevin Han <kevhan@google.com> 2020-04-07 18:13:36 -0700
commit39ce15fee5a55cea9d9609e68e3f68b3241ec46c (patch)
tree3fc9a8f49bb33e947eec07bbc9e5d9a677e0243d
parente68c8ac02bb4bd3907c6513992f6f22c151e1a8e (diff)
Add test for content inflation during row inflation
Add a test to catch situtations like b/153295369. Bug: 153295369 Test: atest NotificationEntryManagerInflationTest Test: Revert ag/10963478 locally. Test fails Change-Id: I76ae394fe194ec4fc5d95012fe47903e5e764ca6
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationEntryManagerInflationTest.java35
1 files changed, 31 insertions, 4 deletions
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationEntryManagerInflationTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationEntryManagerInflationTest.java
index be026f7884c3..1c6e5a36bd8a 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationEntryManagerInflationTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationEntryManagerInflationTest.java
@@ -18,6 +18,8 @@ package com.android.systemui.statusbar.notification.row;
import static android.app.NotificationManager.IMPORTANCE_DEFAULT;
+import static com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.FLAG_CONTENT_VIEW_HEADS_UP;
+
import static junit.framework.Assert.assertNotNull;
import static org.mockito.ArgumentMatchers.any;
@@ -139,6 +141,7 @@ public class NotificationEntryManagerInflationTest extends SysuiTestCase {
private NotificationRowBinderImpl mRowBinder;
private Handler mHandler;
private FakeExecutor mBgExecutor;
+ private RowContentBindStage mRowContentBindStage;
@Before
public void setUp() {
@@ -147,10 +150,13 @@ public class NotificationEntryManagerInflationTest extends SysuiTestCase {
mHandler = Handler.createAsync(TestableLooper.get(this).getLooper());
+ // Add an action so heads up content views are made
+ Notification.Action action = new Notification.Action.Builder(null, null, null).build();
Notification notification = new Notification.Builder(mContext)
.setSmallIcon(R.drawable.ic_person)
.setContentTitle(TEST_TITLE)
.setContentText(TEST_TEXT)
+ .setActions(action)
.build();
mSbn = new SbnBuilder()
.setNotification(notification)
@@ -192,11 +198,11 @@ public class NotificationEntryManagerInflationTest extends SysuiTestCase {
() -> mock(SmartReplyController.class),
mock(ConversationNotificationProcessor.class),
mBgExecutor);
- RowContentBindStage stage = new RowContentBindStage(
+ mRowContentBindStage = new RowContentBindStage(
binder,
mock(NotifInflationErrorManager.class),
mock(RowContentBindStageLogger.class));
- pipeline.setStage(stage);
+ pipeline.setStage(mRowContentBindStage);
ArgumentCaptor<ExpandableNotificationRow> viewCaptor =
ArgumentCaptor.forClass(ExpandableNotificationRow.class);
@@ -232,7 +238,7 @@ public class NotificationEntryManagerInflationTest extends SysuiTestCase {
"FOOBAR", "FOOBAR",
mKeyguardBypassController,
mGroupManager,
- stage,
+ mRowContentBindStage,
mock(NotificationLogger.class),
mHeadsUpManager,
mPresenter,
@@ -256,7 +262,7 @@ public class NotificationEntryManagerInflationTest extends SysuiTestCase {
mRemoteInputManager,
mLockscreenUserManager,
pipeline,
- stage,
+ mRowContentBindStage,
mNotificationInterruptionStateProvider,
RowInflaterTask::new,
mExpandableNotificationRowComponentBuilder,
@@ -365,6 +371,27 @@ public class NotificationEntryManagerInflationTest extends SysuiTestCase {
verify(mPresenter).updateNotificationViews();
}
+ @Test
+ public void testContentViewInflationDuringRowInflationInflatesCorrectViews() {
+ // GIVEN a notification is added and the row is inflating
+ mEntryManager.addNotification(mSbn, mRankingMap);
+ ArgumentCaptor<NotificationEntry> entryCaptor = ArgumentCaptor.forClass(
+ NotificationEntry.class);
+ verify(mEntryListener).onPendingEntryAdded(entryCaptor.capture());
+ NotificationEntry entry = entryCaptor.getValue();
+
+ // WHEN we try to bind a content view
+ mRowContentBindStage.getStageParams(entry).requireContentViews(FLAG_CONTENT_VIEW_HEADS_UP);
+ mRowContentBindStage.requestRebind(entry, null);
+
+ waitForInflation();
+
+ // THEN the notification has its row and all relevant content views inflated
+ assertNotNull(entry.getRow());
+ assertNotNull(entry.getRow().getPrivateLayout().getContractedChild());
+ assertNotNull(entry.getRow().getPrivateLayout().getHeadsUpChild());
+ }
+
/**
* Wait for inflation to finish.
*