onRemoveNode method

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

Implementation

void onRemoveNode(int? id, Map<String, dynamic> params) {
  if (DebugFlags.enableDevToolsLogs) {
    devToolsLogger.finer('[DevTools] DOM.removeNode nodeId=${params['nodeId']}');
  }
  int? nodeId = params['nodeId'];
  final ctx = dbgContext;
  if (nodeId == null || ctx == null) {
    sendToFrontend(id, null);
    return;
  }
  final targetId = ctx.getTargetIdByNodeId(nodeId);
  Node? node;
  if (targetId != null) {
    node = ctx.getBindingObject(Pointer.fromAddress(targetId)) as Node?;
  }
  if (node != null) {
    // Prefer controller bridge to emit incremental CDP events (childNodeRemoved)
    final controller = ctx.getController() ?? devtoolsService.controller;
    if (controller != null) {
      try {
        controller.view.removeNode(node.pointer!);
      } catch (_) {
        if (node.parentNode != null) {
          node.parentNode!.removeChild(node);
        }
      }
    } else if (node.parentNode != null) {
      node.parentNode!.removeChild(node);
    }
  }
  sendToFrontend(id, null);
}