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

Commit 1b93153f authored by Julia Reynolds's avatar Julia Reynolds
Browse files

Migrate last usages of EntryAdapter in non-test code

Test: NotificationEntryAdapterTest
Test: BundleEntryAdapterTest
Bug: 395857098
Flag: com.android.systemui.notification_bundle_ui
Change-Id: I23d5db61f2857a6f9cad994b7255d356d0f48321
parent 9f3a22ea
Loading
Loading
Loading
Loading
+37 −17
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import android.app.PendingIntent
import android.os.UserHandle
import android.platform.test.annotations.EnableFlags
import android.platform.test.flag.junit.SetFlagsRule
import android.service.notification.NotificationListenerService.REASON_CANCEL
import android.testing.TestableLooper.RunWithLooper
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
@@ -35,6 +36,7 @@ import com.android.systemui.statusbar.notification.collection.provider.mockHighP
import com.android.systemui.statusbar.notification.mockNotificationActivityStarter
import com.android.systemui.statusbar.notification.people.PeopleNotificationIdentifier.Companion.TYPE_FULL_PERSON
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow
import com.android.systemui.statusbar.notification.row.OnUserInteractionCallback
import com.android.systemui.statusbar.notification.row.entryAdapterFactory
import com.android.systemui.statusbar.notification.row.mockNotificationActionClickManager
import com.android.systemui.statusbar.notification.shared.NotificationBundleUi
@@ -46,10 +48,11 @@ import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.ArgumentMatchers.anyLong
import org.mockito.Mockito
import org.mockito.Mockito.mock
import org.mockito.Mockito.verify
import org.mockito.kotlin.mock
import org.mockito.kotlin.verify
import org.mockito.kotlin.any
import org.mockito.kotlin.eq
import org.mockito.kotlin.whenever

