mirror of
https://github.com/lightpanda-io/browser.git
synced 2025-10-29 23:23:28 +00:00
Redo resolveNode
This commit is contained in:
@@ -166,61 +166,28 @@ fn resolveNode(cmd: anytype) !void {
|
|||||||
fn describeNode(cmd: anytype) !void {
|
fn describeNode(cmd: anytype) !void {
|
||||||
const params = (try cmd.params(struct {
|
const params = (try cmd.params(struct {
|
||||||
nodeId: ?Node.Id = null,
|
nodeId: ?Node.Id = null,
|
||||||
backendNodeId: ?u32 = null,
|
backendNodeId: ?Node.Id = null,
|
||||||
objectGroup: ?[]const u8 = null,
|
objectId: ?[]const u8 = null,
|
||||||
executionContextId: ?u32 = null,
|
depth: u32 = 1,
|
||||||
|
pierce: bool = false,
|
||||||
})) orelse return error.InvalidParams;
|
})) orelse return error.InvalidParams;
|
||||||
|
if (params.backendNodeId != null or params.depth != 1 or params.pierce) {
|
||||||
if (params.nodeId == null or params.backendNodeId != null or params.executionContextId != null) {
|
|
||||||
return error.NotYetImplementedParams;
|
return error.NotYetImplementedParams;
|
||||||
}
|
}
|
||||||
|
|
||||||
const bc = cmd.browser_context orelse return error.BrowserContextNotLoaded;
|
const bc = cmd.browser_context orelse return error.BrowserContextNotLoaded;
|
||||||
const page = bc.session.currentPage() orelse return error.PageNotLoaded;
|
|
||||||
const node = bc.node_registry.lookup_by_id.get(params.nodeId.?) orelse return error.UnknownNode;
|
|
||||||
|
|
||||||
// node._node is a *parser.Node we need this to be able to find its most derived type e.g. Node -> Element -> HTMLElement
|
if (params.nodeId != null) {
|
||||||
// So we use the Node.Union when retrieve the value from the environment
|
const node = bc.node_registry.lookup_by_id.get(params.nodeId.?) orelse return error.NodeNotFound;
|
||||||
const remote_object = try bc.inspector.getRemoteObject(
|
return cmd.sendResult(.{ .node = bc.nodeWriter(node, .{}) }, .{});
|
||||||
page.scope,
|
}
|
||||||
params.objectGroup orelse "",
|
if (params.objectId != null) {
|
||||||
try dom_node.Node.toInterface(node._node),
|
// Retrieve the object from which ever context it is in.
|
||||||
);
|
const parser_node = try bc.inspector.getNodePtr(cmd.arena, params.objectId.?);
|
||||||
defer remote_object.deinit();
|
const node = try bc.node_registry.register(@ptrCast(parser_node));
|
||||||
|
return cmd.sendResult(.{ .node = bc.nodeWriter(node, .{}) }, .{});
|
||||||
const arena = cmd.arena;
|
}
|
||||||
return cmd.sendResult(.{ .object = .{
|
return error.MissingParams;
|
||||||
.type = try remote_object.getType(arena),
|
|
||||||
.subtype = try remote_object.getSubtype(arena),
|
|
||||||
.className = try remote_object.getClassName(arena),
|
|
||||||
.description = try remote_object.getDescription(arena),
|
|
||||||
.objectId = try remote_object.getObjectId(arena),
|
|
||||||
} }, .{});
|
|
||||||
|
|
||||||
// const params = (try cmd.params(struct {
|
|
||||||
// nodeId: ?Node.Id = null,
|
|
||||||
// backendNodeId: ?Node.Id = null,
|
|
||||||
// objectId: ?[]const u8 = null,
|
|
||||||
// depth: u32 = 1,
|
|
||||||
// pierce: bool = false,
|
|
||||||
// })) orelse return error.InvalidParams;
|
|
||||||
// if (params.backendNodeId != null or params.depth != 1 or params.pierce) {
|
|
||||||
// return error.NotYetImplementedParams;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// const bc = cmd.browser_context orelse return error.BrowserContextNotLoaded;
|
|
||||||
|
|
||||||
// if (params.nodeId != null) {
|
|
||||||
// const node = bc.node_registry.lookup_by_id.get(params.nodeId.?) orelse return error.NodeNotFound;
|
|
||||||
// return cmd.sendResult(.{ .node = bc.nodeWriter(node, .{}) }, .{});
|
|
||||||
// }
|
|
||||||
// if (params.objectId != null) {
|
|
||||||
// // Retrieve the object from which ever context it is in.
|
|
||||||
// const parser_node = try bc.session.inspector.getNodePtr(cmd.arena, params.objectId.?);
|
|
||||||
// const node = try bc.node_registry.register(@ptrCast(parser_node));
|
|
||||||
// return cmd.sendResult(.{ .node = bc.nodeWriter(node, .{}) }, .{});
|
|
||||||
// }
|
|
||||||
// return error.MissingParams;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const testing = @import("../testing.zig");
|
const testing = @import("../testing.zig");
|
||||||
|
|||||||
Reference in New Issue
Block a user