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 |