| Index: Source/devtools/front_end/HeapSnapshotGridNodes.js
|
| diff --git a/Source/devtools/front_end/HeapSnapshotGridNodes.js b/Source/devtools/front_end/HeapSnapshotGridNodes.js
|
| index a20d45d413933d55a776ed6197bb074a810b5b93..adb8674b25925b32465887a15be2fe961f4016ad 100644
|
| --- a/Source/devtools/front_end/HeapSnapshotGridNodes.js
|
| +++ b/Source/devtools/front_end/HeapSnapshotGridNodes.js
|
| @@ -92,12 +92,18 @@ WebInspector.HeapSnapshotGridNode.prototype = {
|
| return cell;
|
| },
|
|
|
| + /**
|
| + * @override
|
| + */
|
| collapse: function()
|
| {
|
| WebInspector.DataGridNode.prototype.collapse.call(this);
|
| this._dataGrid.updateVisibleNodes();
|
| },
|
|
|
| + /**
|
| + * @override
|
| + */
|
| dispose: function()
|
| {
|
| if (this._providerObject)
|
| @@ -127,23 +133,43 @@ WebInspector.HeapSnapshotGridNode.prototype = {
|
| },
|
|
|
| /**
|
| + * @return {!Array.<!WebInspector.DataGridNode>}
|
| + */
|
| + allChildren: function()
|
| + {
|
| + return this.children;
|
| + },
|
| +
|
| + /**
|
| + * @param {number} index
|
| + */
|
| + removeChildByIndex: function(index)
|
| + {
|
| + this.removeChild(this.children[index]);
|
| + },
|
| +
|
| + /**
|
| * @param {number} nodePosition
|
| * @return {?WebInspector.DataGridNode}
|
| */
|
| childForPosition: function(nodePosition)
|
| {
|
| - var indexOfFirsChildInRange = 0;
|
| + var indexOfFirstChildInRange = 0;
|
| for (var i = 0; i < this._retrievedChildrenRanges.length; i++) {
|
| var range = this._retrievedChildrenRanges[i];
|
| if (range.from <= nodePosition && nodePosition < range.to) {
|
| - var childIndex = indexOfFirsChildInRange + nodePosition - range.from;
|
| - return this.children[childIndex];
|
| + var childIndex = indexOfFirstChildInRange + nodePosition - range.from;
|
| + return this.allChildren()[childIndex];
|
| }
|
| - indexOfFirsChildInRange += range.to - range.from + 1;
|
| + indexOfFirstChildInRange += range.to - range.from + 1;
|
| }
|
| return null;
|
| },
|
|
|
| + /**
|
| + * @param {string} columnIdentifier
|
| + * @return {!Element}
|
| + */
|
| _createValueCell: function(columnIdentifier)
|
| {
|
| var cell = document.createElement("td");
|
| @@ -277,7 +303,7 @@ WebInspector.HeapSnapshotGridNode.prototype = {
|
|
|
| if (!found || itemsRange.startPosition < range.from) {
|
| // Update previous button.
|
| - this.children[insertionIndex - 1].setEndPosition(itemsRange.startPosition);
|
| + this.allChildren()[insertionIndex - 1].setEndPosition(itemsRange.startPosition);
|
| insertShowMoreButton.call(this, itemsRange.startPosition, found ? range.from : itemsRange.totalLength, insertionIndex);
|
| range = {from: itemsRange.startPosition, to: itemsRange.startPosition};
|
| if (!found)
|
| @@ -310,15 +336,15 @@ WebInspector.HeapSnapshotGridNode.prototype = {
|
| if (nextRange && newEndOfRange === nextRange.from) {
|
| range.to = nextRange.to;
|
| // Remove "show next" button if there is one.
|
| - this.removeChild(this.children[insertionIndex]);
|
| + this.removeChildByIndex(insertionIndex);
|
| this._retrievedChildrenRanges.splice(rangeIndex + 1, 1);
|
| } else {
|
| range.to = newEndOfRange;
|
| // Remove or update next button.
|
| if (newEndOfRange === itemsRange.totalLength)
|
| - this.removeChild(this.children[insertionIndex]);
|
| + this.removeChildByIndex(insertionIndex);
|
| else
|
| - this.children[insertionIndex].setStartPosition(itemsRange.endPosition);
|
| + this.allChildren()[insertionIndex].setStartPosition(itemsRange.endPosition);
|
| }
|
| }
|
| }
|
| @@ -340,8 +366,9 @@ WebInspector.HeapSnapshotGridNode.prototype = {
|
| _saveChildren: function()
|
| {
|
| this._savedChildren = null;
|
| - for (var i = 0, childrenCount = this.children.length; i < childrenCount; ++i) {
|
| - var child = this.children[i];
|
| + var children = this.allChildren();
|
| + for (var i = 0, l = children.length; i < l; ++i) {
|
| + var child = children[i];
|
| if (!child.expanded)
|
| continue;
|
| if (!this._savedChildren)
|
| @@ -368,8 +395,9 @@ WebInspector.HeapSnapshotGridNode.prototype = {
|
| */
|
| function afterPopulate()
|
| {
|
| - for (var i = 0, l = this.children.length; i < l; ++i) {
|
| - var child = this.children[i];
|
| + var children = this.allChildren();
|
| + for (var i = 0, l = children.length; i < l; ++i) {
|
| + var child = children[i];
|
| if (child.expanded)
|
| child.sort();
|
| }
|
| @@ -837,6 +865,7 @@ WebInspector.HeapSnapshotConstructorNode.prototype = {
|
|
|
| /**
|
| * @this {WebInspector.HeapSnapshotConstructorNode}
|
| + * @param {number} nodePosition
|
| */
|
| function didGetNodePosition(nodePosition)
|
| {
|
| @@ -850,22 +879,14 @@ WebInspector.HeapSnapshotConstructorNode.prototype = {
|
|
|
| /**
|
| * @this {WebInspector.HeapSnapshotConstructorNode}
|
| + * @param {number} nodePosition
|
| */
|
| function didPopulateChildren(nodePosition)
|
| {
|
| - var indexOfFirsChildInRange = 0;
|
| - for (var i = 0; i < this._retrievedChildrenRanges.length; i++) {
|
| - var range = this._retrievedChildrenRanges[i];
|
| - if (range.from <= nodePosition && nodePosition < range.to) {
|
| - var childIndex = indexOfFirsChildInRange + nodePosition - range.from;
|
| - var instanceNode = this.children[childIndex];
|
| - this._dataGrid.highlightNode(/** @type {!WebInspector.HeapSnapshotGridNode} */ (instanceNode));
|
| - callback(true);
|
| - return;
|
| - }
|
| - indexOfFirsChildInRange += range.to - range.from + 1;
|
| - }
|
| - callback(false);
|
| + var child = this.childForPosition(nodePosition);
|
| + if (child)
|
| + this._dataGrid.highlightNode(/** @type {!WebInspector.HeapSnapshotGridNode} */ (child));
|
| + callback(!!child);
|
| }
|
|
|
| this.expandWithoutPopulate(didExpand.bind(this));
|
|
|