Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(68)

Side by Side Diff: webkit/glue/devtools/js/dom_agent.js

Issue 113836: DevTools: introduce bound object on the agent side. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /** 5 /**
6 * @fileoverview Dom and DomNode are used to represent remote DOM in the 6 * @fileoverview Dom and DomNode are used to represent remote DOM in the
7 * web inspector. 7 * web inspector.
8 */ 8 */
9 goog.provide('devtools.DomAgent'); 9 goog.provide('devtools.DomAgent');
10 goog.provide('devtools.DomDocument'); 10 goog.provide('devtools.DomDocument');
(...skipping 465 matching lines...) Expand 10 before | Expand all | Expand 10 after
476 devtools.Callback.processCallback; 476 devtools.Callback.processCallback;
477 RemoteDomAgent.DidPerformSearch = 477 RemoteDomAgent.DidPerformSearch =
478 devtools.Callback.processCallback; 478 devtools.Callback.processCallback;
479 RemoteDomAgent.DidApplyDomChange = 479 RemoteDomAgent.DidApplyDomChange =
480 devtools.Callback.processCallback; 480 devtools.Callback.processCallback;
481 RemoteDomAgent.DidRemoveAttribute = 481 RemoteDomAgent.DidRemoveAttribute =
482 devtools.Callback.processCallback; 482 devtools.Callback.processCallback;
483 RemoteDomAgent.DidSetTextNodeValue = 483 RemoteDomAgent.DidSetTextNodeValue =
484 devtools.Callback.processCallback; 484 devtools.Callback.processCallback;
485 RemoteDomAgent.AttributesUpdated = 485 RemoteDomAgent.AttributesUpdated =
486 goog.bind(this.attributesUpdated, this); 486 goog.bind(this.attributesUpdated_, this);
487 RemoteDomAgent.SetDocumentElement = 487 RemoteDomAgent.SetDocumentElement =
488 goog.bind(this.setDocumentElement, this); 488 goog.bind(this.setDocumentElement_, this);
489 RemoteDomAgent.SetChildNodes = 489 RemoteDomAgent.SetChildNodes =
490 goog.bind(this.setChildNodes, this); 490 goog.bind(this.setChildNodes_, this);
491 RemoteDomAgent.HasChildrenUpdated = 491 RemoteDomAgent.HasChildrenUpdated =
492 goog.bind(this.hasChildrenUpdated, this); 492 goog.bind(this.hasChildrenUpdated_, this);
493 RemoteDomAgent.ChildNodeInserted = 493 RemoteDomAgent.ChildNodeInserted =
494 goog.bind(this.childNodeInserted, this); 494 goog.bind(this.childNodeInserted_, this);
495 RemoteDomAgent.ChildNodeRemoved = 495 RemoteDomAgent.ChildNodeRemoved =
496 goog.bind(this.childNodeRemoved, this); 496 goog.bind(this.childNodeRemoved_, this);
497 497
498 /** 498 /**
499 * Top-level (and the only) document. 499 * Top-level (and the only) document.
500 * @type {devtools.DomWindow} 500 * @type {devtools.DomWindow}
501 * @private 501 * @private
502 */ 502 */
503 this.window_ = null; 503 this.window_ = null;
504 504
505 /** 505 /**
506 * Id to node mapping. 506 * Id to node mapping.
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
618 RemoteDomAgent.SetTextNodeValue(devtools.Callback.wrap(mycallback), 618 RemoteDomAgent.SetTextNodeValue(devtools.Callback.wrap(mycallback),
619 node.id_, text); 619 node.id_, text);
620 }; 620 };
621 621
622 622
623 /** 623 /**
624 * Universal callback wrapper for edit dom operations. 624 * Universal callback wrapper for edit dom operations.
625 * @param {devtools.DomNode} node Node to apply local changes on. 625 * @param {devtools.DomNode} node Node to apply local changes on.
626 * @param {Function} callback Post-operation call. 626 * @param {Function} callback Post-operation call.
627 * @param {boolean} success True iff operation has completed successfully. 627 * @param {boolean} success True iff operation has completed successfully.
628 * @private
628 */ 629 */
629 devtools.DomAgent.prototype.didApplyDomChange_ = function(node, 630 devtools.DomAgent.prototype.didApplyDomChange_ = function(node,
630 callback, success) { 631 callback, success) {
631 if (!success) { 632 if (!success) {
632 return; 633 return;
633 } 634 }
634 callback(); 635 callback();
635 var elem = WebInspector.panels.elements.treeOutline.findTreeElement(node); 636 var elem = WebInspector.panels.elements.treeOutline.findTreeElement(node);
636 if (elem) { 637 if (elem) {
637 elem._updateTitle(); 638 elem._updateTitle();
638 } 639 }
639 }; 640 };
640 641
641 642
642 /** 643 /**
643 * @see DomAgentDelegate. 644 * @see DomAgentDelegate.
644 * {@inheritDoc}. 645 * {@inheritDoc}.
646 * @private
645 */ 647 */
646 devtools.DomAgent.prototype.attributesUpdated = function(nodeId, attrsArray) { 648 devtools.DomAgent.prototype.attributesUpdated_ = function(nodeId, attrsArray) {
647 var node = this.idToDomNode_[nodeId]; 649 var node = this.idToDomNode_[nodeId];
648 node.setAttributesPayload_(attrsArray); 650 node.setAttributesPayload_(attrsArray);
649 }; 651 };
650 652
651 653
652 /** 654 /**
653 * Returns node for id. 655 * Returns node for id.
654 * @param {number} nodeId Id to get node for. 656 * @param {number} nodeId Id to get node for.
655 * @return {devtools.DomNode} Node with given id. 657 * @return {devtools.DomNode} Node with given id.
656 */ 658 */
657 devtools.DomAgent.prototype.getNodeForId = function(nodeId) { 659 devtools.DomAgent.prototype.getNodeForId = function(nodeId) {
658 return this.idToDomNode_[nodeId]; 660 return this.idToDomNode_[nodeId];
659 }; 661 };
660 662
661 663
662 /** 664 /**
663 * @see DomAgentDelegate. 665 * @see DomAgentDelegate.
664 * {@inheritDoc}. 666 * {@inheritDoc}.
667 * @private
665 */ 668 */
666 devtools.DomAgent.prototype.setDocumentElement = function(payload) { 669 devtools.DomAgent.prototype.setDocumentElement_ = function(payload) {
667 var doc = this.getDocument(); 670 var doc = this.getDocument();
668 if (doc.documentElement) { 671 if (doc.documentElement) {
669 this.reset(); 672 this.reset();
670 doc = this.getDocument(); 673 doc = this.getDocument();
671 } 674 }
672 this.setChildNodes(0, [payload]); 675 this.setChildNodes_(0, [payload]);
673 doc.documentElement = doc.firstChild; 676 doc.documentElement = doc.firstChild;
674 doc.documentElement.ownerDocument = doc; 677 doc.documentElement.ownerDocument = doc;
675 WebInspector.panels.elements.reset(); 678 WebInspector.panels.elements.reset();
676 }; 679 };
677 680
678 681
679 /** 682 /**
680 * @see DomAgentDelegate. 683 * @see DomAgentDelegate.
681 * {@inheritDoc}. 684 * {@inheritDoc}.
685 * @private
682 */ 686 */
683 devtools.DomAgent.prototype.setChildNodes = function(parentId, payloads) { 687 devtools.DomAgent.prototype.setChildNodes_ = function(parentId, payloads) {
684 var parent = this.idToDomNode_[parentId]; 688 var parent = this.idToDomNode_[parentId];
685 if (parent.children) { 689 if (parent.children) {
686 return; 690 return;
687 } 691 }
688 parent.setChildrenPayload_(payloads); 692 parent.setChildrenPayload_(payloads);
689 this.bindNodes_(parent.children); 693 this.bindNodes_(parent.children);
690 }; 694 };
691 695
692 696
693 /** 697 /**
694 * Binds nodes to ids recursively. 698 * Binds nodes to ids recursively.
695 * @param {Array.<devtools.DomNode>} children Nodes to bind. 699 * @param {Array.<devtools.DomNode>} children Nodes to bind.
700 * @private
696 */ 701 */
697 devtools.DomAgent.prototype.bindNodes_ = function(children) { 702 devtools.DomAgent.prototype.bindNodes_ = function(children) {
698 for (var i = 0; i < children.length; ++i) { 703 for (var i = 0; i < children.length; ++i) {
699 var child = children[i]; 704 var child = children[i];
700 this.idToDomNode_[child.id_] = child; 705 this.idToDomNode_[child.id_] = child;
701 if (child.children) { 706 if (child.children) {
702 this.bindNodes_(child.children); 707 this.bindNodes_(child.children);
703 } 708 }
704 } 709 }
705 }; 710 };
706 711
707 712
708 /** 713 /**
709 * @see DomAgentDelegate. 714 * @see DomAgentDelegate.
710 * {@inheritDoc}. 715 * {@inheritDoc}.
716 * @private
711 */ 717 */
712 devtools.DomAgent.prototype.hasChildrenUpdated = function(nodeId, newValue) { 718 devtools.DomAgent.prototype.hasChildrenUpdated_ = function(nodeId, newValue) {
713 var node = this.idToDomNode_[nodeId]; 719 var node = this.idToDomNode_[nodeId];
714 var outline = WebInspector.panels.elements.treeOutline; 720 var outline = WebInspector.panels.elements.treeOutline;
715 var treeElement = outline.findTreeElement(node); 721 var treeElement = outline.findTreeElement(node);
716 if (treeElement) { 722 if (treeElement) {
717 treeElement.hasChildren = newValue; 723 treeElement.hasChildren = newValue;
718 treeElement.whitespaceIgnored = Preferences.ignoreWhitespace; 724 treeElement.whitespaceIgnored = Preferences.ignoreWhitespace;
719 } 725 }
720 }; 726 };
721 727
722 728
723 /** 729 /**
724 * @see DomAgentDelegate. 730 * @see DomAgentDelegate.
725 * {@inheritDoc}. 731 * {@inheritDoc}.
732 * @private
726 */ 733 */
727 devtools.DomAgent.prototype.childNodeInserted = function( 734 devtools.DomAgent.prototype.childNodeInserted_ = function(
728 parentId, prevId, payload) { 735 parentId, prevId, payload) {
729 var parent = this.idToDomNode_[parentId]; 736 var parent = this.idToDomNode_[parentId];
730 var prev = this.idToDomNode_[prevId]; 737 var prev = this.idToDomNode_[prevId];
731 var node = parent.insertChild_(prev, payload); 738 var node = parent.insertChild_(prev, payload);
732 this.idToDomNode_[node.id_] = node; 739 this.idToDomNode_[node.id_] = node;
733 var event = { target : node, relatedNode : parent }; 740 var event = { target : node, relatedNode : parent };
734 this.getDocument().fireDomEvent_('DOMNodeInserted', event); 741 this.getDocument().fireDomEvent_('DOMNodeInserted', event);
735 }; 742 };
736 743
737 744
738 /** 745 /**
739 * @see DomAgentDelegate. 746 * @see DomAgentDelegate.
740 * {@inheritDoc}. 747 * {@inheritDoc}.
748 * @private
741 */ 749 */
742 devtools.DomAgent.prototype.childNodeRemoved = function( 750 devtools.DomAgent.prototype.childNodeRemoved_ = function(
743 parentId, nodeId) { 751 parentId, nodeId) {
744 var parent = this.idToDomNode_[parentId]; 752 var parent = this.idToDomNode_[parentId];
745 var node = this.idToDomNode_[nodeId]; 753 var node = this.idToDomNode_[nodeId];
746 parent.removeChild_(node); 754 parent.removeChild_(node);
747 var event = { target : node, relatedNode : parent }; 755 var event = { target : node, relatedNode : parent };
748 this.getDocument().fireDomEvent_('DOMNodeRemoved', event); 756 this.getDocument().fireDomEvent_('DOMNodeRemoved', event);
749 delete this.idToDomNode_[nodeId]; 757 delete this.idToDomNode_[nodeId];
750 }; 758 };
751 759
752 760
(...skipping 29 matching lines...) Expand all
782 callback(nodes); 790 callback(nodes);
783 this.searchResults_ = null; 791 this.searchResults_ = null;
784 }; 792 };
785 793
786 794
787 /** 795 /**
788 * Invokes callback for each node that needs to gain highlighting. 796 * Invokes callback for each node that needs to gain highlighting.
789 * @param {function(Array.<devtools.DomNode>)} callback to accept the result. 797 * @param {function(Array.<devtools.DomNode>)} callback to accept the result.
790 * @param {Array.<number>} searchResults to be populated. 798 * @param {Array.<number>} searchResults to be populated.
791 * @param {Array.<number>} nodeIds Ids to highlight. 799 * @param {Array.<number>} nodeIds Ids to highlight.
800 * @private
792 */ 801 */
793 devtools.DomAgent.prototype.performSearchCallback_ = function(callback, 802 devtools.DomAgent.prototype.performSearchCallback_ = function(callback,
794 searchResults, nodeIds) { 803 searchResults, nodeIds) {
795 804
796 if (this.searchResults_ !== searchResults) 805 if (this.searchResults_ !== searchResults)
797 return; // another search has requested and this results are obsolete 806 return; // another search has requested and this results are obsolete
798 807
799 var nodes = []; 808 var nodes = [];
800 809
801 for (var i = 0; i < nodeIds.length; ++i) { 810 for (var i = 0; i < nodeIds.length; ++i) {
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after
1014 function onlyTextChild() { 1023 function onlyTextChild() {
1015 if (!this.children) { 1024 if (!this.children) {
1016 return null; 1025 return null;
1017 } else if (this.children.length == 1 && 1026 } else if (this.children.length == 1 &&
1018 this.children[0].nodeType == Node.TEXT_NODE) { 1027 this.children[0].nodeType == Node.TEXT_NODE) {
1019 return this.children[0]; 1028 return this.children[0];
1020 } else { 1029 } else {
1021 return null; 1030 return null;
1022 } 1031 }
1023 } 1032 }
OLDNEW
« no previous file with comments | « webkit/glue/devtools/js/devtools_host_stub.js ('k') | webkit/glue/devtools/js/inject_dispatch.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698