summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationEntry.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/SmartRepliesAndActionsInflater.kt51
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/InflatedSmartRepliesTest.java3
3 files changed, 31 insertions, 27 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationEntry.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationEntry.java
index 789e78e33671..0e7a558f0ab4 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationEntry.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationEntry.java
@@ -329,11 +329,11 @@ public final class NotificationEntry extends ListEntry {
return mRanking.canBubble();
}
- public @NonNull List<Notification.Action> getSmartActions() {
+ public @Nullable List<Notification.Action> getSmartActions() {
return mRanking.getSmartActions();
}
- public @NonNull List<CharSequence> getSmartReplies() {
+ public @Nullable List<CharSequence> getSmartReplies() {
return mRanking.getSmartReplies();
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SmartRepliesAndActionsInflater.kt b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SmartRepliesAndActionsInflater.kt
index b2c1f4840068..5ec57e2f02f3 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SmartRepliesAndActionsInflater.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SmartRepliesAndActionsInflater.kt
@@ -86,7 +86,7 @@ interface SmartRepliesAndActionsInflater {
sysuiContext: Context,
notifPackageContext: Context,
entry: NotificationEntry,
- existingRepliesAndAction: SmartRepliesAndActions
+ existingRepliesAndAction: SmartRepliesAndActions?
): InflatedSmartReplies
}
@@ -103,7 +103,7 @@ interface SmartRepliesAndActionsInflater {
sysuiContext: Context,
notifPackageContext: Context,
entry: NotificationEntry,
- existingRepliesAndAction: SmartRepliesAndActions
+ existingRepliesAndAction: SmartRepliesAndActions?
): InflatedSmartReplies {
val newRepliesAndActions = chooseSmartRepliesAndActions(entry)
if (!shouldShowSmartReplyView(entry, newRepliesAndActions)) {
@@ -204,27 +204,32 @@ interface SmartRepliesAndActionsInflater {
}
// Apps didn't provide any smart replies / actions, use those from NAS (if any).
if (smartReplies == null && smartActions == null) {
- if (entry.smartReplies.isNotEmpty()
- && freeformRemoteInputActionPair != null
- && freeformRemoteInputActionPair.second.allowGeneratedReplies
- && freeformRemoteInputActionPair.second.actionIntent != null) {
- smartReplies = SmartReplies(
- entry.smartReplies,
- freeformRemoteInputActionPair.first,
- freeformRemoteInputActionPair.second.actionIntent,
- true /* fromAssistant */)
- }
- if (entry.smartActions.isNotEmpty()
- && notification.allowSystemGeneratedContextualActions) {
- val systemGeneratedActions: List<Notification.Action> = when {
- activityManagerWrapper.isLockTaskKioskModeActive ->
- // Filter actions if we're in kiosk-mode - we don't care about screen
- // pinning mode, since notifications aren't shown there anyway.
- filterAllowlistedLockTaskApps(entry.smartActions)
- else -> entry.smartActions
- }
- smartActions = SmartActions(systemGeneratedActions, true /* fromAssistant */)
- }
+ smartReplies = entry.smartReplies
+ ?.takeIf { it.isNotEmpty() }
+ ?.let { entryReplies -> freeformRemoteInputActionPair
+ ?.takeIf {
+ it.second.allowGeneratedReplies && it.second.actionIntent != null
+ }?.let { freeformPair -> SmartReplies(
+ entryReplies,
+ freeformPair.first,
+ freeformPair.second.actionIntent,
+ true /* fromAssistant */)
+ }
+ }
+ smartActions = entry.smartActions
+ ?.takeIf {
+ it.isNotEmpty() && notification.allowSystemGeneratedContextualActions
+ }?.let { entryActions ->
+ val systemGeneratedActions: List<Notification.Action> = when {
+ activityManagerWrapper.isLockTaskKioskModeActive ->
+ // Filter actions if we're in kiosk-mode - we don't care about
+ // screen pinning mode, since notifications aren't shown there
+ // anyway.
+ filterAllowlistedLockTaskApps(entryActions)
+ else -> entryActions
+ }
+ SmartActions(systemGeneratedActions, true /* fromAssistant */)
+ }
}
return SmartRepliesAndActions(smartReplies, smartActions)
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/InflatedSmartRepliesTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/InflatedSmartRepliesTest.java
index e93c5dbdadc1..8ee15bb36834 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/InflatedSmartRepliesTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/InflatedSmartRepliesTest.java
@@ -183,8 +183,7 @@ public class InflatedSmartRepliesTest extends SysuiTestCase {
SmartRepliesAndActions repliesAndActions =
mSmartRepliesInflater.chooseSmartRepliesAndActions(mEntry);
- assertThat(repliesAndActions.smartReplies.choices).isEqualTo(
- mEntry.getSmartReplies());
+ assertThat(repliesAndActions.smartReplies.choices).isEqualTo(mEntry.getSmartReplies());
assertThat(repliesAndActions.smartReplies.fromAssistant).isTrue();
assertThat(repliesAndActions.smartActions).isNull();
}