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

Side by Side Diff: Source/devtools/front_end/components/ObjectPropertiesSection.js

Issue 944343002: DevTools: migrate treeoutline from hasChildren to is/setExpandable(). (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 10 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) 2008 Apple Inc. All Rights Reserved. 2 * Copyright (C) 2008 Apple 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 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 this.startEditing(event); 170 this.startEditing(event);
171 return false; 171 return false;
172 }, 172 },
173 173
174 /** 174 /**
175 * @override 175 * @override
176 */ 176 */
177 onattach: function() 177 onattach: function()
178 { 178 {
179 this.update(); 179 this.update();
180 if (this.property.value)
sergeyv 2015/02/24 13:03:16 lets move this to constructor
181 this.setExpandable(this.property.value.hasChildren && !this.property .wasThrown);
180 }, 182 },
181 183
182 update: function() 184 update: function()
183 { 185 {
184 this.nameElement = WebInspector.ObjectPropertiesSection.createNameElemen t(this.property.name); 186 this.nameElement = WebInspector.ObjectPropertiesSection.createNameElemen t(this.property.name);
185 if (!this.property.enumerable) 187 if (!this.property.enumerable)
186 this.nameElement.classList.add("dimmed"); 188 this.nameElement.classList.add("dimmed");
187 if (this.property.isAccessorProperty()) 189 if (this.property.isAccessorProperty())
188 this.nameElement.classList.add("properties-accessor-property-name"); 190 this.nameElement.classList.add("properties-accessor-property-name");
189 if (this.property.symbol) 191 if (this.property.symbol)
190 this.nameElement.addEventListener("contextmenu", this._contextMenuFi red.bind(this, this.property.symbol), false); 192 this.nameElement.addEventListener("contextmenu", this._contextMenuFi red.bind(this, this.property.symbol), false);
191 193
192 if (this.property.value) { 194 if (this.property.value) {
193 this.valueElement = WebInspector.ObjectPropertiesSection.createValue Element(this.property.value, this.property.wasThrown, this.listItemElement); 195 this.valueElement = WebInspector.ObjectPropertiesSection.createValue Element(this.property.value, this.property.wasThrown, this.listItemElement);
194 this.valueElement.addEventListener("contextmenu", this._contextMenuF ired.bind(this, this.property.value), false); 196 this.valueElement.addEventListener("contextmenu", this._contextMenuF ired.bind(this, this.property.value), false);
195 this.hasChildren = this.property.value.hasChildren && !this.property .wasThrown;
196 } else if (this.property.getter) { 197 } else if (this.property.getter) {
197 this.valueElement = WebInspector.ObjectPropertyTreeElement.createRem oteObjectAccessorPropertySpan(this.property.parentObject, [this.property.name], this._onInvokeGetterClick.bind(this)); 198 this.valueElement = WebInspector.ObjectPropertyTreeElement.createRem oteObjectAccessorPropertySpan(this.property.parentObject, [this.property.name], this._onInvokeGetterClick.bind(this));
198 } else { 199 } else {
199 this.valueElement = createElementWithClass("span", "console-formatte d-undefined"); 200 this.valueElement = createElementWithClass("span", "console-formatte d-undefined");
200 this.valueElement.textContent = WebInspector.UIString("<unreadable>" ); 201 this.valueElement.textContent = WebInspector.UIString("<unreadable>" );
201 this.valueElement.title = WebInspector.UIString("No property getter" ); 202 this.valueElement.title = WebInspector.UIString("No property getter" );
202 } 203 }
203 204
204 var separatorElement = createElementWithClass("span", "separator"); 205 var separatorElement = createElementWithClass("span", "separator");
205 separatorElement.textContent = ": "; 206 separatorElement.textContent = ": ";
(...skipping 27 matching lines...) Expand all
233 if (WebInspector.isBeingEdited(this.valueElement) || !this.treeOutline.s ection.editable || this._readOnly) 234 if (WebInspector.isBeingEdited(this.valueElement) || !this.treeOutline.s ection.editable || this._readOnly)
234 return; 235 return;
235 236
236 // Edit original source. 237 // Edit original source.
237 if (typeof valueToEdit !== "undefined") 238 if (typeof valueToEdit !== "undefined")
238 this.valueElement.setTextContentTruncatedIfNeeded(valueToEdit, WebIn spector.UIString("<string is too large to edit>")); 239 this.valueElement.setTextContentTruncatedIfNeeded(valueToEdit, WebIn spector.UIString("<string is too large to edit>"));
239 240
240 var context = { expanded: this.expanded, previousContent: this.valueElem ent.textContent }; 241 var context = { expanded: this.expanded, previousContent: this.valueElem ent.textContent };
241 242
242 // Lie about our children to prevent expanding on double click and to co llapse subproperties. 243 // Lie about our children to prevent expanding on double click and to co llapse subproperties.
243 this.hasChildren = false; 244 this.setExpandable(false);
244 245
245 this.listItemElement.classList.add("editing-sub-part"); 246 this.listItemElement.classList.add("editing-sub-part");
246 247
247 this._prompt = new WebInspector.ObjectPropertyPrompt(); 248 this._prompt = new WebInspector.ObjectPropertyPrompt();
248 249
249 /** 250 /**
250 * @this {WebInspector.ObjectPropertyTreeElement} 251 * @this {WebInspector.ObjectPropertyTreeElement}
251 */ 252 */
252 function blurListener() 253 function blurListener()
253 { 254 {
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after
520 return rootElement; 521 return rootElement;
521 } 522 }
522 523
523 /** 524 /**
524 * @constructor 525 * @constructor
525 * @extends {TreeElement} 526 * @extends {TreeElement}
526 * @param {!WebInspector.RemoteObject} remoteObject 527 * @param {!WebInspector.RemoteObject} remoteObject
527 */ 528 */
528 WebInspector.FunctionScopeMainTreeElement = function(remoteObject) 529 WebInspector.FunctionScopeMainTreeElement = function(remoteObject)
529 { 530 {
530 TreeElement.call(this, "<function scope>"); 531 TreeElement.call(this, "<function scope>", true);
531 this.toggleOnClick = true; 532 this.toggleOnClick = true;
532 this.selectable = false; 533 this.selectable = false;
533 this._remoteObject = remoteObject; 534 this._remoteObject = remoteObject;
534 this.hasChildren = true;
535 } 535 }
536 536
537 WebInspector.FunctionScopeMainTreeElement.prototype = { 537 WebInspector.FunctionScopeMainTreeElement.prototype = {
538 onpopulate: function() 538 onpopulate: function()
539 { 539 {
540 /** 540 /**
541 * @param {?WebInspector.DebuggerModel.FunctionDetails} response 541 * @param {?WebInspector.DebuggerModel.FunctionDetails} response
542 * @this {WebInspector.FunctionScopeMainTreeElement} 542 * @this {WebInspector.FunctionScopeMainTreeElement}
543 */ 543 */
544 function didGetDetails(response) 544 function didGetDetails(response)
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
607 __proto__: TreeElement.prototype 607 __proto__: TreeElement.prototype
608 } 608 }
609 609
610 /** 610 /**
611 * @constructor 611 * @constructor
612 * @extends {TreeElement} 612 * @extends {TreeElement}
613 * @param {!WebInspector.RemoteObject} remoteObject 613 * @param {!WebInspector.RemoteObject} remoteObject
614 */ 614 */
615 WebInspector.CollectionEntriesMainTreeElement = function(remoteObject) 615 WebInspector.CollectionEntriesMainTreeElement = function(remoteObject)
616 { 616 {
617 TreeElement.call(this, "<entries>"); 617 TreeElement.call(this, "<entries>", true);
618 this.toggleOnClick = true; 618 this.toggleOnClick = true;
619 this.selectable = false; 619 this.selectable = false;
620 this._remoteObject = remoteObject; 620 this._remoteObject = remoteObject;
621 this.hasChildren = true;
622 this.expand(); 621 this.expand();
623 } 622 }
624 623
625 WebInspector.CollectionEntriesMainTreeElement.prototype = { 624 WebInspector.CollectionEntriesMainTreeElement.prototype = {
626 onpopulate: function() 625 onpopulate: function()
627 { 626 {
628 /** 627 /**
629 * @param {?Array.<!DebuggerAgent.CollectionEntry>} entries 628 * @param {?Array.<!DebuggerAgent.CollectionEntry>} entries
630 * @this {WebInspector.CollectionEntriesMainTreeElement} 629 * @this {WebInspector.CollectionEntriesMainTreeElement}
631 */ 630 */
(...skipping 27 matching lines...) Expand all
659 } 658 }
660 659
661 /** 660 /**
662 * @constructor 661 * @constructor
663 * @extends {TreeElement} 662 * @extends {TreeElement}
664 * @param {string} title 663 * @param {string} title
665 * @param {!WebInspector.RemoteObject} remoteObject 664 * @param {!WebInspector.RemoteObject} remoteObject
666 */ 665 */
667 WebInspector.ScopeTreeElement = function(title, remoteObject) 666 WebInspector.ScopeTreeElement = function(title, remoteObject)
668 { 667 {
669 TreeElement.call(this, title); 668 TreeElement.call(this, title, true);
670 this.toggleOnClick = true; 669 this.toggleOnClick = true;
671 this.selectable = false; 670 this.selectable = false;
672 this._remoteObject = remoteObject; 671 this._remoteObject = remoteObject;
673 this.hasChildren = true;
674 } 672 }
675 673
676 WebInspector.ScopeTreeElement.prototype = { 674 WebInspector.ScopeTreeElement.prototype = {
677 onpopulate: function() 675 onpopulate: function()
678 { 676 {
679 WebInspector.ObjectPropertyTreeElement._populate(this, this._remoteObjec t, false); 677 WebInspector.ObjectPropertyTreeElement._populate(this, this._remoteObjec t, false);
680 }, 678 },
681 679
682 __proto__: TreeElement.prototype 680 __proto__: TreeElement.prototype
683 } 681 }
684 682
685 /** 683 /**
686 * @constructor 684 * @constructor
687 * @extends {TreeElement} 685 * @extends {TreeElement}
688 * @param {!WebInspector.RemoteObject} object 686 * @param {!WebInspector.RemoteObject} object
689 * @param {number} fromIndex 687 * @param {number} fromIndex
690 * @param {number} toIndex 688 * @param {number} toIndex
691 * @param {number} propertyCount 689 * @param {number} propertyCount
692 */ 690 */
693 WebInspector.ArrayGroupingTreeElement = function(object, fromIndex, toIndex, pro pertyCount) 691 WebInspector.ArrayGroupingTreeElement = function(object, fromIndex, toIndex, pro pertyCount)
694 { 692 {
695 TreeElement.call(this, String.sprintf("[%d \u2026 %d]", fromIndex, toIndex), true); 693 TreeElement.call(this, String.sprintf("[%d \u2026 %d]", fromIndex, toIndex), true);
696 this.toggleOnClick = true; 694 this.toggleOnClick = true;
697 this.selectable = false; 695 this.selectable = false;
698 this._fromIndex = fromIndex; 696 this._fromIndex = fromIndex;
699 this._toIndex = toIndex; 697 this._toIndex = toIndex;
700 this._object = object; 698 this._object = object;
701 this._readOnly = true; 699 this._readOnly = true;
702 this._propertyCount = propertyCount; 700 this._propertyCount = propertyCount;
703 this._populated = false;
704 } 701 }
705 702
706 WebInspector.ArrayGroupingTreeElement._bucketThreshold = 100; 703 WebInspector.ArrayGroupingTreeElement._bucketThreshold = 100;
707 WebInspector.ArrayGroupingTreeElement._sparseIterationThreshold = 250000; 704 WebInspector.ArrayGroupingTreeElement._sparseIterationThreshold = 250000;
708 WebInspector.ArrayGroupingTreeElement._getOwnPropertyNamesThreshold = 500000; 705 WebInspector.ArrayGroupingTreeElement._getOwnPropertyNamesThreshold = 500000;
709 706
710 /** 707 /**
711 * @param {!TreeElement} treeNode 708 * @param {!TreeElement} treeNode
712 * @param {!WebInspector.RemoteObject} object 709 * @param {!WebInspector.RemoteObject} object
713 * @param {number} fromIndex 710 * @param {number} fromIndex
(...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after
963 var childTreeElement = new WebInspector.ObjectPropertyTreeElement(pr operties[i]); 960 var childTreeElement = new WebInspector.ObjectPropertyTreeElement(pr operties[i]);
964 childTreeElement._readOnly = true; 961 childTreeElement._readOnly = true;
965 treeNode.appendChild(childTreeElement); 962 treeNode.appendChild(childTreeElement);
966 } 963 }
967 } 964 }
968 } 965 }
969 966
970 WebInspector.ArrayGroupingTreeElement.prototype = { 967 WebInspector.ArrayGroupingTreeElement.prototype = {
971 onpopulate: function() 968 onpopulate: function()
972 { 969 {
973 if (this._populated)
974 return;
975
976 this._populated = true;
977
978 if (this._propertyCount >= WebInspector.ArrayGroupingTreeElement._bucket Threshold) { 970 if (this._propertyCount >= WebInspector.ArrayGroupingTreeElement._bucket Threshold) {
979 WebInspector.ArrayGroupingTreeElement._populateRanges(this, this._ob ject, this._fromIndex, this._toIndex, false); 971 WebInspector.ArrayGroupingTreeElement._populateRanges(this, this._ob ject, this._fromIndex, this._toIndex, false);
980 return; 972 return;
981 } 973 }
982 WebInspector.ArrayGroupingTreeElement._populateAsFragment(this, this._ob ject, this._fromIndex, this._toIndex); 974 WebInspector.ArrayGroupingTreeElement._populateAsFragment(this, this._ob ject, this._fromIndex, this._toIndex);
983 }, 975 },
984 976
985 onattach: function() 977 onattach: function()
986 { 978 {
987 this.listItemElement.classList.add("name"); 979 this.listItemElement.classList.add("name");
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
1084 value.highlightAsDOMNode(); 1076 value.highlightAsDOMNode();
1085 } 1077 }
1086 1078
1087 function mouseLeave() 1079 function mouseLeave()
1088 { 1080 {
1089 value.hideDOMNodeHighlight(); 1081 value.hideDOMNodeHighlight();
1090 } 1082 }
1091 1083
1092 return valueElement; 1084 return valueElement;
1093 } 1085 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698