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

Commit d0d9ceb3 authored by Abodunrinwa Toki's avatar Abodunrinwa Toki
Browse files

Introduce TextAssistant for Smart Text Share feature.

Bug: 30982298
Test: CTS tests to be added in a follow up CL.
Future CLs will add implementation detail.

Change-Id: Iad550447a4b3552340c0ada75fda60f97f0913aa
parent 6b18e8f5
Loading
Loading
Loading
Loading
+21 −0
Original line number Diff line number Diff line
@@ -3496,6 +3496,7 @@ package android.app {
    method public int getRequestedOrientation();
    method public final android.view.SearchEvent getSearchEvent();
    method public int getTaskId();
    method public android.text.TextAssistant getTextAssistant();
    method public final java.lang.CharSequence getTitle();
    method public final int getTitleColor();
    method public android.app.VoiceInteractor getVoiceInteractor();
@@ -3645,6 +3646,7 @@ package android.app {
    method public final void setResult(int, android.content.Intent);
    method public final deprecated void setSecondaryProgress(int);
    method public void setTaskDescription(android.app.ActivityManager.TaskDescription);
    method public void setTextAssistant(android.text.TextAssistant);
    method public void setTitle(java.lang.CharSequence);
    method public void setTitle(int);
    method public deprecated void setTitleColor(int);
@@ -38979,6 +38981,16 @@ package android.text {
    method public android.text.StaticLayout.Builder setTextDirection(android.text.TextDirectionHeuristic);
  }
  public abstract interface TextAssistant {
    method public abstract void addLinks(android.text.Spannable, int);
    method public abstract android.text.TextSelection suggestSelection(java.lang.CharSequence, int, int);
  }
  public class TextClassification {
    ctor public TextClassification();
    method public java.util.Map<java.lang.String, java.lang.Float> getTypeConfidence();
  }
  public abstract interface TextDirectionHeuristic {
    method public abstract boolean isRtl(char[], int, int);
    method public abstract boolean isRtl(java.lang.CharSequence, int, int);
@@ -39006,6 +39018,13 @@ package android.text {
    field public int linkColor;
  }
  public class TextSelection {
    ctor public TextSelection();
    method public int getSelectionEndIndex();
    method public int getSelectionStartIndex();
    method public android.text.TextClassification getTextClassification();
  }
  public class TextUtils {
    method public static deprecated java.lang.CharSequence commaEllipsize(java.lang.CharSequence, android.text.TextPaint, float, java.lang.String, java.lang.String);
    method public static java.lang.CharSequence concat(java.lang.CharSequence...);
@@ -48476,6 +48495,7 @@ package android.widget {
    method public float getShadowRadius();
    method public final boolean getShowSoftInputOnFocus();
    method public java.lang.CharSequence getText();
    method public android.text.TextAssistant getTextAssistant();
    method public final android.content.res.ColorStateList getTextColors();
    method public java.util.Locale getTextLocale();
    method public android.os.LocaleList getTextLocales();
@@ -48586,6 +48606,7 @@ package android.widget {
    method public final void setText(int, android.widget.TextView.BufferType);
    method public void setTextAppearance(int);
    method public deprecated void setTextAppearance(android.content.Context, int);
    method public void setTextAssistant(android.text.TextAssistant);
    method public void setTextColor(int);
    method public void setTextColor(android.content.res.ColorStateList);
    method public void setTextIsSelectable(boolean);
+21 −0
Original line number Diff line number Diff line
@@ -3613,6 +3613,7 @@ package android.app {
    method public int getRequestedOrientation();
    method public final android.view.SearchEvent getSearchEvent();
    method public int getTaskId();
    method public android.text.TextAssistant getTextAssistant();
    method public final java.lang.CharSequence getTitle();
    method public final int getTitleColor();
    method public android.app.VoiceInteractor getVoiceInteractor();
@@ -3764,6 +3765,7 @@ package android.app {
    method public final void setResult(int, android.content.Intent);
    method public final deprecated void setSecondaryProgress(int);
    method public void setTaskDescription(android.app.ActivityManager.TaskDescription);
    method public void setTextAssistant(android.text.TextAssistant);
    method public void setTitle(java.lang.CharSequence);
    method public void setTitle(int);
    method public deprecated void setTitleColor(int);
@@ -42147,6 +42149,16 @@ package android.text {
    method public android.text.StaticLayout.Builder setTextDirection(android.text.TextDirectionHeuristic);
  }
  public abstract interface TextAssistant {
    method public abstract void addLinks(android.text.Spannable, int);
    method public abstract android.text.TextSelection suggestSelection(java.lang.CharSequence, int, int);
  }
  public class TextClassification {
    ctor public TextClassification();
    method public java.util.Map<java.lang.String, java.lang.Float> getTypeConfidence();
  }
  public abstract interface TextDirectionHeuristic {
    method public abstract boolean isRtl(char[], int, int);
    method public abstract boolean isRtl(java.lang.CharSequence, int, int);
@@ -42174,6 +42186,13 @@ package android.text {
    field public int linkColor;
  }
  public class TextSelection {
    ctor public TextSelection();
    method public int getSelectionEndIndex();
    method public int getSelectionStartIndex();
    method public android.text.TextClassification getTextClassification();
  }
  public class TextUtils {
    method public static deprecated java.lang.CharSequence commaEllipsize(java.lang.CharSequence, android.text.TextPaint, float, java.lang.String, java.lang.String);
    method public static java.lang.CharSequence concat(java.lang.CharSequence...);
@@ -52003,6 +52022,7 @@ package android.widget {
    method public float getShadowRadius();
    method public final boolean getShowSoftInputOnFocus();
    method public java.lang.CharSequence getText();
    method public android.text.TextAssistant getTextAssistant();
    method public final android.content.res.ColorStateList getTextColors();
    method public java.util.Locale getTextLocale();
    method public android.os.LocaleList getTextLocales();
@@ -52113,6 +52133,7 @@ package android.widget {
    method public final void setText(int, android.widget.TextView.BufferType);
    method public void setTextAppearance(int);
    method public deprecated void setTextAppearance(android.content.Context, int);
    method public void setTextAssistant(android.text.TextAssistant);
    method public void setTextColor(int);
    method public void setTextColor(android.content.res.ColorStateList);
    method public void setTextIsSelectable(boolean);
+21 −0
Original line number Diff line number Diff line
@@ -3498,6 +3498,7 @@ package android.app {
    method public int getRequestedOrientation();
    method public final android.view.SearchEvent getSearchEvent();
    method public int getTaskId();
    method public android.text.TextAssistant getTextAssistant();
    method public final java.lang.CharSequence getTitle();
    method public final int getTitleColor();
    method public android.app.VoiceInteractor getVoiceInteractor();
@@ -3647,6 +3648,7 @@ package android.app {
    method public final void setResult(int, android.content.Intent);
    method public final deprecated void setSecondaryProgress(int);
    method public void setTaskDescription(android.app.ActivityManager.TaskDescription);
    method public void setTextAssistant(android.text.TextAssistant);
    method public void setTitle(java.lang.CharSequence);
    method public void setTitle(int);
    method public deprecated void setTitleColor(int);
@@ -39071,6 +39073,16 @@ package android.text {
    method public android.text.StaticLayout.Builder setTextDirection(android.text.TextDirectionHeuristic);
  }
  public abstract interface TextAssistant {
    method public abstract void addLinks(android.text.Spannable, int);
    method public abstract android.text.TextSelection suggestSelection(java.lang.CharSequence, int, int);
  }
  public class TextClassification {
    ctor public TextClassification();
    method public java.util.Map<java.lang.String, java.lang.Float> getTypeConfidence();
  }
  public abstract interface TextDirectionHeuristic {
    method public abstract boolean isRtl(char[], int, int);
    method public abstract boolean isRtl(java.lang.CharSequence, int, int);
@@ -39098,6 +39110,13 @@ package android.text {
    field public int linkColor;
  }
  public class TextSelection {
    ctor public TextSelection();
    method public int getSelectionEndIndex();
    method public int getSelectionStartIndex();
    method public android.text.TextClassification getTextClassification();
  }
  public class TextUtils {
    method public static deprecated java.lang.CharSequence commaEllipsize(java.lang.CharSequence, android.text.TextPaint, float, java.lang.String, java.lang.String);
    method public static java.lang.CharSequence concat(java.lang.CharSequence...);
@@ -48729,6 +48748,7 @@ package android.widget {
    method public float getShadowRadius();
    method public final boolean getShowSoftInputOnFocus();
    method public java.lang.CharSequence getText();
    method public android.text.TextAssistant getTextAssistant();
    method public final android.content.res.ColorStateList getTextColors();
    method public java.util.Locale getTextLocale();
    method public android.os.LocaleList getTextLocales();
@@ -48839,6 +48859,7 @@ package android.widget {
    method public final void setText(int, android.widget.TextView.BufferType);
    method public void setTextAppearance(int);
    method public deprecated void setTextAppearance(android.content.Context, int);
    method public void setTextAssistant(android.text.TextAssistant);
    method public void setTextColor(int);
    method public void setTextColor(android.content.res.ColorStateList);
    method public void setTextIsSelectable(boolean);
+21 −0
Original line number Diff line number Diff line
@@ -74,6 +74,7 @@ import android.service.autofill.AutoFillService;
import android.service.autofill.IAutoFillCallback;
import android.text.Selection;
import android.text.SpannableStringBuilder;
import android.text.TextAssistant;
import android.text.TextUtils;
import android.text.method.TextKeyListener;
import android.transition.Scene;
@@ -783,6 +784,8 @@ public class Activity extends ContextThemeWrapper

    private VoiceInteractor mVoiceInteractor;

    private TextAssistant mTextAssistant;

    private CharSequence mTitle;
    private int mTitleColor = 0;

@@ -1384,6 +1387,24 @@ public class Activity extends ContextThemeWrapper
        }
    }

    /**
     * Sets the default {@link TextAssistant} for {@link android.widget.TextView}s in this Activity.
     */
    public void setTextAssistant(TextAssistant textAssistant) {
        mTextAssistant = textAssistant;
    }

    /**
     * Returns the default {@link TextAssistant} for {@link android.widget.TextView}s
     * in this Activity.
     */
    public TextAssistant getTextAssistant() {
        if (mTextAssistant != null) {
            return mTextAssistant;
        }
        return TextAssistant.NO_OP;
    }

    /**
     * This is called for activities that set launchMode to "singleTop" in
     * their package, or if a client used the {@link Intent#FLAG_ACTIVITY_SINGLE_TOP}
+56 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2016 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.text;

/**
 * Interface for providing text assistant features.
 */
public interface TextAssistant {

    /**
     * NO_OP TextAssistant. This will act as the default TextAssistant until we implement a
     * TextClassificationManager.
     * @hide
     */
    TextAssistant NO_OP = new TextAssistant() {

        private final TextSelection mTextSelection = new TextSelection();

        @Override
        public TextSelection suggestSelection(
                CharSequence text, int selectionStartIndex, int selectionEndIndex) {
            mTextSelection.mStartIndex = selectionStartIndex;
            mTextSelection.mEndIndex = selectionEndIndex;
            return mTextSelection;
        }

        @Override
        public void addLinks(Spannable text, int linkMask) {}
    };

    /**
     * Returns suggested text selection indices, recognized types and their associated confidence
     * scores. The selections are ordered from highest to lowest scoring.
     */
    TextSelection suggestSelection(
            CharSequence text, int selectionStartIndex, int selectionEndIndex);

    /**
     * Adds assistance clickable spans to the provided text.
     */
    void addLinks(Spannable text, int linkMask);
}
Loading