@SmallTest
@RunWith(AndroidJUnit4::class)
@@ -65,9 +68,7 @@ class NotificationEntryAdapterTest : SysuiTestCase() {

    @Test
    fun getBackingHashCode() {
        val entry =
            NotificationEntryBuilder()
                .build()
        val entry = NotificationEntryBuilder().build()

        underTest = factory.create(entry) as NotificationEntryAdapter
        assertThat(underTest.backingHashCode).isEqualTo(entry.hashCode())
@@ -123,7 +124,7 @@ class NotificationEntryAdapterTest : SysuiTestCase() {

    @Test
    fun getRow_adapter() {
        val row = mock(ExpandableNotificationRow::class.java)
        val row : ExpandableNotificationRow = mock()
        val notification: Notification =
            Notification.Builder(mContext, "").setSmallIcon(R.drawable.ic_person).build()

@@ -140,7 +141,7 @@ class NotificationEntryAdapterTest : SysuiTestCase() {

    @Test
    fun isGroupRoot_adapter_groupSummary() {
        val row = mock(ExpandableNotificationRow::class.java)
        val row : ExpandableNotificationRow = mock()
        val notification: Notification =
            Notification.Builder(mContext, "")
                .setSmallIcon(R.drawable.ic_person)
@@ -185,7 +186,7 @@ class NotificationEntryAdapterTest : SysuiTestCase() {

    @Test
    fun isClearable_adapter() {
        val row = mock(ExpandableNotificationRow::class.java)
        val row : ExpandableNotificationRow = mock()
        val notification: Notification =
            Notification.Builder(mContext, "").setSmallIcon(R.drawable.ic_person).build()

@@ -202,7 +203,7 @@ class NotificationEntryAdapterTest : SysuiTestCase() {

    @Test
    fun getSummarization_adapter() {
        val row = mock(ExpandableNotificationRow::class.java)
        val row : ExpandableNotificationRow = mock()
        val notification: Notification =
            Notification.Builder(mContext, "").setSmallIcon(R.drawable.ic_person).build()

@@ -221,7 +222,7 @@ class NotificationEntryAdapterTest : SysuiTestCase() {

    @Test
    fun getIcons_adapter() {
        val row = mock(ExpandableNotificationRow::class.java)
        val row : ExpandableNotificationRow = mock()
        val notification: Notification =
            Notification.Builder(mContext, "").setSmallIcon(R.drawable.ic_person).build()

@@ -323,7 +324,7 @@ class NotificationEntryAdapterTest : SysuiTestCase() {
        assertThat(underTest.isMarkedForUserTriggeredMovement)
            .isEqualTo(entry.isMarkedForUserTriggeredMovement)

        underTest.markForUserTriggeredMovement()
        underTest.markForUserTriggeredMovement(true)
        assertThat(underTest.isMarkedForUserTriggeredMovement)
            .isEqualTo(entry.isMarkedForUserTriggeredMovement)
    }
@@ -360,7 +361,7 @@ class NotificationEntryAdapterTest : SysuiTestCase() {

    @Test
    fun canDragAndDrop() {
        val pi = mock(PendingIntent::class.java)
        val pi : PendingIntent = mock()
        Mockito.`when`(pi.isActivity).thenReturn(true)
        val notification: Notification =
            Notification.Builder(mContext, "")
@@ -446,7 +447,7 @@ class NotificationEntryAdapterTest : SysuiTestCase() {
        val notification: Notification =
            Notification.Builder(mContext, "")
                .setSmallIcon(R.drawable.ic_person)
                .setFullScreenIntent(mock(PendingIntent::class.java), true)
                .setFullScreenIntent(mock(), true)
                .build()

        val entry =
@@ -464,7 +465,7 @@ class NotificationEntryAdapterTest : SysuiTestCase() {
        val notification: Notification =
            Notification.Builder(mContext, "")
                .setSmallIcon(R.drawable.ic_person)
                .addAction(mock(Notification.Action::class.java))
                .addAction(mock())
                .build()
        val entry = NotificationEntryBuilder().setNotification(notification).build()

@@ -492,7 +493,7 @@ class NotificationEntryAdapterTest : SysuiTestCase() {
        val notification: Notification =
            Notification.Builder(mContext, "")
                .setSmallIcon(R.drawable.ic_person)
                .addAction(mock(Notification.Action::class.java))
                .addAction(mock())
                .build()

        val entry = NotificationEntryBuilder().setNotification(notification).build()
@@ -520,10 +521,10 @@ class NotificationEntryAdapterTest : SysuiTestCase() {
        val notification: Notification =
            Notification.Builder(mContext, "")
                .setSmallIcon(R.drawable.ic_person)
                .addAction(mock(Notification.Action::class.java))
                .addAction(mock())
                .build()
        val entry = NotificationEntryBuilder().setNotification(notification).build()
        val row = mock(ExpandableNotificationRow::class.java)
        val row : ExpandableNotificationRow= mock()

        underTest = factory.create(entry) as NotificationEntryAdapter

@@ -532,6 +533,25 @@ class NotificationEntryAdapterTest : SysuiTestCase() {
    }

    @Test
    fun registerFutureDismissal() {
        val notification: Notification =
            Notification.Builder(mContext, "")
                .setSmallIcon(R.drawable.ic_person)
                .addAction(mock())
                .build()
        val entry = NotificationEntryBuilder().setNotification(notification).build()
        val callback: OnUserInteractionCallback = mock()
        whenever(callback.registerFutureDismissal(any(), any())).thenReturn(mock())

        underTest = factory.create(entry) as NotificationEntryAdapter

        underTest.registerFutureDismissal(
            callback,
            REASON_CANCEL,
        )
        verify(callback).registerFutureDismissal(entry, REASON_CANCEL)
    }

    fun getRemoteInputEntryAdapter() {
        val notification: Notification =
            Notification.Builder(mContext, "").setSmallIcon(R.drawable.ic_person).build()
+31 −11
Original line number Diff line number Diff line
@@ -87,6 +87,7 @@ import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow
import com.android.systemui.statusbar.notification.row.NotificationGutsManager;
import com.android.systemui.statusbar.notification.row.NotificationTestHelper;
import com.android.systemui.statusbar.notification.shared.GroupHunAnimationFix;
import com.android.systemui.statusbar.notification.shared.NotificationBundleUi;
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController.NotificationPanelEvent;
import com.android.systemui.statusbar.notification.stack.NotificationSwipeHelper.NotificationCallback;
import com.android.systemui.statusbar.notification.stack.ui.viewbinder.NotificationListViewBinder;
@@ -124,7 +125,6 @@ public class NotificationStackScrollLayoutControllerTest extends SysuiTestCase {
    @Mock private NotificationsController mNotificationsController;
    @Mock private NotificationVisibilityProvider mVisibilityProvider;
    @Mock private NotificationWakeUpCoordinator mNotificationWakeUpCoordinator;
    @Mock private HeadsUpManager mHeadsUpManager;
    @Mock private HeadsUpTouchHelper.Callback mHeadsUpCallback;
    @Mock private Provider<IStatusBarService> mStatusBarService;
    @Mock private NotificationRoundnessManager mNotificationRoundnessManager;
@@ -227,7 +227,7 @@ public class NotificationStackScrollLayoutControllerTest extends SysuiTestCase {
        row.setHeadsUpAnimatingAway(true);

        // Then: mHeadsUpManager.onEntryAnimatingAwayEnded is not called
        verify(mHeadsUpManager, never()).onEntryAnimatingAwayEnded(row.getEntry());
        verify(mKosmos.getMockHeadsUpManager(), never()).onEntryAnimatingAwayEnded(row.getEntry());
    }

    @Test
@@ -238,7 +238,7 @@ public class NotificationStackScrollLayoutControllerTest extends SysuiTestCase {
        initController(/* viewIsAttached= */ true);
        mController.setHeadsUpAppearanceController(mock(HeadsUpAppearanceController.class));
        NotificationListContainer listContainer = mController.getNotificationListContainer();
        ExpandableNotificationRow row = mNotificationTestHelper.createRow();
        ExpandableNotificationRow row = mKosmos.createRow();
        listContainer.bindRow(row);
        row.setHeadsUpAnimatingAway(true);

@@ -246,7 +246,7 @@ public class NotificationStackScrollLayoutControllerTest extends SysuiTestCase {
        row.setHeadsUpAnimatingAway(false);

        // Then: mHeadsUpManager.onEntryAnimatingAwayEnded is called
        verify(mHeadsUpManager).onEntryAnimatingAwayEnded(row.getEntry());
        verify(mKosmos.getMockHeadsUpManager()).onEntryAnimatingAwayEnded(any());
    }
    @Test
    public void testOnDensityOrFontScaleChanged_reInflatesFooterViews() {
@@ -570,8 +570,13 @@ public class NotificationStackScrollLayoutControllerTest extends SysuiTestCase {
    @Test
    public void testOnMenuShownLogging() {
        ExpandableNotificationRow row = mock(ExpandableNotificationRow.class, RETURNS_DEEP_STUBS);
        when(row.getEntry().getSbn().getLogMaker()).thenReturn(new LogMaker(
        if (NotificationBundleUi.isEnabled()) {
            when(row.getEntryAdapter().getSbn().getLogMaker()).thenReturn(new LogMaker(
                    MetricsProto.MetricsEvent.VIEW_UNKNOWN));
        } else {
            when(row.getEntryLegacy().getSbn().getLogMaker()).thenReturn(new LogMaker(
                    MetricsProto.MetricsEvent.VIEW_UNKNOWN));
        }

        ArgumentCaptor<OnMenuEventListener> onMenuEventListenerArgumentCaptor =
                ArgumentCaptor.forClass(OnMenuEventListener.class);
@@ -583,7 +588,12 @@ public class NotificationStackScrollLayoutControllerTest extends SysuiTestCase {
        OnMenuEventListener onMenuEventListener = onMenuEventListenerArgumentCaptor.getValue();

        onMenuEventListener.onMenuShown(row);
        verify(row.getEntry().getSbn()).getLogMaker();  // This writes most of the log data
        // This writes most of the log data
        if (NotificationBundleUi.isEnabled()) {
            verify(row.getEntryAdapter().getSbn()).getLogMaker();
        } else {
            verify(row.getEntryLegacy().getSbn()).getLogMaker();
        }
        verify(mMetricsLogger).write(logMatcher(MetricsProto.MetricsEvent.ACTION_REVEAL_GEAR,
                MetricsProto.MetricsEvent.TYPE_ACTION));
    }
@@ -621,8 +631,13 @@ public class NotificationStackScrollLayoutControllerTest extends SysuiTestCase {
    @Test
    public void testOnMenuClickedLogging() {
        ExpandableNotificationRow row = mock(ExpandableNotificationRow.class, RETURNS_DEEP_STUBS);
        when(row.getEntry().getSbn().getLogMaker()).thenReturn(new LogMaker(
        if (NotificationBundleUi.isEnabled()) {
            when(row.getEntryAdapter().getSbn().getLogMaker()).thenReturn(new LogMaker(
                    MetricsProto.MetricsEvent.VIEW_UNKNOWN));
        } else {
            when(row.getEntryLegacy().getSbn().getLogMaker()).thenReturn(new LogMaker(
                    MetricsProto.MetricsEvent.VIEW_UNKNOWN));
        }

        ArgumentCaptor<OnMenuEventListener> onMenuEventListenerArgumentCaptor =
                ArgumentCaptor.forClass(OnMenuEventListener.class);
@@ -635,7 +650,12 @@ public class NotificationStackScrollLayoutControllerTest extends SysuiTestCase {

        onMenuEventListener.onMenuClicked(row, 0, 0, mock(
                NotificationMenuRowPlugin.MenuItem.class));
        verify(row.getEntry().getSbn()).getLogMaker();  // This writes most of the log data
        // This writes most of the log data
        if (NotificationBundleUi.isEnabled()) {
            verify(row.getEntryAdapter().getSbn()).getLogMaker();
        } else {
            verify(row.getEntryLegacy().getSbn()).getLogMaker();
        }
        verify(mMetricsLogger).write(logMatcher(MetricsProto.MetricsEvent.ACTION_TOUCH_GEAR,
                MetricsProto.MetricsEvent.TYPE_ACTION));
    }
@@ -764,7 +784,7 @@ public class NotificationStackScrollLayoutControllerTest extends SysuiTestCase {
                mNotificationsController,
                mVisibilityProvider,
                mNotificationWakeUpCoordinator,
                mHeadsUpManager,
                mKosmos.getMockHeadsUpManager(),
                mStatusBarService,
                mNotificationRoundnessManager,
                mTunerService,
+3 −2
Original line number Diff line number Diff line
@@ -29,7 +29,7 @@ import com.android.keyguard.AlphaOptimizedLinearLayout;
import com.android.systemui.plugins.DarkIconDispatcher;
import com.android.systemui.res.R;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.notification.collection.NotificationEntry.OnSensitivityChangedListener;
import com.android.systemui.statusbar.notification.collection.PipelineEntry;

import java.util.ArrayList;

@@ -125,7 +125,8 @@ public class HeadsUpStatusBarView extends AlphaOptimizedLinearLayout {
        }
    }

    private final OnSensitivityChangedListener mOnSensitivityChangedListener = entry -> {
    private final PipelineEntry.OnSensitivityChangedListener mOnSensitivityChangedListener
            = entry -> {
        if (entry != mShowingEntry) {
            throw new IllegalStateException("Got a sensitivity change for " + entry
                    + " but mShowingEntry is " + mShowingEntry);
+51 −1
Original line number Diff line number Diff line
@@ -27,6 +27,9 @@ import com.android.systemui.statusbar.notification.collection.provider.HighPrior
import com.android.systemui.statusbar.notification.icon.IconPack
import com.android.systemui.statusbar.notification.people.PeopleNotificationIdentifier.Companion.TYPE_NON_PERSON
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow
import com.android.systemui.statusbar.notification.row.NotifBindPipeline
import com.android.systemui.statusbar.notification.row.OnUserInteractionCallback
import com.android.systemui.statusbar.notification.row.RowContentBindStage
import kotlinx.coroutines.flow.StateFlow

class BundleEntryAdapter(
@@ -120,7 +123,7 @@ class BundleEntryAdapter(
        Log.wtf(TAG, "onImportanceChanged() called")
    }

    override fun markForUserTriggeredMovement() {
    override fun markForUserTriggeredMovement(marked: Boolean) {
        Log.wtf(TAG, "markForUserTriggeredMovement() called")
    }

@@ -200,6 +203,53 @@ class BundleEntryAdapter(
    override fun getRemoteInputEntryAdapter(): RemoteInputEntryAdapter? {
        return null
    }

    override fun addOnSensitivityChangedListener(
        listener: PipelineEntry.OnSensitivityChangedListener?
    ) {
        entry.addOnSensitivityChangedListener(listener)
    }

    override fun removeOnSensitivityChangedListener(
        listener: PipelineEntry.OnSensitivityChangedListener?
    ) {
        entry.removeOnSensitivityChangedListener(listener)
    }

    override fun setSeenInShade(seen: Boolean) {
        entry.isSeenInShade = seen
    }

    override fun isSeenInShade(): Boolean {
        return entry.isSeenInShade
    }

    override fun onEntryAnimatingAwayEnded() {
        Log.wtf(TAG, "onEntryAnimatingAwayEnded() called")
    }

    override fun registerFutureDismissal(
        callback: OnUserInteractionCallback,
        reason: Int,
    ): Runnable? {
        // TODO(b/389839319): what should the pipeline do when a bundle is dismissed?
        return null
    }

    override fun markForReinflation(stage: RowContentBindStage) {
        Log.wtf(TAG, "markForReinflation() called")
    }

    override fun isViewBacked(): Boolean {
        return false
    }

    override fun requestRebind(
        stage: RowContentBindStage,
        callback: NotifBindPipeline.BindCallback,
    ) {
        Log.wtf(TAG, "requestRebind() called")
    }
}

private const val TAG = "BundleEntryAdapter"
+27 −1
Original line number Diff line number Diff line
@@ -27,6 +27,9 @@ import com.android.systemui.statusbar.notification.collection.notifcollection.No
import com.android.systemui.statusbar.notification.icon.IconPack;
import com.android.systemui.statusbar.notification.people.PeopleNotificationIdentifier;
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
import com.android.systemui.statusbar.notification.row.NotifBindPipeline;
import com.android.systemui.statusbar.notification.row.OnUserInteractionCallback;
import com.android.systemui.statusbar.notification.row.RowContentBindStage;

import kotlinx.coroutines.flow.StateFlow;

@@ -148,7 +151,7 @@ public interface EntryAdapter {
     * in the shade and change something about its appearance to delay the appearance change until
     * the ranking reordering is likely to have settled.
     */
    void markForUserTriggeredMovement();
    void markForUserTriggeredMovement(boolean marked);

    /**
     * Determines whether a row is considered 'high priority'.
@@ -202,5 +205,28 @@ public interface EntryAdapter {
    void onEntryClicked(ExpandableNotificationRow row);

    @Nullable RemoteInputEntryAdapter getRemoteInputEntryAdapter();

    /** Add a listener to be notified when the entry's sensitivity changes. */
    void addOnSensitivityChangedListener(
            PipelineEntry.OnSensitivityChangedListener listener);

    /** Remove a listener that was registered above. */
    void removeOnSensitivityChangedListener(
            PipelineEntry.OnSensitivityChangedListener listener);

    void setSeenInShade(boolean seen);

    boolean isSeenInShade();

    void onEntryAnimatingAwayEnded();

    Runnable registerFutureDismissal(@NonNull OnUserInteractionCallback callback, int reason);

    void markForReinflation(@NonNull RowContentBindStage stage);

    boolean isViewBacked();

    void requestRebind(@NonNull RowContentBindStage stage,
            @NonNull NotifBindPipeline.BindCallback callback);
}
Loading