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

Side by Side Diff: Source/devtools/front_end/DOMModel.js

Issue 218703002: DevTools: [wip] move Elements panel off WebInspector.domModel and single tree outline. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Review comment addressed (and much more) Created 6 years, 8 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 /* 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 22 matching lines...) Expand all
33 * @constructor 33 * @constructor
34 * @extends {WebInspector.TargetAware} 34 * @extends {WebInspector.TargetAware}
35 * @param {!WebInspector.DOMModel} domModel 35 * @param {!WebInspector.DOMModel} domModel
36 * @param {?WebInspector.DOMDocument} doc 36 * @param {?WebInspector.DOMDocument} doc
37 * @param {boolean} isInShadowTree 37 * @param {boolean} isInShadowTree
38 * @param {!DOMAgent.Node} payload 38 * @param {!DOMAgent.Node} payload
39 */ 39 */
40 WebInspector.DOMNode = function(domModel, doc, isInShadowTree, payload) { 40 WebInspector.DOMNode = function(domModel, doc, isInShadowTree, payload) {
41 WebInspector.TargetAware.call(this, domModel._target); 41 WebInspector.TargetAware.call(this, domModel._target);
42 this._domModel = domModel; 42 this._domModel = domModel;
43 this._agent = domModel._agent;
43 this.ownerDocument = doc; 44 this.ownerDocument = doc;
44 this._isInShadowTree = isInShadowTree; 45 this._isInShadowTree = isInShadowTree;
45 46
46 this.id = payload.nodeId; 47 this.id = payload.nodeId;
47 domModel._idToDOMNode[this.id] = this; 48 domModel._idToDOMNode[this.id] = this;
48 this._nodeType = payload.nodeType; 49 this._nodeType = payload.nodeType;
49 this._nodeName = payload.nodeName; 50 this._nodeName = payload.nodeName;
50 this._localName = payload.localName; 51 this._localName = payload.localName;
51 this._nodeValue = payload.nodeValue; 52 this._nodeValue = payload.nodeValue;
52 this._pseudoType = payload.pseudoType; 53 this._pseudoType = payload.pseudoType;
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 /** 130 /**
130 * @enum {string} 131 * @enum {string}
131 */ 132 */
132 WebInspector.DOMNode.ShadowRootTypes = { 133 WebInspector.DOMNode.ShadowRootTypes = {
133 UserAgent: "user-agent", 134 UserAgent: "user-agent",
134 Author: "author" 135 Author: "author"
135 } 136 }
136 137
137 WebInspector.DOMNode.prototype = { 138 WebInspector.DOMNode.prototype = {
138 /** 139 /**
140 * @return {!WebInspector.DOMModel}
141 */
142 domModel: function()
143 {
144 return this._domModel;
145 },
146
147 /**
139 * @return {?Array.<!WebInspector.DOMNode>} 148 * @return {?Array.<!WebInspector.DOMNode>}
140 */ 149 */
141 children: function() 150 children: function()
142 { 151 {
143 return this._children ? this._children.slice() : null; 152 return this._children ? this._children.slice() : null;
144 }, 153 },
145 154
146 /** 155 /**
147 * @return {boolean} 156 * @return {boolean}
148 */ 157 */
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
279 return "#shadow-root" + (shadowRootType === WebInspector.DOMNode.Sha dowRootTypes.UserAgent ? " (user-agent)" : ""); 288 return "#shadow-root" + (shadowRootType === WebInspector.DOMNode.Sha dowRootTypes.UserAgent ? " (user-agent)" : "");
280 return this.isXMLNode() ? this.nodeName() : this.nodeName().toLowerCase( ); 289 return this.isXMLNode() ? this.nodeName() : this.nodeName().toLowerCase( );
281 }, 290 },
282 291
283 /** 292 /**
284 * @param {string} name 293 * @param {string} name
285 * @param {function(?Protocol.Error)=} callback 294 * @param {function(?Protocol.Error)=} callback
286 */ 295 */
287 setNodeName: function(name, callback) 296 setNodeName: function(name, callback)
288 { 297 {
289 DOMAgent.setNodeName(this.id, name, WebInspector.domModel._markRevision( this, callback)); 298 this._agent.setNodeName(this.id, name, this._domModel._markRevision(this , callback));
290 }, 299 },
291 300
292 /** 301 /**
293 * @return {string} 302 * @return {string}
294 */ 303 */
295 localName: function() 304 localName: function()
296 { 305 {
297 return this._localName; 306 return this._localName;
298 }, 307 },
299 308
300 /** 309 /**
301 * @return {string} 310 * @return {string}
302 */ 311 */
303 nodeValue: function() 312 nodeValue: function()
304 { 313 {
305 return this._nodeValue; 314 return this._nodeValue;
306 }, 315 },
307 316
308 /** 317 /**
309 * @param {string} value 318 * @param {string} value
310 * @param {function(?Protocol.Error)=} callback 319 * @param {function(?Protocol.Error)=} callback
311 */ 320 */
312 setNodeValue: function(value, callback) 321 setNodeValue: function(value, callback)
313 { 322 {
314 DOMAgent.setNodeValue(this.id, value, WebInspector.domModel._markRevisio n(this, callback)); 323 this._agent.setNodeValue(this.id, value, this._domModel._markRevision(th is, callback));
315 }, 324 },
316 325
317 /** 326 /**
318 * @param {string} name 327 * @param {string} name
319 * @return {string} 328 * @return {string}
320 */ 329 */
321 getAttribute: function(name) 330 getAttribute: function(name)
322 { 331 {
323 var attr = this._attributesMap[name]; 332 var attr = this._attributesMap[name];
324 return attr ? attr.value : undefined; 333 return attr ? attr.value : undefined;
325 }, 334 },
326 335
327 /** 336 /**
328 * @param {string} name 337 * @param {string} name
329 * @param {string} text 338 * @param {string} text
330 * @param {function(?Protocol.Error)=} callback 339 * @param {function(?Protocol.Error)=} callback
331 */ 340 */
332 setAttribute: function(name, text, callback) 341 setAttribute: function(name, text, callback)
333 { 342 {
334 DOMAgent.setAttributesAsText(this.id, text, name, WebInspector.domModel. _markRevision(this, callback)); 343 this._agent.setAttributesAsText(this.id, text, name, this._domModel._mar kRevision(this, callback));
335 }, 344 },
336 345
337 /** 346 /**
338 * @param {string} name 347 * @param {string} name
339 * @param {string} value 348 * @param {string} value
340 * @param {function(?Protocol.Error)=} callback 349 * @param {function(?Protocol.Error)=} callback
341 */ 350 */
342 setAttributeValue: function(name, value, callback) 351 setAttributeValue: function(name, value, callback)
343 { 352 {
344 DOMAgent.setAttributeValue(this.id, name, value, WebInspector.domModel._ markRevision(this, callback)); 353 this._agent.setAttributeValue(this.id, name, value, this._domModel._mark Revision(this, callback));
345 }, 354 },
346 355
347 /** 356 /**
348 * @return {!Object} 357 * @return {!Object}
349 */ 358 */
350 attributes: function() 359 attributes: function()
351 { 360 {
352 return this._attributes; 361 return this._attributes;
353 }, 362 },
354 363
(...skipping 12 matching lines...) Expand all
367 if (!error) { 376 if (!error) {
368 delete this._attributesMap[name]; 377 delete this._attributesMap[name];
369 for (var i = 0; i < this._attributes.length; ++i) { 378 for (var i = 0; i < this._attributes.length; ++i) {
370 if (this._attributes[i].name === name) { 379 if (this._attributes[i].name === name) {
371 this._attributes.splice(i, 1); 380 this._attributes.splice(i, 1);
372 break; 381 break;
373 } 382 }
374 } 383 }
375 } 384 }
376 385
377 WebInspector.domModel._markRevision(this, callback)(error); 386 this._domModel._markRevision(this, callback)(error);
378 } 387 }
379 DOMAgent.removeAttribute(this.id, name, mycallback.bind(this)); 388 this._agent.removeAttribute(this.id, name, mycallback.bind(this));
380 }, 389 },
381 390
382 /** 391 /**
383 * @param {function(?Array.<!WebInspector.DOMNode>)=} callback 392 * @param {function(?Array.<!WebInspector.DOMNode>)=} callback
384 */ 393 */
385 getChildNodes: function(callback) 394 getChildNodes: function(callback)
386 { 395 {
387 if (this._children) { 396 if (this._children) {
388 if (callback) 397 if (callback)
389 callback(this.children()); 398 callback(this.children());
390 return; 399 return;
391 } 400 }
392 401
393 /** 402 /**
394 * @this {WebInspector.DOMNode} 403 * @this {WebInspector.DOMNode}
395 * @param {?Protocol.Error} error 404 * @param {?Protocol.Error} error
396 */ 405 */
397 function mycallback(error) 406 function mycallback(error)
398 { 407 {
399 if (callback) 408 if (callback)
400 callback(error ? null : this.children()); 409 callback(error ? null : this.children());
401 } 410 }
402 411
403 DOMAgent.requestChildNodes(this.id, undefined, mycallback.bind(this)); 412 this._agent.requestChildNodes(this.id, undefined, mycallback.bind(this)) ;
404 }, 413 },
405 414
406 /** 415 /**
407 * @param {number} depth 416 * @param {number} depth
408 * @param {function(?Array.<!WebInspector.DOMNode>)=} callback 417 * @param {function(?Array.<!WebInspector.DOMNode>)=} callback
409 */ 418 */
410 getSubtree: function(depth, callback) 419 getSubtree: function(depth, callback)
411 { 420 {
412 /** 421 /**
413 * @this {WebInspector.DOMNode} 422 * @this {WebInspector.DOMNode}
414 * @param {?Protocol.Error} error 423 * @param {?Protocol.Error} error
415 */ 424 */
416 function mycallback(error) 425 function mycallback(error)
417 { 426 {
418 if (callback) 427 if (callback)
419 callback(error ? null : this._children); 428 callback(error ? null : this._children);
420 } 429 }
421 430
422 DOMAgent.requestChildNodes(this.id, depth, mycallback.bind(this)); 431 this._agent.requestChildNodes(this.id, depth, mycallback.bind(this));
423 }, 432 },
424 433
425 /** 434 /**
426 * @param {function(?Protocol.Error)=} callback 435 * @param {function(?Protocol.Error)=} callback
427 */ 436 */
428 getOuterHTML: function(callback) 437 getOuterHTML: function(callback)
429 { 438 {
430 DOMAgent.getOuterHTML(this.id, callback); 439 this._agent.getOuterHTML(this.id, callback);
431 }, 440 },
432 441
433 /** 442 /**
434 * @param {string} html 443 * @param {string} html
435 * @param {function(?Protocol.Error)=} callback 444 * @param {function(?Protocol.Error)=} callback
436 */ 445 */
437 setOuterHTML: function(html, callback) 446 setOuterHTML: function(html, callback)
438 { 447 {
439 DOMAgent.setOuterHTML(this.id, html, WebInspector.domModel._markRevision (this, callback)); 448 this._agent.setOuterHTML(this.id, html, this._domModel._markRevision(thi s, callback));
440 }, 449 },
441 450
442 /** 451 /**
443 * @param {function(?Protocol.Error, !DOMAgent.NodeId=)=} callback 452 * @param {function(?Protocol.Error, !DOMAgent.NodeId=)=} callback
444 */ 453 */
445 removeNode: function(callback) 454 removeNode: function(callback)
446 { 455 {
447 DOMAgent.removeNode(this.id, WebInspector.domModel._markRevision(this, c allback)); 456 this._agent.removeNode(this.id, this._domModel._markRevision(this, callb ack));
448 }, 457 },
449 458
450 copyNode: function() 459 copyNode: function()
451 { 460 {
452 function copy(error, text) 461 function copy(error, text)
453 { 462 {
454 if (!error) 463 if (!error)
455 InspectorFrontendHost.copyText(text); 464 InspectorFrontendHost.copyText(text);
456 } 465 }
457 DOMAgent.getOuterHTML(this.id, copy); 466 this._agent.getOuterHTML(this.id, copy);
458 }, 467 },
459 468
460 /** 469 /**
461 * @param {string} objectGroupId 470 * @param {string} objectGroupId
462 * @param {function(?Protocol.Error, !Array.<!DOMAgent.EventListener>)=} cal lback 471 * @param {function(?Protocol.Error, !Array.<!DOMAgent.EventListener>)=} cal lback
463 */ 472 */
464 eventListeners: function(objectGroupId, callback) 473 eventListeners: function(objectGroupId, callback)
465 { 474 {
466 DOMAgent.getEventListenersForNode(this.id, objectGroupId, callback); 475 this._agent.getEventListenersForNode(this.id, objectGroupId, callback);
467 }, 476 },
468 477
469 /** 478 /**
470 * @return {string} 479 * @return {string}
471 */ 480 */
472 path: function() 481 path: function()
473 { 482 {
474 /** 483 /**
475 * @param {?WebInspector.DOMNode} node 484 * @param {?WebInspector.DOMNode} node
476 */ 485 */
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after
679 } 688 }
680 }, 689 },
681 690
682 /** 691 /**
683 * @param {!WebInspector.DOMNode} targetNode 692 * @param {!WebInspector.DOMNode} targetNode
684 * @param {?WebInspector.DOMNode} anchorNode 693 * @param {?WebInspector.DOMNode} anchorNode
685 * @param {function(?Protocol.Error, !DOMAgent.NodeId=)=} callback 694 * @param {function(?Protocol.Error, !DOMAgent.NodeId=)=} callback
686 */ 695 */
687 moveTo: function(targetNode, anchorNode, callback) 696 moveTo: function(targetNode, anchorNode, callback)
688 { 697 {
689 DOMAgent.moveTo(this.id, targetNode.id, anchorNode ? anchorNode.id : und efined, WebInspector.domModel._markRevision(this, callback)); 698 this._agent.moveTo(this.id, targetNode.id, anchorNode ? anchorNode.id : undefined, this._domModel._markRevision(this, callback));
690 }, 699 },
691 700
692 /** 701 /**
693 * @return {boolean} 702 * @return {boolean}
694 */ 703 */
695 isXMLNode: function() 704 isXMLNode: function()
696 { 705 {
697 return !!this.ownerDocument && !!this.ownerDocument.xmlVersion; 706 return !!this.ownerDocument && !!this.ownerDocument.xmlVersion;
698 }, 707 },
699 708
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
777 { 786 {
778 if (!url) 787 if (!url)
779 return url; 788 return url;
780 for (var frameOwnerCandidate = this; frameOwnerCandidate; frameOwnerCand idate = frameOwnerCandidate.parentNode) { 789 for (var frameOwnerCandidate = this; frameOwnerCandidate; frameOwnerCand idate = frameOwnerCandidate.parentNode) {
781 if (frameOwnerCandidate.baseURL) 790 if (frameOwnerCandidate.baseURL)
782 return WebInspector.ParsedURL.completeURL(frameOwnerCandidate.ba seURL, url); 791 return WebInspector.ParsedURL.completeURL(frameOwnerCandidate.ba seURL, url);
783 } 792 }
784 return null; 793 return null;
785 }, 794 },
786 795
796 /**
797 * @param {string=} mode
798 * @param {!RuntimeAgent.RemoteObjectId=} objectId
799 */
800 highlight: function(mode, objectId)
801 {
802 this._domModel.highlightDOMNode(this.id, mode, objectId);
803 },
804
805 highlightForTwoSeconds: function()
806 {
807 this._domModel.highlightDOMNodeForTwoSeconds(this.id);
808 },
809
810 reveal: function()
811 {
812 WebInspector.Revealer.reveal(this);
813 },
814
815 /**
816 * @param {string=} objectGroup
817 * @param {function(?WebInspector.RemoteObject)=} callback
818 */
819 resolveToObject: function(objectGroup, callback)
820 {
821 this._agent.resolveNode(this.id, objectGroup, mycallback.bind(this));
822
823 /**
824 * @param {?Protocol.Error} error
825 * @param {!RuntimeAgent.RemoteObject} object
826 * @this {WebInspector.DOMNode}
827 */
828 function mycallback(error, object)
829 {
830 if (!callback)
831 return;
832
833 if (error || !object)
834 callback(null);
835 else
836 callback(this.target().runtimeModel.createRemoteObject(object));
837 }
838 },
839
787 __proto__: WebInspector.TargetAware.prototype 840 __proto__: WebInspector.TargetAware.prototype
788 } 841 }
789 842
790 /** 843 /**
791 * @extends {WebInspector.DOMNode} 844 * @extends {WebInspector.DOMNode}
792 * @constructor 845 * @constructor
793 * @param {!WebInspector.DOMModel} domModel 846 * @param {!WebInspector.DOMModel} domModel
794 * @param {!DOMAgent.Node} payload 847 * @param {!DOMAgent.Node} payload
795 */ 848 */
796 WebInspector.DOMDocument = function(domModel, payload) 849 WebInspector.DOMDocument = function(domModel, payload)
797 { 850 {
798 WebInspector.DOMNode.call(this, domModel, this, false, payload); 851 WebInspector.DOMNode.call(this, domModel, this, false, payload);
799 this.documentURL = payload.documentURL || ""; 852 this.documentURL = payload.documentURL || "";
800 this.baseURL = payload.baseURL || ""; 853 this.baseURL = payload.baseURL || "";
801 this.xmlVersion = payload.xmlVersion; 854 this.xmlVersion = payload.xmlVersion;
802 this._listeners = {}; 855 this._listeners = {};
803 } 856 }
804 857
805 WebInspector.DOMDocument.prototype = { 858 WebInspector.DOMDocument.prototype = {
806 __proto__: WebInspector.DOMNode.prototype 859 __proto__: WebInspector.DOMNode.prototype
807 } 860 }
808 861
809 /** 862 /**
810 * @extends {WebInspector.Object} 863 * @extends {WebInspector.Object}
811 * @constructor 864 * @constructor
812 * @param {!WebInspector.Target} target 865 * @param {!WebInspector.Target} target
813 */ 866 */
814 WebInspector.DOMModel = function(target) { 867 WebInspector.DOMModel = function(target) {
815 this._target = target; 868 this._target = target;
869 this._agent = target.domAgent();
870
816 /** @type {!Object.<number, !WebInspector.DOMNode>} */ 871 /** @type {!Object.<number, !WebInspector.DOMNode>} */
817 this._idToDOMNode = {}; 872 this._idToDOMNode = {};
818 /** @type {?WebInspector.DOMDocument} */ 873 /** @type {?WebInspector.DOMDocument} */
819 this._document = null; 874 this._document = null;
820 /** @type {!Object.<number, boolean>} */ 875 /** @type {!Object.<number, boolean>} */
821 this._attributeLoadNodeIds = {}; 876 this._attributeLoadNodeIds = {};
822 InspectorBackend.registerDOMDispatcher(new WebInspector.DOMDispatcher(this)) ; 877 InspectorBackend.registerDOMDispatcher(new WebInspector.DOMDispatcher(this)) ;
823 878
824 this._defaultHighlighter = new WebInspector.DefaultDOMNodeHighlighter(); 879 this._defaultHighlighter = new WebInspector.DefaultDOMNodeHighlighter(this._ agent);
825 this._highlighter = this._defaultHighlighter; 880 this._highlighter = this._defaultHighlighter;
826 } 881 }
827 882
828 WebInspector.DOMModel.Events = { 883 WebInspector.DOMModel.Events = {
829 AttrModified: "AttrModified", 884 AttrModified: "AttrModified",
830 AttrRemoved: "AttrRemoved", 885 AttrRemoved: "AttrRemoved",
831 CharacterDataModified: "CharacterDataModified", 886 CharacterDataModified: "CharacterDataModified",
832 NodeInserted: "NodeInserted", 887 NodeInserted: "NodeInserted",
833 NodeRemoved: "NodeRemoved", 888 NodeRemoved: "NodeRemoved",
834 DocumentUpdated: "DocumentUpdated", 889 DocumentUpdated: "DocumentUpdated",
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
867 this._setDocument(root); 922 this._setDocument(root);
868 923
869 for (var i = 0; i < this._pendingDocumentRequestCallbacks.length; ++ i) { 924 for (var i = 0; i < this._pendingDocumentRequestCallbacks.length; ++ i) {
870 var callback = this._pendingDocumentRequestCallbacks[i]; 925 var callback = this._pendingDocumentRequestCallbacks[i];
871 if (callback) 926 if (callback)
872 callback(this._document); 927 callback(this._document);
873 } 928 }
874 delete this._pendingDocumentRequestCallbacks; 929 delete this._pendingDocumentRequestCallbacks;
875 } 930 }
876 931
877 DOMAgent.getDocument(onDocumentAvailable.bind(this)); 932 this._agent.getDocument(onDocumentAvailable.bind(this));
878 }, 933 },
879 934
880 /** 935 /**
881 * @return {?WebInspector.DOMDocument} 936 * @return {?WebInspector.DOMDocument}
882 */ 937 */
883 existingDocument: function() 938 existingDocument: function()
884 { 939 {
885 return this._document; 940 return this._document;
886 }, 941 },
887 942
888 /** 943 /**
889 * @param {!RuntimeAgent.RemoteObjectId} objectId 944 * @param {!RuntimeAgent.RemoteObjectId} objectId
890 * @param {function(?DOMAgent.NodeId)=} callback 945 * @param {function(?DOMAgent.NodeId)=} callback
891 */ 946 */
892 pushNodeToFrontend: function(objectId, callback) 947 pushNodeToFrontend: function(objectId, callback)
893 { 948 {
894 this._dispatchWhenDocumentAvailable(DOMAgent.requestNode.bind(DOMAgent, objectId), callback); 949 this._dispatchWhenDocumentAvailable(this._agent.requestNode.bind(this._a gent, objectId), callback);
895 }, 950 },
896 951
897 /** 952 /**
898 * @param {string} path 953 * @param {string} path
899 * @param {function(?number)=} callback 954 * @param {function(?number)=} callback
900 */ 955 */
901 pushNodeByPathToFrontend: function(path, callback) 956 pushNodeByPathToFrontend: function(path, callback)
902 { 957 {
903 this._dispatchWhenDocumentAvailable(DOMAgent.pushNodeByPathToFrontend.bi nd(DOMAgent, path), callback); 958 this._dispatchWhenDocumentAvailable(this._agent.pushNodeByPathToFrontend .bind(this._agent, path), callback);
904 }, 959 },
905 960
906 /** 961 /**
907 * @param {!Array.<number>} backendNodeIds 962 * @param {!Array.<number>} backendNodeIds
908 * @param {function(?Array.<number>)=} callback 963 * @param {function(?Array.<number>)=} callback
909 */ 964 */
910 pushNodesByBackendIdsToFrontend: function(backendNodeIds, callback) 965 pushNodesByBackendIdsToFrontend: function(backendNodeIds, callback)
911 { 966 {
912 this._dispatchWhenDocumentAvailable(DOMAgent.pushNodesByBackendIdsToFron tend.bind(DOMAgent, backendNodeIds), callback); 967 this._dispatchWhenDocumentAvailable(this._agent.pushNodesByBackendIdsToF rontend.bind(this._agent, backendNodeIds), callback);
913 }, 968 },
914 969
915 /** 970 /**
916 * @param {function(!T)=} callback 971 * @param {function(!T)=} callback
917 * @return {function(?Protocol.Error, !T=)|undefined} 972 * @return {function(?Protocol.Error, !T=)|undefined}
918 * @template T 973 * @template T
919 */ 974 */
920 _wrapClientCallback: function(callback) 975 _wrapClientCallback: function(callback)
921 { 976 {
922 if (!callback) 977 if (!callback)
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
1015 if (node) { 1070 if (node) {
1016 if (node._setAttributesPayload(attributes)) 1071 if (node._setAttributesPayload(attributes))
1017 this.dispatchEventToListeners(WebInspector.DOMModel.Events.A ttrModified, { node: node, name: "style" }); 1072 this.dispatchEventToListeners(WebInspector.DOMModel.Events.A ttrModified, { node: node, name: "style" });
1018 } 1073 }
1019 } 1074 }
1020 1075
1021 delete this._loadNodeAttributesTimeout; 1076 delete this._loadNodeAttributesTimeout;
1022 1077
1023 for (var nodeId in this._attributeLoadNodeIds) { 1078 for (var nodeId in this._attributeLoadNodeIds) {
1024 var nodeIdAsNumber = parseInt(nodeId, 10); 1079 var nodeIdAsNumber = parseInt(nodeId, 10);
1025 DOMAgent.getAttributes(nodeIdAsNumber, callback.bind(this, nodeIdAsN umber)); 1080 this._agent.getAttributes(nodeIdAsNumber, callback.bind(this, nodeId AsNumber));
1026 } 1081 }
1027 this._attributeLoadNodeIds = {}; 1082 this._attributeLoadNodeIds = {};
1028 }, 1083 },
1029 1084
1030 /** 1085 /**
1031 * @param {!DOMAgent.NodeId} nodeId 1086 * @param {!DOMAgent.NodeId} nodeId
1032 * @param {string} newValue 1087 * @param {string} newValue
1033 */ 1088 */
1034 _characterDataModified: function(nodeId, newValue) 1089 _characterDataModified: function(nodeId, newValue)
1035 { 1090 {
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
1241 * @param {?Protocol.Error} error 1296 * @param {?Protocol.Error} error
1242 * @param {string} searchId 1297 * @param {string} searchId
1243 * @param {number} resultsCount 1298 * @param {number} resultsCount
1244 * @this {WebInspector.DOMModel} 1299 * @this {WebInspector.DOMModel}
1245 */ 1300 */
1246 function callback(error, searchId, resultsCount) 1301 function callback(error, searchId, resultsCount)
1247 { 1302 {
1248 this._searchId = searchId; 1303 this._searchId = searchId;
1249 searchCallback(resultsCount); 1304 searchCallback(resultsCount);
1250 } 1305 }
1251 DOMAgent.performSearch(query, callback.bind(this)); 1306 this._agent.performSearch(query, callback.bind(this));
1252 }, 1307 },
1253 1308
1254 /** 1309 /**
1255 * @param {number} index 1310 * @param {number} index
1256 * @param {?function(?WebInspector.DOMNode)} callback 1311 * @param {?function(?WebInspector.DOMNode)} callback
1257 */ 1312 */
1258 searchResult: function(index, callback) 1313 searchResult: function(index, callback)
1259 { 1314 {
1260 if (this._searchId) 1315 if (this._searchId)
1261 DOMAgent.getSearchResults(this._searchId, index, index + 1, searchRe sultsCallback.bind(this)); 1316 this._agent.getSearchResults(this._searchId, index, index + 1, searc hResultsCallback.bind(this));
1262 else 1317 else
1263 callback(null); 1318 callback(null);
1264 1319
1265 /** 1320 /**
1266 * @param {?Protocol.Error} error 1321 * @param {?Protocol.Error} error
1267 * @param {!Array.<number>} nodeIds 1322 * @param {!Array.<number>} nodeIds
1268 * @this {WebInspector.DOMModel} 1323 * @this {WebInspector.DOMModel}
1269 */ 1324 */
1270 function searchResultsCallback(error, nodeIds) 1325 function searchResultsCallback(error, nodeIds)
1271 { 1326 {
1272 if (error) { 1327 if (error) {
1273 console.error(error); 1328 console.error(error);
1274 callback(null); 1329 callback(null);
1275 return; 1330 return;
1276 } 1331 }
1277 if (nodeIds.length != 1) 1332 if (nodeIds.length != 1)
1278 return; 1333 return;
1279 1334
1280 callback(this.nodeForId(nodeIds[0])); 1335 callback(this.nodeForId(nodeIds[0]));
1281 } 1336 }
1282 }, 1337 },
1283 1338
1284 cancelSearch: function() 1339 cancelSearch: function()
1285 { 1340 {
1286 if (this._searchId) { 1341 if (this._searchId) {
1287 DOMAgent.discardSearchResults(this._searchId); 1342 this._agent.discardSearchResults(this._searchId);
1288 delete this._searchId; 1343 delete this._searchId;
1289 } 1344 }
1290 }, 1345 },
1291 1346
1292 /** 1347 /**
1293 * @param {!DOMAgent.NodeId} nodeId 1348 * @param {!DOMAgent.NodeId} nodeId
1294 * @param {string} selectors 1349 * @param {string} selectors
1295 * @param {function(?DOMAgent.NodeId)=} callback 1350 * @param {function(?DOMAgent.NodeId)=} callback
1296 */ 1351 */
1297 querySelector: function(nodeId, selectors, callback) 1352 querySelector: function(nodeId, selectors, callback)
1298 { 1353 {
1299 DOMAgent.querySelector(nodeId, selectors, this._wrapClientCallback(callb ack)); 1354 this._agent.querySelector(nodeId, selectors, this._wrapClientCallback(ca llback));
1300 }, 1355 },
1301 1356
1302 /** 1357 /**
1303 * @param {!DOMAgent.NodeId} nodeId 1358 * @param {!DOMAgent.NodeId} nodeId
1304 * @param {string} selectors 1359 * @param {string} selectors
1305 * @param {function(!Array.<!DOMAgent.NodeId>=)=} callback 1360 * @param {function(!Array.<!DOMAgent.NodeId>=)=} callback
1306 */ 1361 */
1307 querySelectorAll: function(nodeId, selectors, callback) 1362 querySelectorAll: function(nodeId, selectors, callback)
1308 { 1363 {
1309 DOMAgent.querySelectorAll(nodeId, selectors, this._wrapClientCallback(ca llback)); 1364 this._agent.querySelectorAll(nodeId, selectors, this._wrapClientCallback (callback));
1310 }, 1365 },
1311 1366
1312 /** 1367 /**
1313 * @param {!DOMAgent.NodeId=} nodeId 1368 * @param {!DOMAgent.NodeId=} nodeId
1314 * @param {string=} mode 1369 * @param {string=} mode
1315 * @param {!RuntimeAgent.RemoteObjectId=} objectId 1370 * @param {!RuntimeAgent.RemoteObjectId=} objectId
1316 */ 1371 */
1317 highlightDOMNode: function(nodeId, mode, objectId) 1372 highlightDOMNode: function(nodeId, mode, objectId)
1318 { 1373 {
1319 if (this._hideDOMNodeHighlightTimeout) { 1374 if (this._hideDOMNodeHighlightTimeout) {
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
1440 if (error) 1495 if (error)
1441 return; 1496 return;
1442 this._addTouchEventsScriptId = scriptId; 1497 this._addTouchEventsScriptId = scriptId;
1443 } 1498 }
1444 1499
1445 PageAgent.setTouchEmulationEnabled(emulationEnabled); 1500 PageAgent.setTouchEmulationEnabled(emulationEnabled);
1446 }, 1501 },
1447 1502
1448 markUndoableState: function() 1503 markUndoableState: function()
1449 { 1504 {
1450 DOMAgent.markUndoableState(); 1505 this._agent.markUndoableState();
1451 }, 1506 },
1452 1507
1453 /** 1508 /**
1454 * @param {function(?Protocol.Error)=} callback 1509 * @param {function(?Protocol.Error)=} callback
1455 */ 1510 */
1456 undo: function(callback) 1511 undo: function(callback)
1457 { 1512 {
1458 /** 1513 /**
1459 * @param {?Protocol.Error} error 1514 * @param {?Protocol.Error} error
1460 * @this {WebInspector.DOMModel} 1515 * @this {WebInspector.DOMModel}
1461 */ 1516 */
1462 function mycallback(error) 1517 function mycallback(error)
1463 { 1518 {
1464 this.dispatchEventToListeners(WebInspector.DOMModel.Events.UndoRedoC ompleted); 1519 this.dispatchEventToListeners(WebInspector.DOMModel.Events.UndoRedoC ompleted);
1465 callback(error); 1520 callback(error);
1466 } 1521 }
1467 1522
1468 this.dispatchEventToListeners(WebInspector.DOMModel.Events.UndoRedoReque sted); 1523 this.dispatchEventToListeners(WebInspector.DOMModel.Events.UndoRedoReque sted);
1469 DOMAgent.undo(callback); 1524 this._agent.undo(callback);
1470 }, 1525 },
1471 1526
1472 /** 1527 /**
1473 * @param {function(?Protocol.Error)=} callback 1528 * @param {function(?Protocol.Error)=} callback
1474 */ 1529 */
1475 redo: function(callback) 1530 redo: function(callback)
1476 { 1531 {
1477 /** 1532 /**
1478 * @param {?Protocol.Error} error 1533 * @param {?Protocol.Error} error
1479 * @this {WebInspector.DOMModel} 1534 * @this {WebInspector.DOMModel}
1480 */ 1535 */
1481 function mycallback(error) 1536 function mycallback(error)
1482 { 1537 {
1483 this.dispatchEventToListeners(WebInspector.DOMModel.Events.UndoRedoC ompleted); 1538 this.dispatchEventToListeners(WebInspector.DOMModel.Events.UndoRedoC ompleted);
1484 callback(error); 1539 callback(error);
1485 } 1540 }
1486 1541
1487 this.dispatchEventToListeners(WebInspector.DOMModel.Events.UndoRedoReque sted); 1542 this.dispatchEventToListeners(WebInspector.DOMModel.Events.UndoRedoReque sted);
1488 DOMAgent.redo(callback); 1543 this._agent.redo(callback);
1489 }, 1544 },
1490 1545
1491 /** 1546 /**
1492 * @param {?WebInspector.DOMNodeHighlighter} highlighter 1547 * @param {?WebInspector.DOMNodeHighlighter} highlighter
1493 */ 1548 */
1494 setHighlighter: function(highlighter) 1549 setHighlighter: function(highlighter)
1495 { 1550 {
1496 this._highlighter = highlighter || this._defaultHighlighter; 1551 this._highlighter = highlighter || this._defaultHighlighter;
1497 }, 1552 },
1498 1553
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
1652 * @param {boolean} inspectUAShadowDOM 1707 * @param {boolean} inspectUAShadowDOM
1653 * @param {!DOMAgent.HighlightConfig} config 1708 * @param {!DOMAgent.HighlightConfig} config
1654 * @param {function(?Protocol.Error)=} callback 1709 * @param {function(?Protocol.Error)=} callback
1655 */ 1710 */
1656 setInspectModeEnabled: function(enabled, inspectUAShadowDOM, config, callbac k) {} 1711 setInspectModeEnabled: function(enabled, inspectUAShadowDOM, config, callbac k) {}
1657 } 1712 }
1658 1713
1659 /** 1714 /**
1660 * @constructor 1715 * @constructor
1661 * @implements {WebInspector.DOMNodeHighlighter} 1716 * @implements {WebInspector.DOMNodeHighlighter}
1717 * @param {!Protocol.DOMAgent} agent
1662 */ 1718 */
1663 WebInspector.DefaultDOMNodeHighlighter = function() { 1719 WebInspector.DefaultDOMNodeHighlighter = function(agent)
1720 {
1721 this._agent = agent;
1664 } 1722 }
1665 1723
1666 WebInspector.DefaultDOMNodeHighlighter.prototype = { 1724 WebInspector.DefaultDOMNodeHighlighter.prototype = {
1667 /** 1725 /**
1668 * @param {!DOMAgent.NodeId} nodeId 1726 * @param {!DOMAgent.NodeId} nodeId
1669 * @param {!DOMAgent.HighlightConfig} config 1727 * @param {!DOMAgent.HighlightConfig} config
1670 * @param {!RuntimeAgent.RemoteObjectId=} objectId 1728 * @param {!RuntimeAgent.RemoteObjectId=} objectId
1671 */ 1729 */
1672 highlightDOMNode: function(nodeId, config, objectId) 1730 highlightDOMNode: function(nodeId, config, objectId)
1673 { 1731 {
1674 if (objectId || nodeId) 1732 if (objectId || nodeId)
1675 DOMAgent.highlightNode(config, objectId ? undefined : nodeId, object Id); 1733 this._agent.highlightNode(config, objectId ? undefined : nodeId, obj ectId);
1676 else 1734 else
1677 DOMAgent.hideHighlight(); 1735 this._agent.hideHighlight();
1678 }, 1736 },
1679 1737
1680 /** 1738 /**
1681 * @param {boolean} enabled 1739 * @param {boolean} enabled
1682 * @param {boolean} inspectUAShadowDOM 1740 * @param {boolean} inspectUAShadowDOM
1683 * @param {!DOMAgent.HighlightConfig} config 1741 * @param {!DOMAgent.HighlightConfig} config
1684 * @param {function(?Protocol.Error)=} callback 1742 * @param {function(?Protocol.Error)=} callback
1685 */ 1743 */
1686 setInspectModeEnabled: function(enabled, inspectUAShadowDOM, config, callbac k) 1744 setInspectModeEnabled: function(enabled, inspectUAShadowDOM, config, callbac k)
1687 { 1745 {
1688 DOMAgent.setInspectModeEnabled(enabled, inspectUAShadowDOM, config, call back); 1746 this._agent.setInspectModeEnabled(enabled, inspectUAShadowDOM, config, c allback);
1689 } 1747 }
1690 } 1748 }
1691 1749
1692 /** 1750 /**
1693 * @type {!WebInspector.DOMModel} 1751 * @type {!WebInspector.DOMModel}
1694 */ 1752 */
1695 WebInspector.domModel; 1753 WebInspector.domModel;
OLDNEW
« no previous file with comments | « Source/devtools/front_end/CSSStyleModel.js ('k') | Source/devtools/front_end/DOMPresentationUtils.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698