Loading core/java/com/android/internal/widget/NotificationRowIconView.java +1 −1 Original line number Diff line number Diff line Loading @@ -225,6 +225,6 @@ public class NotificationRowIconView extends CachingIconView { boolean shouldShowAppIcon(); /** Get the app icon for this notification. */ Drawable getAppIcon(); @Nullable Drawable getAppIcon(); } } packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/BundleEntryTest.kt +48 −0 Original line number Diff line number Diff line Loading @@ -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 packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/NotificationEntryTest.java +124 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading Loading @@ -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), Loading packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowControllerTest.kt +19 −0 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading Loading @@ -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()) } Loading @@ -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()) } Loading @@ -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) Loading @@ -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, Loading Loading @@ -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) Loading packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowDragControllerTest.java +1 −0 Original line number Diff line number Diff line Loading @@ -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 Loading
core/java/com/android/internal/widget/NotificationRowIconView.java +1 −1 Original line number Diff line number Diff line Loading @@ -225,6 +225,6 @@ public class NotificationRowIconView extends CachingIconView { boolean shouldShowAppIcon(); /** Get the app icon for this notification. */ Drawable getAppIcon(); @Nullable Drawable getAppIcon(); } }
packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/BundleEntryTest.kt +48 −0 Original line number Diff line number Diff line Loading @@ -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
packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/NotificationEntryTest.java +124 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading Loading @@ -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), Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowControllerTest.kt +19 −0 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading Loading @@ -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()) } Loading @@ -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()) } Loading @@ -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) Loading @@ -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, Loading Loading @@ -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) Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowDragControllerTest.java +1 −0 Original line number Diff line number Diff line Loading @@ -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