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

Commit 5e97621c authored by Artem Iglikov's avatar Artem Iglikov
Browse files

Revert "Update A11y action serialization to use longs"

This reverts commit 54549163.

Reason for revert: breaks tests, b/73997494

Bug: 73997494
Change-Id: I122c260898277d876c019554cb92351ac13a9eb0
parent 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;
                long defaultStandardActions = 0;
                int 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.writeLong(defaultStandardActions);
                parcel.writeInt(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 long standardActions = parcel.readLong();
            final int standardActions = parcel.readInt();
            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(long flag) {
    private static AccessibilityAction getActionSingletonBySerializationFlag(int 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(long serializationIdMask) {
        long remainingIds = serializationIdMask;
    private void addStandardActions(int serializationIdMask) {
        int remainingIds = serializationIdMask;
        while (remainingIds > 0) {
            final int id = 1 << Long.numberOfTrailingZeros(remainingIds);
            final int id = 1 << Integer.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 long mSerializationFlag = -1L;
        public int mSerializationFlag = -1;

        /**
         * 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 = bitAt(sStandardActions.size());
            mSerializationFlag = (int) 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 -> Long.bitCount(action.mSerializationFlag) != 1);
                action -> Integer.bitCount(action.mSerializationFlag) != 1);
        if (brokenStandardAction != null) {
            String message = "Invalid serialization flag(0x"
                    + Long.toHexString(brokenStandardAction.mSerializationFlag)
                    + Integer.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"
                    + Long.toHexString(brokenStandardAction.mSerializationFlag)
                    + Integer.toHexString(brokenStandardAction.mSerializationFlag)
                    + ") is different from legacy action id(0x"
                    + Integer.toHexString(brokenStandardAction.getId())
                    + ") in " + brokenStandardAction);