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

Commit 19aff639 authored by Julia Reynolds's avatar Julia Reynolds Committed by Android (Google) Code Review
Browse files

Merge "Add more notification-y fields to the adapter" into main

parents 7e709551 186c5174
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -225,6 +225,6 @@ public class NotificationRowIconView extends CachingIconView {
        boolean shouldShowAppIcon();

        /** Get the app icon for this notification. */
        Drawable getAppIcon();
        @Nullable Drawable getAppIcon();
    }
}
+48 −0
Original line number Diff line number Diff line
@@ -105,4 +105,52 @@ class BundleEntryTest : SysuiTestCase() {
    fun getWhen_adapter() {
        assertThat(underTest.entryAdapter.`when`).isEqualTo(0)
    }

    @Test
    @EnableFlags(NotificationBundleUi.FLAG_NAME)
    fun isColorized() {
        assertThat(underTest.entryAdapter.isColorized).isFalse()
    }

    @Test
    @EnableFlags(NotificationBundleUi.FLAG_NAME)
    fun getSbn() {
        assertThat(underTest.entryAdapter.sbn).isNull()
    }

    @Test
    @EnableFlags(NotificationBundleUi.FLAG_NAME)
    fun canDragAndDrop() {
        assertThat(underTest.entryAdapter.canDragAndDrop()).isFalse()
    }

    @Test
    @EnableFlags(NotificationBundleUi.FLAG_NAME)
    fun isBubble() {
        assertThat(underTest.entryAdapter.isBubbleCapable).isFalse()
    }

    @Test
    @EnableFlags(NotificationBundleUi.FLAG_NAME)
    fun getStyle() {
        assertThat(underTest.entryAdapter.style).isNull()
    }

    @Test
    @EnableFlags(NotificationBundleUi.FLAG_NAME)
    fun getSectionBucket() {
        assertThat(underTest.entryAdapter.sectionBucket).isEqualTo(underTest.bucket)
    }

    @Test
    @EnableFlags(NotificationBundleUi.FLAG_NAME)
    fun isAmbient() {
        assertThat(underTest.entryAdapter.isAmbient).isFalse()
    }

    @Test
    @EnableFlags(NotificationBundleUi.FLAG_NAME)
    fun canShowFullScreen() {
        assertThat(underTest.entryAdapter.isFullScreenCapable()).isFalse()
    }
}
 No newline at end of file
+124 −0
Original line number Diff line number Diff line
@@ -21,12 +21,15 @@ import static android.app.Notification.CATEGORY_CALL;
import static android.app.Notification.CATEGORY_EVENT;
import static android.app.Notification.CATEGORY_MESSAGE;
import static android.app.Notification.CATEGORY_REMINDER;
import static android.app.Notification.FLAG_BUBBLE;
import static android.app.Notification.FLAG_FSI_REQUESTED_BUT_DENIED;
import static android.app.Notification.FLAG_PROMOTED_ONGOING;
import static android.app.NotificationManager.IMPORTANCE_MIN;
import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_AMBIENT;

import static com.android.systemui.statusbar.NotificationEntryHelper.modifyRanking;
import static com.android.systemui.statusbar.NotificationEntryHelper.modifySbn;
import static com.android.systemui.statusbar.notification.stack.NotificationPriorityBucketKt.BUCKET_ALERTING;

import static com.google.common.truth.Truth.assertThat;

@@ -35,6 +38,7 @@ import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

