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

Commit a4788647 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Remove deprecated codes around TextClassifier"

parents 2406e8ff 41eaf646
Loading
Loading
Loading
Loading
+3 −62
Original line number Original line Diff line number Diff line
@@ -17,7 +17,6 @@
package android.service.textclassifier;
package android.service.textclassifier;


import android.Manifest;
import android.Manifest;
import android.annotation.IntRange;
import android.annotation.NonNull;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.annotation.SystemApi;
@@ -98,8 +97,7 @@ public abstract class TextClassifierService extends Service {
            Preconditions.checkNotNull(request);
            Preconditions.checkNotNull(request);
            Preconditions.checkNotNull(callback);
            Preconditions.checkNotNull(callback);
            TextClassifierService.this.onSuggestSelection(
            TextClassifierService.this.onSuggestSelection(
                    request.getText(), request.getStartIndex(), request.getEndIndex(),
                    sessionId, request, mCancellationSignal,
                    TextSelection.Options.from(sessionId, request), mCancellationSignal,
                    new Callback<TextSelection>() {
                    new Callback<TextSelection>() {
                        @Override
                        @Override
                        public void onSuccess(TextSelection result) {
                        public void onSuccess(TextSelection result) {
@@ -132,8 +130,7 @@ public abstract class TextClassifierService extends Service {
            Preconditions.checkNotNull(request);
            Preconditions.checkNotNull(request);
            Preconditions.checkNotNull(callback);
            Preconditions.checkNotNull(callback);
            TextClassifierService.this.onClassifyText(
            TextClassifierService.this.onClassifyText(
                    request.getText(), request.getStartIndex(), request.getEndIndex(),
                    sessionId, request, mCancellationSignal,
                    TextClassification.Options.from(sessionId, request), mCancellationSignal,
                    new Callback<TextClassification>() {
                    new Callback<TextClassification>() {
                        @Override
                        @Override
                        public void onSuccess(TextClassification result) {
                        public void onSuccess(TextClassification result) {
@@ -164,7 +161,7 @@ public abstract class TextClassifierService extends Service {
            Preconditions.checkNotNull(request);
            Preconditions.checkNotNull(request);
            Preconditions.checkNotNull(callback);
            Preconditions.checkNotNull(callback);
            TextClassifierService.this.onGenerateLinks(
            TextClassifierService.this.onGenerateLinks(
                    request.getText(), TextLinks.Options.from(sessionId, request),
                    sessionId, request,
                    mCancellationSignal,
                    mCancellationSignal,
                    new Callback<TextLinks>() {
                    new Callback<TextLinks>() {
                        @Override
                        @Override
@@ -238,25 +235,6 @@ public abstract class TextClassifierService extends Service {
            @NonNull CancellationSignal cancellationSignal,
            @NonNull CancellationSignal cancellationSignal,
            @NonNull Callback<TextSelection> callback);
            @NonNull Callback<TextSelection> callback);


    // TODO: Remove once apps can build against the latest sdk.
    /** @hide */
    public void onSuggestSelection(
            @NonNull CharSequence text,
            @IntRange(from = 0) int selectionStartIndex,
            @IntRange(from = 0) int selectionEndIndex,
            @Nullable TextSelection.Options options,
            @NonNull CancellationSignal cancellationSignal,
            @NonNull Callback<TextSelection> callback) {
        final TextClassificationSessionId sessionId = options.getSessionId();
        final TextSelection.Request request = options.getRequest() != null
                ? options.getRequest()
                : new TextSelection.Request.Builder(
                        text, selectionStartIndex, selectionEndIndex)
                        .setDefaultLocales(options.getDefaultLocales())
                        .build();
        onSuggestSelection(sessionId, request, cancellationSignal, callback);
    }

    /**
    /**
     * Classifies the specified text and returns a {@link TextClassification} object that can be
     * Classifies the specified text and returns a {@link TextClassification} object that can be
     * used to generate a widget for handling the classified text.
     * used to generate a widget for handling the classified text.
@@ -272,26 +250,6 @@ public abstract class TextClassifierService extends Service {
            @NonNull CancellationSignal cancellationSignal,
            @NonNull CancellationSignal cancellationSignal,
            @NonNull Callback<TextClassification> callback);
            @NonNull Callback<TextClassification> callback);


    // TODO: Remove once apps can build against the latest sdk.
    /** @hide */
    public void onClassifyText(
            @NonNull CharSequence text,
            @IntRange(from = 0) int startIndex,
            @IntRange(from = 0) int endIndex,
            @Nullable TextClassification.Options options,
            @NonNull CancellationSignal cancellationSignal,
            @NonNull Callback<TextClassification> callback) {
        final TextClassificationSessionId sessionId = options.getSessionId();
        final TextClassification.Request request = options.getRequest() != null
                ? options.getRequest()
                : new TextClassification.Request.Builder(
                        text, startIndex, endIndex)
                        .setDefaultLocales(options.getDefaultLocales())
                        .setReferenceTime(options.getReferenceTime())
                        .build();
        onClassifyText(sessionId, request, cancellationSignal, callback);
    }

    /**
    /**
     * Generates and returns a {@link TextLinks} that may be applied to the text to annotate it with
     * Generates and returns a {@link TextLinks} that may be applied to the text to annotate it with
     * links information.
     * links information.
@@ -307,23 +265,6 @@ public abstract class TextClassifierService extends Service {
            @NonNull CancellationSignal cancellationSignal,
            @NonNull CancellationSignal cancellationSignal,
            @NonNull Callback<TextLinks> callback);
            @NonNull Callback<TextLinks> callback);


    // TODO: Remove once apps can build against the latest sdk.
    /** @hide */
    public void onGenerateLinks(
            @NonNull CharSequence text,
            @Nullable TextLinks.Options options,
            @NonNull CancellationSignal cancellationSignal,
            @NonNull Callback<TextLinks> callback) {
        final TextClassificationSessionId sessionId = options.getSessionId();
        final TextLinks.Request request = options.getRequest() != null
                ? options.getRequest()
                : new TextLinks.Request.Builder(text)
                        .setDefaultLocales(options.getDefaultLocales())
                        .setEntityConfig(options.getEntityConfig())
                        .build();
        onGenerateLinks(sessionId, request, cancellationSignal, callback);
    }

    /**
    /**
     * Writes the selection event.
     * Writes the selection event.
     * This is called when a selection event occurs. e.g. user changed selection; or smart selection
     * This is called when a selection event occurs. e.g. user changed selection; or smart selection
+0 −63
Original line number Original line Diff line number Diff line
@@ -776,67 +776,4 @@ public final class TextClassification implements Parcelable {
        }
        }
        return null;
        return null;
    }
    }

    // TODO: Remove once apps can build against the latest sdk.
    /**
     * Optional input parameters for generating TextClassification.
     * @hide
     */
    public static final class Options {

        @Nullable private final TextClassificationSessionId mSessionId;
        @Nullable private final Request mRequest;
        @Nullable private LocaleList mDefaultLocales;
        @Nullable private ZonedDateTime mReferenceTime;

        public Options() {
            this(null, null);
        }

        private Options(
                @Nullable TextClassificationSessionId sessionId, @Nullable Request request) {
            mSessionId = sessionId;
            mRequest = request;
        }

        /** Helper to create Options from a Request. */
        public static Options from(TextClassificationSessionId sessionId, Request request) {
            final Options options = new Options(sessionId, request);
            options.setDefaultLocales(request.getDefaultLocales());
            options.setReferenceTime(request.getReferenceTime());
            return options;
        }

        /** @param defaultLocales ordered list of locale preferences. */
        public Options setDefaultLocales(@Nullable LocaleList defaultLocales) {
            mDefaultLocales = defaultLocales;
            return this;
        }

        /** @param referenceTime refrence time used for interpreting relatives dates */
        public Options setReferenceTime(@Nullable ZonedDateTime referenceTime) {
            mReferenceTime = referenceTime;
            return this;
        }

        @Nullable
        public LocaleList getDefaultLocales() {
            return mDefaultLocales;
        }

        @Nullable
        public ZonedDateTime getReferenceTime() {
            return mReferenceTime;
        }

        @Nullable
        public Request getRequest() {
            return mRequest;
        }

        @Nullable
        public TextClassificationSessionId getSessionId() {
            return mSessionId;
        }
    }
}
}
+0 −124
Original line number Original line Diff line number Diff line
@@ -20,7 +20,6 @@ import android.annotation.FloatRange;
import android.annotation.IntDef;
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.Nullable;
import android.annotation.UnsupportedAppUsage;
import android.content.Context;
import android.content.Context;
import android.os.LocaleList;
import android.os.LocaleList;
import android.os.Parcel;
import android.os.Parcel;
@@ -29,8 +28,6 @@ import android.text.Spannable;
import android.text.method.MovementMethod;
import android.text.method.MovementMethod;
import android.text.style.ClickableSpan;
import android.text.style.ClickableSpan;
import android.text.style.URLSpan;
import android.text.style.URLSpan;
import android.text.util.Linkify;
import android.text.util.Linkify.LinkifyMask;
import android.view.View;
import android.view.View;
import android.view.textclassifier.TextClassifier.EntityType;
import android.view.textclassifier.TextClassifier.EntityType;
import android.widget.TextView;
import android.widget.TextView;
@@ -634,125 +631,4 @@ public final class TextLinks implements Parcelable {
            return new TextLinks(mFullText, mLinks);
            return new TextLinks(mFullText, mLinks);
        }
        }
    }
    }

    // TODO: Remove once apps can build against the latest sdk.
    /**
     * Optional input parameters for generating TextLinks.
     * @hide
     */
    public static final class Options {

        @Nullable private final TextClassificationSessionId mSessionId;
        @Nullable private final Request mRequest;
        @Nullable private LocaleList mDefaultLocales;
        @Nullable private TextClassifier.EntityConfig mEntityConfig;
        private boolean mLegacyFallback;

        private @ApplyStrategy int mApplyStrategy;
        private Function<TextLink, TextLinkSpan> mSpanFactory;

        private String mCallingPackageName;

        @UnsupportedAppUsage
        public Options() {
            this(null, null);
        }

        private Options(
                @Nullable TextClassificationSessionId sessionId, @Nullable Request request) {
            mSessionId = sessionId;
            mRequest = request;
        }

        /** Helper to create Options from a Request. */
        public static Options from(TextClassificationSessionId sessionId, Request request) {
            final Options options = new Options(sessionId, request);
            options.setDefaultLocales(request.getDefaultLocales());
            options.setEntityConfig(request.getEntityConfig());
            return options;
        }

        /** Returns a new options object based on the specified link mask. */
        public static Options fromLinkMask(@LinkifyMask int mask) {
            final List<String> entitiesToFind = new ArrayList<>();

            if ((mask & Linkify.WEB_URLS) != 0) {
                entitiesToFind.add(TextClassifier.TYPE_URL);
            }
            if ((mask & Linkify.EMAIL_ADDRESSES) != 0) {
                entitiesToFind.add(TextClassifier.TYPE_EMAIL);
            }
            if ((mask & Linkify.PHONE_NUMBERS) != 0) {
                entitiesToFind.add(TextClassifier.TYPE_PHONE);
            }
            if ((mask & Linkify.MAP_ADDRESSES) != 0) {
                entitiesToFind.add(TextClassifier.TYPE_ADDRESS);
            }

            return new Options().setEntityConfig(
                    TextClassifier.EntityConfig.createWithEntityList(entitiesToFind));
        }

        /** @param defaultLocales ordered list of locale preferences. */
        public Options setDefaultLocales(@Nullable LocaleList defaultLocales) {
            mDefaultLocales = defaultLocales;
            return this;
        }

        /** @param entityConfig definition of which entity types to look for. */
        public Options setEntityConfig(@Nullable TextClassifier.EntityConfig entityConfig) {
            mEntityConfig = entityConfig;
            return this;
        }

        /** @param applyStrategy strategy to use when resolving conflicts. */
        public Options setApplyStrategy(@ApplyStrategy int applyStrategy) {
            checkValidApplyStrategy(applyStrategy);
            mApplyStrategy = applyStrategy;
            return this;
        }

        /** @param spanFactory factory for converting TextLink to TextLinkSpan. */
        public Options setSpanFactory(@Nullable Function<TextLink, TextLinkSpan> spanFactory) {
            mSpanFactory = spanFactory;
            return this;
        }

        @Nullable
        public LocaleList getDefaultLocales() {
            return mDefaultLocales;
        }

        @Nullable
        public TextClassifier.EntityConfig getEntityConfig() {
            return mEntityConfig;
        }

        @ApplyStrategy
        public int getApplyStrategy() {
            return mApplyStrategy;
        }

        @Nullable
        public Function<TextLink, TextLinkSpan> getSpanFactory() {
            return mSpanFactory;
        }

        @Nullable
        public Request getRequest() {
            return mRequest;
        }

        @Nullable
        public TextClassificationSessionId getSessionId() {
            return mSessionId;
        }

        private static void checkValidApplyStrategy(int applyStrategy) {
            if (applyStrategy != APPLY_STRATEGY_IGNORE && applyStrategy != APPLY_STRATEGY_REPLACE) {
                throw new IllegalArgumentException(
                        "Invalid apply strategy. See TextLinks.ApplyStrategy for options.");
            }
        }
    }
}
}
+0 −52
Original line number Original line Diff line number Diff line
@@ -375,56 +375,4 @@ public final class TextSelection implements Parcelable {
        mEntityConfidence = EntityConfidence.CREATOR.createFromParcel(in);
        mEntityConfidence = EntityConfidence.CREATOR.createFromParcel(in);
        mId = in.readString();
        mId = in.readString();
    }
    }


    // TODO: Remove once apps can build against the latest sdk.
    /**
     * Optional input parameters for generating TextSelection.
     * @hide
     */
    public static final class Options {

        @Nullable private final TextClassificationSessionId mSessionId;
        @Nullable private final Request mRequest;
        @Nullable private LocaleList mDefaultLocales;
        private boolean mDarkLaunchAllowed;

        public Options() {
            this(null, null);
        }

        private Options(
                @Nullable TextClassificationSessionId sessionId, @Nullable Request request) {
            mSessionId = sessionId;
            mRequest = request;
        }

        /** Helper to create Options from a Request. */
        public static Options from(TextClassificationSessionId sessionId, Request request) {
            final Options options = new Options(sessionId, request);
            options.setDefaultLocales(request.getDefaultLocales());
            return options;
        }

        /** @param defaultLocales ordered list of locale preferences. */
        public Options setDefaultLocales(@Nullable LocaleList defaultLocales) {
            mDefaultLocales = defaultLocales;
            return this;
        }

        @Nullable
        public LocaleList getDefaultLocales() {
            return mDefaultLocales;
        }

        @Nullable
        public Request getRequest() {
            return mRequest;
        }

        @Nullable
        public TextClassificationSessionId getSessionId() {
            return mSessionId;
        }
    }
}
}