summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Gustav Sennton <gsennton@google.com> 2019-01-29 17:13:36 +0000
committer Gustav Sennton <gsennton@google.com> 2019-01-30 19:16:56 +0000
commit1ee9c9d0b5f15f52446341c30c82ac00579dec94 (patch)
tree637c6feafaf7da48ac5a06dd5656b213148f3b3a
parentffcf6e546085b7398c0002f616ca0a36fed0f8e4 (diff)
Make the smart-replies 'enabled' key control both actions and replies.
The key named 'enabled' in the flag SMART_REPLIES_IN_NOTIFICATIONS_FLAGS currently only controls whether app-generated smart replies will be shown in the system UI. With this change that key controls both replies and actions from both the system (the assistant) and the app. So if the flag is turned off users won't see any smart suggestions at all. Bug: 122506860 Test: atest SystemUITests Test: 'adb shell settings put global smart_replies_in_notifications_flags enabled=X' for different values of X and ensure smart suggestions are turned on/off accordingly. Change-Id: Id6b1072f11bf1ec4e0b68ef2cefb7e28bb65746e
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentView.java13
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationContentViewTest.java22
2 files changed, 29 insertions, 6 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentView.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentView.java
index c161da348c28..065b91085dd5 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentView.java
@@ -1314,16 +1314,21 @@ public class NotificationContentView extends FrameLayout {
static SmartRepliesAndActions chooseSmartRepliesAndActions(
SmartReplyConstants smartReplyConstants,
final NotificationEntry entry) {
- boolean enableAppGeneratedSmartReplies = (smartReplyConstants.isEnabled()
- && (!smartReplyConstants.requiresTargetingP()
- || entry.targetSdk >= Build.VERSION_CODES.P));
-
Notification notification = entry.notification.getNotification();
Pair<RemoteInput, Notification.Action> remoteInputActionPair =
notification.findRemoteInputActionPair(false /* freeform */);
Pair<RemoteInput, Notification.Action> freeformRemoteInputActionPair =
notification.findRemoteInputActionPair(true /* freeform */);
+ if (!smartReplyConstants.isEnabled()) {
+ return new SmartRepliesAndActions(null, null, freeformRemoteInputActionPair != null);
+ }
+ // Only use smart replies from the app if they target P or above. We have this check because
+ // the smart reply API has been used for other things (Wearables) in the past. The API to
+ // add smart actions is new in Q so it doesn't require a target-sdk check.
+ boolean enableAppGeneratedSmartReplies = (!smartReplyConstants.requiresTargetingP()
+ || entry.targetSdk >= Build.VERSION_CODES.P);
+
boolean appGeneratedSmartRepliesExist =
enableAppGeneratedSmartReplies
&& remoteInputActionPair != null
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationContentViewTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationContentViewTest.java
index d94bf845ca5b..c36fec28459d 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationContentViewTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationContentViewTest.java
@@ -193,14 +193,32 @@ public class NotificationContentViewTest extends SysuiTestCase {
}
@Test
- public void chooseSmartRepliesAndActions_smartRepliesOff_noAppGeneratedSmartReplies() {
- setupAppGeneratedReplies(new String[] {"Reply1", "Reply2"});
+ public void chooseSmartRepliesAndActions_smartRepliesOff_noAppGeneratedSmartSuggestions() {
+ CharSequence[] smartReplies = new String[] {"Reply1", "Reply2"};
+ List<Notification.Action> smartActions =
+ createActions(new String[] {"Test Action 1", "Test Action 2"});
+ setupAppGeneratedSuggestions(smartReplies, smartActions);
+ when(mSmartReplyConstants.isEnabled()).thenReturn(false);
+
+ NotificationContentView.SmartRepliesAndActions repliesAndActions =
+ NotificationContentView.chooseSmartRepliesAndActions(mSmartReplyConstants, mEntry);
+
+ assertThat(repliesAndActions.smartReplies).isNull();
+ assertThat(repliesAndActions.smartActions).isNull();
+ }
+
+ @Test
+ public void chooseSmartRepliesAndActions_smartRepliesOff_noSystemGeneratedSmartSuggestions() {
+ mEntry.smartReplies = new String[] {"Sys Smart Reply 1", "Sys Smart Reply 2"};
+ mEntry.systemGeneratedSmartActions =
+ createActions(new String[] {"Sys Smart Action 1", "Sys Smart Action 2"});
when(mSmartReplyConstants.isEnabled()).thenReturn(false);
NotificationContentView.SmartRepliesAndActions repliesAndActions =
NotificationContentView.chooseSmartRepliesAndActions(mSmartReplyConstants, mEntry);
assertThat(repliesAndActions.smartReplies).isNull();
+ assertThat(repliesAndActions.smartActions).isNull();
}
@Test