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

Commit 4354b340 authored by Phil Weaver's avatar Phil Weaver
Browse files

Fix ViewPager crash for a11y z order.

The ViewPager requires measure/layout to initialize a list used
in getChildDrawingOrder, and crashes when this method is called
too early. Protecting against that by assigning a default value
to the drawing order value of AccessibilityNodeInfo if the View
bounds have not yet been set.

Bug: 27076826
Change-Id: Ic42dbb81d15340f6b021626b1c27ad5abce7e7d1
parent cc494765
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -6851,6 +6851,15 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
     * @param info The info whose drawing order should be populated
     */
    private void populateAccessibilityNodeInfoDrawingOrderInParent(AccessibilityNodeInfo info) {
        /*
         * If the view's bounds haven't been set yet, layout has not completed. In that situation,
         * drawing order may not be well-defined, and some Views with custom drawing order may
         * not be initialized sufficiently to respond properly getChildDrawingOrder.
         */
        if ((mPrivateFlags & PFLAG_HAS_BOUNDS) == 0) {
            info.setDrawingOrder(0);
            return;
        }
        int drawingOrderInParent = 1;
        // Iterate up the hierarchy if parents are not important for a11y
        View viewAtDrawingLevel = this;