Merge "Add test for content inflation during row inflation" into rvc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
c7514c9f71
@@ -18,6 +18,8 @@ package com.android.systemui.statusbar.notification.row;
|
|||||||
|
|
||||||
import static android.app.NotificationManager.IMPORTANCE_DEFAULT;
|
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 junit.framework.Assert.assertNotNull;
|
||||||
|
|
||||||
import static org.mockito.ArgumentMatchers.any;
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
@@ -139,6 +141,7 @@ public class NotificationEntryManagerInflationTest extends SysuiTestCase {
|
|||||||
private NotificationRowBinderImpl mRowBinder;
|
private NotificationRowBinderImpl mRowBinder;
|
||||||
private Handler mHandler;
|
private Handler mHandler;
|
||||||
private FakeExecutor mBgExecutor;
|
private FakeExecutor mBgExecutor;
|
||||||
|
private RowContentBindStage mRowContentBindStage;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
@@ -147,10 +150,13 @@ public class NotificationEntryManagerInflationTest extends SysuiTestCase {
|
|||||||
|
|
||||||
mHandler = Handler.createAsync(TestableLooper.get(this).getLooper());
|
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)
|
Notification notification = new Notification.Builder(mContext)
|
||||||
.setSmallIcon(R.drawable.ic_person)
|
.setSmallIcon(R.drawable.ic_person)
|
||||||
.setContentTitle(TEST_TITLE)
|
.setContentTitle(TEST_TITLE)
|
||||||
.setContentText(TEST_TEXT)
|
.setContentText(TEST_TEXT)
|
||||||
|
.setActions(action)
|
||||||
.build();
|
.build();
|
||||||
mSbn = new SbnBuilder()
|
mSbn = new SbnBuilder()
|
||||||
.setNotification(notification)
|
.setNotification(notification)
|
||||||
@@ -192,11 +198,11 @@ public class NotificationEntryManagerInflationTest extends SysuiTestCase {
|
|||||||
() -> mock(SmartReplyController.class),
|
() -> mock(SmartReplyController.class),
|
||||||
mock(ConversationNotificationProcessor.class),
|
mock(ConversationNotificationProcessor.class),
|
||||||
mBgExecutor);
|
mBgExecutor);
|
||||||
RowContentBindStage stage = new RowContentBindStage(
|
mRowContentBindStage = new RowContentBindStage(
|
||||||
binder,
|
binder,
|
||||||
mock(NotifInflationErrorManager.class),
|
mock(NotifInflationErrorManager.class),
|
||||||
mock(RowContentBindStageLogger.class));
|
mock(RowContentBindStageLogger.class));
|
||||||
pipeline.setStage(stage);
|
pipeline.setStage(mRowContentBindStage);
|
||||||
|
|
||||||
ArgumentCaptor<ExpandableNotificationRow> viewCaptor =
|
ArgumentCaptor<ExpandableNotificationRow> viewCaptor =
|
||||||
ArgumentCaptor.forClass(ExpandableNotificationRow.class);
|
ArgumentCaptor.forClass(ExpandableNotificationRow.class);
|
||||||
@@ -232,7 +238,7 @@ public class NotificationEntryManagerInflationTest extends SysuiTestCase {
|
|||||||
"FOOBAR", "FOOBAR",
|
"FOOBAR", "FOOBAR",
|
||||||
mKeyguardBypassController,
|
mKeyguardBypassController,
|
||||||
mGroupManager,
|
mGroupManager,
|
||||||
stage,
|
mRowContentBindStage,
|
||||||
mock(NotificationLogger.class),
|
mock(NotificationLogger.class),
|
||||||
mHeadsUpManager,
|
mHeadsUpManager,
|
||||||
mPresenter,
|
mPresenter,
|
||||||
@@ -256,7 +262,7 @@ public class NotificationEntryManagerInflationTest extends SysuiTestCase {
|
|||||||
mRemoteInputManager,
|
mRemoteInputManager,
|
||||||
mLockscreenUserManager,
|
mLockscreenUserManager,
|
||||||
pipeline,
|
pipeline,
|
||||||
stage,
|
mRowContentBindStage,
|
||||||
mNotificationInterruptionStateProvider,
|
mNotificationInterruptionStateProvider,
|
||||||
RowInflaterTask::new,
|
RowInflaterTask::new,
|
||||||
mExpandableNotificationRowComponentBuilder,
|
mExpandableNotificationRowComponentBuilder,
|
||||||
@@ -365,6 +371,27 @@ public class NotificationEntryManagerInflationTest extends SysuiTestCase {
|
|||||||
verify(mPresenter).updateNotificationViews();
|
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.
|
* Wait for inflation to finish.
|
||||||
*
|
*
|
||||||
|
|||||||
Reference in New Issue
Block a user