Index: third_party/WebKit/LayoutTests/inspector-protocol/resources/node-tracker.js |
diff --git a/third_party/WebKit/LayoutTests/inspector-protocol/resources/node-tracker.js b/third_party/WebKit/LayoutTests/inspector-protocol/resources/node-tracker.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..07a04fa2b1ba7eb005c005934da9ff6d27a97852 |
--- /dev/null |
+++ b/third_party/WebKit/LayoutTests/inspector-protocol/resources/node-tracker.js |
@@ -0,0 +1,28 @@ |
+(class NodeTracker { |
+ constructor(dp) { |
+ this._nodes = new Map(); |
+ dp.DOM.onSetChildNodes(message => message.params.nodes.forEach(node => this._addNode(node))); |
+ } |
+ |
+ addDocumentNode(documentNode) { |
+ this._addNode(documentNode); |
+ } |
+ |
+ _addNode(node) { |
+ this._nodes.set(node.nodeId, node); |
+ if (node.children) |
+ node.children.forEach(node => this._addNode(node)); |
+ } |
+ |
+ nodeForId(nodeId) { |
+ return this._nodes.get(nodeId) || null; |
+ } |
+ |
+ nodes() { |
+ return Array.from(this._nodes.values()); |
+ } |
+ |
+ nodeIds() { |
+ return Array.from(this._nodes.keys()); |
+ } |
+}) |