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

Commit 8ed859a2 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Print A11yEv. Content Change Types in DEBUG toString"

parents 71abcc52 4a34f9c2
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();
    }
}