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

Commit bebe3723 authored by Abodunrinwa Toki's avatar Abodunrinwa Toki Committed by Android (Google) Code Review
Browse files

Merge changes from topics "tcevent", "tc-ca-id"

* changes:
  Introduce TextClassifierEvent
  Add id to ConversationActions and conversationId to its Request
parents c1f34f08 37ccedcc
Loading
Loading
Loading
Loading
+68 −1
Original line number Diff line number Diff line
@@ -52606,9 +52606,10 @@ package android.view.inspector {
package android.view.textclassifier {
  public final class ConversationActions implements android.os.Parcelable {
    ctor public ConversationActions(java.util.List<android.view.textclassifier.ConversationActions.ConversationAction>);
    ctor public ConversationActions(java.util.List<android.view.textclassifier.ConversationActions.ConversationAction>, java.lang.String);
    method public int describeContents();
    method public java.util.List<android.view.textclassifier.ConversationActions.ConversationAction> getConversationActions();
    method public java.lang.String getId();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.view.textclassifier.ConversationActions> CREATOR;
    field public static final java.lang.String HINT_FOR_IN_APP = "in_app";
@@ -52669,6 +52670,7 @@ package android.view.textclassifier {
    method public int describeContents();
    method public java.lang.String getCallingPackageName();
    method public java.util.List<android.view.textclassifier.ConversationActions.Message> getConversation();
    method public java.lang.String getConversationId();
    method public java.util.List<java.lang.String> getHints();
    method public int getMaxSuggestions();
    method public android.view.textclassifier.ConversationActions.TypeConfig getTypeConfig();
@@ -52679,6 +52681,7 @@ package android.view.textclassifier {
  public static final class ConversationActions.Request.Builder {
    ctor public ConversationActions.Request.Builder(java.util.List<android.view.textclassifier.ConversationActions.Message>);
    method public android.view.textclassifier.ConversationActions.Request build();
    method public android.view.textclassifier.ConversationActions.Request.Builder setConversationId(java.lang.String);
    method public android.view.textclassifier.ConversationActions.Request.Builder setHints(java.util.List<java.lang.String>);
    method public android.view.textclassifier.ConversationActions.Request.Builder setMaxSuggestions(int);
    method public android.view.textclassifier.ConversationActions.Request.Builder setTypeConfig(android.view.textclassifier.ConversationActions.TypeConfig);
@@ -52841,6 +52844,7 @@ package android.view.textclassifier {
    method public default int getMaxGenerateLinksTextLength();
    method public default boolean isDestroyed();
    method public default void onSelectionEvent(android.view.textclassifier.SelectionEvent);
    method public default void onTextClassifierEvent(android.view.textclassifier.TextClassifierEvent);
    method public default android.view.textclassifier.ConversationActions suggestConversationActions(android.view.textclassifier.ConversationActions.Request);
    method public default android.view.textclassifier.TextSelection suggestSelection(android.view.textclassifier.TextSelection.Request);
    method public default android.view.textclassifier.TextSelection suggestSelection(java.lang.CharSequence, int, int, android.os.LocaleList);
@@ -52862,6 +52866,7 @@ package android.view.textclassifier {
    field public static final java.lang.String WIDGET_TYPE_CUSTOM_UNSELECTABLE_TEXTVIEW = "nosel-customview";
    field public static final java.lang.String WIDGET_TYPE_EDITTEXT = "edittext";
    field public static final java.lang.String WIDGET_TYPE_EDIT_WEBVIEW = "edit-webview";
    field public static final java.lang.String WIDGET_TYPE_NOTIFICATION = "notification";
    field public static final java.lang.String WIDGET_TYPE_TEXTVIEW = "textview";
    field public static final java.lang.String WIDGET_TYPE_UNKNOWN = "unknown";
    field public static final java.lang.String WIDGET_TYPE_UNSELECTABLE_TEXTVIEW = "nosel-textview";
@@ -52879,6 +52884,68 @@ package android.view.textclassifier {
    field public static final android.os.Parcelable.Creator<android.view.textclassifier.TextClassifier.EntityConfig> CREATOR;
  }
  public final class TextClassifierEvent implements android.os.Parcelable {
    method public int describeContents();
    method public int[] getActionIndices();
    method public java.lang.String getEntityType();
    method public int getEventCategory();
    method public android.view.textclassifier.TextClassificationContext getEventContext();
    method public int getEventIndex();
    method public long getEventTime();
    method public int getEventType();
    method public android.os.Bundle getExtras();
    method public java.lang.String getLanguage();
    method public int getRelativeSuggestedWordEndIndex();
    method public int getRelativeSuggestedWordStartIndex();
    method public int getRelativeWordEndIndex();
    method public int getRelativeWordStartIndex();
    method public java.lang.String getResultId();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final int CATEGORY_CONVERSATION_ACTIONS = 3; // 0x3
    field public static final int CATEGORY_LANGUAGE_DETECTION = 4; // 0x4
    field public static final int CATEGORY_LINKIFY = 2; // 0x2
    field public static final int CATEGORY_SELECTION = 1; // 0x1
    field public static final int CATEGORY_UNDEFINED = 0; // 0x0
    field public static final android.os.Parcelable.Creator<android.view.textclassifier.TextClassifierEvent> CREATOR;
    field public static final int TYPE_ACTIONS_SHOWN = 6; // 0x6
    field public static final int TYPE_AUTO_SELECTION = 5; // 0x5
    field public static final int TYPE_COPY_ACTION = 9; // 0x9
    field public static final int TYPE_CUT_ACTION = 11; // 0xb
    field public static final int TYPE_LINK_CLICKED = 7; // 0x7
    field public static final int TYPE_MANUAL_REPLY = 19; // 0x13
    field public static final int TYPE_OTHER_ACTION = 16; // 0x10
    field public static final int TYPE_OVERTYPE = 8; // 0x8
    field public static final int TYPE_PASTE_ACTION = 10; // 0xa
    field public static final int TYPE_SELECTION_DESTROYED = 15; // 0xf
    field public static final int TYPE_SELECTION_DRAG = 14; // 0xe
    field public static final int TYPE_SELECTION_MODIFIED = 2; // 0x2
    field public static final int TYPE_SELECTION_RESET = 18; // 0x12
    field public static final int TYPE_SELECTION_STARTED = 1; // 0x1
    field public static final int TYPE_SELECT_ALL = 17; // 0x11
    field public static final int TYPE_SHARE_ACTION = 12; // 0xc
    field public static final int TYPE_SMART_ACTION = 13; // 0xd
    field public static final int TYPE_SMART_SELECTION_MULTI = 4; // 0x4
    field public static final int TYPE_SMART_SELECTION_SINGLE = 3; // 0x3
    field public static final int TYPE_UNDEFINED = 0; // 0x0
  }
  public static final class TextClassifierEvent.Builder {
    ctor public TextClassifierEvent.Builder(int, int);
    method public android.view.textclassifier.TextClassifierEvent build();
    method public android.view.textclassifier.TextClassifierEvent.Builder setActionIndices(int...);
    method public android.view.textclassifier.TextClassifierEvent.Builder setEntityType(java.lang.String);
    method public android.view.textclassifier.TextClassifierEvent.Builder setEventContext(android.view.textclassifier.TextClassificationContext);
    method public android.view.textclassifier.TextClassifierEvent.Builder setEventIndex(int);
    method public android.view.textclassifier.TextClassifierEvent.Builder setEventTime(long);
    method public android.view.textclassifier.TextClassifierEvent.Builder setExtras(android.os.Bundle);
    method public android.view.textclassifier.TextClassifierEvent.Builder setLanguage(java.lang.String);
    method public android.view.textclassifier.TextClassifierEvent.Builder setRelativeSuggestedWordEndIndex(int);
    method public android.view.textclassifier.TextClassifierEvent.Builder setRelativeSuggestedWordStartIndex(int);
    method public android.view.textclassifier.TextClassifierEvent.Builder setRelativeWordEndIndex(int);
    method public android.view.textclassifier.TextClassifierEvent.Builder setRelativeWordStartIndex(int);
    method public android.view.textclassifier.TextClassifierEvent.Builder setResultId(java.lang.String);
  }
  public final class TextLanguage implements android.os.Parcelable {
    method public int describeContents();
    method public float getConfidenceScore(android.icu.util.ULocale);
+2 −1
Original line number Diff line number Diff line
@@ -5357,9 +5357,10 @@ package android.service.textclassifier {
    method public void onDestroyTextClassificationSession(android.view.textclassifier.TextClassificationSessionId);
    method public void onDetectLanguage(android.view.textclassifier.TextClassificationSessionId, android.view.textclassifier.TextLanguage.Request, android.os.CancellationSignal, android.service.textclassifier.TextClassifierService.Callback<android.view.textclassifier.TextLanguage>);
    method public abstract void onGenerateLinks(android.view.textclassifier.TextClassificationSessionId, android.view.textclassifier.TextLinks.Request, android.os.CancellationSignal, android.service.textclassifier.TextClassifierService.Callback<android.view.textclassifier.TextLinks>);
    method public void onSelectionEvent(android.view.textclassifier.TextClassificationSessionId, android.view.textclassifier.SelectionEvent);
    method public deprecated void onSelectionEvent(android.view.textclassifier.TextClassificationSessionId, android.view.textclassifier.SelectionEvent);
    method public void onSuggestConversationActions(android.view.textclassifier.TextClassificationSessionId, android.view.textclassifier.ConversationActions.Request, android.os.CancellationSignal, android.service.textclassifier.TextClassifierService.Callback<android.view.textclassifier.ConversationActions>);
    method public abstract void onSuggestSelection(android.view.textclassifier.TextClassificationSessionId, android.view.textclassifier.TextSelection.Request, android.os.CancellationSignal, android.service.textclassifier.TextClassifierService.Callback<android.view.textclassifier.TextSelection>);
    method public void onTextClassifierEvent(android.view.textclassifier.TextClassificationSessionId, android.view.textclassifier.TextClassifierEvent);
    field public static final java.lang.String SERVICE_INTERFACE = "android.service.textclassifier.TextClassifierService";
  }

+6 −0
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import android.view.textclassifier.SelectionEvent;
import android.view.textclassifier.TextClassification;
import android.view.textclassifier.TextClassificationContext;
import android.view.textclassifier.TextClassificationSessionId;
import android.view.textclassifier.TextClassifierEvent;
import android.view.textclassifier.TextLinks;
import android.view.textclassifier.TextLanguage;
import android.view.textclassifier.TextSelection;
@@ -52,10 +53,15 @@ oneway interface ITextClassifierService {
            in TextLinks.Request request,
            in ITextLinksCallback callback);

    // TODO: Remove
    void onSelectionEvent(
            in TextClassificationSessionId sessionId,
            in SelectionEvent event);

    void onTextClassifierEvent(
            in TextClassificationSessionId sessionId,
            in TextClassifierEvent event);

    void onCreateTextClassificationSession(
            in TextClassificationContext context,
            in TextClassificationSessionId sessionId);
+27 −0
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@ import android.view.textclassifier.TextClassificationContext;
import android.view.textclassifier.TextClassificationManager;
import android.view.textclassifier.TextClassificationSessionId;
import android.view.textclassifier.TextClassifier;
import android.view.textclassifier.TextClassifierEvent;
import android.view.textclassifier.TextLanguage;
import android.view.textclassifier.TextLinks;
import android.view.textclassifier.TextSelection;
@@ -191,6 +192,15 @@ public abstract class TextClassifierService extends Service {
            TextClassifierService.this.onSelectionEvent(sessionId, event);
        }

        /** {@inheritDoc} */
        @Override
        public void onTextClassifierEvent(
                TextClassificationSessionId sessionId,
                TextClassifierEvent event) {
            Preconditions.checkNotNull(event);
            TextClassifierService.this.onTextClassifierEvent(sessionId, event);
        }

        /** {@inheritDoc} */
        @Override
        public void onDetectLanguage(
@@ -368,10 +378,27 @@ public abstract class TextClassifierService extends Service {
     *
     * @param sessionId the session id
     * @param event the selection event
     * @deprecated
     *      Use {@link #onTextClassifierEvent(TextClassificationSessionId, TextClassifierEvent)}
     *      instead
     */
    @Deprecated
    public void onSelectionEvent(
            @Nullable TextClassificationSessionId sessionId, @NonNull SelectionEvent event) {}

    /**
     * Writes the TextClassifier event.
     * This is called when a TextClassifier event occurs. e.g. user changed selection,
     * smart selection happened, or a link was clicked.
     *
     * <p>The default implementation ignores the event.
     *
     * @param sessionId the session id
     * @param event the TextClassifier event
     */
    public void onTextClassifierEvent(
            @Nullable TextClassificationSessionId sessionId, @NonNull TextClassifierEvent event) {}

    /**
     * Creates a new text classification session for the specified context.
     *
+50 −8
Original line number Diff line number Diff line
@@ -139,17 +139,21 @@ public final class ConversationActions implements Parcelable {
     */
    public static final String HINT_FOR_NOTIFICATION = "notification";

    private List<ConversationAction> mConversationActions;
    private final List<ConversationAction> mConversationActions;
    private final String mId;

    /** Constructs a {@link ConversationActions} object. */
    public ConversationActions(@NonNull List<ConversationAction> conversationActions) {
    public ConversationActions(
            @NonNull List<ConversationAction> conversationActions, @Nullable String id) {
        mConversationActions =
                Collections.unmodifiableList(Preconditions.checkNotNull(conversationActions));
        mId = id;
    }

    private ConversationActions(Parcel in) {
        mConversationActions =
                Collections.unmodifiableList(in.createTypedArrayList(ConversationAction.CREATOR));
        mId = in.readString();
    }

    @Override
@@ -160,14 +164,26 @@ public final class ConversationActions implements Parcelable {
    @Override
    public void writeToParcel(Parcel parcel, int flags) {
        parcel.writeTypedList(mConversationActions);
        parcel.writeString(mId);
    }

    /** Returns an immutable list of {@link ConversationAction} objects. */
    /**
     * Returns an immutable list of {@link ConversationAction} objects, which are ordered from high
     * confidence to low confidence.
     */
    @NonNull
    public List<ConversationAction> getConversationActions() {
        return mConversationActions;
    }

    /**
     * Returns the id, if one exists, for this object.
     */
    @Nullable
    public String getId() {
        return mId;
    }

    /** Represents the action suggested by a {@link TextClassifier} on a given conversation. */
    public static final class ConversationAction implements Parcelable {

@@ -678,35 +694,37 @@ public final class ConversationActions implements Parcelable {
        private final List<String> mHints;
        @Nullable
        private String mCallingPackageName;
        @Nullable
        private final String mConversationId;

        private Request(
                @NonNull List<Message> conversation,
                @NonNull TypeConfig typeConfig,
                int maxSuggestions,
                String conversationId,
                @Nullable @Hint List<String> hints) {
            mConversation = Preconditions.checkNotNull(conversation);
            mTypeConfig = Preconditions.checkNotNull(typeConfig);
            mMaxSuggestions = maxSuggestions;
            mConversationId = conversationId;
            mHints = hints;
        }

        private static Request readFromParcel(Parcel in) {
            List<Message> conversation = new ArrayList<>();
            in.readParcelableList(conversation, null);

            TypeConfig typeConfig = in.readParcelable(null);

            int maxSuggestions = in.readInt();

            String conversationId = in.readString();
            List<String> hints = new ArrayList<>();
            in.readStringList(hints);

            String callingPackageName = in.readString();

            Request request = new Request(
                    conversation,
                    typeConfig,
                    maxSuggestions,
                    conversationId,
                    hints);
            request.setCallingPackageName(callingPackageName);
            return request;
@@ -717,6 +735,7 @@ public final class ConversationActions implements Parcelable {
            parcel.writeParcelableList(mConversation, flags);
            parcel.writeParcelable(mTypeConfig, flags);
            parcel.writeInt(mMaxSuggestions);
            parcel.writeString(mConversationId);
            parcel.writeStringList(mHints);
            parcel.writeString(mCallingPackageName);
        }
@@ -759,6 +778,16 @@ public final class ConversationActions implements Parcelable {
            return mMaxSuggestions;
        }

        /**
         * Return an unique identifier of the conversation that is generating actions for. This
         * identifier is unique within the calling package only, so use it with
         * {@link #getCallingPackageName()}.
         */
        @Nullable
        public String getConversationId() {
            return mConversationId;
        }

        /** Returns an immutable list of hints */
        @Nullable
        @Hint
@@ -794,6 +823,8 @@ public final class ConversationActions implements Parcelable {
            private TypeConfig mTypeConfig;
            private int mMaxSuggestions;
            @Nullable
            private String mConversationId;
            @Nullable
            @Hint
            private List<String> mHints;

@@ -823,7 +854,8 @@ public final class ConversationActions implements Parcelable {
                return this;
            }

            /** Sets the maximum number of suggestions you want.
            /**
             * Sets the maximum number of suggestions you want.
             * <p>
             * Value 0 means no restriction.
             */
@@ -833,6 +865,15 @@ public final class ConversationActions implements Parcelable {
                return this;
            }

            /**
             * Sets an unique identifier of the conversation that is generating actions for.
             */
            @NonNull
            public Builder setConversationId(@Nullable String conversationId) {
                mConversationId = conversationId;
                return this;
            }

            /** Builds the {@link Request} object. */
            @NonNull
            public Request build() {
@@ -840,6 +881,7 @@ public final class ConversationActions implements Parcelable {
                        Collections.unmodifiableList(mConversation),
                        mTypeConfig == null ? new TypeConfig.Builder().build() : mTypeConfig,
                        mMaxSuggestions,
                        mConversationId,
                        mHints == null
                                ? Collections.emptyList()
                                : Collections.unmodifiableList(mHints));
Loading