Index: Source/core/inspector/InjectedScriptSource.js |
diff --git a/Source/core/inspector/InjectedScriptSource.js b/Source/core/inspector/InjectedScriptSource.js |
index 022f48c7ef07551db8550e64ccb369deb775f787..37932a8efd7c7cc0c4f860aabc6d3b086c524a70 100644 |
--- a/Source/core/inspector/InjectedScriptSource.js |
+++ b/Source/core/inspector/InjectedScriptSource.js |
@@ -98,6 +98,17 @@ function bind(func, thisObject, var_args) |
} |
/** |
+ * @param {string} name |
+ * @return {boolean} |
+ */ |
+function isArrayIndexPropertyName(name) |
+{ |
+ // Array index check according to the ES5-15.4. |
+ var index = name >>> 0; |
+ return toString(index) === name && index !== 0xffffffff; |
+} |
+ |
+/** |
* @constructor |
*/ |
var InjectedScript = function() |
@@ -996,7 +1007,7 @@ InjectedScript.RemoteObject.prototype = { |
} |
for (var i = 0; i < descriptors.length; ++i) { |
- if (propertiesThreshold.indexes < 0 || propertiesThreshold.properties < 0) |
+ if (propertiesThreshold.indexes < 0 && propertiesThreshold.properties < 0) |
break; |
var descriptor = descriptors[i]; |
@@ -1006,8 +1017,6 @@ InjectedScript.RemoteObject.prototype = { |
preview.lossless = false; |
continue; |
} |
- if (!descriptor.enumerable && !descriptor.isOwn) |
- continue; |
var name = descriptor.name; |
if (name === "__proto__") |
@@ -1015,6 +1024,10 @@ InjectedScript.RemoteObject.prototype = { |
if (this.subtype === "array" && name === "length") |
continue; |
+ var isArrayIndex = (this.subtype === "array" && isArrayIndexPropertyName(name)); |
pfeldman
2014/01/23 16:19:02
Move subtype check to outside of the loop?
aandrey
2014/01/24 06:22:04
Done.
|
+ if (!descriptor.enumerable && !descriptor.isOwn && !isArrayIndex) |
+ continue; |
+ |
if (!("value" in descriptor)) { |
preview.lossless = false; |
this._appendPropertyPreview(preview, { name: name, type: "accessor" }, propertiesThreshold); |
@@ -1080,11 +1093,12 @@ InjectedScript.RemoteObject.prototype = { |
*/ |
_appendPropertyPreview: function(preview, property, propertiesThreshold) |
{ |
- if (toString(property.name >>> 0) === property.name) |
- propertiesThreshold.indexes--; |
+ var threshold; |
+ if (isArrayIndexPropertyName(property.name)) |
+ threshold = --propertiesThreshold.indexes; |
else |
- propertiesThreshold.properties--; |
- if (propertiesThreshold.indexes < 0 || propertiesThreshold.properties < 0) { |
+ threshold = --propertiesThreshold.properties; |
+ if (threshold < 0) { |
preview.overflow = true; |
preview.lossless = false; |
} else { |