in stetho/src/main/java/com/facebook/stetho/inspector/protocol/module/Runtime.java [217:255]
public RemoteObject objectForRemote(Object value) {
RemoteObject result = new RemoteObject();
if (value == null) {
result.type = ObjectType.OBJECT;
result.subtype = ObjectSubType.NULL;
result.value = JSONObject.NULL;
} else if (value instanceof Boolean) {
result.type = ObjectType.BOOLEAN;
result.value = value;
} else if (value instanceof Number) {
result.type = ObjectType.NUMBER;
result.value = value;
} else if (value instanceof Character) {
// Unclear whether we should expose these as strings, numbers, or something else.
result.type = ObjectType.NUMBER;
result.value = Integer.valueOf(((Character)value).charValue());
} else if (value instanceof String) {
result.type = ObjectType.STRING;
result.value = String.valueOf(value);
} else {
result.type = ObjectType.OBJECT;
result.className = "What??"; // I have no idea where this is used.
result.objectId = String.valueOf(mObjects.putObject(value));
if (value.getClass().isArray()) {
result.description = "array";
} else if (value instanceof List) {
result.description = "List";
} else if (value instanceof Set) {
result.description = "Set";
} else if (value instanceof Map) {
result.description = "Map";
} else {
result.description = getPropertyClassName(value);
}
}
return result;
}