mirror of
https://github.com/lightpanda-io/browser.git
synced 2025-10-29 15:13:28 +00:00
support depth parameter for DOM.getDocument
This commit is contained in:
@@ -565,13 +565,13 @@ test "cdp Node: Writer" {
|
|||||||
.localName = "div",
|
.localName = "div",
|
||||||
.childNodeCount = 1,
|
.childNodeCount = 1,
|
||||||
.parentId = 3,
|
.parentId = 3,
|
||||||
.children = &.{ .{
|
.children = &.{.{
|
||||||
.nodeId = 6,
|
.nodeId = 6,
|
||||||
.localName = "a",
|
.localName = "a",
|
||||||
.childNodeCount = 0,
|
.childNodeCount = 0,
|
||||||
.parentId = 5,
|
.parentId = 5,
|
||||||
}}
|
}},
|
||||||
}
|
} },
|
||||||
} } }, json);
|
} }, json);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -60,17 +60,18 @@ pub fn processMessage(cmd: anytype) !void {
|
|||||||
|
|
||||||
// https://chromedevtools.github.io/devtools-protocol/tot/DOM/#method-getDocument
|
// https://chromedevtools.github.io/devtools-protocol/tot/DOM/#method-getDocument
|
||||||
fn getDocument(cmd: anytype) !void {
|
fn getDocument(cmd: anytype) !void {
|
||||||
// const params = (try cmd.params(struct {
|
const params = (try cmd.params(struct {
|
||||||
// depth: ?u32 = null,
|
// CDP documentation implies that 0 isn't valid, but it _does_ work in Chrome
|
||||||
// pierce: ?bool = null,
|
depth: ?i32 = null,
|
||||||
// })) orelse return error.InvalidParams;
|
pierce: ?bool = null,
|
||||||
|
})) orelse return error.InvalidParams;
|
||||||
|
|
||||||
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 page = bc.session.currentPage() orelse return error.PageNotLoaded;
|
||||||
const doc = parser.documentHTMLToDocument(page.window.document);
|
const doc = parser.documentHTMLToDocument(page.window.document);
|
||||||
|
|
||||||
const node = try bc.node_registry.register(parser.documentToNode(doc));
|
const node = try bc.node_registry.register(parser.documentToNode(doc));
|
||||||
return cmd.sendResult(.{ .root = bc.nodeWriter(node, .{}) }, .{});
|
return cmd.sendResult(.{ .root = bc.nodeWriter(node, .{ .depth = params.depth orelse 3 }) }, .{});
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://chromedevtools.github.io/devtools-protocol/tot/DOM/#method-performSearch
|
// https://chromedevtools.github.io/devtools-protocol/tot/DOM/#method-performSearch
|
||||||
@@ -451,7 +452,7 @@ fn requestChildNodes(cmd: anytype) !void {
|
|||||||
|
|
||||||
try cmd.sendEvent("DOM.setChildNodes", .{
|
try cmd.sendEvent("DOM.setChildNodes", .{
|
||||||
.parentId = node.id,
|
.parentId = node.id,
|
||||||
.nodes = bc.nodeWriter(node, .{.depth = params.depth, .exclude_root = true}),
|
.nodes = bc.nodeWriter(node, .{ .depth = params.depth, .exclude_root = true }),
|
||||||
}, .{
|
}, .{
|
||||||
.session_id = session_id,
|
.session_id = session_id,
|
||||||
});
|
});
|
||||||
@@ -610,6 +611,7 @@ test "cdp.dom: getBoxModel" {
|
|||||||
try ctx.processMessage(.{ // Hacky way to make sure nodeId 0 exists in the registry
|
try ctx.processMessage(.{ // Hacky way to make sure nodeId 0 exists in the registry
|
||||||
.id = 3,
|
.id = 3,
|
||||||
.method = "DOM.getDocument",
|
.method = "DOM.getDocument",
|
||||||
|
.params = .{ .depth = 3 },
|
||||||
});
|
});
|
||||||
|
|
||||||
try ctx.processMessage(.{
|
try ctx.processMessage(.{
|
||||||
|
|||||||
Reference in New Issue
Block a user