Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4dd9dc79 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Add test for content inflation during row inflation" into rvc-dev am:...

Merge "Add test for content inflation during row inflation" into rvc-dev am: c7514c9f am: 25de976e am: 1dff735e

Change-Id: I86421e17fa74ca69e635197e5bbf9e0da43d3913
parents 38a747b8 1dff735e
Loading
Loading
Loading
Loading
+31 −4
Original line number Original line Diff line number Diff line
@@ -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.
     *
     *