From f3cd694df7ceecef5e326a3694f8eef667dd75ee Mon Sep 17 00:00:00 2001 From: Abodunrinwa Toki Date: Thu, 21 May 2020 19:45:08 +0100 Subject: [PATCH] Updates to TCMS icons rewritting. - Replace for-e loop with for-i loop - Remove streams - Related cleanups Refer to comments in Ib63e54462508029cdf0e56c2c6a82ff4e81b02a8 (Patchset 5) Bug: 151847511 Test: atest tests/tests/textclassifier/src/android/view/textclassifier/cts Test: atest core/tests/coretests/src/android/view/textclassifier Test: Select a phone number text, check that the "Call" icon shows Change-Id: If52d84b69a047a2aeb1dba8a245765807a8f574a --- .../TextClassificationManagerService.java | 54 +++++++++++-------- 1 file changed, 31 insertions(+), 23 deletions(-) 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(),