Loading packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/promoted/PromotedNotificationContentExtractorImplTest.kt +60 −1 Original line number Diff line number Diff line Loading @@ -376,12 +376,67 @@ class PromotedNotificationContentExtractorImplTest : SysuiTestCase() { @Test @EnableFlags(PromotedNotificationUi.FLAG_NAME, StatusBarNotifChips.FLAG_NAME) fun extractContent_fromBigTextStyle() { val entry = createEntry { setStyle(BigTextStyle()) } val entry = createEntry { setContentTitle(TEST_CONTENT_TITLE) setContentText(TEST_CONTENT_TEXT) setStyle( BigTextStyle() .bigText(TEST_BIG_TEXT) .setBigContentTitle(TEST_BIG_CONTENT_TITLE) .setSummaryText(TEST_SUMMARY_TEXT) ) } val content = extractContent(entry) assertThat(content).isNotNull() assertThat(content?.style).isEqualTo(Style.BigText) assertThat(content?.title).isEqualTo(TEST_BIG_CONTENT_TITLE) assertThat(content?.text).isEqualTo(TEST_BIG_TEXT) } @Test @EnableFlags(PromotedNotificationUi.FLAG_NAME, StatusBarNotifChips.FLAG_NAME) fun extractContent_fromBigTextStyle_fallbackToContentTitle() { val entry = createEntry { setContentTitle(TEST_CONTENT_TITLE) setContentText(TEST_CONTENT_TEXT) setStyle( BigTextStyle() .bigText(TEST_BIG_TEXT) // bigContentTitle unset .setSummaryText(TEST_SUMMARY_TEXT) ) } val content = extractContent(entry) assertThat(content).isNotNull() assertThat(content?.style).isEqualTo(Style.BigText) assertThat(content?.title).isEqualTo(TEST_CONTENT_TITLE) assertThat(content?.text).isEqualTo(TEST_BIG_TEXT) } @Test @EnableFlags(PromotedNotificationUi.FLAG_NAME, StatusBarNotifChips.FLAG_NAME) fun extractContent_fromBigTextStyle_fallbackToContentText() { val entry = createEntry { setContentTitle(TEST_CONTENT_TITLE) setContentText(TEST_CONTENT_TEXT) setStyle( BigTextStyle() // bigText unset .setBigContentTitle(TEST_BIG_CONTENT_TITLE) .setSummaryText(TEST_SUMMARY_TEXT) ) } val content = extractContent(entry) assertThat(content).isNotNull() assertThat(content?.style).isEqualTo(Style.BigText) assertThat(content?.title).isEqualTo(TEST_BIG_CONTENT_TITLE) assertThat(content?.text).isEqualTo(TEST_CONTENT_TEXT) } @Test Loading Loading @@ -498,6 +553,10 @@ class PromotedNotificationContentExtractorImplTest : SysuiTestCase() { private const val TEST_CONTENT_TEXT = "content text" private const val TEST_SHORT_CRITICAL_TEXT = "short" private const val TEST_BIG_CONTENT_TITLE = "big content title" private const val TEST_BIG_TEXT = "big text" private const val TEST_SUMMARY_TEXT = "summary text" private const val TEST_PROGRESS = 50 private const val TEST_PROGRESS_MAX = 100 Loading packages/SystemUI/src/com/android/systemui/statusbar/notification/promoted/PromotedNotificationContentExtractor.kt +38 −4 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import android.app.Notification import android.app.Notification.BigPictureStyle import android.app.Notification.BigTextStyle import android.app.Notification.CallStyle import android.app.Notification.EXTRA_BIG_TEXT import android.app.Notification.EXTRA_CHRONOMETER_COUNT_DOWN import android.app.Notification.EXTRA_PROGRESS import android.app.Notification.EXTRA_PROGRESS_INDETERMINATE Loading @@ -27,8 +28,10 @@ import android.app.Notification.EXTRA_PROGRESS_MAX import android.app.Notification.EXTRA_SUB_TEXT import android.app.Notification.EXTRA_TEXT import android.app.Notification.EXTRA_TITLE import android.app.Notification.EXTRA_TITLE_BIG import android.app.Notification.EXTRA_VERIFICATION_ICON import android.app.Notification.EXTRA_VERIFICATION_TEXT import android.app.Notification.InboxStyle import android.app.Notification.ProgressStyle import android.content.Context import android.graphics.drawable.Icon Loading Loading @@ -105,8 +108,8 @@ constructor( contentBuilder.shortCriticalText = notification.shortCriticalText() contentBuilder.lastAudiblyAlertedMs = entry.lastAudiblyAlertedMs contentBuilder.profileBadgeResId = null // TODO contentBuilder.title = notification.title() contentBuilder.text = notification.text() contentBuilder.title = notification.resolveTitle(recoveredBuilder.style) contentBuilder.text = notification.resolveText(recoveredBuilder.style) contentBuilder.skeletonLargeIcon = notification.skeletonLargeIcon(imageModelProvider) contentBuilder.oldProgress = notification.oldProgress() Loading @@ -127,8 +130,39 @@ constructor( private fun Notification.title(): CharSequence? = extras?.getCharSequence(EXTRA_TITLE) private fun Notification.bigTitle(): CharSequence? = extras?.getCharSequence(EXTRA_TITLE_BIG) private fun Notification.Style.bigTitleOverridesTitle(): Boolean { return when (this) { is BigTextStyle, is BigPictureStyle, is InboxStyle -> true else -> false } } private fun Notification.resolveTitle(style: Notification.Style?): CharSequence? { return if (style?.bigTitleOverridesTitle() == true) { bigTitle() } else { null } ?: title() } private fun Notification.text(): CharSequence? = extras?.getCharSequence(EXTRA_TEXT) private fun Notification.bigText(): CharSequence? = extras?.getCharSequence(EXTRA_BIG_TEXT) private fun Notification.Style.bigTextOverridesText(): Boolean = this is BigTextStyle private fun Notification.resolveText(style: Notification.Style?): CharSequence? { return if (style?.bigTextOverridesText() == true) { bigText() } else { null } ?: text() } private fun Notification.subText(): String? = extras?.getString(EXTRA_SUB_TEXT) private fun Notification.shortCriticalText(): String? { Loading Loading @@ -233,13 +267,13 @@ constructor( private fun BigPictureStyle.extractContent( contentBuilder: PromotedNotificationContentModel.Builder ) { // TODO? // Big title is handled in resolveTitle, and big picture is unsupported. } private fun BigTextStyle.extractContent( contentBuilder: PromotedNotificationContentModel.Builder ) { // TODO? // Big title and big text are handled in resolveTitle and resolveText. } private fun CallStyle.extractContent( Loading Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/promoted/PromotedNotificationContentExtractorImplTest.kt +60 −1 Original line number Diff line number Diff line Loading @@ -376,12 +376,67 @@ class PromotedNotificationContentExtractorImplTest : SysuiTestCase() { @Test @EnableFlags(PromotedNotificationUi.FLAG_NAME, StatusBarNotifChips.FLAG_NAME) fun extractContent_fromBigTextStyle() { val entry = createEntry { setStyle(BigTextStyle()) } val entry = createEntry { setContentTitle(TEST_CONTENT_TITLE) setContentText(TEST_CONTENT_TEXT) setStyle( BigTextStyle() .bigText(TEST_BIG_TEXT) .setBigContentTitle(TEST_BIG_CONTENT_TITLE) .setSummaryText(TEST_SUMMARY_TEXT) ) } val content = extractContent(entry) assertThat(content).isNotNull() assertThat(content?.style).isEqualTo(Style.BigText) assertThat(content?.title).isEqualTo(TEST_BIG_CONTENT_TITLE) assertThat(content?.text).isEqualTo(TEST_BIG_TEXT) } @Test @EnableFlags(PromotedNotificationUi.FLAG_NAME, StatusBarNotifChips.FLAG_NAME) fun extractContent_fromBigTextStyle_fallbackToContentTitle() { val entry = createEntry { setContentTitle(TEST_CONTENT_TITLE) setContentText(TEST_CONTENT_TEXT) setStyle( BigTextStyle() .bigText(TEST_BIG_TEXT) // bigContentTitle unset .setSummaryText(TEST_SUMMARY_TEXT) ) } val content = extractContent(entry) assertThat(content).isNotNull() assertThat(content?.style).isEqualTo(Style.BigText) assertThat(content?.title).isEqualTo(TEST_CONTENT_TITLE) assertThat(content?.text).isEqualTo(TEST_BIG_TEXT) } @Test @EnableFlags(PromotedNotificationUi.FLAG_NAME, StatusBarNotifChips.FLAG_NAME) fun extractContent_fromBigTextStyle_fallbackToContentText() { val entry = createEntry { setContentTitle(TEST_CONTENT_TITLE) setContentText(TEST_CONTENT_TEXT) setStyle( BigTextStyle() // bigText unset .setBigContentTitle(TEST_BIG_CONTENT_TITLE) .setSummaryText(TEST_SUMMARY_TEXT) ) } val content = extractContent(entry) assertThat(content).isNotNull() assertThat(content?.style).isEqualTo(Style.BigText) assertThat(content?.title).isEqualTo(TEST_BIG_CONTENT_TITLE) assertThat(content?.text).isEqualTo(TEST_CONTENT_TEXT) } @Test Loading Loading @@ -498,6 +553,10 @@ class PromotedNotificationContentExtractorImplTest : SysuiTestCase() { private const val TEST_CONTENT_TEXT = "content text" private const val TEST_SHORT_CRITICAL_TEXT = "short" private const val TEST_BIG_CONTENT_TITLE = "big content title" private const val TEST_BIG_TEXT = "big text" private const val TEST_SUMMARY_TEXT = "summary text" private const val TEST_PROGRESS = 50 private const val TEST_PROGRESS_MAX = 100 Loading
packages/SystemUI/src/com/android/systemui/statusbar/notification/promoted/PromotedNotificationContentExtractor.kt +38 −4 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import android.app.Notification import android.app.Notification.BigPictureStyle import android.app.Notification.BigTextStyle import android.app.Notification.CallStyle import android.app.Notification.EXTRA_BIG_TEXT import android.app.Notification.EXTRA_CHRONOMETER_COUNT_DOWN import android.app.Notification.EXTRA_PROGRESS import android.app.Notification.EXTRA_PROGRESS_INDETERMINATE Loading @@ -27,8 +28,10 @@ import android.app.Notification.EXTRA_PROGRESS_MAX import android.app.Notification.EXTRA_SUB_TEXT import android.app.Notification.EXTRA_TEXT import android.app.Notification.EXTRA_TITLE import android.app.Notification.EXTRA_TITLE_BIG import android.app.Notification.EXTRA_VERIFICATION_ICON import android.app.Notification.EXTRA_VERIFICATION_TEXT import android.app.Notification.InboxStyle import android.app.Notification.ProgressStyle import android.content.Context import android.graphics.drawable.Icon Loading Loading @@ -105,8 +108,8 @@ constructor( contentBuilder.shortCriticalText = notification.shortCriticalText() contentBuilder.lastAudiblyAlertedMs = entry.lastAudiblyAlertedMs contentBuilder.profileBadgeResId = null // TODO contentBuilder.title = notification.title() contentBuilder.text = notification.text() contentBuilder.title = notification.resolveTitle(recoveredBuilder.style) contentBuilder.text = notification.resolveText(recoveredBuilder.style) contentBuilder.skeletonLargeIcon = notification.skeletonLargeIcon(imageModelProvider) contentBuilder.oldProgress = notification.oldProgress() Loading @@ -127,8 +130,39 @@ constructor( private fun Notification.title(): CharSequence? = extras?.getCharSequence(EXTRA_TITLE) private fun Notification.bigTitle(): CharSequence? = extras?.getCharSequence(EXTRA_TITLE_BIG) private fun Notification.Style.bigTitleOverridesTitle(): Boolean { return when (this) { is BigTextStyle, is BigPictureStyle, is InboxStyle -> true else -> false } } private fun Notification.resolveTitle(style: Notification.Style?): CharSequence? { return if (style?.bigTitleOverridesTitle() == true) { bigTitle() } else { null } ?: title() } private fun Notification.text(): CharSequence? = extras?.getCharSequence(EXTRA_TEXT) private fun Notification.bigText(): CharSequence? = extras?.getCharSequence(EXTRA_BIG_TEXT) private fun Notification.Style.bigTextOverridesText(): Boolean = this is BigTextStyle private fun Notification.resolveText(style: Notification.Style?): CharSequence? { return if (style?.bigTextOverridesText() == true) { bigText() } else { null } ?: text() } private fun Notification.subText(): String? = extras?.getString(EXTRA_SUB_TEXT) private fun Notification.shortCriticalText(): String? { Loading Loading @@ -233,13 +267,13 @@ constructor( private fun BigPictureStyle.extractContent( contentBuilder: PromotedNotificationContentModel.Builder ) { // TODO? // Big title is handled in resolveTitle, and big picture is unsupported. } private fun BigTextStyle.extractContent( contentBuilder: PromotedNotificationContentModel.Builder ) { // TODO? // Big title and big text are handled in resolveTitle and resolveText. } private fun CallStyle.extractContent( Loading