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

Commit f75cd843 authored by Phil Weaver's avatar Phil Weaver Committed by Android (Google) Code Review
Browse files

Merge "Update A11y action serialization to use longs"

parents 7a3eddbe 54549163
Loading
Loading
Loading
Loading
+9 −9
Original line number Diff line number Diff line
@@ -3333,7 +3333,7 @@ public class AccessibilityNodeInfo implements Parcelable {
                final int actionCount = mActions.size();

                int nonStandardActionCount = 0;
                int defaultStandardActions = 0;
                long defaultStandardActions = 0;
                for (int i = 0; i < actionCount; i++) {
                    AccessibilityAction action = mActions.get(i);
                    if (isDefaultStandardAction(action)) {
@@ -3342,7 +3342,7 @@ public class AccessibilityNodeInfo implements Parcelable {
                        nonStandardActionCount++;
                    }
                }
                parcel.writeInt(defaultStandardActions);
                parcel.writeLong(defaultStandardActions);

                parcel.writeInt(nonStandardActionCount);
                for (int i = 0; i < actionCount; i++) {
@@ -3540,7 +3540,7 @@ public class AccessibilityNodeInfo implements Parcelable {
        }

        if (isBitSet(nonDefaultFields, fieldIndex++)) {
            final int standardActions = parcel.readInt();
            final long standardActions = parcel.readLong();
            addStandardActions(standardActions);
            final int nonStandardActionCount = parcel.readInt();
            for (int i = 0; i < nonStandardActionCount; i++) {
@@ -3636,7 +3636,7 @@ public class AccessibilityNodeInfo implements Parcelable {
        return null;
    }

    private static AccessibilityAction getActionSingletonBySerializationFlag(int flag) {
    private static AccessibilityAction getActionSingletonBySerializationFlag(long flag) {
        final int actions = AccessibilityAction.sStandardActions.size();
        for (int i = 0; i < actions; i++) {
            AccessibilityAction currentAction = AccessibilityAction.sStandardActions.valueAt(i);
@@ -3648,10 +3648,10 @@ public class AccessibilityNodeInfo implements Parcelable {
        return null;
    }

    private void addStandardActions(int serializationIdMask) {
        int remainingIds = serializationIdMask;
    private void addStandardActions(long serializationIdMask) {
        long remainingIds = serializationIdMask;
        while (remainingIds > 0) {
            final int id = 1 << Integer.numberOfTrailingZeros(remainingIds);
            final int id = 1 << Long.numberOfTrailingZeros(remainingIds);
            remainingIds &= ~id;
            AccessibilityAction action = getActionSingletonBySerializationFlag(id);
            addAction(action);
@@ -4276,7 +4276,7 @@ public class AccessibilityNodeInfo implements Parcelable {
        private final CharSequence mLabel;

        /** @hide */
        public int mSerializationFlag = -1;
        public long mSerializationFlag = -1L;

        /**
         * Creates a new AccessibilityAction. For adding a standard action without a specific label,
@@ -4310,7 +4310,7 @@ public class AccessibilityNodeInfo implements Parcelable {
        private AccessibilityAction(int standardActionId) {
            this(standardActionId, null);

            mSerializationFlag = (int) bitAt(sStandardActions.size());
            mSerializationFlag = bitAt(sStandardActions.size());
            sStandardActions.add(this);
        }

+3 −3
Original line number Diff line number Diff line
@@ -38,10 +38,10 @@ public class AccessibilityNodeInfoTest {
    public void testStandardActions_serializationFlagIsValid() {
        AccessibilityAction brokenStandardAction = CollectionUtils.find(
                new ArrayList<>(AccessibilityAction.sStandardActions),
                action -> Integer.bitCount(action.mSerializationFlag) != 1);
                action -> Long.bitCount(action.mSerializationFlag) != 1);
        if (brokenStandardAction != null) {
            String message = "Invalid serialization flag(0x"
                    + Integer.toHexString(brokenStandardAction.mSerializationFlag)
                    + Long.toHexString(brokenStandardAction.mSerializationFlag)
                    + ") in " + brokenStandardAction;
            if (brokenStandardAction.mSerializationFlag == 0L) {
                message += "\nThis is likely due to an overflow";
@@ -56,7 +56,7 @@ public class AccessibilityNodeInfoTest {
                        && action.getId() != action.mSerializationFlag);
        if (brokenStandardAction != null) {
            fail("Serialization flag(0x"
                    + Integer.toHexString(brokenStandardAction.mSerializationFlag)
                    + Long.toHexString(brokenStandardAction.mSerializationFlag)
                    + ") is different from legacy action id(0x"
                    + Integer.toHexString(brokenStandardAction.getId())
                    + ") in " + brokenStandardAction);