diff options
| author | 2020-04-07 18:13:36 -0700 | |
|---|---|---|
| committer | 2020-04-07 18:13:36 -0700 | |
| commit | 39ce15fee5a55cea9d9609e68e3f68b3241ec46c (patch) | |
| tree | 3fc9a8f49bb33e947eec07bbc9e5d9a677e0243d | |
| parent | e68c8ac02bb4bd3907c6513992f6f22c151e1a8e (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.java | 35 |
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. * |