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

Commit 6732ea2a authored by Amith Yamasani's avatar Amith Yamasani Committed by Android (Google) Code Review
Browse files

Merge "AssistStructure improvements"

parents 76c27d8b 858f98d1
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -6552,9 +6552,12 @@ package android.app.assist {
  public class AssistStructure implements android.os.Parcelable {
    ctor public AssistStructure();
    method public int describeContents();
    method public long getAcquisitionEndTime();
    method public long getAcquisitionStartTime();
    method public android.content.ComponentName getActivityComponent();
    method public android.app.assist.AssistStructure.WindowNode getWindowNodeAt(int);
    method public int getWindowNodeCount();
    method public boolean isHomeActivity();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.app.assist.AssistStructure> CREATOR;
  }
@@ -6607,6 +6610,7 @@ package android.app.assist {
    method public boolean isFocusable();
    method public boolean isFocused();
    method public boolean isLongClickable();
    method public boolean isOpaque();
    method public boolean isSelected();
    field public static final int TEXT_COLOR_UNDEFINED = 1; // 0x1
    field public static final int TEXT_STYLE_BOLD = 1; // 0x1
@@ -46227,6 +46231,7 @@ package android.view {
    method public abstract void setId(int, java.lang.String, java.lang.String, java.lang.String);
    method public abstract void setInputType(int);
    method public abstract void setLongClickable(boolean);
    method public abstract void setOpaque(boolean);
    method public abstract void setSanitized(boolean);
    method public abstract void setSelected(boolean);
    method public abstract void setText(java.lang.CharSequence);
+5 −0
Original line number Diff line number Diff line
@@ -6801,9 +6801,12 @@ package android.app.assist {
  public class AssistStructure implements android.os.Parcelable {
    ctor public AssistStructure();
    method public int describeContents();
    method public long getAcquisitionEndTime();
    method public long getAcquisitionStartTime();
    method public android.content.ComponentName getActivityComponent();
    method public android.app.assist.AssistStructure.WindowNode getWindowNodeAt(int);
    method public int getWindowNodeCount();
    method public boolean isHomeActivity();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.app.assist.AssistStructure> CREATOR;
  }
@@ -6856,6 +6859,7 @@ package android.app.assist {
    method public boolean isFocusable();
    method public boolean isFocused();
    method public boolean isLongClickable();
    method public boolean isOpaque();
    method public boolean isSelected();
    field public static final int TEXT_COLOR_UNDEFINED = 1; // 0x1
    field public static final int TEXT_STYLE_BOLD = 1; // 0x1
@@ -49686,6 +49690,7 @@ package android.view {
    method public abstract void setId(int, java.lang.String, java.lang.String, java.lang.String);
    method public abstract void setInputType(int);
    method public abstract void setLongClickable(boolean);
    method public abstract void setOpaque(boolean);
    method public abstract void setSanitized(boolean);
    method public abstract void setSelected(boolean);
    method public abstract void setText(java.lang.CharSequence);
+5 −0
Original line number Diff line number Diff line
@@ -6579,9 +6579,12 @@ package android.app.assist {
  public class AssistStructure implements android.os.Parcelable {
    ctor public AssistStructure();
    method public int describeContents();
    method public long getAcquisitionEndTime();
    method public long getAcquisitionStartTime();
    method public android.content.ComponentName getActivityComponent();
    method public android.app.assist.AssistStructure.WindowNode getWindowNodeAt(int);
    method public int getWindowNodeCount();
    method public boolean isHomeActivity();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.app.assist.AssistStructure> CREATOR;
  }
@@ -6634,6 +6637,7 @@ package android.app.assist {
    method public boolean isFocusable();
    method public boolean isFocused();
    method public boolean isLongClickable();
    method public boolean isOpaque();
    method public boolean isSelected();
    field public static final int TEXT_COLOR_UNDEFINED = 1; // 0x1
    field public static final int TEXT_STYLE_BOLD = 1; // 0x1
@@ -46594,6 +46598,7 @@ package android.view {
    method public abstract void setId(int, java.lang.String, java.lang.String, java.lang.String);
    method public abstract void setInputType(int);
    method public abstract void setLongClickable(boolean);
    method public abstract void setOpaque(boolean);
    method public abstract void setSanitized(boolean);
    method public abstract void setSelected(boolean);
    method public abstract void setText(java.lang.CharSequence);
+5 −0
Original line number Diff line number Diff line
@@ -2935,6 +2935,7 @@ public final class ActivityThread {
        Bundle data = new Bundle();
        AssistStructure structure = null;
        AssistContent content = forAutofill ? null : new AssistContent();
        final long startTime = SystemClock.uptimeMillis();
        ActivityClientRecord r = mActivities.get(cmd.activityToken);
        Uri referrer = null;
        if (r != null) {
@@ -2974,6 +2975,10 @@ public final class ActivityThread {
        }

        // TODO(b/33197203): decide if lastSessionId logic applies to autofill sessions

        structure.setAcquisitionStartTime(startTime);
        structure.setAcquisitionEndTime(SystemClock.uptimeMillis());

        mLastAssistStructures.add(new WeakReference<>(structure));
        IActivityManager mgr = ActivityManager.getService();
        try {
+72 −0
Original line number Diff line number Diff line
@@ -47,6 +47,7 @@ public class AssistStructure implements Parcelable {
    boolean mHaveData;

    ComponentName mActivityComponent;
    private boolean mIsHomeActivity;

    final ArrayList<WindowNode> mWindowNodes = new ArrayList<>();

@@ -58,10 +59,54 @@ public class AssistStructure implements Parcelable {
    Rect mTmpRect = new Rect();

    boolean mSanitizeOnWrite = false;
    private long mAcquisitionStartTime;
    private long mAcquisitionEndTime;

    static final int TRANSACTION_XFER = Binder.FIRST_CALL_TRANSACTION+1;
    static final String DESCRIPTOR = "android.app.AssistStructure";

    /** @hide */
    public void setAcquisitionStartTime(long acquisitionStartTime) {
        mAcquisitionStartTime = acquisitionStartTime;
    }

    /** @hide */
    public void setAcquisitionEndTime(long acquisitionEndTime) {
        mAcquisitionEndTime = acquisitionEndTime;
    }

    /**
     * @hide
     * Set the home activity flag.
     */
    public void setHomeActivity(boolean isHomeActivity) {
        mIsHomeActivity = isHomeActivity;
    }

    /**
     * Returns the time when the activity started generating assist data to build the
     * AssistStructure. The time is as specified by {@link SystemClock#uptimeMillis()}.
     *
     * @see #getAcquisitionEndTime()
     * @return Returns the acquisition start time of the assist data, in milliseconds.
     */
    public long getAcquisitionStartTime() {
        ensureData();
        return mAcquisitionStartTime;
    }

    /**
     * Returns the time when the activity finished generating assist data to build the
     * AssistStructure. The time is as specified by {@link SystemClock#uptimeMillis()}.
     *
     * @see #getAcquisitionStartTime()
     * @return Returns the acquisition end time of the assist data, in milliseconds.
     */
    public long getAcquisitionEndTime() {
        ensureData();
        return mAcquisitionEndTime;
    }

    final static class SendChannel extends Binder {
        volatile AssistStructure mAssistStructure;

@@ -125,6 +170,8 @@ public class AssistStructure implements Parcelable {
            mSanitizeOnWrite = as.mSanitizeOnWrite;
            mWriteStructure = as.waitForReady();
            ComponentName.writeToParcel(as.mActivityComponent, out);
            out.writeLong(as.mAcquisitionStartTime);
            out.writeLong(as.mAcquisitionEndTime);
            mNumWindows = as.mWindowNodes.size();
            if (mWriteStructure && mNumWindows > 0) {
                out.writeInt(mNumWindows);
@@ -277,6 +324,8 @@ public class AssistStructure implements Parcelable {
        void go() {
            fetchData();
            mActivityComponent = ComponentName.readFromParcel(mCurParcel);
            mAcquisitionStartTime = mCurParcel.readLong();
            mAcquisitionEndTime = mCurParcel.readLong();
            final int N = mCurParcel.readInt();
            if (N > 0) {
                if (DEBUG_PARCEL) Log.d(TAG, "Creating PooledStringReader @ "
@@ -569,6 +618,7 @@ public class AssistStructure implements Parcelable {
        static final int FLAGS_ACCESSIBILITY_FOCUSED = 0x00001000;
        static final int FLAGS_ACTIVATED = 0x00002000;
        static final int FLAGS_CONTEXT_CLICKABLE = 0x00004000;
        static final int FLAGS_OPAQUE = 0x00008000;

        // TODO(b/33197203): autofill data is made of many fields and ideally we should verify
        // one-by-one to optimize what's sent over, but there isn't enough flag bits for that, we'd
@@ -1119,6 +1169,11 @@ public class AssistStructure implements Parcelable {
            return (mFlags&ViewNode.FLAGS_ACTIVATED) != 0;
        }

        /**
         * Returns true if this node is opaque.
         */
        public boolean isOpaque() { return (mFlags&ViewNode.FLAGS_OPAQUE) != 0; }

        /**
         * Returns true if this node is something the user can perform a long click/press on.
         */
@@ -1411,6 +1466,12 @@ public class AssistStructure implements Parcelable {
                    | (state ? ViewNode.FLAGS_ACTIVATED : 0);
        }

        @Override
        public void setOpaque(boolean opaque) {
            mNode.mFlags = (mNode.mFlags & ~ViewNode.FLAGS_OPAQUE)
                    | (opaque ? ViewNode.FLAGS_OPAQUE : 0);
        }

        @Override
        public void setClassName(String className) {
            mNode.mClassName = className;
@@ -1651,6 +1712,7 @@ public class AssistStructure implements Parcelable {

    /** @hide */
    public AssistStructure(Parcel in) {
        mIsHomeActivity = in.readInt() == 1;
        mReceiveChannel = in.readStrongBinder();
    }

@@ -1774,6 +1836,15 @@ public class AssistStructure implements Parcelable {
        return mActivityComponent;
    }

    /**
     * Returns whether the activity associated with this AssistStructure was the home activity
     * at the time the assist data was acquired.
     * @return Whether the activity was the home activity.
     */
    public boolean isHomeActivity() {
        return mIsHomeActivity;
    }

    /**
     * Return the number of window contents that have been collected in this assist data.
     */
@@ -1836,6 +1907,7 @@ public class AssistStructure implements Parcelable {

    @Override
    public void writeToParcel(Parcel out, int flags) {
        out.writeInt(mIsHomeActivity ? 1 : 0);
        if (mHaveData) {
            // This object holds its data.  We want to write a send channel that the
            // other side can use to retrieve that data.
Loading