Diff
Modified: trunk/LayoutTests/ChangeLog (143236 => 143237)
--- trunk/LayoutTests/ChangeLog 2013-02-18 17:42:03 UTC (rev 143236)
+++ trunk/LayoutTests/ChangeLog 2013-02-18 17:45:15 UTC (rev 143237)
@@ -1,3 +1,15 @@
+2013-02-18 Andrey Adaikin <[email protected]>
+
+ Web Inspector: [Canvas] fix replay log grouping by frames
+ https://bugs.webkit.org/show_bug.cgi?id=110122
+
+ Reviewed by Pavel Feldman.
+
+ Canvas replay test: last command is not a draw call.
+
+ * inspector/profiler/canvas2d/canvas-replay-log-grid-expected.txt:
+ * inspector/profiler/canvas2d/canvas-replay-log-grid.html:
+
2013-02-18 Stephen White <[email protected]>
[chromium] Unreviewed gardening.
Modified: trunk/LayoutTests/inspector/profiler/canvas2d/canvas-replay-log-grid-expected.txt (143236 => 143237)
--- trunk/LayoutTests/inspector/profiler/canvas2d/canvas-replay-log-grid-expected.txt 2013-02-18 17:42:03 UTC (rev 143236)
+++ trunk/LayoutTests/inspector/profiler/canvas2d/canvas-replay-log-grid-expected.txt 2013-02-18 17:45:15 UTC (rev 143237)
@@ -4,29 +4,39 @@
| Frame #1 | | |
| Draw call group #1 | | |
- 1 | beginPath() | canvas-replay-log-grid.html:26 | |
- 2 | rect(0, 0, 100, 100) | canvas-replay-log-grid.html:27 | |
- 3 | context.fillStyle = red | canvas-replay-log-grid.html:28 | |
- 4 | fill() | canvas-replay-log-grid.html:29 | |
+ 1 | save() | canvas-replay-log-grid.html:26 | |
+ 2 | beginPath() | canvas-replay-log-grid.html:27 | |
+ 3 | rect(0, 0, 100, 100) | canvas-replay-log-grid.html:28 | |
+ 4 | context.fillStyle = red | canvas-replay-log-grid.html:29 | |
+ 5 | fill() | canvas-replay-log-grid.html:30 | |
| Draw call group #2 | | |
- 5 | beginPath() | canvas-replay-log-grid.html:26 | |
- 6 | rect(5, 5, 95, 95) | canvas-replay-log-grid.html:27 | |
- 7 | context.fillStyle = green | canvas-replay-log-grid.html:28 | |
- 8 | fill() | canvas-replay-log-grid.html:29 | |
+ 6 | restore() | canvas-replay-log-grid.html:31 | |
+ 7 | save() | canvas-replay-log-grid.html:26 | |
+ 8 | beginPath() | canvas-replay-log-grid.html:27 | |
+ 9 | rect(5, 5, 95, 95) | canvas-replay-log-grid.html:28 | |
+10 | context.fillStyle = green | canvas-replay-log-grid.html:29 | |
+11 | fill() | canvas-replay-log-grid.html:30 | |
+12 | restore() | canvas-replay-log-grid.html:31 | |
| Frame #2 | | |
| Draw call group #3 | | |
- 9 | beginPath() | canvas-replay-log-grid.html:26 | |
-10 | rect(10, 10, 90, 90) | canvas-replay-log-grid.html:27 | |
-11 | context.fillStyle = blue | canvas-replay-log-grid.html:28 | |
-12 | fill() | canvas-replay-log-grid.html:29 | |
+13 | save() | canvas-replay-log-grid.html:26 | |
+14 | beginPath() | canvas-replay-log-grid.html:27 | |
+15 | rect(10, 10, 90, 90) | canvas-replay-log-grid.html:28 | |
+16 | context.fillStyle = blue | canvas-replay-log-grid.html:29 | |
+17 | fill() | canvas-replay-log-grid.html:30 | |
| Draw call group #4 | | |
-13 | beginPath() | canvas-replay-log-grid.html:26 | |
-14 | rect(15, 15, 85, 85) | canvas-replay-log-grid.html:27 | |
-15 | context.fillStyle = yellow | canvas-replay-log-grid.html:28 | |
-16 | fill() | canvas-replay-log-grid.html:29 | |
+18 | restore() | canvas-replay-log-grid.html:31 | |
+19 | save() | canvas-replay-log-grid.html:26 | |
+20 | beginPath() | canvas-replay-log-grid.html:27 | |
+21 | rect(15, 15, 85, 85) | canvas-replay-log-grid.html:28 | |
+22 | context.fillStyle = yellow | canvas-replay-log-grid.html:29 | |
+23 | fill() | canvas-replay-log-grid.html:30 | |
| Draw call group #5 | | |
-17 | beginPath() | canvas-replay-log-grid.html:26 | |
-18 | rect(20, 20, 80, 80) | canvas-replay-log-grid.html:27 | |
-19 | context.fillStyle = black | canvas-replay-log-grid.html:28 | |
-20 | fill() | canvas-replay-log-grid.html:29 | |
+24 | restore() | canvas-replay-log-grid.html:31 | |
+25 | save() | canvas-replay-log-grid.html:26 | |
+26 | beginPath() | canvas-replay-log-grid.html:27 | |
+27 | rect(20, 20, 80, 80) | canvas-replay-log-grid.html:28 | |
+28 | context.fillStyle = black | canvas-replay-log-grid.html:29 | |
+29 | fill() | canvas-replay-log-grid.html:30 | |
+30 | restore() | canvas-replay-log-grid.html:31 | |
Modified: trunk/LayoutTests/inspector/profiler/canvas2d/canvas-replay-log-grid.html (143236 => 143237)
--- trunk/LayoutTests/inspector/profiler/canvas2d/canvas-replay-log-grid.html 2013-02-18 17:42:03 UTC (rev 143236)
+++ trunk/LayoutTests/inspector/profiler/canvas2d/canvas-replay-log-grid.html 2013-02-18 17:45:15 UTC (rev 143237)
@@ -23,10 +23,12 @@
repeats = repeats || 1;
while (repeats-- > 0) {
var offset = 5 * round;
+ context.save();
context.beginPath();
context.rect(offset, offset, 100 - offset, 100 - offset);
context.fillStyle = colors[round % colors.length];
context.fill();
+ context.restore();
++round;
}
}
Modified: trunk/Source/WebCore/ChangeLog (143236 => 143237)
--- trunk/Source/WebCore/ChangeLog 2013-02-18 17:42:03 UTC (rev 143236)
+++ trunk/Source/WebCore/ChangeLog 2013-02-18 17:45:15 UTC (rev 143237)
@@ -1,3 +1,17 @@
+2013-02-18 Andrey Adaikin <[email protected]>
+
+ Web Inspector: [Canvas] fix replay log grouping by frames
+ https://bugs.webkit.org/show_bug.cgi?id=110122
+
+ Reviewed by Pavel Feldman.
+
+ Bug: log grouping by frames did not work if a frame end call is not a draw call.
+ Drive-by: Last draw call group may not contain a draw call. In this case merge it into the previous group.
+
+ * inspector/front-end/CanvasProfileView.js:
+ (WebInspector.CanvasProfileView.prototype._appendCallNode):
+ (WebInspector.CanvasProfileView.prototype._maybeMergeLastDrawCallGroups):
+
2013-02-18 Christophe Dumez <[email protected]>
[Soup] Superfluous HashMap check in SocketStreamHandleSoup::getHandleFromId()
Modified: trunk/Source/WebCore/inspector/front-end/CanvasProfileView.js (143236 => 143237)
--- trunk/Source/WebCore/inspector/front-end/CanvasProfileView.js 2013-02-18 17:42:03 UTC (rev 143236)
+++ trunk/Source/WebCore/inspector/front-end/CanvasProfileView.js 2013-02-18 17:45:15 UTC (rev 143237)
@@ -359,7 +359,7 @@
var drawCallGroup = this._drawCallGroups.peekLast();
if (drawCallGroup) {
var lastNode = drawCallGroup.children.peekLast();
- if (lastNode && lastNode.call.isDrawingCall)
+ if (lastNode && (lastNode.call.isDrawingCall || lastNode.call.isFrameEndCall))
drawCallGroup = null;
}
if (!drawCallGroup) {
@@ -375,6 +375,8 @@
this._appendDrawCallGroup(drawCallGroup);
}
drawCallGroup.appendChild(gridNode);
+ if (gridNode.call.isFrameEndCall)
+ this._maybeMergeLastDrawCallGroups();
},
/**
@@ -404,6 +406,26 @@
frameGroup.appendChild(drawCallGroup);
},
+ _maybeMergeLastDrawCallGroups: function()
+ {
+ var frameGroup = this._frameGroups.peekLast();
+ if (!frameGroup)
+ return;
+ var groups = frameGroup.children.length;
+ if (groups < 2)
+ return;
+ var src = "" - 1]
+ for (var i = 0, n = src.children.length; i < n; ++i) {
+ if (src.children[i].call.isDrawingCall)
+ return;
+ }
+ var dst = frameGroup.children[groups - 2];
+ while (src.children.length)
+ dst.appendChild(src.children[0]);
+ frameGroup.removeChild(src);
+ this._drawCallGroups.pop();
+ },
+
/**
* @param {number} index
* @param {CanvasAgent.Call} call