Web Inspector: array grouping does not work for arrays with exactly 10000 elements.
authorpfeldman@chromium.org <pfeldman@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 23 Oct 2012 17:04:39 +0000 (17:04 +0000)
committerpfeldman@chromium.org <pfeldman@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 23 Oct 2012 17:04:39 +0000 (17:04 +0000)
https://bugs.webkit.org/show_bug.cgi?id=100131

Reviewed by Vsevolod Vlasov.

Source/WebCore:

Using ceil() - 1 instead of floor() in bucket size calculation.

* inspector/front-end/ObjectPropertiesSection.js:

LayoutTests:

* inspector/console/console-big-array-expected.txt:
* inspector/console/console-big-array.html:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@132238 268f45cc-cd09-0410-ab3c-d52691b4dbfc

LayoutTests/ChangeLog
LayoutTests/inspector/console/console-big-array-expected.txt
LayoutTests/inspector/console/console-big-array.html
Source/WebCore/ChangeLog
Source/WebCore/inspector/front-end/ObjectPropertiesSection.js

index 1180c87..e5231b0 100644 (file)
@@ -1,3 +1,13 @@
+2012-10-23  Pavel Feldman  <pfeldman@chromium.org>
+
+        Web Inspector: array grouping does not work for arrays with exactly 10000 elements.
+        https://bugs.webkit.org/show_bug.cgi?id=100131
+
+        Reviewed by Vsevolod Vlasov.
+
+        * inspector/console/console-big-array-expected.txt:
+        * inspector/console/console-big-array.html:
+
 2012-10-23  Shinya Kawanaka  <shinyak@chromium.org>
 
         The order of resolving distribution in tree composition is wrong.
index 62e748f..2fead65 100644 (file)
@@ -1,5 +1,7 @@
 CONSOLE MESSAGE: line 13: 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100
-CONSOLE MESSAGE: line 19: 0,1,2,3,4,5,6,7,8,9,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100
+CONSOLE MESSAGE: line 18: ,,,,,,,,,
+CONSOLE MESSAGE: line 24: 0,1,2,3,4,5,6,7,8,9,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100
+CONSOLE MESSAGE: line 29: 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404
 Tests that console logging dumps large arrays properly.
 
 
@@ -54,6 +56,20 @@ Array[101]
     length: 101
     __proto__: Array[0] console-big-array.html:13
 
+Array[10]
+    0: undefined
+    1: undefined
+    2: undefined
+    3: undefined
+    4: undefined
+    5: undefined
+    6: undefined
+    7: undefined
+    8: undefined
+    9: undefined
+    length: 10
+    __proto__: Array[0] console-big-array.html:18
+
 Array[101]
     0: 0
     1: 1
@@ -67,5 +83,36 @@ Array[101]
     9: 9
     100: 100
     length: 101
-    __proto__: Array[0] console-big-array.html:19
+    __proto__: Array[0] console-big-array.html:24
+
+Array[405]
+    [0 … 399]
+    [0 … 19]
+    [20 … 39]
+    [40 … 59]
+    [60 … 79]
+    [80 … 99]
+    [100 … 119]
+    [120 … 139]
+    [140 … 159]
+    [160 … 179]
+    [180 … 199]
+    [200 … 219]
+    [220 … 239]
+    [240 … 259]
+    [260 … 279]
+    [280 … 299]
+    [300 … 319]
+    [320 … 339]
+    [340 … 359]
+    [360 … 379]
+    [380 … 399]
+    [400 … 404]
+    400: 400
+    401: 401
+    402: 402
+    403: 403
+    404: 404
+    length: 405
+    __proto__: Array[0] console-big-array.html:29
 
index 08b839b..72ba6cf 100644 (file)
@@ -14,10 +14,20 @@ function onload()
 
     var b = [];
     for (var i = 0; i < 10; ++i)
-        b[i] = i;
-    b[100] = 100;
+      b[i] = undefined;
     console.dir(b);
 
+    var c = [];
+    for (var i = 0; i < 10; ++i)
+        c[i] = i;
+    c[100] = 100;
+    console.dir(c);
+
+    var d = [];
+    for (var i = 0; i < 405; ++i)
+      d[i] = i;
+    console.dir(d);
+
     runTest();
 }
 
@@ -44,7 +54,7 @@ function test()
     var populated = false;
     function populateCalled()
     {
-        populated = this._toIndex == 100;
+        populated = this._toIndex == 404;
     }
 
     InspectorTest.runAfterPendingDispatches(expandRecursively);
index 047e82c..406de3c 100644 (file)
@@ -1,3 +1,14 @@
+2012-10-23  Pavel Feldman  <pfeldman@chromium.org>
+
+        Web Inspector: array grouping does not work for arrays with exactly 10000 elements.
+        https://bugs.webkit.org/show_bug.cgi?id=100131
+
+        Reviewed by Vsevolod Vlasov.
+
+        Using ceil() - 1 instead of floor() in bucket size calculation.
+
+        * inspector/front-end/ObjectPropertiesSection.js:
+
 2012-10-23  Shinya Kawanaka  <shinyak@chromium.org>
 
         The order of resolving distribution in tree composition is wrong.
index 62560d4..8b26651 100644 (file)
@@ -603,8 +603,7 @@ WebInspector.ArrayGroupingTreeElement._populateRanges = function(treeElement, ob
     {
         var count = 0;
         for (var i = fromIndex; i <= toIndex; ++i) {
-            var value = this[i];
-            if (typeof value !== "undefined")
+            if (i in this)
                 ++count;
         }
 
@@ -612,15 +611,14 @@ WebInspector.ArrayGroupingTreeElement._populateRanges = function(treeElement, ob
         if (count <= bucketThreshold)
             bucketSize = count;
         else
-            bucketSize = Math.pow(bucketThreshold, Math.floor(Math.log(count) / Math.log(bucketThreshold)));
+            bucketSize = Math.pow(bucketThreshold, Math.ceil(Math.log(count) / Math.log(bucketThreshold)) - 1);
 
         var ranges = [];
         count = 0;
         var groupStart = -1;
         var groupEnd = 0;
         for (var i = fromIndex; i <= toIndex; ++i) {
-            var value = this[i];
-            if (typeof value === "undefined")
+            if (!(i in this))
                 continue;
 
             if (groupStart === -1)
@@ -678,9 +676,8 @@ WebInspector.ArrayGroupingTreeElement._populateAsFragment = function(treeElement
     {
         var result = Object.create(null);
         for (var i = fromIndex; i <= toIndex; ++i) {
-            var value = this[i];
-            if (typeof value !== "undefined")
-                result[i] = value;
+            if (i in this)
+                result[i] = this[i];
         }
         return result;
     }