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

Commit e1674c2f authored by Alex Salo's avatar Alex Salo
Browse files

Add human readable inputType into dump()

Before:
Input type: 540801

After:
Input type: 540801(class=1)|Password

Most other things are fine as it's easy to convert an integer to the corresponding constant, but computing bit flags in a bugreport is time consuming and error prone.

Bug: 288587392
Change-Id: Ic2ae3354b26d7cdbfe0294bb40936e1e75d1967b
parent d058fd16
Loading
Loading
Loading
Loading
+32 −1
Original line number Diff line number Diff line
@@ -22,8 +22,10 @@ import android.os.PooledStringWriter;
import android.os.RemoteException;
import android.os.SystemClock;
import android.service.autofill.FillRequest;
import android.text.InputType;
import android.text.Spanned;
import android.text.TextUtils;
import android.util.ArrayMap;
import android.util.Log;
import android.util.Pair;
import android.view.View;
@@ -2452,7 +2454,7 @@ public class AssistStructure implements Parcelable {
                    + node.getTextStyle());
            Log.i(TAG, prefix + "  Text color fg: #" + Integer.toHexString(node.getTextColor())
                    + ", bg: #" + Integer.toHexString(node.getTextBackgroundColor()));
            Log.i(TAG, prefix + "  Input type: " + node.getInputType());
            Log.i(TAG, prefix + "  Input type: " + getInputTypeString(node.getInputType()));
            Log.i(TAG, prefix + "  Resource id: " + node.getTextIdEntry());
        }
        String webDomain = node.getWebDomain();
@@ -2664,4 +2666,33 @@ public class AssistStructure implements Parcelable {
            return new AssistStructure[size];
        }
    };

    private static final ArrayMap<Integer, String> INPUT_TYPE_VARIATIONS = new ArrayMap<>();
    static {
        INPUT_TYPE_VARIATIONS.put(InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS, "EmailSubject");
        INPUT_TYPE_VARIATIONS.put(InputType.TYPE_TEXT_VARIATION_POSTAL_ADDRESS, "PostalAddress");
        INPUT_TYPE_VARIATIONS.put(InputType.TYPE_TEXT_VARIATION_PERSON_NAME, "PersonName");
        INPUT_TYPE_VARIATIONS.put(InputType.TYPE_TEXT_VARIATION_PASSWORD, "Password");
        INPUT_TYPE_VARIATIONS.put(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD, "VisiblePassword");
        INPUT_TYPE_VARIATIONS.put(InputType.TYPE_TEXT_VARIATION_URI, "URI");
        INPUT_TYPE_VARIATIONS.put(InputType.TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS, "WebEmailAddress");
        INPUT_TYPE_VARIATIONS.put(InputType.TYPE_TEXT_VARIATION_WEB_PASSWORD, "WebPassword");
        INPUT_TYPE_VARIATIONS.put(InputType.TYPE_TEXT_VARIATION_LONG_MESSAGE, "LongMessage");
        INPUT_TYPE_VARIATIONS.put(InputType.TYPE_TEXT_VARIATION_SHORT_MESSAGE, "ShortMessage");
        INPUT_TYPE_VARIATIONS.put(InputType.TYPE_TEXT_FLAG_MULTI_LINE, "MultiLine");
        INPUT_TYPE_VARIATIONS.put(InputType.TYPE_TEXT_FLAG_IME_MULTI_LINE, "ImeMultiLine");
        INPUT_TYPE_VARIATIONS.put(InputType.TYPE_TEXT_VARIATION_FILTER, "Filter");
    }

    private static String getInputTypeString(int inputType) {
        StringBuilder sb = new StringBuilder();
        sb.append(inputType);
        sb.append("(class=").append(inputType & InputType.TYPE_MASK_CLASS).append(')');
        for (int variation : INPUT_TYPE_VARIATIONS.keySet()) {
            if ((variation & inputType) == variation) {
                sb.append('|').append(INPUT_TYPE_VARIATIONS.get(variation));
            }
        }
        return sb.toString();
    }
}