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

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

Merge "Changes on Assist structure to handle virtual child for autofill:"

parents fd9f87cc f8a8174c
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -46324,7 +46324,6 @@ package android.view {
    method public abstract int addChildCount(int);
    method public abstract void asyncCommit();
    method public abstract android.view.ViewStructure asyncNewChild(int);
    method public abstract android.view.ViewStructure asyncNewChild(int, int, int);
    method public abstract int getChildCount();
    method public abstract android.os.Bundle getExtras();
    method public abstract java.lang.CharSequence getHint();
@@ -46333,11 +46332,11 @@ package android.view {
    method public abstract int getTextSelectionStart();
    method public abstract boolean hasExtras();
    method public abstract android.view.ViewStructure newChild(int);
    method public abstract android.view.ViewStructure newChild(int, int, int);
    method public abstract void setAccessibilityFocused(boolean);
    method public abstract void setActivated(boolean);
    method public abstract void setAlpha(float);
    method public abstract void setAutofillHint(java.lang.String[]);
    method public abstract void setAutofillId(android.view.ViewStructure, int);
    method public abstract void setAutofillOptions(java.lang.String[]);
    method public abstract void setAutofillType(int);
    method public abstract void setAutofillValue(android.view.autofill.AutofillValue);
+1 −2
Original line number Diff line number Diff line
@@ -49787,7 +49787,6 @@ package android.view {
    method public abstract int addChildCount(int);
    method public abstract void asyncCommit();
    method public abstract android.view.ViewStructure asyncNewChild(int);
    method public abstract android.view.ViewStructure asyncNewChild(int, int, int);
    method public abstract int getChildCount();
    method public abstract android.os.Bundle getExtras();
    method public abstract java.lang.CharSequence getHint();
@@ -49796,11 +49795,11 @@ package android.view {
    method public abstract int getTextSelectionStart();
    method public abstract boolean hasExtras();
    method public abstract android.view.ViewStructure newChild(int);
    method public abstract android.view.ViewStructure newChild(int, int, int);
    method public abstract void setAccessibilityFocused(boolean);
    method public abstract void setActivated(boolean);
    method public abstract void setAlpha(float);
    method public abstract void setAutofillHint(java.lang.String[]);
    method public abstract void setAutofillId(android.view.ViewStructure, int);
    method public abstract void setAutofillOptions(java.lang.String[]);
    method public abstract void setAutofillType(int);
    method public abstract void setAutofillValue(android.view.autofill.AutofillValue);
+1 −2
Original line number Diff line number Diff line
@@ -46693,7 +46693,6 @@ package android.view {
    method public abstract int addChildCount(int);
    method public abstract void asyncCommit();
    method public abstract android.view.ViewStructure asyncNewChild(int);
    method public abstract android.view.ViewStructure asyncNewChild(int, int, int);
    method public abstract int getChildCount();
    method public abstract android.os.Bundle getExtras();
    method public abstract java.lang.CharSequence getHint();
@@ -46702,11 +46701,11 @@ package android.view {
    method public abstract int getTextSelectionStart();
    method public abstract boolean hasExtras();
    method public abstract android.view.ViewStructure newChild(int);
    method public abstract android.view.ViewStructure newChild(int, int, int);
    method public abstract void setAccessibilityFocused(boolean);
    method public abstract void setActivated(boolean);
    method public abstract void setAlpha(float);
    method public abstract void setAutofillHint(java.lang.String[]);
    method public abstract void setAutofillId(android.view.ViewStructure, int);
    method public abstract void setAutofillOptions(java.lang.String[]);
    method public abstract void setAutofillType(int);
    method public abstract void setAutofillValue(android.view.autofill.AutofillValue);
+8 −28
Original line number Diff line number Diff line
package android.app.assist;

import android.annotation.NonNull;
import android.annotation.Nullable;
import android.app.Activity;
import android.content.ComponentName;
@@ -1601,23 +1602,22 @@ public class AssistStructure implements Parcelable {
            return mNode.mChildren != null ? mNode.mChildren.length : 0;
        }

        private void setAutofillId(ViewNode child, boolean forAutoFill, int virtualId) {
            if (forAutoFill) {
                child.mAutofillId = new AutofillId(mNode.mAutofillId, virtualId);
            }
        @Override
        public void setAutofillId(@NonNull ViewStructure parent, int virtualId) {
            mNode.mAutofillId = new AutofillId(parent.getAutofillId(), virtualId);
        }

        private ViewStructure newChild(int index, boolean forAutoFill, int virtualId, int flags) {
        @Override
        public ViewStructure newChild(int index) {
            ViewNode node = new ViewNode();
            setAutofillId(node, forAutoFill, virtualId);
            mNode.mChildren[index] = node;
            return new ViewNodeBuilder(mAssist, node, false);
        }

        private ViewStructure asyncNewChild(int index, boolean forAutoFill, int virtualId) {
        @Override
        public ViewStructure asyncNewChild(int index) {
            synchronized (mAssist) {
                ViewNode node = new ViewNode();
                setAutofillId(node, forAutoFill, virtualId);
                mNode.mChildren[index] = node;
                ViewNodeBuilder builder = new ViewNodeBuilder(mAssist, node, true);
                mAssist.mPendingAsyncChildren.add(builder);
@@ -1625,26 +1625,6 @@ public class AssistStructure implements Parcelable {
            }
        }

        @Override
        public ViewStructure newChild(int index) {
            return newChild(index, false, 0, 0);
        }

        @Override
        public ViewStructure newChild(int index, int virtualId, int flags) {
            return newChild(index, true, virtualId, flags);
        }

        @Override
        public ViewStructure asyncNewChild(int index) {
            return asyncNewChild(index, false, 0);
        }

        @Override
        public ViewStructure asyncNewChild(int index, int virtualId, int flags) {
            return asyncNewChild(index, true, virtualId);
        }

        @Override
        public void asyncCommit() {
            synchronized (mAssist) {
+14 −7
Original line number Diff line number Diff line
@@ -7275,11 +7275,16 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
     * fills in all data that can be inferred from the view itself.
     * @param flags optional flags (currently {@code 0}).
     */
    @CallSuper
    public void onProvideAutofillStructure(ViewStructure structure, int flags) {
        onProvideStructureForAssistOrAutofill(structure, true);
    }
    private void setAutofillId(ViewStructure structure) {
        // The autofill id needs to be unique, but its value doesn't matter,
        // so it's better to reuse the accessibility id to save space.
        structure.setAutofillId(getAccessibilityViewId());
    }
    private void onProvideStructureForAssistOrAutofill(ViewStructure structure,
            boolean forAutofill) {
        final int id = mID;
@@ -7299,13 +7304,11 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
        }
        if (forAutofill) {
            setAutofillId(structure);
            final @AutofillType int autofillType = getAutofillType();
            // Don't need to fill autofill info if view does not support it.
            // For example, only TextViews that are editable support autofill
            if (autofillType != AUTOFILL_TYPE_NONE) {
                // The autofill id needs to be unique, but its value doesn't matter, so it's better
                // to reuse the accessibility id to save space.
                structure.setAutofillId(getAccessibilityViewId());
                structure.setAutofillType(autofillType);
                structure.setAutofillHint(getAutofillHint());
                structure.setAutofillValue(getAutofillValue());
@@ -7404,6 +7407,9 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
    private void onProvideVirtualStructureForAssistOrAutofill(ViewStructure structure,
            boolean forAutofill) {
        if (forAutofill) {
            setAutofillId(structure);
        }
        // NOTE: currently flags are only used for AutoFill; if they're used for Assist as well,
        // this method should take a boolean with the type of request.
        AccessibilityNodeProvider provider = getAccessibilityNodeProvider();
@@ -7671,6 +7677,9 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
                AccessibilityNodeInfo cinfo = provider.createAccessibilityNodeInfo(
                        AccessibilityNodeInfo.getVirtualDescendantId(info.getChildId(i)));
                ViewStructure child = structure.newChild(i);
                // TODO(b/33197203): add CTS test to autofill virtual children based on
                // Accessibility API.
                child.setAutofillId(structure, i);
                populateVirtualStructure(child, provider, cinfo, forAutofill);
                cinfo.recycle();
            }
@@ -7707,9 +7716,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
        boolean blocked = forAutofill ? isAutofillBlocked() : isAssistBlocked();
        if (!blocked) {
            if (forAutofill) {
                // The autofill id needs to be unique, but its value doesn't matter,
                // so it's better to reuse the accessibility id to save space.
                structure.setAutofillId(getAccessibilityViewId());
                setAutofillId(structure);
                // NOTE: flags are not currently supported, hence 0
                onProvideAutofillStructure(structure, 0);
                onProvideAutofillVirtualStructure(structure, 0);
Loading