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

Commit 4a34f9c2 authored by Eugene Susla's avatar Eugene Susla
Browse files

Print A11yEv. Content Change Types in DEBUG toString

Test: Enable debug, and ensure changeTypes are properly displayed
Change-Id: I1bf6a9f56a72e867a0bc967a5e3527eb4dc83952
parent b44a966c
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -1943,6 +1943,16 @@ public class TextUtils {
        return charSequence;
    }

    /**
     * Prepends {@code start} and appends {@code end} to a given {@link StringBuilder}
     *
     * @hide
     */
    public static void wrap(StringBuilder builder, String start, String end) {
        builder.insert(0, start);
        builder.append(end);
    }

    private static Object sLock = new Object();

    private static char[] sTemp = null;
+20 −1
Original line number Diff line number Diff line
@@ -21,6 +21,8 @@ import android.os.Parcelable;
import android.text.TextUtils;
import android.util.Pools.SynchronizedPool;

import com.android.internal.util.BitUtils;

import java.util.ArrayList;
import java.util.List;

@@ -852,6 +854,22 @@ public final class AccessibilityEvent extends AccessibilityRecord implements Par
        return mContentChangeTypes;
    }

    private static String contentChangeTypesToString(int types) {
        return BitUtils.flagsToString(types, AccessibilityEvent::singleContentChangeTypeToString);
    }

    private static String singleContentChangeTypeToString(int type) {
        switch (type) {
            case CONTENT_CHANGE_TYPE_CONTENT_DESCRIPTION: {
                return "CONTENT_CHANGE_TYPE_CONTENT_DESCRIPTION";
            }
            case CONTENT_CHANGE_TYPE_SUBTREE: return "CONTENT_CHANGE_TYPE_SUBTREE";
            case CONTENT_CHANGE_TYPE_TEXT: return "CONTENT_CHANGE_TYPE_TEXT";
            case CONTENT_CHANGE_TYPE_UNDEFINED: return "CONTENT_CHANGE_TYPE_UNDEFINED";
            default: return Integer.toHexString(type);
        }
    }

    /**
     * Sets the bit mask of node tree changes signaled by an
     * {@link #TYPE_WINDOW_CONTENT_CHANGED} event.
@@ -1187,7 +1205,8 @@ public final class AccessibilityEvent extends AccessibilityRecord implements Par
        builder.append(super.toString());
        if (DEBUG) {
            builder.append("\n");
            builder.append("; ContentChangeTypes: ").append(mContentChangeTypes);
            builder.append("; ContentChangeTypes: ").append(
                    contentChangeTypesToString(mContentChangeTypes));
            builder.append("; sourceWindowId: ").append(mSourceWindowId);
            if (mSourceNode != null) {
                builder.append("; mSourceNodeId: ").append(mSourceNode.getSourceNodeId());
+16 −0
Original line number Diff line number Diff line
@@ -18,12 +18,14 @@
package com.android.internal.util;

import android.annotation.Nullable;
import android.text.TextUtils;

import libcore.util.Objects;

import java.nio.ByteBuffer;
import java.util.Arrays;
import java.util.UUID;
import java.util.function.IntFunction;

/**
 * A utility class for handling unsigned integers and unsigned arithmetics, as well as syntactic
@@ -132,4 +134,18 @@ public final class BitUtils {
    public static long bitAt(int bitIndex) {
        return 1L << bitIndex;
    }

    public static String flagsToString(int flags, IntFunction<String> getFlagName) {
        StringBuilder builder = new StringBuilder();
        int count = 0;
        while (flags != 0) {
            final int flag = 1 << Integer.numberOfTrailingZeros(flags);
            flags &= ~flag;
            if (count > 0) builder.append(", ");
            builder.append(getFlagName.apply(flag));
            count++;
        }
        TextUtils.wrap(builder, "[", "]");
        return builder.toString();
    }
}