handleSetStyleSheetText method

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

Implementation

void handleSetStyleSheetText(int? id, Map<String, dynamic> params) {
  // DevTools may call this for inline styles too (styleSheetId: "inline:<nodeId>")
  final ctx = dbgContext;
  if (ctx == null) {
    sendToFrontend(id, null);
    return;
  }

  final dynamic rawStyleSheetId = params['styleSheetId'];
  final String text = (params['text'] ?? '').toString();

  int? nodeId;
  int? frontendNodeId;
  if (rawStyleSheetId is int) {
    frontendNodeId = rawStyleSheetId;
    nodeId = ctx.getTargetIdByNodeId(rawStyleSheetId);
  } else if (rawStyleSheetId is String) {
    String sid = rawStyleSheetId;
    if (sid.startsWith('inline:')) {
      final String rest = sid.substring('inline:'.length);
      final int? nid = int.tryParse(rest);
      if (nid != null) {
        frontendNodeId = nid;
        nodeId = ctx.getTargetIdByNodeId(nid);
      }
    } else {
      final int? nid = int.tryParse(sid);
      if (nid != null) {
        frontendNodeId = nid;
        nodeId = ctx.getTargetIdByNodeId(nid);
      }
    }
  }

  if (nodeId != null) {
    BindingObject? element = ctx.getBindingObject(Pointer.fromAddress(nodeId));
    if (element is Element) {
      _applyInlineStyleText(element, text);
    }
  }

  if (DebugFlags.enableDevToolsProtocolLogs) {
    devToolsProtocolLogger.finer('[DevTools] CSS.setStyleSheetText styleSheetId=$rawStyleSheetId len=${text.length}');
  }
  sendToFrontend(id, JSONEncodableMap({}));
  if (frontendNodeId != null) {
    _trackNodeComputedUpdate(frontendNodeId);
  }
}