Chromium Code Reviews| Index: third_party/WebKit/Source/devtools/front_end/components/ObjectPropertiesSection.js |
| diff --git a/third_party/WebKit/Source/devtools/front_end/components/ObjectPropertiesSection.js b/third_party/WebKit/Source/devtools/front_end/components/ObjectPropertiesSection.js |
| index 1caef0413a06aa74054ca3efc4b379c5298f2370..ab52d89f9a9a3b17abc732b1232bcb28087d7c48 100644 |
| --- a/third_party/WebKit/Source/devtools/front_end/components/ObjectPropertiesSection.js |
| +++ b/third_party/WebKit/Source/devtools/front_end/components/ObjectPropertiesSection.js |
| @@ -572,8 +572,13 @@ WebInspector.ObjectPropertyTreeElement.populateWithProperties = function(treeNod |
| treeNode.appendChild(new WebInspector.ObjectPropertyTreeElement(property)); |
| } |
| } |
| + var entries = null; |
| if (internalProperties) { |
| for (var i = 0; i < internalProperties.length; i++) { |
| + if (internalProperties[i].name === "[[Entries]]") { |
| + entries = internalProperties[i].value; |
| + continue; |
| + } |
| internalProperties[i].parentObject = value; |
| treeNode.appendChild(new WebInspector.ObjectPropertyTreeElement(internalProperties[i])); |
| } |
| @@ -595,8 +600,8 @@ WebInspector.ObjectPropertyTreeElement.populateWithProperties = function(treeNod |
| if (!hasTargetFunction) |
| treeNode.appendChild(new WebInspector.FunctionScopeMainTreeElement(value)); |
| } |
| - if (value && value.type === "object" && (value.subtype === "map" || value.subtype === "set" || value.subtype === "iterator")) |
| - treeNode.appendChild(new WebInspector.CollectionEntriesMainTreeElement(value)); |
| + if (entries) |
| + treeNode.appendChild(new WebInspector.CollectionEntriesMainTreeElement(entries)); |
| WebInspector.ObjectPropertyTreeElement._appendEmptyPlaceholderIfNeeded(treeNode, emptyPlaceholder); |
| } |
| @@ -730,14 +735,14 @@ WebInspector.FunctionScopeMainTreeElement.prototype = { |
| /** |
| * @constructor |
| * @extends {TreeElement} |
| - * @param {!WebInspector.RemoteObject} remoteObject |
| + * @param {!WebInspector.RemoteObject} entries |
| */ |
| -WebInspector.CollectionEntriesMainTreeElement = function(remoteObject) |
| +WebInspector.CollectionEntriesMainTreeElement = function(entries) |
| { |
| TreeElement.call(this, "<entries>", true); |
| this.toggleOnClick = true; |
| this.selectable = false; |
| - this._remoteObject = remoteObject; |
| + this._entries = entries; |
| this.expand(); |
| } |
| @@ -745,33 +750,29 @@ WebInspector.CollectionEntriesMainTreeElement.prototype = { |
| onpopulate: function() |
| { |
| /** |
| - * @param {?Array.<!DebuggerAgent.CollectionEntry>} entries |
| + * @param {?Array<!WebInspector.RemoteObjectProperty>} entries |
| * @this {WebInspector.CollectionEntriesMainTreeElement} |
| */ |
| - function didGetCollectionEntries(entries) |
| + function populateWithEntries(entries) |
| { |
| if (!entries) |
| return; |
| this.removeChildren(); |
| var entriesLocalObject = []; |
| - var runtimeModel = this._remoteObject.target().runtimeModel; |
| - for (var i = 0; i < entries.length; ++i) { |
| - var entry = entries[i]; |
| - if (entry.key) { |
| - entriesLocalObject.push(new WebInspector.MapEntryLocalJSONObject({ |
| - key: runtimeModel.createRemoteObject(entry.key), |
| - value: runtimeModel.createRemoteObject(entry.value) |
| - })); |
| - } else { |
| - entriesLocalObject.push(runtimeModel.createRemoteObject(entry.value)); |
| - } |
| + for (var entry of entries) { |
| + var name = entry.name; |
| + // Array index check according to the ES5-15.4. |
| + if (String(name >>> 0) !== name || name >>> 0 === 0xffffffff) |
|
dgozman
2016/06/28 01:20:46
Why do we have this check?
kozy
2016/06/28 18:41:49
getProperties return __proto__ and length properti
dgozman
2016/06/28 18:58:08
Let's have a variable |var isArrayIndex| and check
|
| + continue; |
| + var value = entry.value; |
| + entriesLocalObject.push(new WebInspector.EntryRemoteObject(value.target(), value.objectId, value.type, value.subtype, value.value, value.description, value.preview)); |
| } |
| WebInspector.ObjectPropertyTreeElement._populate(this, WebInspector.RemoteObject.fromLocalObject(entriesLocalObject), true, WebInspector.UIString("No Entries")); |
| this.title = "<entries>[" + entriesLocalObject.length + "]"; |
| } |
| - this._remoteObject.collectionEntries(didGetCollectionEntries.bind(this)); |
| + this._entries.getOwnProperties(populateWithEntries.bind(this), true); |
| }, |
| __proto__: TreeElement.prototype |