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

Commit 083d8aac authored by Philip P. Moltmann's avatar Philip P. Moltmann
Browse files

Don't get struct of children of !laidout viewGroup

Some view groups (e.g. the support.v4.viewPager) need to be laid out
to determine the order of it's children. As we need the order before
being able to collect the structure of the children we need to skip
their collection until they are laid out.

Fixes: 38198484
Test: cts-tradefed run cts-dev -m CtsAutoFillServiceTestCases
      cts-tradefed run cts-dev -m CtsAccessibilityTestCases
      cts-tradefed run cts-dev -m CtsAccessibilityServiceTestCases

Change-Id: I1f7bee1505edaf70c9d9a686be6f9a76d8aedd0b
parent 175e8784
Loading
Loading
Loading
Loading
+0 −4
Original line number Diff line number Diff line
@@ -8078,10 +8078,6 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
            boolean forAutofill, @AutofillFlags int flags) {
        if (forAutofill) {
            structure.setAutofillId(getAutofillId());
            if (!isLaidOut()) {
                Log.w(VIEW_LOG_TAG, "dispatchProvideAutofillStructure(): not laid out, ignoring");
                return;
            }
            onProvideAutofillStructure(structure, flags);
            onProvideAutofillVirtualStructure(structure, flags);
        } else if (!isAssistBlocked()) {
+14 −0
Original line number Diff line number Diff line
@@ -3400,6 +3400,13 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
        if (childrenCount <= 0) {
            return;
        }

        if (!isLaidOut()) {
            Log.v(VIEW_LOG_TAG, "dispatchProvideStructure(): not laid out, ignoring "
                    + childrenCount + " children of " + getAccessibilityViewId());
            return;
        }

        structure.setChildCount(childrenCount);
        ArrayList<View> preorderedList = buildOrderedChildList();
        boolean customOrder = preorderedList == null
@@ -3476,6 +3483,13 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
        if (structure.getChildCount() != 0) {
            return;
        }

        if (!isLaidOut()) {
            Log.v(VIEW_LOG_TAG, "dispatchProvideAutofillStructure(): not laid out, ignoring "
                    + mChildrenCount + " children of " + getAutofillId());
            return;
        }

        final ChildListForAutoFill children = getChildrenForAutofill(flags);
        final int childrenCount = children.size();
        structure.setChildCount(childrenCount);