handleForcePseudoState method
https://chromedevtools.github.io/devtools-protocol/tot/CSS/#method-forcePseudoState Enables or disables forcing certain pseudo classes for the given node. Params: { nodeId:
Implementation
void handleForcePseudoState(int? id, Map<String, dynamic> params) {
final ctx = dbgContext;
if (ctx == null) {
sendToFrontend(id, JSONEncodableMap({}));
return;
}
final int? frontendNodeId = params['nodeId'] as int?;
final List<dynamic>? forced = params['forcedPseudoClasses'] as List<dynamic>?;
if (frontendNodeId == null || forced == null) {
sendToFrontend(id, JSONEncodableMap({}));
return;
}
final states = <String>{};
for (final v in forced) {
if (v is String && v.isNotEmpty) states.add(v.toLowerCase());
}
_forcedPseudoStates[frontendNodeId] = states;
// If element exists, request style recalculation to reflect potential pseudo state effects
try {
final targetId = ctx.getTargetIdByNodeId(frontendNodeId);
if (targetId != null && targetId != 0) {
final BindingObject? obj = ctx.getBindingObject(Pointer.fromAddress(targetId));
if (obj is Element) {
obj.ownerDocument.markElementStyleDirty(obj);
obj.ownerDocument.updateStyleIfNeeded();
}
}
} catch (_) {}
// Signal computed style subscribers
_trackNodeComputedUpdate(frontendNodeId);
if (DebugFlags.enableDevToolsProtocolLogs) {
devToolsProtocolLogger
.finer('[DevTools] CSS.forcePseudoState node=$frontendNodeId states=${states.join(',')}');
}
sendToFrontend(id, JSONEncodableMap({}));
}