Loading packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/promoted/PromotedNotificationContentExtractorTest.kt→packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/promoted/PromotedNotificationContentExtractorImplTest.kt +39 −47 Original line number Diff line number Diff line Loading @@ -43,7 +43,7 @@ import org.junit.runner.RunWith @SmallTest @RunWith(AndroidJUnit4::class) class PromotedNotificationContentExtractorTest : SysuiTestCase() { class PromotedNotificationContentExtractorImplTest : SysuiTestCase() { private val kosmos = testKosmos() private val provider = Loading @@ -54,7 +54,7 @@ class PromotedNotificationContentExtractorTest : SysuiTestCase() { @Test @DisableFlags(PromotedNotificationUi.FLAG_NAME, StatusBarNotifChips.FLAG_NAME) fun shouldNotExtract_bothFlagsDisabled() { val notif = createEntry().also { provider.promotedEntries.add(it) } val notif = createEntry() val content = extractContent(notif) assertThat(content).isNull() } Loading @@ -63,7 +63,7 @@ class PromotedNotificationContentExtractorTest : SysuiTestCase() { @EnableFlags(PromotedNotificationUi.FLAG_NAME) @DisableFlags(StatusBarNotifChips.FLAG_NAME) fun shouldExtract_promotedNotificationUiFlagEnabled() { val entry = createEntry().also { provider.promotedEntries.add(it) } val entry = createEntry() val content = extractContent(entry) assertThat(content).isNotNull() } Loading @@ -72,7 +72,7 @@ class PromotedNotificationContentExtractorTest : SysuiTestCase() { @EnableFlags(StatusBarNotifChips.FLAG_NAME) @DisableFlags(PromotedNotificationUi.FLAG_NAME) fun shouldExtract_statusBarNotifChipsFlagEnabled() { val entry = createEntry().also { provider.promotedEntries.add(it) } val entry = createEntry() val content = extractContent(entry) assertThat(content).isNotNull() } Loading @@ -80,7 +80,7 @@ class PromotedNotificationContentExtractorTest : SysuiTestCase() { @Test @EnableFlags(PromotedNotificationUi.FLAG_NAME, StatusBarNotifChips.FLAG_NAME) fun shouldExtract_bothFlagsEnabled() { val entry = createEntry().also { provider.promotedEntries.add(it) } val entry = createEntry() val content = extractContent(entry) assertThat(content).isNotNull() } Loading @@ -88,22 +88,19 @@ class PromotedNotificationContentExtractorTest : SysuiTestCase() { @Test @EnableFlags(PromotedNotificationUi.FLAG_NAME, StatusBarNotifChips.FLAG_NAME) fun shouldNotExtract_providerDidNotPromote() { val entry = createEntry().also { provider.promotedEntries.remove(it) } val entry = createEntry(promoted = false) val content = extractContent(entry) assertThat(content).isNull() } @Test @EnableFlags(PromotedNotificationUi.FLAG_NAME, StatusBarNotifChips.FLAG_NAME) fun extractContent_commonFields() { val entry = createEntry { fun extractsContent_commonFields() { val entry = createEntry { setSubText(TEST_SUB_TEXT) setContentTitle(TEST_CONTENT_TITLE) setContentText(TEST_CONTENT_TEXT) setShortCriticalText(TEST_SHORT_CRITICAL_TEXT) } .also { provider.promotedEntries.add(it) } val content = extractContent(entry) Loading @@ -117,9 +114,7 @@ class PromotedNotificationContentExtractorTest : SysuiTestCase() { @EnableFlags(PromotedNotificationUi.FLAG_NAME, StatusBarNotifChips.FLAG_NAME) @DisableFlags(android.app.Flags.FLAG_API_RICH_ONGOING) fun extractContent_apiFlagOff_shortCriticalTextNotExtracted() { val entry = createEntry { setShortCriticalText(TEST_SHORT_CRITICAL_TEXT) } .also { provider.promotedEntries.add(it) } val entry = createEntry { setShortCriticalText(TEST_SHORT_CRITICAL_TEXT) } val content = extractContent(entry) Loading @@ -134,9 +129,7 @@ class PromotedNotificationContentExtractorTest : SysuiTestCase() { android.app.Flags.FLAG_API_RICH_ONGOING, ) fun extractContent_apiFlagOn_shortCriticalTextExtracted() { val entry = createEntry { setShortCriticalText(TEST_SHORT_CRITICAL_TEXT) } .also { provider.promotedEntries.add(it) } val entry = createEntry { setShortCriticalText(TEST_SHORT_CRITICAL_TEXT) } val content = extractContent(entry) Loading @@ -151,7 +144,7 @@ class PromotedNotificationContentExtractorTest : SysuiTestCase() { android.app.Flags.FLAG_API_RICH_ONGOING, ) fun extractContent_noShortCriticalTextSet_textIsNull() { val entry = createEntry {}.also { provider.promotedEntries.add(it) } val entry = createEntry { setShortCriticalText(null) } val content = extractContent(entry) Loading @@ -161,9 +154,8 @@ class PromotedNotificationContentExtractorTest : SysuiTestCase() { @Test @EnableFlags(PromotedNotificationUi.FLAG_NAME, StatusBarNotifChips.FLAG_NAME) fun extractContent_fromBigPictureStyle() { val entry = createEntry { setStyle(BigPictureStyle()) }.also { provider.promotedEntries.add(it) } fun extractsContent_fromBigPictureStyle() { val entry = createEntry { setStyle(BigPictureStyle()) } val content = extractContent(entry) Loading @@ -174,8 +166,7 @@ class PromotedNotificationContentExtractorTest : SysuiTestCase() { @Test @EnableFlags(PromotedNotificationUi.FLAG_NAME, StatusBarNotifChips.FLAG_NAME) fun extractContent_fromBigTextStyle() { val entry = createEntry { setStyle(BigTextStyle()) }.also { provider.promotedEntries.add(it) } val entry = createEntry { setStyle(BigTextStyle()) } val content = extractContent(entry) Loading @@ -187,11 +178,13 @@ class PromotedNotificationContentExtractorTest : SysuiTestCase() { @EnableFlags(PromotedNotificationUi.FLAG_NAME, StatusBarNotifChips.FLAG_NAME) fun extractContent_fromCallStyle() { val hangUpIntent = PendingIntent.getBroadcast(context, 0, Intent("hangup"), PendingIntent.FLAG_IMMUTABLE) val entry = createEntry { setStyle(CallStyle.forOngoingCall(TEST_PERSON, hangUpIntent)) } .also { provider.promotedEntries.add(it) } PendingIntent.getBroadcast( context, 0, Intent("hangup_action"), PendingIntent.FLAG_IMMUTABLE, ) val entry = createEntry { setStyle(CallStyle.forOngoingCall(TEST_PERSON, hangUpIntent)) } val content = extractContent(entry) Loading @@ -202,11 +195,9 @@ class PromotedNotificationContentExtractorTest : SysuiTestCase() { @Test @EnableFlags(PromotedNotificationUi.FLAG_NAME, StatusBarNotifChips.FLAG_NAME) fun extractContent_fromProgressStyle() { val entry = createEntry { val entry = createEntry { setStyle(ProgressStyle().addProgressSegment(Segment(100)).setProgress(75)) } .also { provider.promotedEntries.add(it) } val content = extractContent(entry) Loading @@ -220,13 +211,9 @@ class PromotedNotificationContentExtractorTest : SysuiTestCase() { @Test @EnableFlags(PromotedNotificationUi.FLAG_NAME, StatusBarNotifChips.FLAG_NAME) fun extractContent_fromIneligibleStyle() { val entry = createEntry { setStyle( MessagingStyle(TEST_PERSON).addMessage("message text", 0L, TEST_PERSON) ) val entry = createEntry { setStyle(MessagingStyle(TEST_PERSON).addMessage("message text", 0L, TEST_PERSON)) } .also { provider.promotedEntries.add(it) } val content = extractContent(entry) Loading @@ -239,9 +226,14 @@ class PromotedNotificationContentExtractorTest : SysuiTestCase() { return underTest.extractContent(entry, recoveredBuilder) } private fun createEntry(builderBlock: Notification.Builder.() -> Unit = {}): NotificationEntry { val notif = Notification.Builder(context, "a").also(builderBlock).build() return NotificationEntryBuilder().setNotification(notif).build() private fun createEntry( promoted: Boolean = true, builderBlock: Notification.Builder.() -> Unit = {}, ): NotificationEntry { val notif = Notification.Builder(context, "channel").also(builderBlock).build() return NotificationEntryBuilder().setNotification(notif).build().also { provider.shouldPromoteForEntry[it] = promoted } } companion object { Loading packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/NotificationContentInflaterTest.java +13 −17 Original line number Diff line number Diff line Loading @@ -30,7 +30,6 @@ import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; Loading Loading @@ -61,7 +60,7 @@ import com.android.systemui.statusbar.NotificationRemoteInputManager; import com.android.systemui.statusbar.chips.notification.shared.StatusBarNotifChips; import com.android.systemui.statusbar.notification.ConversationNotificationProcessor; import com.android.systemui.statusbar.notification.collection.NotificationEntry; import com.android.systemui.statusbar.notification.promoted.PromotedNotificationContentExtractor; import com.android.systemui.statusbar.notification.promoted.FakePromotedNotificationContentExtractor; import com.android.systemui.statusbar.notification.promoted.PromotedNotificationUi; import com.android.systemui.statusbar.notification.promoted.shared.model.PromotedNotificationContentModel; import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.BindParams; Loading Loading @@ -105,7 +104,8 @@ public class NotificationContentInflaterTest extends SysuiTestCase { @Mock private NotifLayoutInflaterFactory.Provider mNotifLayoutInflaterFactoryProvider; @Mock private HeadsUpStyleProvider mHeadsUpStyleProvider; @Mock private NotifLayoutInflaterFactory mNotifLayoutInflaterFactory; @Mock private PromotedNotificationContentExtractor mPromotedNotificationContentExtractor; private final FakePromotedNotificationContentExtractor mPromotedNotificationContentExtractor = new FakePromotedNotificationContentExtractor(); private final SmartReplyStateInflater mSmartReplyStateInflater = new SmartReplyStateInflater() { Loading Loading @@ -395,12 +395,11 @@ public class NotificationContentInflaterTest extends SysuiTestCase { public void testExtractsPromotedContent_notWhenBothFlagsDisabled() throws Exception { final PromotedNotificationContentModel content = new PromotedNotificationContentModel.Builder("key").build(); when(mPromotedNotificationContentExtractor.extractContent(any(), any())) .thenReturn(content); mPromotedNotificationContentExtractor.resetForEntry(mRow.getEntry(), content); inflateAndWait(mNotificationInflater, FLAG_CONTENT_VIEW_ALL, mRow); verify(mPromotedNotificationContentExtractor, never()).extractContent(any(), any()); mPromotedNotificationContentExtractor.verifyZeroExtractCalls(); } @Test Loading @@ -410,12 +409,11 @@ public class NotificationContentInflaterTest extends SysuiTestCase { throws Exception { final PromotedNotificationContentModel content = new PromotedNotificationContentModel.Builder("key").build(); when(mPromotedNotificationContentExtractor.extractContent(any(), any())) .thenReturn(content); mPromotedNotificationContentExtractor.resetForEntry(mRow.getEntry(), content); inflateAndWait(mNotificationInflater, FLAG_CONTENT_VIEW_ALL, mRow); verify(mPromotedNotificationContentExtractor, times(1)).extractContent(any(), any()); mPromotedNotificationContentExtractor.verifyOneExtractCall(); assertEquals(content, mRow.getEntry().getPromotedNotificationContentModel()); } Loading @@ -425,12 +423,11 @@ public class NotificationContentInflaterTest extends SysuiTestCase { public void testExtractsPromotedContent_whenStatusBarNotifChipsFlagEnabled() throws Exception { final PromotedNotificationContentModel content = new PromotedNotificationContentModel.Builder("key").build(); when(mPromotedNotificationContentExtractor.extractContent(any(), any())) .thenReturn(content); mPromotedNotificationContentExtractor.resetForEntry(mRow.getEntry(), content); inflateAndWait(mNotificationInflater, FLAG_CONTENT_VIEW_ALL, mRow); verify(mPromotedNotificationContentExtractor, times(1)).extractContent(any(), any()); mPromotedNotificationContentExtractor.verifyOneExtractCall(); assertEquals(content, mRow.getEntry().getPromotedNotificationContentModel()); } Loading @@ -439,23 +436,22 @@ public class NotificationContentInflaterTest extends SysuiTestCase { public void testExtractsPromotedContent_whenBothFlagsEnabled() throws Exception { final PromotedNotificationContentModel content = new PromotedNotificationContentModel.Builder("key").build(); when(mPromotedNotificationContentExtractor.extractContent(any(), any())) .thenReturn(content); mPromotedNotificationContentExtractor.resetForEntry(mRow.getEntry(), content); inflateAndWait(mNotificationInflater, FLAG_CONTENT_VIEW_ALL, mRow); verify(mPromotedNotificationContentExtractor, times(1)).extractContent(any(), any()); mPromotedNotificationContentExtractor.verifyOneExtractCall(); assertEquals(content, mRow.getEntry().getPromotedNotificationContentModel()); } @Test @EnableFlags({PromotedNotificationUi.FLAG_NAME, StatusBarNotifChips.FLAG_NAME}) public void testExtractsPromotedContent_null() throws Exception { when(mPromotedNotificationContentExtractor.extractContent(any(), any())).thenReturn(null); mPromotedNotificationContentExtractor.resetForEntry(mRow.getEntry(), null); inflateAndWait(mNotificationInflater, FLAG_CONTENT_VIEW_ALL, mRow); verify(mPromotedNotificationContentExtractor, times(1)).extractContent(any(), any()); mPromotedNotificationContentExtractor.verifyOneExtractCall(); assertNull(mRow.getEntry().getPromotedNotificationContentModel()); } Loading packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/NotificationRowContentBinderImplTest.kt +22 −16 Original line number Diff line number Diff line Loading @@ -37,7 +37,7 @@ import com.android.systemui.res.R import com.android.systemui.statusbar.chips.notification.shared.StatusBarNotifChips import com.android.systemui.statusbar.notification.ConversationNotificationProcessor import com.android.systemui.statusbar.notification.collection.NotificationEntry import com.android.systemui.statusbar.notification.promoted.PromotedNotificationContentExtractor import com.android.systemui.statusbar.notification.promoted.FakePromotedNotificationContentExtractor import com.android.systemui.statusbar.notification.promoted.PromotedNotificationUi import com.android.systemui.statusbar.notification.promoted.shared.model.PromotedNotificationContentModel import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.BindParams Loading Loading @@ -67,7 +67,6 @@ import org.junit.runner.RunWith import org.mockito.kotlin.any import org.mockito.kotlin.eq import org.mockito.kotlin.mock import org.mockito.kotlin.never import org.mockito.kotlin.spy import org.mockito.kotlin.times import org.mockito.kotlin.verify Loading Loading @@ -110,7 +109,7 @@ class NotificationRowContentBinderImplTest : SysuiTestCase() { return inflatedSmartReplyState } } private val promotedNotificationContentExtractor: PromotedNotificationContentExtractor = mock() private val promotedNotificationContentExtractor = FakePromotedNotificationContentExtractor() @Before fun setUp() { Loading Loading @@ -234,7 +233,7 @@ class NotificationRowContentBinderImplTest : SysuiTestCase() { packageContext = mContext, remoteViews = NewRemoteViews(), contentModel = NotificationContentModel(headsUpStatusBarModel), extractedPromotedNotificationContentModel = null, promotedContent = null, ) val countDownLatch = CountDownLatch(1) NotificationRowContentBinderImpl.applyRemoteView( Loading Loading @@ -475,12 +474,11 @@ class NotificationRowContentBinderImplTest : SysuiTestCase() { @DisableFlags(PromotedNotificationUi.FLAG_NAME, StatusBarNotifChips.FLAG_NAME) fun testExtractsPromotedContent_notWhenBothFlagsDisabled() { val content = PromotedNotificationContentModel.Builder("key").build() whenever(promotedNotificationContentExtractor.extractContent(any(), any())) .thenReturn(content) promotedNotificationContentExtractor.resetForEntry(row.entry, content) inflateAndWait(notificationInflater, FLAG_CONTENT_VIEW_ALL, row) verify(promotedNotificationContentExtractor, never()).extractContent(any(), any()) promotedNotificationContentExtractor.verifyZeroExtractCalls() } @Test Loading @@ -488,12 +486,11 @@ class NotificationRowContentBinderImplTest : SysuiTestCase() { @DisableFlags(StatusBarNotifChips.FLAG_NAME) fun testExtractsPromotedContent_whenPromotedNotificationUiFlagEnabled() { val content = PromotedNotificationContentModel.Builder("key").build() whenever(promotedNotificationContentExtractor.extractContent(any(), any())) .thenReturn(content) promotedNotificationContentExtractor.resetForEntry(row.entry, content) inflateAndWait(notificationInflater, FLAG_CONTENT_VIEW_ALL, row) verify(promotedNotificationContentExtractor, times(1)).extractContent(any(), any()) promotedNotificationContentExtractor.verifyOneExtractCall() Assert.assertEquals(content, row.entry.promotedNotificationContentModel) } Loading @@ -502,12 +499,11 @@ class NotificationRowContentBinderImplTest : SysuiTestCase() { @DisableFlags(PromotedNotificationUi.FLAG_NAME) fun testExtractsPromotedContent_whenStatusBarNotifChipsFlagEnabled() { val content = PromotedNotificationContentModel.Builder("key").build() whenever(promotedNotificationContentExtractor.extractContent(any(), any())) .thenReturn(content) promotedNotificationContentExtractor.resetForEntry(row.entry, content) inflateAndWait(notificationInflater, FLAG_CONTENT_VIEW_ALL, row) verify(promotedNotificationContentExtractor, times(1)).extractContent(any(), any()) promotedNotificationContentExtractor.verifyOneExtractCall() Assert.assertEquals(content, row.entry.promotedNotificationContentModel) } Loading @@ -515,15 +511,25 @@ class NotificationRowContentBinderImplTest : SysuiTestCase() { @EnableFlags(PromotedNotificationUi.FLAG_NAME, StatusBarNotifChips.FLAG_NAME) fun testExtractsPromotedContent_whenBothFlagsEnabled() { val content = PromotedNotificationContentModel.Builder("key").build() whenever(promotedNotificationContentExtractor.extractContent(any(), any())) .thenReturn(content) promotedNotificationContentExtractor.resetForEntry(row.entry, content) inflateAndWait(notificationInflater, FLAG_CONTENT_VIEW_ALL, row) verify(promotedNotificationContentExtractor, times(1)).extractContent(any(), any()) promotedNotificationContentExtractor.verifyOneExtractCall() Assert.assertEquals(content, row.entry.promotedNotificationContentModel) } @Test @EnableFlags(PromotedNotificationUi.FLAG_NAME, StatusBarNotifChips.FLAG_NAME) fun testExtractsPromotedContent_null() { promotedNotificationContentExtractor.resetForEntry(row.entry, null) inflateAndWait(notificationInflater, FLAG_CONTENT_VIEW_ALL, row) promotedNotificationContentExtractor.verifyOneExtractCall() Assert.assertNull(row.entry.promotedNotificationContentModel) } private class ExceptionHolder { var exception: Exception? = null } Loading packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/NotificationTestHelper.java +3 −3 Original line number Diff line number Diff line Loading @@ -81,7 +81,7 @@ import com.android.systemui.statusbar.notification.headsup.HeadsUpManager; import com.android.systemui.statusbar.notification.icon.IconBuilder; import com.android.systemui.statusbar.notification.icon.IconManager; import com.android.systemui.statusbar.notification.people.PeopleNotificationIdentifier; import com.android.systemui.statusbar.notification.promoted.PromotedNotificationContentExtractor; import com.android.systemui.statusbar.notification.promoted.FakePromotedNotificationContentExtractor; import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow.ExpandableNotificationRowLogger; import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow.OnExpandClickListener; import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.InflationFlag; Loading Loading @@ -201,7 +201,7 @@ public class NotificationTestHelper { new MockSmartReplyInflater(), mock(NotifLayoutInflaterFactory.Provider.class), mock(HeadsUpStyleProvider.class), mock(PromotedNotificationContentExtractor.class), new FakePromotedNotificationContentExtractor(), mock(NotificationRowContentBinderLogger.class)) : new NotificationContentInflater( mock(NotifRemoteViewCache.class), Loading @@ -212,7 +212,7 @@ public class NotificationTestHelper { new MockSmartReplyInflater(), mock(NotifLayoutInflaterFactory.Provider.class), mock(HeadsUpStyleProvider.class), mock(PromotedNotificationContentExtractor.class), new FakePromotedNotificationContentExtractor(), mock(NotificationRowContentBinderLogger.class)); contentBinder.setInflateSynchronously(true); mBindStage = new RowContentBindStage(contentBinder, Loading packages/SystemUI/src/com/android/systemui/statusbar/notification/dagger/NotificationsModule.java +9 −16 Original line number Diff line number Diff line Loading @@ -62,6 +62,7 @@ import com.android.systemui.statusbar.notification.data.NotificationDataLayerMod import com.android.systemui.statusbar.notification.domain.NotificationDomainLayerModule; import com.android.systemui.statusbar.notification.domain.interactor.NotificationLaunchAnimationInteractor; import com.android.systemui.statusbar.notification.footer.ui.viewmodel.FooterViewModelModule; import com.android.systemui.statusbar.notification.headsup.HeadsUpManager; import com.android.systemui.statusbar.notification.icon.ConversationIconManager; import com.android.systemui.statusbar.notification.icon.IconManager; import com.android.systemui.statusbar.notification.init.NotificationsController; Loading @@ -78,8 +79,7 @@ import com.android.systemui.statusbar.notification.logging.NotificationPanelLogg import com.android.systemui.statusbar.notification.logging.NotificationPanelLoggerImpl; import com.android.systemui.statusbar.notification.logging.dagger.NotificationsLogModule; import com.android.systemui.statusbar.notification.promoted.PromotedNotificationContentExtractor; import com.android.systemui.statusbar.notification.promoted.PromotedNotificationLogger; import com.android.systemui.statusbar.notification.promoted.PromotedNotificationsProvider; import com.android.systemui.statusbar.notification.promoted.PromotedNotificationContentExtractorImpl; import com.android.systemui.statusbar.notification.promoted.shared.model.PromotedNotificationContentModel; import com.android.systemui.statusbar.notification.row.NotificationEntryProcessorFactory; import com.android.systemui.statusbar.notification.row.NotificationEntryProcessorFactoryLooperImpl; Loading @@ -92,7 +92,6 @@ import com.android.systemui.statusbar.notification.stack.NotificationStackScroll import com.android.systemui.statusbar.notification.stack.StackScrollAlgorithm; import com.android.systemui.statusbar.phone.KeyguardBypassController; import com.android.systemui.statusbar.phone.StatusBarNotificationActivityStarter; import com.android.systemui.statusbar.notification.headsup.HeadsUpManager; import com.android.systemui.statusbar.policy.ZenModesCleanupStartable; import dagger.Binds; Loading @@ -105,8 +104,6 @@ import kotlin.coroutines.CoroutineContext; import kotlinx.coroutines.CoroutineScope; import java.util.Optional; import javax.inject.Provider; /** Loading Loading @@ -315,21 +312,17 @@ public interface NotificationsModule { @ClassKey(ZenModesCleanupStartable.class) CoreStartable bindsZenModesCleanup(ZenModesCleanupStartable zenModesCleanup); /** * Provides {@link * com.android.systemui.statusbar.notification.promoted.PromotedNotificationContentExtractor} if * one of the relevant feature flags is enabled. */ /** Provides the default implementation of {@link PromotedNotificationContentExtractor} if at * least one of the relevant feature flags is enabled, or an implementation that always returns * null if none are enabled. */ @Provides @SysUISingleton static Optional<PromotedNotificationContentExtractor> providePromotedNotificationContentExtractor( PromotedNotificationsProvider provider, Context context, PromotedNotificationLogger logger) { static PromotedNotificationContentExtractor providesPromotedNotificationContentExtractor( Provider<PromotedNotificationContentExtractorImpl> implProvider) { if (PromotedNotificationContentModel.featureFlagEnabled()) { return Optional.of(new PromotedNotificationContentExtractor(provider, context, logger)); return implProvider.get(); } else { return Optional.empty(); return (entry, recoveredBuilder) -> null; } } } Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/promoted/PromotedNotificationContentExtractorTest.kt→packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/promoted/PromotedNotificationContentExtractorImplTest.kt +39 −47 Original line number Diff line number Diff line Loading @@ -43,7 +43,7 @@ import org.junit.runner.RunWith @SmallTest @RunWith(AndroidJUnit4::class) class PromotedNotificationContentExtractorTest : SysuiTestCase() { class PromotedNotificationContentExtractorImplTest : SysuiTestCase() { private val kosmos = testKosmos() private val provider = Loading @@ -54,7 +54,7 @@ class PromotedNotificationContentExtractorTest : SysuiTestCase() { @Test @DisableFlags(PromotedNotificationUi.FLAG_NAME, StatusBarNotifChips.FLAG_NAME) fun shouldNotExtract_bothFlagsDisabled() { val notif = createEntry().also { provider.promotedEntries.add(it) } val notif = createEntry() val content = extractContent(notif) assertThat(content).isNull() } Loading @@ -63,7 +63,7 @@ class PromotedNotificationContentExtractorTest : SysuiTestCase() { @EnableFlags(PromotedNotificationUi.FLAG_NAME) @DisableFlags(StatusBarNotifChips.FLAG_NAME) fun shouldExtract_promotedNotificationUiFlagEnabled() { val entry = createEntry().also { provider.promotedEntries.add(it) } val entry = createEntry() val content = extractContent(entry) assertThat(content).isNotNull() } Loading @@ -72,7 +72,7 @@ class PromotedNotificationContentExtractorTest : SysuiTestCase() { @EnableFlags(StatusBarNotifChips.FLAG_NAME) @DisableFlags(PromotedNotificationUi.FLAG_NAME) fun shouldExtract_statusBarNotifChipsFlagEnabled() { val entry = createEntry().also { provider.promotedEntries.add(it) } val entry = createEntry() val content = extractContent(entry) assertThat(content).isNotNull() } Loading @@ -80,7 +80,7 @@ class PromotedNotificationContentExtractorTest : SysuiTestCase() { @Test @EnableFlags(PromotedNotificationUi.FLAG_NAME, StatusBarNotifChips.FLAG_NAME) fun shouldExtract_bothFlagsEnabled() { val entry = createEntry().also { provider.promotedEntries.add(it) } val entry = createEntry() val content = extractContent(entry) assertThat(content).isNotNull() } Loading @@ -88,22 +88,19 @@ class PromotedNotificationContentExtractorTest : SysuiTestCase() { @Test @EnableFlags(PromotedNotificationUi.FLAG_NAME, StatusBarNotifChips.FLAG_NAME) fun shouldNotExtract_providerDidNotPromote() { val entry = createEntry().also { provider.promotedEntries.remove(it) } val entry = createEntry(promoted = false) val content = extractContent(entry) assertThat(content).isNull() } @Test @EnableFlags(PromotedNotificationUi.FLAG_NAME, StatusBarNotifChips.FLAG_NAME) fun extractContent_commonFields() { val entry = createEntry { fun extractsContent_commonFields() { val entry = createEntry { setSubText(TEST_SUB_TEXT) setContentTitle(TEST_CONTENT_TITLE) setContentText(TEST_CONTENT_TEXT) setShortCriticalText(TEST_SHORT_CRITICAL_TEXT) } .also { provider.promotedEntries.add(it) } val content = extractContent(entry) Loading @@ -117,9 +114,7 @@ class PromotedNotificationContentExtractorTest : SysuiTestCase() { @EnableFlags(PromotedNotificationUi.FLAG_NAME, StatusBarNotifChips.FLAG_NAME) @DisableFlags(android.app.Flags.FLAG_API_RICH_ONGOING) fun extractContent_apiFlagOff_shortCriticalTextNotExtracted() { val entry = createEntry { setShortCriticalText(TEST_SHORT_CRITICAL_TEXT) } .also { provider.promotedEntries.add(it) } val entry = createEntry { setShortCriticalText(TEST_SHORT_CRITICAL_TEXT) } val content = extractContent(entry) Loading @@ -134,9 +129,7 @@ class PromotedNotificationContentExtractorTest : SysuiTestCase() { android.app.Flags.FLAG_API_RICH_ONGOING, ) fun extractContent_apiFlagOn_shortCriticalTextExtracted() { val entry = createEntry { setShortCriticalText(TEST_SHORT_CRITICAL_TEXT) } .also { provider.promotedEntries.add(it) } val entry = createEntry { setShortCriticalText(TEST_SHORT_CRITICAL_TEXT) } val content = extractContent(entry) Loading @@ -151,7 +144,7 @@ class PromotedNotificationContentExtractorTest : SysuiTestCase() { android.app.Flags.FLAG_API_RICH_ONGOING, ) fun extractContent_noShortCriticalTextSet_textIsNull() { val entry = createEntry {}.also { provider.promotedEntries.add(it) } val entry = createEntry { setShortCriticalText(null) } val content = extractContent(entry) Loading @@ -161,9 +154,8 @@ class PromotedNotificationContentExtractorTest : SysuiTestCase() { @Test @EnableFlags(PromotedNotificationUi.FLAG_NAME, StatusBarNotifChips.FLAG_NAME) fun extractContent_fromBigPictureStyle() { val entry = createEntry { setStyle(BigPictureStyle()) }.also { provider.promotedEntries.add(it) } fun extractsContent_fromBigPictureStyle() { val entry = createEntry { setStyle(BigPictureStyle()) } val content = extractContent(entry) Loading @@ -174,8 +166,7 @@ class PromotedNotificationContentExtractorTest : SysuiTestCase() { @Test @EnableFlags(PromotedNotificationUi.FLAG_NAME, StatusBarNotifChips.FLAG_NAME) fun extractContent_fromBigTextStyle() { val entry = createEntry { setStyle(BigTextStyle()) }.also { provider.promotedEntries.add(it) } val entry = createEntry { setStyle(BigTextStyle()) } val content = extractContent(entry) Loading @@ -187,11 +178,13 @@ class PromotedNotificationContentExtractorTest : SysuiTestCase() { @EnableFlags(PromotedNotificationUi.FLAG_NAME, StatusBarNotifChips.FLAG_NAME) fun extractContent_fromCallStyle() { val hangUpIntent = PendingIntent.getBroadcast(context, 0, Intent("hangup"), PendingIntent.FLAG_IMMUTABLE) val entry = createEntry { setStyle(CallStyle.forOngoingCall(TEST_PERSON, hangUpIntent)) } .also { provider.promotedEntries.add(it) } PendingIntent.getBroadcast( context, 0, Intent("hangup_action"), PendingIntent.FLAG_IMMUTABLE, ) val entry = createEntry { setStyle(CallStyle.forOngoingCall(TEST_PERSON, hangUpIntent)) } val content = extractContent(entry) Loading @@ -202,11 +195,9 @@ class PromotedNotificationContentExtractorTest : SysuiTestCase() { @Test @EnableFlags(PromotedNotificationUi.FLAG_NAME, StatusBarNotifChips.FLAG_NAME) fun extractContent_fromProgressStyle() { val entry = createEntry { val entry = createEntry { setStyle(ProgressStyle().addProgressSegment(Segment(100)).setProgress(75)) } .also { provider.promotedEntries.add(it) } val content = extractContent(entry) Loading @@ -220,13 +211,9 @@ class PromotedNotificationContentExtractorTest : SysuiTestCase() { @Test @EnableFlags(PromotedNotificationUi.FLAG_NAME, StatusBarNotifChips.FLAG_NAME) fun extractContent_fromIneligibleStyle() { val entry = createEntry { setStyle( MessagingStyle(TEST_PERSON).addMessage("message text", 0L, TEST_PERSON) ) val entry = createEntry { setStyle(MessagingStyle(TEST_PERSON).addMessage("message text", 0L, TEST_PERSON)) } .also { provider.promotedEntries.add(it) } val content = extractContent(entry) Loading @@ -239,9 +226,14 @@ class PromotedNotificationContentExtractorTest : SysuiTestCase() { return underTest.extractContent(entry, recoveredBuilder) } private fun createEntry(builderBlock: Notification.Builder.() -> Unit = {}): NotificationEntry { val notif = Notification.Builder(context, "a").also(builderBlock).build() return NotificationEntryBuilder().setNotification(notif).build() private fun createEntry( promoted: Boolean = true, builderBlock: Notification.Builder.() -> Unit = {}, ): NotificationEntry { val notif = Notification.Builder(context, "channel").also(builderBlock).build() return NotificationEntryBuilder().setNotification(notif).build().also { provider.shouldPromoteForEntry[it] = promoted } } companion object { Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/NotificationContentInflaterTest.java +13 −17 Original line number Diff line number Diff line Loading @@ -30,7 +30,6 @@ import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; Loading Loading @@ -61,7 +60,7 @@ import com.android.systemui.statusbar.NotificationRemoteInputManager; import com.android.systemui.statusbar.chips.notification.shared.StatusBarNotifChips; import com.android.systemui.statusbar.notification.ConversationNotificationProcessor; import com.android.systemui.statusbar.notification.collection.NotificationEntry; import com.android.systemui.statusbar.notification.promoted.PromotedNotificationContentExtractor; import com.android.systemui.statusbar.notification.promoted.FakePromotedNotificationContentExtractor; import com.android.systemui.statusbar.notification.promoted.PromotedNotificationUi; import com.android.systemui.statusbar.notification.promoted.shared.model.PromotedNotificationContentModel; import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.BindParams; Loading Loading @@ -105,7 +104,8 @@ public class NotificationContentInflaterTest extends SysuiTestCase { @Mock private NotifLayoutInflaterFactory.Provider mNotifLayoutInflaterFactoryProvider; @Mock private HeadsUpStyleProvider mHeadsUpStyleProvider; @Mock private NotifLayoutInflaterFactory mNotifLayoutInflaterFactory; @Mock private PromotedNotificationContentExtractor mPromotedNotificationContentExtractor; private final FakePromotedNotificationContentExtractor mPromotedNotificationContentExtractor = new FakePromotedNotificationContentExtractor(); private final SmartReplyStateInflater mSmartReplyStateInflater = new SmartReplyStateInflater() { Loading Loading @@ -395,12 +395,11 @@ public class NotificationContentInflaterTest extends SysuiTestCase { public void testExtractsPromotedContent_notWhenBothFlagsDisabled() throws Exception { final PromotedNotificationContentModel content = new PromotedNotificationContentModel.Builder("key").build(); when(mPromotedNotificationContentExtractor.extractContent(any(), any())) .thenReturn(content); mPromotedNotificationContentExtractor.resetForEntry(mRow.getEntry(), content); inflateAndWait(mNotificationInflater, FLAG_CONTENT_VIEW_ALL, mRow); verify(mPromotedNotificationContentExtractor, never()).extractContent(any(), any()); mPromotedNotificationContentExtractor.verifyZeroExtractCalls(); } @Test Loading @@ -410,12 +409,11 @@ public class NotificationContentInflaterTest extends SysuiTestCase { throws Exception { final PromotedNotificationContentModel content = new PromotedNotificationContentModel.Builder("key").build(); when(mPromotedNotificationContentExtractor.extractContent(any(), any())) .thenReturn(content); mPromotedNotificationContentExtractor.resetForEntry(mRow.getEntry(), content); inflateAndWait(mNotificationInflater, FLAG_CONTENT_VIEW_ALL, mRow); verify(mPromotedNotificationContentExtractor, times(1)).extractContent(any(), any()); mPromotedNotificationContentExtractor.verifyOneExtractCall(); assertEquals(content, mRow.getEntry().getPromotedNotificationContentModel()); } Loading @@ -425,12 +423,11 @@ public class NotificationContentInflaterTest extends SysuiTestCase { public void testExtractsPromotedContent_whenStatusBarNotifChipsFlagEnabled() throws Exception { final PromotedNotificationContentModel content = new PromotedNotificationContentModel.Builder("key").build(); when(mPromotedNotificationContentExtractor.extractContent(any(), any())) .thenReturn(content); mPromotedNotificationContentExtractor.resetForEntry(mRow.getEntry(), content); inflateAndWait(mNotificationInflater, FLAG_CONTENT_VIEW_ALL, mRow); verify(mPromotedNotificationContentExtractor, times(1)).extractContent(any(), any()); mPromotedNotificationContentExtractor.verifyOneExtractCall(); assertEquals(content, mRow.getEntry().getPromotedNotificationContentModel()); } Loading @@ -439,23 +436,22 @@ public class NotificationContentInflaterTest extends SysuiTestCase { public void testExtractsPromotedContent_whenBothFlagsEnabled() throws Exception { final PromotedNotificationContentModel content = new PromotedNotificationContentModel.Builder("key").build(); when(mPromotedNotificationContentExtractor.extractContent(any(), any())) .thenReturn(content); mPromotedNotificationContentExtractor.resetForEntry(mRow.getEntry(), content); inflateAndWait(mNotificationInflater, FLAG_CONTENT_VIEW_ALL, mRow); verify(mPromotedNotificationContentExtractor, times(1)).extractContent(any(), any()); mPromotedNotificationContentExtractor.verifyOneExtractCall(); assertEquals(content, mRow.getEntry().getPromotedNotificationContentModel()); } @Test @EnableFlags({PromotedNotificationUi.FLAG_NAME, StatusBarNotifChips.FLAG_NAME}) public void testExtractsPromotedContent_null() throws Exception { when(mPromotedNotificationContentExtractor.extractContent(any(), any())).thenReturn(null); mPromotedNotificationContentExtractor.resetForEntry(mRow.getEntry(), null); inflateAndWait(mNotificationInflater, FLAG_CONTENT_VIEW_ALL, mRow); verify(mPromotedNotificationContentExtractor, times(1)).extractContent(any(), any()); mPromotedNotificationContentExtractor.verifyOneExtractCall(); assertNull(mRow.getEntry().getPromotedNotificationContentModel()); } Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/NotificationRowContentBinderImplTest.kt +22 −16 Original line number Diff line number Diff line Loading @@ -37,7 +37,7 @@ import com.android.systemui.res.R import com.android.systemui.statusbar.chips.notification.shared.StatusBarNotifChips import com.android.systemui.statusbar.notification.ConversationNotificationProcessor import com.android.systemui.statusbar.notification.collection.NotificationEntry import com.android.systemui.statusbar.notification.promoted.PromotedNotificationContentExtractor import com.android.systemui.statusbar.notification.promoted.FakePromotedNotificationContentExtractor import com.android.systemui.statusbar.notification.promoted.PromotedNotificationUi import com.android.systemui.statusbar.notification.promoted.shared.model.PromotedNotificationContentModel import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.BindParams Loading Loading @@ -67,7 +67,6 @@ import org.junit.runner.RunWith import org.mockito.kotlin.any import org.mockito.kotlin.eq import org.mockito.kotlin.mock import org.mockito.kotlin.never import org.mockito.kotlin.spy import org.mockito.kotlin.times import org.mockito.kotlin.verify Loading Loading @@ -110,7 +109,7 @@ class NotificationRowContentBinderImplTest : SysuiTestCase() { return inflatedSmartReplyState } } private val promotedNotificationContentExtractor: PromotedNotificationContentExtractor = mock() private val promotedNotificationContentExtractor = FakePromotedNotificationContentExtractor() @Before fun setUp() { Loading Loading @@ -234,7 +233,7 @@ class NotificationRowContentBinderImplTest : SysuiTestCase() { packageContext = mContext, remoteViews = NewRemoteViews(), contentModel = NotificationContentModel(headsUpStatusBarModel), extractedPromotedNotificationContentModel = null, promotedContent = null, ) val countDownLatch = CountDownLatch(1) NotificationRowContentBinderImpl.applyRemoteView( Loading Loading @@ -475,12 +474,11 @@ class NotificationRowContentBinderImplTest : SysuiTestCase() { @DisableFlags(PromotedNotificationUi.FLAG_NAME, StatusBarNotifChips.FLAG_NAME) fun testExtractsPromotedContent_notWhenBothFlagsDisabled() { val content = PromotedNotificationContentModel.Builder("key").build() whenever(promotedNotificationContentExtractor.extractContent(any(), any())) .thenReturn(content) promotedNotificationContentExtractor.resetForEntry(row.entry, content) inflateAndWait(notificationInflater, FLAG_CONTENT_VIEW_ALL, row) verify(promotedNotificationContentExtractor, never()).extractContent(any(), any()) promotedNotificationContentExtractor.verifyZeroExtractCalls() } @Test Loading @@ -488,12 +486,11 @@ class NotificationRowContentBinderImplTest : SysuiTestCase() { @DisableFlags(StatusBarNotifChips.FLAG_NAME) fun testExtractsPromotedContent_whenPromotedNotificationUiFlagEnabled() { val content = PromotedNotificationContentModel.Builder("key").build() whenever(promotedNotificationContentExtractor.extractContent(any(), any())) .thenReturn(content) promotedNotificationContentExtractor.resetForEntry(row.entry, content) inflateAndWait(notificationInflater, FLAG_CONTENT_VIEW_ALL, row) verify(promotedNotificationContentExtractor, times(1)).extractContent(any(), any()) promotedNotificationContentExtractor.verifyOneExtractCall() Assert.assertEquals(content, row.entry.promotedNotificationContentModel) } Loading @@ -502,12 +499,11 @@ class NotificationRowContentBinderImplTest : SysuiTestCase() { @DisableFlags(PromotedNotificationUi.FLAG_NAME) fun testExtractsPromotedContent_whenStatusBarNotifChipsFlagEnabled() { val content = PromotedNotificationContentModel.Builder("key").build() whenever(promotedNotificationContentExtractor.extractContent(any(), any())) .thenReturn(content) promotedNotificationContentExtractor.resetForEntry(row.entry, content) inflateAndWait(notificationInflater, FLAG_CONTENT_VIEW_ALL, row) verify(promotedNotificationContentExtractor, times(1)).extractContent(any(), any()) promotedNotificationContentExtractor.verifyOneExtractCall() Assert.assertEquals(content, row.entry.promotedNotificationContentModel) } Loading @@ -515,15 +511,25 @@ class NotificationRowContentBinderImplTest : SysuiTestCase() { @EnableFlags(PromotedNotificationUi.FLAG_NAME, StatusBarNotifChips.FLAG_NAME) fun testExtractsPromotedContent_whenBothFlagsEnabled() { val content = PromotedNotificationContentModel.Builder("key").build() whenever(promotedNotificationContentExtractor.extractContent(any(), any())) .thenReturn(content) promotedNotificationContentExtractor.resetForEntry(row.entry, content) inflateAndWait(notificationInflater, FLAG_CONTENT_VIEW_ALL, row) verify(promotedNotificationContentExtractor, times(1)).extractContent(any(), any()) promotedNotificationContentExtractor.verifyOneExtractCall() Assert.assertEquals(content, row.entry.promotedNotificationContentModel) } @Test @EnableFlags(PromotedNotificationUi.FLAG_NAME, StatusBarNotifChips.FLAG_NAME) fun testExtractsPromotedContent_null() { promotedNotificationContentExtractor.resetForEntry(row.entry, null) inflateAndWait(notificationInflater, FLAG_CONTENT_VIEW_ALL, row) promotedNotificationContentExtractor.verifyOneExtractCall() Assert.assertNull(row.entry.promotedNotificationContentModel) } private class ExceptionHolder { var exception: Exception? = null } Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/NotificationTestHelper.java +3 −3 Original line number Diff line number Diff line Loading @@ -81,7 +81,7 @@ import com.android.systemui.statusbar.notification.headsup.HeadsUpManager; import com.android.systemui.statusbar.notification.icon.IconBuilder; import com.android.systemui.statusbar.notification.icon.IconManager; import com.android.systemui.statusbar.notification.people.PeopleNotificationIdentifier; import com.android.systemui.statusbar.notification.promoted.PromotedNotificationContentExtractor; import com.android.systemui.statusbar.notification.promoted.FakePromotedNotificationContentExtractor; import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow.ExpandableNotificationRowLogger; import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow.OnExpandClickListener; import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.InflationFlag; Loading Loading @@ -201,7 +201,7 @@ public class NotificationTestHelper { new MockSmartReplyInflater(), mock(NotifLayoutInflaterFactory.Provider.class), mock(HeadsUpStyleProvider.class), mock(PromotedNotificationContentExtractor.class), new FakePromotedNotificationContentExtractor(), mock(NotificationRowContentBinderLogger.class)) : new NotificationContentInflater( mock(NotifRemoteViewCache.class), Loading @@ -212,7 +212,7 @@ public class NotificationTestHelper { new MockSmartReplyInflater(), mock(NotifLayoutInflaterFactory.Provider.class), mock(HeadsUpStyleProvider.class), mock(PromotedNotificationContentExtractor.class), new FakePromotedNotificationContentExtractor(), mock(NotificationRowContentBinderLogger.class)); contentBinder.setInflateSynchronously(true); mBindStage = new RowContentBindStage(contentBinder, Loading
packages/SystemUI/src/com/android/systemui/statusbar/notification/dagger/NotificationsModule.java +9 −16 Original line number Diff line number Diff line Loading @@ -62,6 +62,7 @@ import com.android.systemui.statusbar.notification.data.NotificationDataLayerMod import com.android.systemui.statusbar.notification.domain.NotificationDomainLayerModule; import com.android.systemui.statusbar.notification.domain.interactor.NotificationLaunchAnimationInteractor; import com.android.systemui.statusbar.notification.footer.ui.viewmodel.FooterViewModelModule; import com.android.systemui.statusbar.notification.headsup.HeadsUpManager; import com.android.systemui.statusbar.notification.icon.ConversationIconManager; import com.android.systemui.statusbar.notification.icon.IconManager; import com.android.systemui.statusbar.notification.init.NotificationsController; Loading @@ -78,8 +79,7 @@ import com.android.systemui.statusbar.notification.logging.NotificationPanelLogg import com.android.systemui.statusbar.notification.logging.NotificationPanelLoggerImpl; import com.android.systemui.statusbar.notification.logging.dagger.NotificationsLogModule; import com.android.systemui.statusbar.notification.promoted.PromotedNotificationContentExtractor; import com.android.systemui.statusbar.notification.promoted.PromotedNotificationLogger; import com.android.systemui.statusbar.notification.promoted.PromotedNotificationsProvider; import com.android.systemui.statusbar.notification.promoted.PromotedNotificationContentExtractorImpl; import com.android.systemui.statusbar.notification.promoted.shared.model.PromotedNotificationContentModel; import com.android.systemui.statusbar.notification.row.NotificationEntryProcessorFactory; import com.android.systemui.statusbar.notification.row.NotificationEntryProcessorFactoryLooperImpl; Loading @@ -92,7 +92,6 @@ import com.android.systemui.statusbar.notification.stack.NotificationStackScroll import com.android.systemui.statusbar.notification.stack.StackScrollAlgorithm; import com.android.systemui.statusbar.phone.KeyguardBypassController; import com.android.systemui.statusbar.phone.StatusBarNotificationActivityStarter; import com.android.systemui.statusbar.notification.headsup.HeadsUpManager; import com.android.systemui.statusbar.policy.ZenModesCleanupStartable; import dagger.Binds; Loading @@ -105,8 +104,6 @@ import kotlin.coroutines.CoroutineContext; import kotlinx.coroutines.CoroutineScope; import java.util.Optional; import javax.inject.Provider; /** Loading Loading @@ -315,21 +312,17 @@ public interface NotificationsModule { @ClassKey(ZenModesCleanupStartable.class) CoreStartable bindsZenModesCleanup(ZenModesCleanupStartable zenModesCleanup); /** * Provides {@link * com.android.systemui.statusbar.notification.promoted.PromotedNotificationContentExtractor} if * one of the relevant feature flags is enabled. */ /** Provides the default implementation of {@link PromotedNotificationContentExtractor} if at * least one of the relevant feature flags is enabled, or an implementation that always returns * null if none are enabled. */ @Provides @SysUISingleton static Optional<PromotedNotificationContentExtractor> providePromotedNotificationContentExtractor( PromotedNotificationsProvider provider, Context context, PromotedNotificationLogger logger) { static PromotedNotificationContentExtractor providesPromotedNotificationContentExtractor( Provider<PromotedNotificationContentExtractorImpl> implProvider) { if (PromotedNotificationContentModel.featureFlagEnabled()) { return Optional.of(new PromotedNotificationContentExtractor(provider, context, logger)); return implProvider.get(); } else { return Optional.empty(); return (entry, recoveredBuilder) -> null; } } }