in stetho/src/main/java/com/facebook/stetho/inspector/protocol/module/CSS.java [163:217]
public SetPropertyTextResult setPropertyText(JsonRpcPeer peer, JSONObject params) {
final SetPropertyTextRequest request = mObjectMapper.convertValue(
params,
SetPropertyTextRequest.class);
final String[] parts = request.styleSheetId.split("\\.", 2);
final int nodeId = Integer.parseInt(parts[0]);
final String ruleName = parts[1];
final String value;
final String key;
if (request.text == null || !request.text.contains(":")) {
key = null;
value = null;
} else {
final String[] keyValue = request.text.split(":", 2);
key = keyValue[0].trim();
value = StringUtil.removeAll(keyValue[1], ';').trim();
}
final SetPropertyTextResult result = new SetPropertyTextResult();
result.style = new CSSStyle();
result.style.styleSheetId = request.styleSheetId;
result.style.cssProperties = new ArrayList<>();
result.style.shorthandEntries = Collections.emptyList();
mDocument.postAndWait(new Runnable() {
@Override
public void run() {
final Object elementForNodeId = mDocument.getElementForNodeId(nodeId);
if (elementForNodeId == null) {
LogUtil.w("Failed to get style of an element that does not exist, nodeid=" + nodeId);
return;
}
if (key != null) {
mDocument.setElementStyle(elementForNodeId, ruleName, key, value);
}
mDocument.getElementStyles(elementForNodeId, ruleName, new StyleAccumulator() {
@Override
public void store(String name, String value, boolean isDefault) {
final CSSProperty property = new CSSProperty();
property.name = name;
property.value = value;
result.style.cssProperties.add(property);
}
});
}
});
return result;
}