import android.app.ActivityManager;
import android.app.Notification;
@@ -664,6 +668,126 @@ public class NotificationEntryTest extends SysuiTestCase {
        assertThat(entry.getEntryAdapter().getIcons()).isEqualTo(entry.getIcons());
    }

    @Test
    @EnableFlags(NotificationBundleUi.FLAG_NAME)
    public void isColorized() {
        Notification notification = new Notification.Builder(mContext, "")
                .setSmallIcon(R.drawable.ic_person)
                .setColorized(true)
                .build();

        NotificationEntry entry = new NotificationEntryBuilder()
                .setNotification(notification)
                .build();
        assertThat(entry.getEntryAdapter().isColorized()).isEqualTo(
                entry.getSbn().getNotification().isColorized());
    }

    @Test
    @EnableFlags(NotificationBundleUi.FLAG_NAME)
    public void getSbn() {
        Notification notification = new Notification.Builder(mContext, "")
                .setSmallIcon(R.drawable.ic_person)
                .build();

        NotificationEntry entry = new NotificationEntryBuilder()
                .setNotification(notification)
                .build();
        assertThat(entry.getEntryAdapter().getSbn()).isEqualTo(
                entry.getSbn());
    }

    @Test
    @EnableFlags(NotificationBundleUi.FLAG_NAME)
    public void canDragAndDrop() {
        PendingIntent pi = mock(PendingIntent.class);
        when(pi.isActivity()).thenReturn(true);
        Notification notification = new Notification.Builder(mContext, "")
                .setSmallIcon(R.drawable.ic_person)
                .setContentIntent(pi)
                .build();

        NotificationEntry entry = new NotificationEntryBuilder()
                .setNotification(notification)
                .build();
        assertThat(entry.getEntryAdapter().canDragAndDrop()).isTrue();
    }

    @Test
    @EnableFlags(NotificationBundleUi.FLAG_NAME)
    public void isBubble() {
        Notification notification = new Notification.Builder(mContext, "")
                .setSmallIcon(R.drawable.ic_person)
                .setFlag(FLAG_BUBBLE, true)
                .build();

        NotificationEntry entry = new NotificationEntryBuilder()
                .setNotification(notification)
                .build();
        assertThat(entry.getEntryAdapter().isBubbleCapable()).isEqualTo(entry.isBubble());
    }

    @Test
    @EnableFlags(NotificationBundleUi.FLAG_NAME)
    public void getStyle() {
        Notification notification = new Notification.Builder(mContext, "")
                .setSmallIcon(R.drawable.ic_person)
                .setStyle(new Notification.BigTextStyle())
                .build();

        NotificationEntry entry = new NotificationEntryBuilder()
                .setNotification(notification)
                .build();
        assertThat(entry.getEntryAdapter().getStyle()).isEqualTo(entry.getNotificationStyle());
    }

    @Test
    @EnableFlags(NotificationBundleUi.FLAG_NAME)
    public void getSectionBucket() {
        Notification notification = new Notification.Builder(mContext, "")
                .setSmallIcon(R.drawable.ic_person)
                .setStyle(new Notification.BigTextStyle())
                .build();

        NotificationEntry entry = new NotificationEntryBuilder()
                .setNotification(notification)
                .build();
        entry.setBucket(BUCKET_ALERTING);

        assertThat(entry.getEntryAdapter().getSectionBucket()).isEqualTo(BUCKET_ALERTING);
    }

    @Test
    @EnableFlags(NotificationBundleUi.FLAG_NAME)
    public void isAmbient() {
        Notification notification = new Notification.Builder(mContext, "")
                .setSmallIcon(R.drawable.ic_person)
                .build();

        NotificationEntry entry = new NotificationEntryBuilder()
                .setNotification(notification)
                .setImportance(IMPORTANCE_MIN)
                .build();

        assertThat(entry.getEntryAdapter().isAmbient()).isTrue();
    }

    @Test
    @EnableFlags(NotificationBundleUi.FLAG_NAME)
    public void canShowFullScreen() {
        Notification notification = new Notification.Builder(mContext, "")
                .setSmallIcon(R.drawable.ic_person)
                .setFullScreenIntent(mock(PendingIntent.class), true)
                .build();

        NotificationEntry entry = new NotificationEntryBuilder()
                .setNotification(notification)
                .setImportance(IMPORTANCE_MIN)
                .build();

        assertThat(entry.getEntryAdapter().isFullScreenCapable()).isTrue();
    }

    private Notification.Action createContextualAction(String title) {
        return new Notification.Action.Builder(
                Icon.createWithResource(getContext(), android.R.drawable.sym_def_app_icon),
+19 −0
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import android.app.Notification
import android.net.Uri
import android.os.UserHandle
import android.os.UserHandle.USER_ALL
import android.service.notification.StatusBarNotification
import android.testing.TestableLooper
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
@@ -36,6 +37,7 @@ import com.android.systemui.plugins.statusbar.StatusBarStateController
import com.android.systemui.statusbar.SbnBuilder
import com.android.systemui.statusbar.SmartReplyController
import com.android.systemui.statusbar.notification.ColorUpdateLogger
import com.android.systemui.statusbar.notification.collection.EntryAdapter
import com.android.systemui.statusbar.notification.collection.NotificationEntry
import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder
import com.android.systemui.statusbar.notification.collection.provider.NotificationDismissibilityProvider
@@ -229,6 +231,10 @@ class ExpandableNotificationRowControllerTest : SysuiTestCase() {
    @Test
    fun registerSettingsListener_forBubbles() {
        controller.init(mock(NotificationEntry::class.java))
        val entryAdapter = mock(EntryAdapter::class.java)
        whenever(entryAdapter.sbn).thenReturn(mock(StatusBarNotification::class.java))
        whenever(view.entryAdapter).thenReturn(entryAdapter)

        val viewStateObserver = withArgCaptor {
            verify(view).addOnAttachStateChangeListener(capture())
        }
@@ -239,6 +245,9 @@ class ExpandableNotificationRowControllerTest : SysuiTestCase() {
    @Test
    fun unregisterSettingsListener_forBubbles() {
        controller.init(mock(NotificationEntry::class.java))
        val entryAdapter = mock(EntryAdapter::class.java)
        whenever(entryAdapter.sbn).thenReturn(mock(StatusBarNotification::class.java))
        whenever(view.entryAdapter).thenReturn(entryAdapter)
        val viewStateObserver = withArgCaptor {
            verify(view).addOnAttachStateChangeListener(capture())
        }
@@ -255,6 +264,7 @@ class ExpandableNotificationRowControllerTest : SysuiTestCase() {

    @Test
    fun settingsListener_invalidUserId() {
        whenever(view.entryAdapter).thenReturn(mock(EntryAdapter::class.java))
        controller.mSettingsListener.onSettingChanged(BUBBLES_SETTING_URI, -1000, "1")
        controller.mSettingsListener.onSettingChanged(BUBBLES_SETTING_URI, -1000, null)

@@ -265,6 +275,12 @@ class ExpandableNotificationRowControllerTest : SysuiTestCase() {
    fun settingsListener_validUserId() {
        val childView: NotificationContentView = mock()
        whenever(view.privateLayout).thenReturn(childView)
        val entryAdapter = mock(EntryAdapter::class.java)
        val sbn =
            SbnBuilder().setNotification(Notification.Builder(mContext).build())
                .setUser(UserHandle.of(view.entry.sbn.userId)).build()
        whenever(entryAdapter.sbn).thenReturn(sbn)
        whenever(view.entryAdapter).thenReturn(entryAdapter)

        controller.mSettingsListener.onSettingChanged(
            BUBBLES_SETTING_URI,
@@ -293,6 +309,9 @@ class ExpandableNotificationRowControllerTest : SysuiTestCase() {
            .thenReturn(
                NotificationEntryBuilder().setSbn(sbn).setUser(UserHandle.of(USER_ALL)).build()
            )
        val entryAdapter = mock(EntryAdapter::class.java)
        whenever(entryAdapter.sbn).thenReturn(sbn)
        whenever(view.entryAdapter).thenReturn(entryAdapter)

        controller.mSettingsListener.onSettingChanged(BUBBLES_SETTING_URI, 9, "1")
        verify(childView).setBubblesEnabledForUser(true)
+1 −0
Original line number Diff line number Diff line
@@ -79,6 +79,7 @@ public class ExpandableNotificationRowDragControllerTest extends SysuiTestCase {
        mRow = spy(mNotificationTestHelper.createRow());
        Notification notification = mRow.getEntry().getSbn().getNotification();
        notification.contentIntent = mock(PendingIntent.class);
        when(notification.contentIntent.isActivity()).thenReturn(true);
        doReturn(true).when(mRow).startDragAndDrop(any(), any(), any(), anyInt());
        mGroupRow = mNotificationTestHelper.createGroup(4);
        when(mMenuRow.getLongpressMenuItem(any(Context.class))).thenReturn(mMenuItem);
Loading