Loading packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentView.java +9 −4 Original line number Diff line number Diff line Loading @@ -1334,16 +1334,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 Loading packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationContentViewTest.java +20 −2 Original line number Diff line number Diff line Loading @@ -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 Loading Loading
packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentView.java +9 −4 Original line number Diff line number Diff line Loading @@ -1334,16 +1334,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 Loading
packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationContentViewTest.java +20 −2 Original line number Diff line number Diff line Loading @@ -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 Loading