Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1b959cf2 authored by Tony Mak's avatar Tony Mak
Browse files

Cache TextClassificationManager instead of TextClassifier

Calling getTextClassifier() make sure we use the latest set of flags.
This is important as NAS has a very long lifetime.

Test: atest SmartActionsHelperTest

BUG: 131904289
Change-Id: I48e843c074db2e48ffa8187a395ee6d953940654
parent 0f5ce51f
Loading
Loading
Loading
Loading
+12 −10
Original line number Diff line number Diff line
@@ -77,15 +77,13 @@ public class SmartActionsHelper {
            new ConversationActions(Collections.emptyList(), null);

    private Context mContext;
    private TextClassifier mTextClassifier;
    private TextClassificationManager mTextClassificationManager;
    private AssistantSettings mSettings;
    private LruCache<String, Session> mSessionCache = new LruCache<>(MAX_RESULT_ID_TO_CACHE);

    SmartActionsHelper(Context context, AssistantSettings settings) {
        mContext = context;
        TextClassificationManager textClassificationManager =
                mContext.getSystemService(TextClassificationManager.class);
        mTextClassifier = textClassificationManager.getTextClassifier();
        mTextClassificationManager = mContext.getSystemService(TextClassificationManager.class);
        mSettings = settings;
    }

@@ -244,7 +242,7 @@ public class SmartActionsHelper {
                                .map(ConversationAction::getType)
                                .toArray(String[]::new))
                        .build();
        mTextClassifier.onTextClassifierEvent(textClassifierEvent);
        getTextClassifier().onTextClassifierEvent(textClassifierEvent);
    }

    /**
@@ -286,7 +284,7 @@ public class SmartActionsHelper {
                        .setTypeConfig(typeConfigBuilder.build())
                        .build();
        ConversationActions conversationActions =
                mTextClassifier.suggestConversationActions(request);
                getTextClassifier().suggestConversationActions(request);
        reportActionsGenerated(
                conversationActions.getId(), conversationActions.getConversationActions());
        return conversationActions;
@@ -310,7 +308,7 @@ public class SmartActionsHelper {
                        TextClassifierEvent.TYPE_ACTIONS_SHOWN, session.resultId)
                        .build();
        // TODO: If possible, report which replies / actions are actually seen by user.
        mTextClassifier.onTextClassifierEvent(textClassifierEvent);
        getTextClassifier().onTextClassifierEvent(textClassifierEvent);
    }

    void onNotificationDirectReplied(String key) {
@@ -322,7 +320,7 @@ public class SmartActionsHelper {
                createTextClassifierEventBuilder(
                        TextClassifierEvent.TYPE_MANUAL_REPLY, session.resultId)
                        .build();
        mTextClassifier.onTextClassifierEvent(textClassifierEvent);
        getTextClassifier().onTextClassifierEvent(textClassifierEvent);
    }

    void onSuggestedReplySent(String key, CharSequence reply,
@@ -340,7 +338,7 @@ public class SmartActionsHelper {
                        .setEntityTypes(ConversationAction.TYPE_TEXT_REPLY)
                        .setScores(session.repliesScores.getOrDefault(reply, 0f))
                        .build();
        mTextClassifier.onTextClassifierEvent(textClassifierEvent);
        getTextClassifier().onTextClassifierEvent(textClassifierEvent);
    }

    void onActionClicked(String key, Notification.Action action,
@@ -361,7 +359,7 @@ public class SmartActionsHelper {
                        TextClassifierEvent.TYPE_SMART_ACTION, session.resultId)
                        .setEntityTypes(actionType)
                        .build();
        mTextClassifier.onTextClassifierEvent(textClassifierEvent);
        getTextClassifier().onTextClassifierEvent(textClassifierEvent);
    }

    private Notification.Action createNotificationActionFromRemoteAction(
@@ -471,6 +469,10 @@ public class SmartActionsHelper {
        return new ArrayList<>(extractMessages);
    }

    private TextClassifier getTextClassifier() {
        return mTextClassificationManager.getTextClassifier();
    }

    private static boolean arePersonsEqual(Person left, Person right) {
        return Objects.equals(left.getKey(), right.getKey())
                && Objects.equals(left.getName(), right.getName())