onSetAttributeValue method

void onSetAttributeValue(
  1. int? id,
  2. Map<String, dynamic> params
)

Implementation

void onSetAttributeValue(int? id, Map<String, dynamic> params) {
  // https://chromedevtools.github.io/devtools-protocol/tot/DOM/#method-setAttributeValue
  if (DebugFlags.enableDevToolsLogs) {
    devToolsLogger.finer('[DevTools] DOM.setAttributeValue nodeId=${params['nodeId']} name=${params['name']}');
  }
  final ctx = dbgContext;
  if (ctx == null) {
    sendToFrontend(id, null);
    return;
  }
  int? nodeId = params['nodeId'];
  String? name = params['name'];
  String? value = params['value'];
  if (nodeId == null || name == null || value == null) {
    sendToFrontend(id, null);
    return;
  }
  final targetId = ctx.getTargetIdByNodeId(nodeId);
  if (targetId == null) {
    sendToFrontend(id, null);
    return;
  }
  final Node? node = ctx.getBindingObject(Pointer.fromAddress(targetId)) as Node?;
  if (node is Element) {
    // Prefer controller bridge to emit incremental attributeModified events
    final controller = ctx.getController() ?? devtoolsService.controller;
    if (controller != null) {
      try {
        controller.view.setAttribute(node.pointer!, name, value);
      } catch (_) {
        node.setAttribute(name, value);
      }
    } else {
      node.setAttribute(name, value);
    }
  }
  sendToFrontend(id, null);
}