1 /* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
12 } = require("resource://devtools/shared/protocol.js");
14 types.addDictType("dommutation", {});
16 types.addDictType("searchresult", {
18 // Right now there is isn't anything required for metadata,
19 // but it's json so it can be extended with extra data.
20 metadata: "array:json",
23 // Some common request/response templates for the dom walker
25 var nodeArrayMethod = {
27 node: Arg(0, "domnode"),
29 center: Option(1, "domnode"),
30 start: Option(1, "domnode"),
33 types.addDictType("domtraversalarray", {
34 nodes: "array:domnode",
39 var traversalMethod = {
41 node: Arg(0, "domnode"),
44 node: RetVal("nullable:domnode"),
48 const walkerSpec = generateActorSpec({
49 typeName: "domwalker",
56 type: "root-available",
57 node: Arg(0, "nullable:domnode"),
60 type: "root-destroyed",
61 node: Arg(0, "nullable:domnode"),
63 "picker-node-picked": {
64 type: "pickerNodePicked",
65 node: Arg(0, "disconnectedNode"),
67 "picker-node-previewed": {
68 type: "pickerNodePreviewed",
69 node: Arg(0, "disconnectedNode"),
71 "picker-node-hovered": {
72 type: "pickerNodeHovered",
73 node: Arg(0, "disconnectedNode"),
75 "picker-node-canceled": {
76 type: "pickerNodeCanceled",
79 type: "display-change",
80 nodes: Arg(0, "array:domnode"),
82 "scrollable-change": {
83 type: "scrollable-change",
84 nodes: Arg(0, "array:domnode"),
87 type: "overflow-change",
88 nodes: Arg(0, "array:domnode"),
90 "container-type-change": {
91 type: "container-type-change",
92 nodes: Arg(0, "array:domnode"),
94 // The walker actor emits a useful "resize" event to its front to let
95 // clients know when the browser window gets resized. This may be useful
96 // for refreshing a DOM node's styles for example, since those may depend on
108 request: { node: Arg(0, "nullable:domnode") },
109 response: { node: RetVal("domnode") },
112 request: { node: Arg(0, "nullable:domnode") },
113 response: { node: RetVal("domnode") },
116 request: { node: Arg(0, "domnode") },
120 request: { node: Arg(0, "domnode") },
125 node: Arg(0, "domnode"),
129 children: nodeArrayMethod,
130 nextSibling: traversalMethod,
131 previousSibling: traversalMethod,
132 findInspectingNode: {
134 response: RetVal("disconnectedNode"),
138 node: Arg(0, "domnode"),
141 response: RetVal("disconnectedNode"),
145 node: Arg(0, "domnode"),
148 response: RetVal("disconnectedNode"),
152 node: Arg(0, "domnode"),
156 list: RetVal("domnodelist"),
164 list: RetVal("searchresult"),
167 getSuggestionsForQuery: {
171 selectorState: Arg(2),
174 list: RetVal("array:array:string"),
177 addPseudoClassLock: {
179 node: Arg(0, "domnode"),
182 enabled: Option(2, "boolean"),
187 request: { node: Arg(0, "domnode") },
190 request: { node: Arg(0, "domnode") },
192 removePseudoClassLock: {
194 node: Arg(0, "domnode"),
200 clearPseudoClassLocks: {
202 node: Arg(0, "nullable:domnode"),
208 node: Arg(0, "domnode"),
211 value: RetVal("longstring"),
216 node: Arg(0, "domnode"),
217 value: Arg(1, "string"),
223 node: Arg(0, "domnode"),
226 value: RetVal("longstring"),
231 node: Arg(0, "domnode"),
232 value: Arg(1, "string"),
236 insertAdjacentHTML: {
238 node: Arg(0, "domnode"),
239 position: Arg(1, "string"),
240 value: Arg(2, "string"),
242 response: RetVal("disconnectedNodeArray"),
246 node: Arg(0, "domnode"),
252 node: Arg(0, "domnode"),
255 nextSibling: RetVal("nullable:domnode"),
260 node: Arg(0, "array:domnode"),
266 node: Arg(0, "domnode"),
267 parent: Arg(1, "domnode"),
268 sibling: Arg(2, "nullable:domnode"),
274 node: Arg(0, "domnode"),
275 tagName: Arg(1, "string"),
284 mutations: RetVal("array:dommutation"),
288 request: { node: Arg(0, "domnode") },
289 response: { attached: RetVal("boolean") },
291 getNodeActorFromWindowID: {
293 windowID: Arg(0, "string"),
296 nodeFront: RetVal("nullable:disconnectedNode"),
299 getNodeActorFromContentDomReference: {
301 contentDomReference: Arg(0, "json"),
304 nodeFront: RetVal("nullable:disconnectedNode"),
307 getStyleSheetOwnerNode: {
309 styleSheetActorID: Arg(0, "string"),
312 ownerNode: RetVal("nullable:disconnectedNode"),
317 actorID: Arg(0, "string"),
318 path: Arg(1, "array:string"),
321 node: RetVal("nullable:disconnectedNode"),
324 getLayoutInspector: {
327 actor: RetVal("layout"),
332 node: Arg(0, "nullable:domnode"),
335 node: RetVal("nullable:domnode"),
340 node: Arg(0, "nullable:domnode"),
343 node: RetVal("nullable:domnode"),
346 setMutationBreakpoints: {
348 node: Arg(0, "nullable:domnode"),
349 subtree: Option(1, "nullable:boolean"),
350 removal: Option(1, "nullable:boolean"),
351 attribute: Option(1, "nullable:boolean"),
355 getEmbedderElement: {
357 browsingContextID: Arg(0, "string"),
360 nodeFront: RetVal("disconnectedNode"),
365 doFocus: Arg(0, "nullable:boolean"),
366 isLocalTab: Arg(1, "nullable:boolean"),
381 getOverflowCausingElements: {
383 node: Arg(0, "domnode"),
386 list: RetVal("disconnectedNodeArray"),
389 getScrollableAncestorNode: {
391 node: Arg(0, "domnode"),
394 node: RetVal("nullable:domnode"),
400 exports.walkerSpec = walkerSpec;