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

Commit aa2da19d authored by Phil Weaver's avatar Phil Weaver Committed by android-build-merger
Browse files

Make a11y node info parceling more robust

am: 487d8697

Change-Id: I57d8feb17000692b6b93d976de43362ce3a34001
parents bc095f03 487d8697
Loading
Loading
Loading
Loading
+12 −11
Original line number Diff line number Diff line
@@ -2760,16 +2760,19 @@ public class AccessibilityNodeInfo implements Parcelable {

        if (mActions != null && !mActions.isEmpty()) {
            final int actionCount = mActions.size();
            parcel.writeInt(actionCount);

            int nonLegacyActionCount = 0;
            int defaultLegacyStandardActions = 0;
            for (int i = 0; i < actionCount; i++) {
                AccessibilityAction action = mActions.get(i);
                if (isDefaultLegacyStandardAction(action)) {
                    defaultLegacyStandardActions |= action.getId();
                } else {
                    nonLegacyActionCount++;
                }
            }
            parcel.writeInt(defaultLegacyStandardActions);
            parcel.writeInt(nonLegacyActionCount);

            for (int i = 0; i < actionCount; i++) {
                AccessibilityAction action = mActions.get(i);
@@ -2780,6 +2783,7 @@ public class AccessibilityNodeInfo implements Parcelable {
            }
        } else {
            parcel.writeInt(0);
            parcel.writeInt(0);
        }

        parcel.writeInt(mMaxTextLength);
@@ -2947,17 +2951,14 @@ public class AccessibilityNodeInfo implements Parcelable {
        mBoundsInScreen.left = parcel.readInt();
        mBoundsInScreen.right = parcel.readInt();

        final int actionCount = parcel.readInt();
        if (actionCount > 0) {
        final int legacyStandardActions = parcel.readInt();
        addLegacyStandardActions(legacyStandardActions);
            final int nonLegacyActionCount = actionCount - Integer.bitCount(legacyStandardActions);
        final int nonLegacyActionCount = parcel.readInt();
        for (int i = 0; i < nonLegacyActionCount; i++) {
            final AccessibilityAction action = new AccessibilityAction(
                    parcel.readInt(), parcel.readCharSequence());
            addActionUnchecked(action);
        }
        }

        mMaxTextLength = parcel.readInt();
        mMovementGranularities = parcel.readInt();