Make a11y node info parceling more robust

am: 487d869733

Change-Id: I5c85f0dd279f8263aad5b76cbf51dd9d4e0ef549
This commit is contained in:
Phil Weaver
2017-04-07 23:09:30 +00:00
committed by android-build-merger

View File

@@ -3073,16 +3073,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);
@@ -3093,6 +3096,7 @@ public class AccessibilityNodeInfo implements Parcelable {
}
} else {
parcel.writeInt(0);
parcel.writeInt(0);
}
parcel.writeInt(mMaxTextLength);
@@ -3270,16 +3274,13 @@ 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);
for (int i = 0; i < nonLegacyActionCount; i++) {
final AccessibilityAction action = new AccessibilityAction(
parcel.readInt(), parcel.readCharSequence());
addActionUnchecked(action);
}
final int legacyStandardActions = parcel.readInt();
addLegacyStandardActions(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();