diff --git a/services/core/java/com/android/server/textclassifier/TextClassificationManagerService.java b/services/core/java/com/android/server/textclassifier/TextClassificationManagerService.java index e675f4e8a46cf..cd65c6c3ceb14 100644 --- a/services/core/java/com/android/server/textclassifier/TextClassificationManagerService.java +++ b/services/core/java/com/android/server/textclassifier/TextClassificationManagerService.java @@ -74,7 +74,6 @@ import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Queue; -import java.util.stream.Collectors; /** * A manager for TextClassifier services. @@ -1047,18 +1046,26 @@ public final class TextClassificationManagerService extends ITextClassifierServi private static void rewriteTextClassificationIcons(Bundle result) { final TextClassification classification = TextClassifierService.getResponse(result); boolean rewrite = false; - for (RemoteAction action : classification.getActions()) { - rewrite |= shouldRewriteIcon(action); + final List actions = classification.getActions(); + final int size = actions.size(); + final List validActions = new ArrayList<>(size); + for (int i = 0; i < size; i++) { + final RemoteAction action = actions.get(i); + final RemoteAction validAction; + if (shouldRewriteIcon(action)) { + rewrite = true; + validAction = validAction(action); + } else { + validAction = action; + } + validActions.add(validAction); } if (rewrite) { TextClassifierService.putResponse( result, classification.toBuilder() .clearActions() - .addActions(classification.getActions() - .stream() - .map(action -> validAction(action)) - .collect(Collectors.toList())) + .addActions(validActions) .build()); } } @@ -1066,29 +1073,30 @@ public final class TextClassificationManagerService extends ITextClassifierServi private static void rewriteConversationActionsIcons(Bundle result) { final ConversationActions convActions = TextClassifierService.getResponse(result); boolean rewrite = false; - for (ConversationAction convAction : convActions.getConversationActions()) { - rewrite |= shouldRewriteIcon(convAction.getAction()); + final List origConvActions = convActions.getConversationActions(); + final int size = origConvActions.size(); + final List validConvActions = new ArrayList<>(size); + for (int i = 0; i < size; i++) { + final ConversationAction convAction = origConvActions.get(i); + final ConversationAction validConvAction; + if (shouldRewriteIcon(convAction.getAction())) { + rewrite = true; + validConvAction = convAction.toBuilder() + .setAction(validAction(convAction.getAction())) + .build(); + } else { + validConvAction = convAction; + } + validConvActions.add(validConvAction); } if (rewrite) { TextClassifierService.putResponse( result, - new ConversationActions( - convActions.getConversationActions() - .stream() - .map(convAction -> convAction.toBuilder() - .setAction(validAction(convAction.getAction())) - .build()) - .collect(Collectors.toList()), - convActions.getId())); + new ConversationActions(validConvActions, convActions.getId())); } } - @Nullable - private static RemoteAction validAction(@Nullable RemoteAction action) { - if (!shouldRewriteIcon(action)) { - return action; - } - + private static RemoteAction validAction(RemoteAction action) { final RemoteAction newAction = new RemoteAction( changeIcon(action.getIcon()), action.getTitle(),