| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2009, 2010 Google Inc. All rights reserved. | 2 * Copyright (C) 2009, 2010 Google Inc. All rights reserved. |
| 3 * Copyright (C) 2009 Joseph Pecoraro | 3 * Copyright (C) 2009 Joseph Pecoraro |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions are | 6 * modification, are permitted provided that the following conditions are |
| 7 * met: | 7 * met: |
| 8 * | 8 * |
| 9 * * Redistributions of source code must retain the above copyright | 9 * * Redistributions of source code must retain the above copyright |
| 10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 60 this._matchedCSSRules = []; | 60 this._matchedCSSRules = []; |
| 61 | 61 |
| 62 if (this._nodeType === Node.ELEMENT_NODE) { | 62 if (this._nodeType === Node.ELEMENT_NODE) { |
| 63 // HTML and BODY from internal iframes should not overwrite top-level on
es. | 63 // HTML and BODY from internal iframes should not overwrite top-level on
es. |
| 64 if (!this.ownerDocument.documentElement && this._nodeName === "HTML") | 64 if (!this.ownerDocument.documentElement && this._nodeName === "HTML") |
| 65 this.ownerDocument.documentElement = this; | 65 this.ownerDocument.documentElement = this; |
| 66 if (!this.ownerDocument.body && this._nodeName === "BODY") | 66 if (!this.ownerDocument.body && this._nodeName === "BODY") |
| 67 this.ownerDocument.body = this; | 67 this.ownerDocument.body = this; |
| 68 if (payload.documentURL) | 68 if (payload.documentURL) |
| 69 this.documentURL = payload.documentURL; | 69 this.documentURL = payload.documentURL; |
| 70 if (payload.shadowRoot) | |
| 71 this._setShadowRootPayload(payload.shadowRoot); | |
| 72 } else if (this._nodeType === Node.DOCUMENT_TYPE_NODE) { | 70 } else if (this._nodeType === Node.DOCUMENT_TYPE_NODE) { |
| 73 this.publicId = payload.publicId; | 71 this.publicId = payload.publicId; |
| 74 this.systemId = payload.systemId; | 72 this.systemId = payload.systemId; |
| 75 this.internalSubset = payload.internalSubset; | 73 this.internalSubset = payload.internalSubset; |
| 76 } else if (this._nodeType === Node.DOCUMENT_NODE) { | 74 } else if (this._nodeType === Node.DOCUMENT_NODE) { |
| 77 this.documentURL = payload.documentURL; | 75 this.documentURL = payload.documentURL; |
| 78 this.xmlVersion = payload.xmlVersion; | 76 this.xmlVersion = payload.xmlVersion; |
| 79 } else if (this._nodeType === Node.ATTRIBUTE_NODE) { | 77 } else if (this._nodeType === Node.ATTRIBUTE_NODE) { |
| 80 this.name = payload.name; | 78 this.name = payload.name; |
| 81 this.value = payload.value; | 79 this.value = payload.value; |
| 82 } | 80 } |
| 83 } | 81 } |
| 84 | 82 |
| 85 WebInspector.DOMNode.prototype = { | 83 WebInspector.DOMNode.prototype = { |
| 86 hasAttributes: function() | 84 hasAttributes: function() |
| 87 { | 85 { |
| 88 return this._attributes.length > 0; | 86 return this._attributes.length > 0; |
| 89 }, | 87 }, |
| 90 | 88 |
| 91 hasChildNodes: function() | 89 hasChildNodes: function() |
| 92 { | 90 { |
| 93 return this._childNodeCount > 0; | 91 return this._childNodeCount > 0; |
| 94 }, | 92 }, |
| 95 | 93 |
| 96 nodeType: function() | 94 nodeType: function() |
| 97 { | 95 { |
| 98 return this._nodeType; | 96 return this._nodeType; |
| 99 }, | 97 }, |
| 100 | 98 |
| 101 inShadowTree: function() | |
| 102 { | |
| 103 return this._inShadowTree; | |
| 104 }, | |
| 105 | |
| 106 nodeName: function() | 99 nodeName: function() |
| 107 { | 100 { |
| 108 return this._nodeName; | 101 return this._nodeName; |
| 109 }, | 102 }, |
| 110 | 103 |
| 111 setNodeName: function(name, callback) | 104 setNodeName: function(name, callback) |
| 112 { | 105 { |
| 113 DOMAgent.setNodeName(this.id, name, callback); | 106 DOMAgent.setNodeName(this.id, name, callback); |
| 114 }, | 107 }, |
| 115 | 108 |
| (...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 272 { | 265 { |
| 273 this.children = []; | 266 this.children = []; |
| 274 for (var i = 0; i < payloads.length; ++i) { | 267 for (var i = 0; i < payloads.length; ++i) { |
| 275 var payload = payloads[i]; | 268 var payload = payloads[i]; |
| 276 var node = new WebInspector.DOMNode(this.ownerDocument, payload); | 269 var node = new WebInspector.DOMNode(this.ownerDocument, payload); |
| 277 this.children.push(node); | 270 this.children.push(node); |
| 278 } | 271 } |
| 279 this._renumber(); | 272 this._renumber(); |
| 280 }, | 273 }, |
| 281 | 274 |
| 282 _setShadowRootPayload: function(payload) | |
| 283 { | |
| 284 if (!payload) { | |
| 285 this.shadowRoot = null; | |
| 286 return; | |
| 287 } | |
| 288 this.shadowRoot = new WebInspector.DOMNode(this.ownerDocument, payload); | |
| 289 this.shadowRoot.parentNode = this; | |
| 290 this.shadowRoot._inShadowTree = true; | |
| 291 }, | |
| 292 | |
| 293 _renumber: function() | 275 _renumber: function() |
| 294 { | 276 { |
| 295 this._childNodeCount = this.children.length; | 277 this._childNodeCount = this.children.length; |
| 296 if (this._childNodeCount == 0) { | 278 if (this._childNodeCount == 0) { |
| 297 this.firstChild = null; | 279 this.firstChild = null; |
| 298 this.lastChild = null; | 280 this.lastChild = null; |
| 299 return; | 281 return; |
| 300 } | 282 } |
| 301 this.firstChild = this.children[0]; | 283 this.firstChild = this.children[0]; |
| 302 this.lastChild = this.children[this._childNodeCount - 1]; | 284 this.lastChild = this.children[this._childNodeCount - 1]; |
| 303 for (var i = 0; i < this._childNodeCount; ++i) { | 285 for (var i = 0; i < this._childNodeCount; ++i) { |
| 304 var child = this.children[i]; | 286 var child = this.children[i]; |
| 305 child.index = i; | 287 child.index = i; |
| 306 child.nextSibling = i + 1 < this._childNodeCount ? this.children[i +
1] : null; | 288 child.nextSibling = i + 1 < this._childNodeCount ? this.children[i +
1] : null; |
| 307 child.prevSibling = i - 1 >= 0 ? this.children[i - 1] : null; | 289 child.prevSibling = i - 1 >= 0 ? this.children[i - 1] : null; |
| 308 child.parentNode = this; | 290 child.parentNode = this; |
| 309 child._inShadowTree = this._inShadowTree; | |
| 310 } | 291 } |
| 311 }, | 292 }, |
| 312 | 293 |
| 313 _addAttribute: function(name, value) | 294 _addAttribute: function(name, value) |
| 314 { | 295 { |
| 315 var attr = { | 296 var attr = { |
| 316 "name": name, | 297 "name": name, |
| 317 "value": value, | 298 "value": value, |
| 318 "_node": this | 299 "_node": this |
| 319 }; | 300 }; |
| (...skipping 26 matching lines...) Expand all Loading... |
| 346 this._document = null; | 327 this._document = null; |
| 347 InspectorBackend.registerDomainDispatcher("DOM", new WebInspector.DOMDispatc
her(this)); | 328 InspectorBackend.registerDomainDispatcher("DOM", new WebInspector.DOMDispatc
her(this)); |
| 348 } | 329 } |
| 349 | 330 |
| 350 WebInspector.DOMAgent.Events = { | 331 WebInspector.DOMAgent.Events = { |
| 351 AttrModified: "AttrModified", | 332 AttrModified: "AttrModified", |
| 352 CharacterDataModified: "CharacterDataModified", | 333 CharacterDataModified: "CharacterDataModified", |
| 353 NodeInserted: "NodeInserted", | 334 NodeInserted: "NodeInserted", |
| 354 NodeRemoved: "NodeRemoved", | 335 NodeRemoved: "NodeRemoved", |
| 355 DocumentUpdated: "DocumentUpdated", | 336 DocumentUpdated: "DocumentUpdated", |
| 356 ChildNodeCountUpdated: "ChildNodeCountUpdated", | 337 ChildNodeCountUpdated: "ChildNodeCountUpdated" |
| 357 ShadowRootUpdated: "ShadowRootUpdated" | |
| 358 } | 338 } |
| 359 | 339 |
| 360 WebInspector.DOMAgent.prototype = { | 340 WebInspector.DOMAgent.prototype = { |
| 361 requestDocument: function(callback) | 341 requestDocument: function(callback) |
| 362 { | 342 { |
| 363 if (this._document) { | 343 if (this._document) { |
| 364 if (callback) | 344 if (callback) |
| 365 callback(this._document); | 345 callback(this._document); |
| 366 return; | 346 return; |
| 367 } | 347 } |
| (...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 487 var parent = this._idToDOMNode[parentId]; | 467 var parent = this._idToDOMNode[parentId]; |
| 488 parent._setChildrenPayload(payloads); | 468 parent._setChildrenPayload(payloads); |
| 489 this._bindNodes(parent.children); | 469 this._bindNodes(parent.children); |
| 490 }, | 470 }, |
| 491 | 471 |
| 492 _bindNodes: function(children) | 472 _bindNodes: function(children) |
| 493 { | 473 { |
| 494 for (var i = 0; i < children.length; ++i) { | 474 for (var i = 0; i < children.length; ++i) { |
| 495 var child = children[i]; | 475 var child = children[i]; |
| 496 this._idToDOMNode[child.id] = child; | 476 this._idToDOMNode[child.id] = child; |
| 497 if (child.shadowRoot) | |
| 498 this._idToDOMNode[child.shadowRoot.id] = child.shadowRoot; | |
| 499 | |
| 500 if (child.children) | 477 if (child.children) |
| 501 this._bindNodes(child.children); | 478 this._bindNodes(child.children); |
| 502 } | 479 } |
| 503 }, | 480 }, |
| 504 | 481 |
| 505 _childNodeCountUpdated: function(nodeId, newValue) | 482 _childNodeCountUpdated: function(nodeId, newValue) |
| 506 { | 483 { |
| 507 var node = this._idToDOMNode[nodeId]; | 484 var node = this._idToDOMNode[nodeId]; |
| 508 node._childNodeCount = newValue; | 485 node._childNodeCount = newValue; |
| 509 this.dispatchEventToListeners(WebInspector.DOMAgent.Events.ChildNodeCoun
tUpdated, node); | 486 this.dispatchEventToListeners(WebInspector.DOMAgent.Events.ChildNodeCoun
tUpdated, node); |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 542 }, | 519 }, |
| 543 | 520 |
| 544 querySelector: function(nodeId, selectors, callback) | 521 querySelector: function(nodeId, selectors, callback) |
| 545 { | 522 { |
| 546 DOMAgent.querySelector(nodeId, selectors, this._wrapClientCallback(callb
ack)); | 523 DOMAgent.querySelector(nodeId, selectors, this._wrapClientCallback(callb
ack)); |
| 547 }, | 524 }, |
| 548 | 525 |
| 549 querySelectorAll: function(nodeId, selectors, callback) | 526 querySelectorAll: function(nodeId, selectors, callback) |
| 550 { | 527 { |
| 551 DOMAgent.querySelectorAll(nodeId, selectors, this._wrapClientCallback(ca
llback)); | 528 DOMAgent.querySelectorAll(nodeId, selectors, this._wrapClientCallback(ca
llback)); |
| 552 }, | |
| 553 | |
| 554 _shadowRootUpdated: function(hostId, payload) | |
| 555 { | |
| 556 var host = this._idToDOMNode[hostId]; | |
| 557 if (host.shadowRoot && !payload) | |
| 558 delete this._idToDOMNode[host.shadowRoot.id]; | |
| 559 host._setShadowRootPayload(payload); | |
| 560 if (host.shadowRoot) | |
| 561 this._idToDOMNode[host.shadowRoot.id] = host.shadowRoot; | |
| 562 this.dispatchEventToListeners(WebInspector.DOMAgent.Events.ShadowRootUpd
ated, host); | |
| 563 } | 529 } |
| 564 } | 530 } |
| 565 | 531 |
| 566 WebInspector.DOMAgent.prototype.__proto__ = WebInspector.Object.prototype; | 532 WebInspector.DOMAgent.prototype.__proto__ = WebInspector.Object.prototype; |
| 567 | 533 |
| 568 WebInspector.DOMDispatcher = function(domAgent) | 534 WebInspector.DOMDispatcher = function(domAgent) |
| 569 { | 535 { |
| 570 this._domAgent = domAgent; | 536 this._domAgent = domAgent; |
| 571 } | 537 } |
| 572 | 538 |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 608 | 574 |
| 609 inspectElementRequested: function(nodeId) | 575 inspectElementRequested: function(nodeId) |
| 610 { | 576 { |
| 611 WebInspector.updateFocusedNode(nodeId); | 577 WebInspector.updateFocusedNode(nodeId); |
| 612 }, | 578 }, |
| 613 | 579 |
| 614 searchResults: function(nodeIds) | 580 searchResults: function(nodeIds) |
| 615 { | 581 { |
| 616 if (this._domAgent._searchResultCollector) | 582 if (this._domAgent._searchResultCollector) |
| 617 this._domAgent._searchResultCollector(nodeIds); | 583 this._domAgent._searchResultCollector(nodeIds); |
| 618 }, | |
| 619 | |
| 620 shadowRootUpdated: function(hostId, shadowRoot) | |
| 621 { | |
| 622 this._domAgent._shadowRootUpdated(hostId, shadowRoot); | |
| 623 } | 584 } |
| 624 } | 585 } |
| OLD | NEW |