Remove webkitGetImageDataHD and webkitPutImageDataHD from canvas API
authorsimon.fraser@apple.com <simon.fraser@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 5 Dec 2017 18:54:17 +0000 (18:54 +0000)
committersimon.fraser@apple.com <simon.fraser@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 5 Dec 2017 18:54:17 +0000 (18:54 +0000)
https://bugs.webkit.org/show_bug.cgi?id=180387

Reviewed by Dean Jackson.

Source/WebCore:

CanvasRenderingContext2D.webkitGetImageDataHD and webkitPutImageDataHD were never standardized,
and Blink removed support in 2014 (https://groups.google.com/a/chromium.org/forum/#!topic/blink-dev/FOPH5dloGG8).

Since our canvas backing store is always 1x, they have no use anyway, so remove them.

* html/canvas/CanvasRenderingContext2D.cpp:
(WebCore::CanvasRenderingContext2D::putImageData):
(WebCore::CanvasRenderingContext2D::webkitGetImageDataHD const): Deleted.
(WebCore::CanvasRenderingContext2D::webkitPutImageDataHD): Deleted.
* html/canvas/CanvasRenderingContext2D.h:
* html/canvas/CanvasRenderingContext2D.idl:

Source/WebInspectorUI:

CanvasRenderingContext2D.webkitGetImageDataHD and webkitPutImageDataHD were never standardized,
and Blink removed support in 2014 (https://groups.google.com/a/chromium.org/forum/#!topic/blink-dev/FOPH5dloGG8).

Since our canvas backing store is always 1x, they have no use anyway, so remove them.

* UserInterface/Models/NativeFunctionParameters.js:
* UserInterface/Models/RecordingAction.js:
(WI.RecordingAction.prototype.getImageParameters):
(WI.RecordingAction):
* UserInterface/Views/RecordingActionTreeElement.js:
(WI.RecordingActionTreeElement._classNameForAction.classNameForActionName):
(WI.RecordingActionTreeElement._classNameForAction):

LayoutTests:

Remove the test.

* fast/canvas/2d.imageDataHD-expected.txt: Removed.
* fast/canvas/2d.imageDataHD.html: Removed.
* platform/win/TestExpectations:

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

14 files changed:
LayoutTests/ChangeLog
LayoutTests/fast/canvas/2d.imageDataHD-expected.txt [deleted file]
LayoutTests/fast/canvas/2d.imageDataHD.html [deleted file]
LayoutTests/inspector/canvas/recording-2d-expected.txt
LayoutTests/inspector/canvas/recording-2d.html
LayoutTests/platform/win/TestExpectations
Source/WebCore/ChangeLog
Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp
Source/WebCore/html/canvas/CanvasRenderingContext2D.h
Source/WebCore/html/canvas/CanvasRenderingContext2D.idl
Source/WebInspectorUI/ChangeLog
Source/WebInspectorUI/UserInterface/Models/NativeFunctionParameters.js
Source/WebInspectorUI/UserInterface/Models/RecordingAction.js
Source/WebInspectorUI/UserInterface/Views/RecordingActionTreeElement.js

index dc7cee1..b4190b2 100644 (file)
@@ -1,3 +1,16 @@
+2017-12-05  Simon Fraser  <simon.fraser@apple.com>
+
+        Remove webkitGetImageDataHD and webkitPutImageDataHD from canvas API
+        https://bugs.webkit.org/show_bug.cgi?id=180387
+
+        Reviewed by Dean Jackson.
+
+        Remove the test.
+
+        * fast/canvas/2d.imageDataHD-expected.txt: Removed.
+        * fast/canvas/2d.imageDataHD.html: Removed.
+        * platform/win/TestExpectations:
+
 2017-12-05  Ali Juma  <ajuma@chromium.org>
 
         [Win] Skip tests that depend on UIScriptController::zoomToScale
diff --git a/LayoutTests/fast/canvas/2d.imageDataHD-expected.txt b/LayoutTests/fast/canvas/2d.imageDataHD-expected.txt
deleted file mode 100644 (file)
index 3cc4ba7..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-High-DPI canvas is not enabled.
-
diff --git a/LayoutTests/fast/canvas/2d.imageDataHD.html b/LayoutTests/fast/canvas/2d.imageDataHD.html
deleted file mode 100644 (file)
index 617e71c..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-<pre id="console"></pre>
-<script>
-    testRunner.dumpAsText();
-
-    function log(message)
-    {
-        document.getElementById("console").appendChild(document.createTextNode(message + "\n"));
-    }
-
-    function formatColor(r, g, b, a)
-    {
-        return "[" + r + ", " + g + ", " + b + ", " + a + "]";
-    }
-
-    function assertBlack(imageData, i)
-    {
-        var r = imageData.data[i * 4];
-        var g = imageData.data[i * 4 + 1];
-        var b = imageData.data[i * 4 + 2];
-        var a = imageData.data[i * 4 + 3];
-        if (r == 0 && g == 0 && b == 0 && a == 255)
-            log("PASS: Pixel " + i + " is black.");
-        else
-            log("FAIL: Pixel " + i + " is not black: " + formatColor(r, g, b, a) + ".");
-    }
-
-    function assertGreen(imageData, i)
-    {
-        var r = imageData.data[i * 4];
-        var g = imageData.data[i * 4 + 1];
-        var b = imageData.data[i * 4 + 2];
-        var a = imageData.data[i * 4 + 3];
-        if (r == 0 && g == 255 && b == 0 && a == 255)
-            log("PASS: Pixel " + i + " is green.");
-        else
-            log("FAIL: Pixel " + i + " is not green: " + formatColor(r, g, b, a) + ".");
-    }
-
-    function assertBlue(imageData, i)
-    {
-        var r = imageData.data[i * 4];
-        var g = imageData.data[i * 4 + 1];
-        var b = imageData.data[i * 4 + 2];
-        var a = imageData.data[i * 4 + 3];
-        if (r == 0 && g == 0 && b == 255 && a == 255)
-            log("PASS: Pixel " + i + " is blue.");
-        else
-            log("FAIL: Pixel " + i + " is not blue: " + formatColor(r, g, b, a) + ".");
-    }
-
-    if (!window.testRunner)
-        log("This test requires WebKitTestRunner or DumpRenderTree.");
-
-    testRunner.waitUntilDone();
-    testRunner.setBackingScaleFactor(2, function() {
-        var canvas = document.createElement("canvas");
-        canvas.width = 8;
-        canvas.height = 8;
-
-        var context = canvas.getContext("2d");
-
-        if (context.webkitBackingStorePixelRatio === 2) {
-
-            context.fillStyle = "#0f0";
-            context.fillRect(0, 0, 4, 8);
-            context.fillStyle = "#00f";
-            context.fillRect(4, 0, 4, 8);
-
-            log("Testing getImageDataHD");
-
-            var imageData = context.webkitGetImageDataHD(7, 0, 2, 1);
-            assertGreen(imageData, 0);
-            assertBlue(imageData, 1);
-
-            log("\nTesting putImageDataHD");
-
-            context.fillStyle = "#000";
-            context.fillRect(0, 0, 8, 8);
-
-            imageData = context.createImageData(8, 8);
-            for (var i = 0; i < 128; i += 4) {
-                imageData.data[i] = 0;
-                imageData.data[i + 1] = 255;
-                imageData.data[i + 2] = 0;
-                imageData.data[i + 3] = 255;
-            }
-            for (var i = 128; i < 256; i += 4) {
-                imageData.data[i] = 0;
-                imageData.data[i + 1] = 0;
-                imageData.data[i + 2] = 255;
-                imageData.data[i + 3] = 255;
-            }
-
-            context.webkitPutImageDataHD(imageData, 2, 2);
-
-            imageData = context.getImageData(2, 0, 1, 1);
-            assertBlack(imageData, 0);
-
-            imageData = context.getImageData(2, 1, 1, 1);
-            assertGreen(imageData, 0);
-
-            imageData = context.getImageData(2, 2, 1, 1);
-            assertGreen(imageData, 0);
-
-            imageData = context.getImageData(2, 3, 1, 1);
-            assertBlue(imageData, 0);
-
-            imageData = context.getImageData(2, 4, 1, 1);
-            assertBlue(imageData, 0);
-
-            imageData = context.getImageData(2, 5, 1, 1);
-            assertBlack(imageData, 0);
-        } else
-            log("High-DPI canvas is not enabled.");
-
-        testRunner.notifyDone();
-    });
-</script>
index 01c5bb3..bd51ce5 100644 (file)
@@ -40,8 +40,8 @@ frames:
         1: (anonymous function) - inspector/canvas/recording-2d.html:77:42 (15)
         2: ignoreException - inspector/canvas/recording-2d.html:48:13 (17)
         3: (anonymous function) - inspector/canvas/recording-2d.html:77:28 (18)
-        4: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
-        5: performActions - inspector/canvas/recording-2d.html:394:25 (22)
+        4: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
+        5: performActions - inspector/canvas/recording-2d.html:387:25 (22)
         6: Global Code - [program code] (24)
         7: evaluateWithScopeExtension - [native code] (26)
         8: _evaluateOn (28)
@@ -53,8 +53,8 @@ frames:
         1: (anonymous function) - inspector/canvas/recording-2d.html:78:42 (31)
         2: ignoreException - inspector/canvas/recording-2d.html:48:13 (17)
         3: (anonymous function) - inspector/canvas/recording-2d.html:78:28 (32)
-        4: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
-        5: performActions - inspector/canvas/recording-2d.html:394:25 (22)
+        4: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
+        5: performActions - inspector/canvas/recording-2d.html:387:25 (22)
         6: Global Code - [program code] (24)
         7: evaluateWithScopeExtension - [native code] (26)
         8: _evaluateOn (28)
@@ -80,9 +80,9 @@ data:
   17: [16,14,49,13]
   18: [10,14,78,28]
   19: "executeFrameFunction"
-  20: [19,14,391,24]
+  20: [19,14,384,24]
   21: "performActions"
-  22: [21,14,395,25]
+  22: [21,14,388,25]
   23: "global code"
   24: [23,10,1,15]
   25: "evaluateWithScopeExtension"
@@ -132,8 +132,8 @@ frames:
         1: (anonymous function) - inspector/canvas/recording-2d.html:77:42 (15)
         2: ignoreException - inspector/canvas/recording-2d.html:48:13 (17)
         3: (anonymous function) - inspector/canvas/recording-2d.html:77:28 (18)
-        4: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
-        5: performActions - inspector/canvas/recording-2d.html:394:25 (22)
+        4: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
+        5: performActions - inspector/canvas/recording-2d.html:387:25 (22)
         6: Global Code - [program code] (24)
         7: evaluateWithScopeExtension - [native code] (26)
         8: _evaluateOn (28)
@@ -145,8 +145,8 @@ frames:
         1: (anonymous function) - inspector/canvas/recording-2d.html:78:42 (31)
         2: ignoreException - inspector/canvas/recording-2d.html:48:13 (17)
         3: (anonymous function) - inspector/canvas/recording-2d.html:78:28 (32)
-        4: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
-        5: performActions - inspector/canvas/recording-2d.html:394:25 (22)
+        4: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
+        5: performActions - inspector/canvas/recording-2d.html:387:25 (22)
         6: Global Code - [program code] (24)
         7: evaluateWithScopeExtension - [native code] (26)
         8: _evaluateOn (28)
@@ -159,64 +159,64 @@ frames:
         1: (anonymous function) - inspector/canvas/recording-2d.html:81:44 (35)
         2: ignoreException - inspector/canvas/recording-2d.html:48:13 (17)
         3: (anonymous function) - inspector/canvas/recording-2d.html:81:28 (36)
-        4: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        4: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   2: (duration)
     0: beginPath()
       trace:
         0: beginPath - [native code] (38)
         1: (anonymous function) - inspector/canvas/recording-2d.html:84:26 (39)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   3: (duration)
     0: bezierCurveTo(1, 2, 3, 4, 5, 6)
       swizzleTypes: [Number, Number, Number, Number, Number, Number]
       trace:
         0: bezierCurveTo - [native code] (41)
         1: (anonymous function) - inspector/canvas/recording-2d.html:87:30 (42)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   4: (duration)
     0: clearRect(1, 2, 3, 4)
       swizzleTypes: [Number, Number, Number, Number]
       trace:
         0: clearRect - [native code] (44)
         1: (anonymous function) - inspector/canvas/recording-2d.html:90:26 (45)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   5: (duration)
     0: clearShadow()
       trace:
         0: clearShadow - [native code] (47)
         1: (anonymous function) - inspector/canvas/recording-2d.html:93:28 (48)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   6: (duration)
     0: clip("nonzero")
       swizzleTypes: [String (50)]
       trace:
         0: clip - [native code] (51)
         1: (anonymous function) - inspector/canvas/recording-2d.html:96:21 (52)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     1: clip("evenodd")
       swizzleTypes: [String (53)]
       trace:
         0: clip - [native code] (51)
         1: (anonymous function) - inspector/canvas/recording-2d.html:97:21 (54)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     2: clip([object Path2D], "nonzero")
       swizzleTypes: [Path2D (55), String (50)]
       trace:
         0: clip - [native code] (51)
         1: (anonymous function) - inspector/canvas/recording-2d.html:98:21 (56)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     3: clip([object Path2D], "evenodd")
       swizzleTypes: [Path2D (57), String (53)]
       trace:
         0: clip - [native code] (51)
         1: (anonymous function) - inspector/canvas/recording-2d.html:99:21 (58)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   7: (duration)
     0: closePath()
       trace:
         0: closePath - [native code] (60)
         1: (anonymous function) - inspector/canvas/recording-2d.html:102:26 (61)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   8: (duration)
     0: createImageData([object ImageData])
       swizzleTypes: [ImageData (63)]
@@ -225,7 +225,7 @@ frames:
         1: (anonymous function) - inspector/canvas/recording-2d.html:105:54 (65)
         2: ignoreException - inspector/canvas/recording-2d.html:48:13 (17)
         3: (anonymous function) - inspector/canvas/recording-2d.html:105:28 (66)
-        4: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        4: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     1: createImageData(2, 3)
       swizzleTypes: [Number, Number]
       trace:
@@ -233,7 +233,7 @@ frames:
         1: (anonymous function) - inspector/canvas/recording-2d.html:106:54 (67)
         2: ignoreException - inspector/canvas/recording-2d.html:48:13 (17)
         3: (anonymous function) - inspector/canvas/recording-2d.html:106:28 (68)
-        4: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        4: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   9: (duration)
     0: createLinearGradient(1, 2, 3, 4)
       swizzleTypes: [Number, Number, Number, Number]
@@ -242,7 +242,7 @@ frames:
         1: (anonymous function) - inspector/canvas/recording-2d.html:109:59 (71)
         2: ignoreException - inspector/canvas/recording-2d.html:48:13 (17)
         3: (anonymous function) - inspector/canvas/recording-2d.html:109:28 (72)
-        4: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        4: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   10: (duration)
     0: createPattern([object HTMLImageElement], "testA")
       swizzleTypes: [Image (74), String (75)]
@@ -251,7 +251,7 @@ frames:
         1: (anonymous function) - inspector/canvas/recording-2d.html:112:52 (77)
         2: ignoreException - inspector/canvas/recording-2d.html:48:13 (17)
         3: (anonymous function) - inspector/canvas/recording-2d.html:112:28 (78)
-        4: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        4: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     1: createPattern([object HTMLImageElement], "testB")
       swizzleTypes: [Image (79), String (80)]
       trace:
@@ -259,7 +259,7 @@ frames:
         1: (anonymous function) - inspector/canvas/recording-2d.html:113:52 (81)
         2: ignoreException - inspector/canvas/recording-2d.html:48:13 (17)
         3: (anonymous function) - inspector/canvas/recording-2d.html:113:28 (82)
-        4: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        4: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     2: createPattern([object HTMLImageElement], "testC")
       swizzleTypes: [Image (83), String (84)]
       trace:
@@ -267,7 +267,7 @@ frames:
         1: (anonymous function) - inspector/canvas/recording-2d.html:114:52 (85)
         2: ignoreException - inspector/canvas/recording-2d.html:48:13 (17)
         3: (anonymous function) - inspector/canvas/recording-2d.html:114:28 (86)
-        4: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        4: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   11: (duration)
     0: createRadialGradient(1, 2, 3, 4, 5, 6)
       swizzleTypes: [Number, Number, Number, Number, Number, Number]
@@ -276,25 +276,25 @@ frames:
         1: (anonymous function) - inspector/canvas/recording-2d.html:117:59 (89)
         2: ignoreException - inspector/canvas/recording-2d.html:48:13 (17)
         3: (anonymous function) - inspector/canvas/recording-2d.html:117:28 (90)
-        4: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        4: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   12: (duration)
     0: direction
       trace:
         0: (anonymous function) - inspector/canvas/recording-2d.html:120:16 (92)
-        1: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        1: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   13: (duration)
     0: drawFocusIfNeeded("Element")
       swizzleTypes: [None (94)]
       trace:
         0: drawFocusIfNeeded - [native code] (95)
         1: (anonymous function) - inspector/canvas/recording-2d.html:124:34 (96)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     1: drawFocusIfNeeded([object Path2D], "Element")
       swizzleTypes: [Path2D (55), None (94)]
       trace:
         0: drawFocusIfNeeded - [native code] (95)
         1: (anonymous function) - inspector/canvas/recording-2d.html:125:34 (97)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   14: (duration)
     0: drawImage([object HTMLImageElement], 1, 2)
       swizzleTypes: [Image (74), Number, Number]
@@ -303,7 +303,7 @@ frames:
         1: (anonymous function) - inspector/canvas/recording-2d.html:128:48 (100)
         2: ignoreException - inspector/canvas/recording-2d.html:48:13 (17)
         3: (anonymous function) - inspector/canvas/recording-2d.html:128:28 (101)
-        4: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        4: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     1: drawImage([object HTMLImageElement], 3, 4)
       swizzleTypes: [Image (79), Number, Number]
       trace:
@@ -311,7 +311,7 @@ frames:
         1: (anonymous function) - inspector/canvas/recording-2d.html:129:48 (102)
         2: ignoreException - inspector/canvas/recording-2d.html:48:13 (17)
         3: (anonymous function) - inspector/canvas/recording-2d.html:129:28 (103)
-        4: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        4: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     2: drawImage([object HTMLImageElement], 5, 6)
       swizzleTypes: [Image (83), Number, Number]
       trace:
@@ -319,7 +319,7 @@ frames:
         1: (anonymous function) - inspector/canvas/recording-2d.html:130:48 (104)
         2: ignoreException - inspector/canvas/recording-2d.html:48:13 (17)
         3: (anonymous function) - inspector/canvas/recording-2d.html:130:28 (105)
-        4: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        4: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     3: drawImage([object HTMLImageElement], 7, 8, 9, 10)
       swizzleTypes: [Image (74), Number, Number, Number, Number]
       trace:
@@ -327,7 +327,7 @@ frames:
         1: (anonymous function) - inspector/canvas/recording-2d.html:131:48 (106)
         2: ignoreException - inspector/canvas/recording-2d.html:48:13 (17)
         3: (anonymous function) - inspector/canvas/recording-2d.html:131:28 (107)
-        4: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        4: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     4: drawImage([object HTMLImageElement], 11, 12, 13, 14)
       swizzleTypes: [Image (79), Number, Number, Number, Number]
       trace:
@@ -335,7 +335,7 @@ frames:
         1: (anonymous function) - inspector/canvas/recording-2d.html:132:48 (108)
         2: ignoreException - inspector/canvas/recording-2d.html:48:13 (17)
         3: (anonymous function) - inspector/canvas/recording-2d.html:132:28 (109)
-        4: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        4: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     5: drawImage([object HTMLImageElement], 15, 16, 17, 18)
       swizzleTypes: [Image (83), Number, Number, Number, Number]
       trace:
@@ -343,7 +343,7 @@ frames:
         1: (anonymous function) - inspector/canvas/recording-2d.html:133:48 (110)
         2: ignoreException - inspector/canvas/recording-2d.html:48:13 (17)
         3: (anonymous function) - inspector/canvas/recording-2d.html:133:28 (111)
-        4: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        4: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     6: drawImage([object HTMLImageElement], 19, 20, 21, 22, 23, 24, 25, 26)
       swizzleTypes: [Image (74), Number, Number, Number, Number, Number, Number, Number, Number]
       trace:
@@ -351,7 +351,7 @@ frames:
         1: (anonymous function) - inspector/canvas/recording-2d.html:134:48 (112)
         2: ignoreException - inspector/canvas/recording-2d.html:48:13 (17)
         3: (anonymous function) - inspector/canvas/recording-2d.html:134:28 (113)
-        4: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        4: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     7: drawImage([object HTMLImageElement], 27, 28, 29, 30, 31, 32, 33, 34)
       swizzleTypes: [Image (79), Number, Number, Number, Number, Number, Number, Number, Number]
       trace:
@@ -359,7 +359,7 @@ frames:
         1: (anonymous function) - inspector/canvas/recording-2d.html:135:48 (114)
         2: ignoreException - inspector/canvas/recording-2d.html:48:13 (17)
         3: (anonymous function) - inspector/canvas/recording-2d.html:135:28 (115)
-        4: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        4: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     8: drawImage([object HTMLImageElement], 35, 36, 37, 38, 39, 40, 41, 42)
       swizzleTypes: [Image (83), Number, Number, Number, Number, Number, Number, Number, Number]
       trace:
@@ -367,20 +367,20 @@ frames:
         1: (anonymous function) - inspector/canvas/recording-2d.html:136:48 (116)
         2: ignoreException - inspector/canvas/recording-2d.html:48:13 (17)
         3: (anonymous function) - inspector/canvas/recording-2d.html:136:28 (117)
-        4: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        4: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   15: (duration)
     0: drawImageFromRect([object HTMLImageElement], 1, 2, 3, 4, 5, 6, 7, 8, "")
       swizzleTypes: [Image (74), Number, Number, Number, Number, Number, Number, Number, Number, String (10)]
       trace:
         0: drawImageFromRect - [native code] (119)
         1: (anonymous function) - inspector/canvas/recording-2d.html:139:34 (120)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     1: drawImageFromRect([object HTMLImageElement], 9, 10, 11, 12, 13, 14, 15, 16, "test")
       swizzleTypes: [Image (74), Number, Number, Number, Number, Number, Number, Number, Number, String (121)]
       trace:
         0: drawImageFromRect - [native code] (119)
         1: (anonymous function) - inspector/canvas/recording-2d.html:140:34 (122)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   16: (duration)
     0: ellipse(1, 2, 3, 4, 5, 6, 7, false)
       swizzleTypes: [Number, Number, Number, Number, Number, Number, Number, Boolean]
@@ -389,7 +389,7 @@ frames:
         1: (anonymous function) - inspector/canvas/recording-2d.html:143:46 (125)
         2: ignoreException - inspector/canvas/recording-2d.html:48:13 (17)
         3: (anonymous function) - inspector/canvas/recording-2d.html:143:28 (126)
-        4: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        4: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     1: ellipse(8, 9, 10, 11, 12, 13, 14, true)
       swizzleTypes: [Number, Number, Number, Number, Number, Number, Number, Boolean]
       trace:
@@ -397,87 +397,87 @@ frames:
         1: (anonymous function) - inspector/canvas/recording-2d.html:144:46 (127)
         2: ignoreException - inspector/canvas/recording-2d.html:48:13 (17)
         3: (anonymous function) - inspector/canvas/recording-2d.html:144:28 (128)
-        4: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        4: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   17: (duration)
     0: fill("nonzero")
       swizzleTypes: [String (50)]
       trace:
         0: fill - [native code] (130)
         1: (anonymous function) - inspector/canvas/recording-2d.html:147:21 (131)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     1: fill("evenodd")
       swizzleTypes: [String (53)]
       trace:
         0: fill - [native code] (130)
         1: (anonymous function) - inspector/canvas/recording-2d.html:148:21 (132)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     2: fill([object Path2D], "nonzero")
       swizzleTypes: [Path2D (55), String (50)]
       trace:
         0: fill - [native code] (130)
         1: (anonymous function) - inspector/canvas/recording-2d.html:149:21 (133)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     3: fill([object Path2D], "evenodd")
       swizzleTypes: [Path2D (57), String (53)]
       trace:
         0: fill - [native code] (130)
         1: (anonymous function) - inspector/canvas/recording-2d.html:150:21 (134)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   18: (duration)
     0: fillRect(1, 2, 3, 4)
       swizzleTypes: [Number, Number, Number, Number]
       trace:
         0: fillRect - [native code] (136)
         1: (anonymous function) - inspector/canvas/recording-2d.html:153:25 (137)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   19: (duration)
     0: fillStyle
       trace:
         0: (anonymous function) - inspector/canvas/recording-2d.html:156:16 (139)
-        1: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        1: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     1: fillStyle = "test"
       swizzleTypes: [String (121)]
       trace:
         0: (anonymous function) - inspector/canvas/recording-2d.html:157:16 (140)
-        1: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        1: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     2: fillStyle = [object CanvasGradient]
       swizzleTypes: [CanvasGradient (142)]
       trace:
         0: (anonymous function) - inspector/canvas/recording-2d.html:158:16 (143)
-        1: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        1: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     3: fillStyle = [object CanvasGradient]
       swizzleTypes: [CanvasGradient (145)]
       trace:
         0: (anonymous function) - inspector/canvas/recording-2d.html:159:16 (146)
-        1: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        1: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     4: fillStyle = [object CanvasPattern]
       swizzleTypes: [CanvasPattern (149)]
       trace:
         0: (anonymous function) - inspector/canvas/recording-2d.html:160:16 (150)
-        1: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        1: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   20: (duration)
     0: fillText("testA", 1, 2)
       swizzleTypes: [String (75), Number, Number]
       trace:
         0: fillText - [native code] (152)
         1: (anonymous function) - inspector/canvas/recording-2d.html:163:25 (153)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     1: fillText("testB", 3, 4, 5)
       swizzleTypes: [String (80), Number, Number, Number]
       trace:
         0: fillText - [native code] (152)
         1: (anonymous function) - inspector/canvas/recording-2d.html:164:25 (154)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   21: (duration)
     0: font
       trace:
         0: (anonymous function) - inspector/canvas/recording-2d.html:167:16 (156)
-        1: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        1: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     1: font = "test"
       swizzleTypes: [String (121)]
       trace:
         0: (anonymous function) - inspector/canvas/recording-2d.html:168:16 (157)
-        1: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        1: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   22: (duration)
     0: getImageData(1, 2, 3, 4)
       swizzleTypes: [Number, Number, Number, Number]
@@ -486,420 +486,420 @@ frames:
         1: (anonymous function) - inspector/canvas/recording-2d.html:171:51 (160)
         2: ignoreException - inspector/canvas/recording-2d.html:48:13 (17)
         3: (anonymous function) - inspector/canvas/recording-2d.html:171:28 (161)
-        4: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        4: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   23: (duration)
     0: getLineDash()
       trace:
         0: getLineDash - [native code] (163)
         1: (anonymous function) - inspector/canvas/recording-2d.html:174:28 (164)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   24: (duration)
     0: getTransform
       trace:
         0: getTransform - [native code] (166)
         1: (anonymous function) - inspector/canvas/recording-2d.html:177:29 (167)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   25: (duration)
     0: globalAlpha
       trace:
         0: (anonymous function) - inspector/canvas/recording-2d.html:180:16 (169)
-        1: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        1: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     1: globalAlpha = 0
       swizzleTypes: [Number]
       trace:
         0: (anonymous function) - inspector/canvas/recording-2d.html:181:16 (170)
-        1: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        1: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   26: (duration)
     0: globalCompositeOperation
       trace:
         0: (anonymous function) - inspector/canvas/recording-2d.html:184:16 (172)
-        1: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        1: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     1: globalCompositeOperation = "test"
       swizzleTypes: [String (121)]
       trace:
         0: (anonymous function) - inspector/canvas/recording-2d.html:185:16 (173)
-        1: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        1: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   27: (duration)
     0: imageSmoothingEnabled
       trace:
         0: (anonymous function) - inspector/canvas/recording-2d.html:188:16 (175)
-        1: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        1: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     1: imageSmoothingEnabled = true
       swizzleTypes: [Boolean]
       trace:
         0: (anonymous function) - inspector/canvas/recording-2d.html:189:16 (176)
-        1: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        1: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   28: (duration)
     0: imageSmoothingQuality
       trace:
         0: (anonymous function) - inspector/canvas/recording-2d.html:192:16 (178)
-        1: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        1: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     1: imageSmoothingQuality = "low"
       swizzleTypes: [String (9)]
       trace:
         0: (anonymous function) - inspector/canvas/recording-2d.html:193:16 (179)
-        1: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        1: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   29: (duration)
     0: isPointInPath([object Path2D], 5, 6, "nonzero")
       swizzleTypes: [Path2D (55), Number, Number, String (50)]
       trace:
         0: isPointInPath - [native code] (181)
         1: (anonymous function) - inspector/canvas/recording-2d.html:196:30 (182)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     1: isPointInPath([object Path2D], 7, 8, "evenodd")
       swizzleTypes: [Path2D (57), Number, Number, String (53)]
       trace:
         0: isPointInPath - [native code] (181)
         1: (anonymous function) - inspector/canvas/recording-2d.html:197:30 (183)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     2: isPointInPath(9, 10, "nonzero")
       swizzleTypes: [Number, Number, String (50)]
       trace:
         0: isPointInPath - [native code] (181)
         1: (anonymous function) - inspector/canvas/recording-2d.html:198:30 (184)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     3: isPointInPath(11, 12, "evenodd")
       swizzleTypes: [Number, Number, String (53)]
       trace:
         0: isPointInPath - [native code] (181)
         1: (anonymous function) - inspector/canvas/recording-2d.html:199:30 (185)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   30: (duration)
     0: isPointInStroke([object Path2D], 3, 4)
       swizzleTypes: [Path2D (55), Number, Number]
       trace:
         0: isPointInStroke - [native code] (187)
         1: (anonymous function) - inspector/canvas/recording-2d.html:202:32 (188)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     1: isPointInStroke(5, 6)
       swizzleTypes: [Number, Number]
       trace:
         0: isPointInStroke - [native code] (187)
         1: (anonymous function) - inspector/canvas/recording-2d.html:203:32 (189)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   31: (duration)
     0: lineCap
       trace:
         0: (anonymous function) - inspector/canvas/recording-2d.html:206:16 (191)
-        1: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        1: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   32: (duration)
     0: lineDashOffset
       trace:
         0: (anonymous function) - inspector/canvas/recording-2d.html:210:16 (193)
-        1: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        1: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     1: lineDashOffset = 1
       swizzleTypes: [Number]
       trace:
         0: (anonymous function) - inspector/canvas/recording-2d.html:211:16 (194)
-        1: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        1: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   33: (duration)
     0: lineJoin
       trace:
         0: (anonymous function) - inspector/canvas/recording-2d.html:214:16 (196)
-        1: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        1: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   34: (duration)
     0: lineTo(1, 2)
       swizzleTypes: [Number, Number]
       trace:
         0: lineTo - [native code] (198)
         1: (anonymous function) - inspector/canvas/recording-2d.html:218:23 (199)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   35: (duration)
     0: lineWidth
       trace:
         0: (anonymous function) - inspector/canvas/recording-2d.html:221:16 (201)
-        1: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        1: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     1: lineWidth = 1
       swizzleTypes: [Number]
       trace:
         0: (anonymous function) - inspector/canvas/recording-2d.html:222:16 (202)
-        1: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        1: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   36: (duration)
     0: measureText("test")
       swizzleTypes: [String (121)]
       trace:
         0: measureText - [native code] (204)
         1: (anonymous function) - inspector/canvas/recording-2d.html:225:28 (205)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   37: (duration)
     0: miterLimit
       trace:
         0: (anonymous function) - inspector/canvas/recording-2d.html:228:16 (207)
-        1: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        1: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     1: miterLimit = 1
       swizzleTypes: [Number]
       trace:
         0: (anonymous function) - inspector/canvas/recording-2d.html:229:16 (208)
-        1: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        1: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   38: (duration)
     0: moveTo(1, 2)
       swizzleTypes: [Number, Number]
       trace:
         0: moveTo - [native code] (210)
         1: (anonymous function) - inspector/canvas/recording-2d.html:232:23 (211)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   39: (duration)
     0: putImageData([object ImageData], 5, 6)
       swizzleTypes: [ImageData (63), Number, Number]
       trace:
         0: putImageData - [native code] (213)
         1: (anonymous function) - inspector/canvas/recording-2d.html:235:29 (214)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     1: putImageData([object ImageData], 7, 8, 9, 10, 11, 12)
       swizzleTypes: [ImageData (215), Number, Number, Number, Number, Number, Number]
       trace:
         0: putImageData - [native code] (213)
         1: (anonymous function) - inspector/canvas/recording-2d.html:236:29 (216)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   40: (duration)
     0: quadraticCurveTo(1, 2, 3, 4)
       swizzleTypes: [Number, Number, Number, Number]
       trace:
         0: quadraticCurveTo - [native code] (218)
         1: (anonymous function) - inspector/canvas/recording-2d.html:239:33 (219)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   41: (duration)
     0: rect(1, 2, 3, 4)
       swizzleTypes: [Number, Number, Number, Number]
       trace:
         0: rect - [native code] (221)
         1: (anonymous function) - inspector/canvas/recording-2d.html:242:21 (222)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   42: (duration)
     0: resetTransform()
       trace:
         0: resetTransform - [native code] (224)
         1: (anonymous function) - inspector/canvas/recording-2d.html:245:31 (225)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   43: (duration)
     0: restore()
       trace:
         0: restore - [native code] (227)
         1: (anonymous function) - inspector/canvas/recording-2d.html:248:24 (228)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   44: (duration)
     0: rotate(1)
       swizzleTypes: [Number]
       trace:
         0: rotate - [native code] (230)
         1: (anonymous function) - inspector/canvas/recording-2d.html:253:23 (231)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   45: (duration)
     0: save()
       trace:
         0: save - [native code] (233)
         1: (anonymous function) - inspector/canvas/recording-2d.html:256:21 (234)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   46: (duration)
     0: scale(1, 2)
       swizzleTypes: [Number, Number]
       trace:
         0: scale - [native code] (236)
         1: (anonymous function) - inspector/canvas/recording-2d.html:259:22 (237)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   47: (duration)
     0: setAlpha(null)
       swizzleTypes: [Number]
       trace:
         0: setAlpha - [native code] (239)
         1: (anonymous function) - inspector/canvas/recording-2d.html:262:25 (240)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     1: setAlpha(1)
       swizzleTypes: [Number]
       trace:
         0: setAlpha - [native code] (239)
         1: (anonymous function) - inspector/canvas/recording-2d.html:263:25 (241)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   48: (duration)
     0: setCompositeOperation("undefined")
       swizzleTypes: [String (243)]
       trace:
         0: setCompositeOperation - [native code] (244)
         1: (anonymous function) - inspector/canvas/recording-2d.html:266:38 (245)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     1: setCompositeOperation("test")
       swizzleTypes: [String (121)]
       trace:
         0: setCompositeOperation - [native code] (244)
         1: (anonymous function) - inspector/canvas/recording-2d.html:267:38 (246)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   49: (duration)
     0: setFillColor("testA")
       swizzleTypes: [String (75)]
       trace:
         0: setFillColor - [native code] (248)
         1: (anonymous function) - inspector/canvas/recording-2d.html:270:29 (249)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     1: setFillColor("testB", 1)
       swizzleTypes: [String (80), Number]
       trace:
         0: setFillColor - [native code] (248)
         1: (anonymous function) - inspector/canvas/recording-2d.html:271:29 (250)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     2: setFillColor(2, 1)
       swizzleTypes: [Number, Number]
       trace:
         0: setFillColor - [native code] (248)
         1: (anonymous function) - inspector/canvas/recording-2d.html:272:29 (251)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     3: setFillColor(3, 4)
       swizzleTypes: [Number, Number]
       trace:
         0: setFillColor - [native code] (248)
         1: (anonymous function) - inspector/canvas/recording-2d.html:273:29 (252)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     4: setFillColor(5, 6, 7, 8)
       swizzleTypes: [Number, Number, Number, Number]
       trace:
         0: setFillColor - [native code] (248)
         1: (anonymous function) - inspector/canvas/recording-2d.html:274:29 (253)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     5: setFillColor(9, 10, 11, 12, 13)
       swizzleTypes: [Number, Number, Number, Number, Number]
       trace:
         0: setFillColor - [native code] (248)
         1: (anonymous function) - inspector/canvas/recording-2d.html:275:29 (254)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   50: (duration)
     0: setLineCap("undefined")
       swizzleTypes: [String (243)]
       trace:
         0: setLineCap - [native code] (256)
         1: (anonymous function) - inspector/canvas/recording-2d.html:278:27 (257)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     1: setLineCap("test")
       swizzleTypes: [String (121)]
       trace:
         0: setLineCap - [native code] (256)
         1: (anonymous function) - inspector/canvas/recording-2d.html:279:27 (258)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   51: (duration)
     0: setLineDash([1,2])
       swizzleTypes: [Array]
       trace:
         0: setLineDash - [native code] (260)
         1: (anonymous function) - inspector/canvas/recording-2d.html:282:28 (261)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   52: (duration)
     0: setLineJoin("undefined")
       swizzleTypes: [String (243)]
       trace:
         0: setLineJoin - [native code] (263)
         1: (anonymous function) - inspector/canvas/recording-2d.html:285:28 (264)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     1: setLineJoin("test")
       swizzleTypes: [String (121)]
       trace:
         0: setLineJoin - [native code] (263)
         1: (anonymous function) - inspector/canvas/recording-2d.html:286:28 (265)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   53: (duration)
     0: setLineWidth(null)
       swizzleTypes: [Number]
       trace:
         0: setLineWidth - [native code] (267)
         1: (anonymous function) - inspector/canvas/recording-2d.html:289:29 (268)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     1: setLineWidth(1)
       swizzleTypes: [Number]
       trace:
         0: setLineWidth - [native code] (267)
         1: (anonymous function) - inspector/canvas/recording-2d.html:290:29 (269)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   54: (duration)
     0: setMiterLimit(null)
       swizzleTypes: [Number]
       trace:
         0: setMiterLimit - [native code] (271)
         1: (anonymous function) - inspector/canvas/recording-2d.html:293:30 (272)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     1: setMiterLimit(1)
       swizzleTypes: [Number]
       trace:
         0: setMiterLimit - [native code] (271)
         1: (anonymous function) - inspector/canvas/recording-2d.html:294:30 (273)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   55: (duration)
     0: setShadow(1, 2, 3, "")
       swizzleTypes: [Number, Number, Number, String (275)]
       trace:
         0: setShadow - [native code] (276)
         1: (anonymous function) - inspector/canvas/recording-2d.html:297:26 (277)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     1: setShadow(4, 5, 6, "test", 7)
       swizzleTypes: [Number, Number, Number, String (121), Number]
       trace:
         0: setShadow - [native code] (276)
         1: (anonymous function) - inspector/canvas/recording-2d.html:298:26 (278)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     2: setShadow(8, 9, 10, 11, 1)
       swizzleTypes: [Number, Number, Number, Number, Number]
       trace:
         0: setShadow - [native code] (276)
         1: (anonymous function) - inspector/canvas/recording-2d.html:299:26 (279)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     3: setShadow(12, 13, 14, 15, 16)
       swizzleTypes: [Number, Number, Number, Number, Number]
       trace:
         0: setShadow - [native code] (276)
         1: (anonymous function) - inspector/canvas/recording-2d.html:300:26 (280)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     4: setShadow(17, 18, 19, 20, 21, 22, 23)
       swizzleTypes: [Number, Number, Number, Number, Number, Number, Number]
       trace:
         0: setShadow - [native code] (276)
         1: (anonymous function) - inspector/canvas/recording-2d.html:301:26 (281)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     5: setShadow(24, 25, 26, 27, 28, 29, 30, 31)
       swizzleTypes: [Number, Number, Number, Number, Number, Number, Number, Number]
       trace:
         0: setShadow - [native code] (276)
         1: (anonymous function) - inspector/canvas/recording-2d.html:302:26 (282)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   56: (duration)
     0: setStrokeColor("testA")
       swizzleTypes: [String (75)]
       trace:
         0: setStrokeColor - [native code] (284)
         1: (anonymous function) - inspector/canvas/recording-2d.html:305:31 (285)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     1: setStrokeColor("testB", 1)
       swizzleTypes: [String (80), Number]
       trace:
         0: setStrokeColor - [native code] (284)
         1: (anonymous function) - inspector/canvas/recording-2d.html:306:31 (286)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     2: setStrokeColor(2, 1)
       swizzleTypes: [Number, Number]
       trace:
         0: setStrokeColor - [native code] (284)
         1: (anonymous function) - inspector/canvas/recording-2d.html:307:31 (287)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     3: setStrokeColor(3, 4)
       swizzleTypes: [Number, Number]
       trace:
         0: setStrokeColor - [native code] (284)
         1: (anonymous function) - inspector/canvas/recording-2d.html:308:31 (288)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     4: setStrokeColor(5, 6, 7, 8)
       swizzleTypes: [Number, Number, Number, Number]
       trace:
         0: setStrokeColor - [native code] (284)
         1: (anonymous function) - inspector/canvas/recording-2d.html:309:31 (289)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     5: setStrokeColor(9, 10, 11, 12, 13)
       swizzleTypes: [Number, Number, Number, Number, Number]
       trace:
         0: setStrokeColor - [native code] (284)
         1: (anonymous function) - inspector/canvas/recording-2d.html:310:31 (290)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   57: (duration)
     0: setTransform(1, 2, 3, 4, 5, 6)
       swizzleTypes: [Number, Number, Number, Number, Number, Number]
       trace:
         0: setTransform - [native code] (292)
         1: (anonymous function) - inspector/canvas/recording-2d.html:313:29 (293)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     1: setTransform(matrix(1, 0, 0, 1, 0, 0))
       swizzleTypes: [DOMMatrix]
       trace:
@@ -907,7 +907,7 @@ frames:
         1: (anonymous function) - inspector/canvas/recording-2d.html:314:51 (294)
         2: ignoreException - inspector/canvas/recording-2d.html:48:13 (17)
         3: (anonymous function) - inspector/canvas/recording-2d.html:314:28 (295)
-        4: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        4: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     2: setTransform(matrix(7, 8, 9, 10, 11, 12))
       swizzleTypes: [DOMMatrix]
       trace:
@@ -915,180 +915,158 @@ frames:
         1: (anonymous function) - inspector/canvas/recording-2d.html:315:51 (296)
         2: ignoreException - inspector/canvas/recording-2d.html:48:13 (17)
         3: (anonymous function) - inspector/canvas/recording-2d.html:315:28 (297)
-        4: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        4: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   58: (duration)
     0: shadowBlur
       trace:
         0: (anonymous function) - inspector/canvas/recording-2d.html:318:16 (299)
-        1: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        1: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     1: shadowBlur = 1
       swizzleTypes: [Number]
       trace:
         0: (anonymous function) - inspector/canvas/recording-2d.html:319:16 (300)
-        1: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        1: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   59: (duration)
     0: shadowColor
       trace:
         0: (anonymous function) - inspector/canvas/recording-2d.html:322:16 (302)
-        1: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        1: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     1: shadowColor = "test"
       swizzleTypes: [String (121)]
       trace:
         0: (anonymous function) - inspector/canvas/recording-2d.html:323:16 (303)
-        1: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        1: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   60: (duration)
     0: shadowOffsetX
       trace:
         0: (anonymous function) - inspector/canvas/recording-2d.html:326:16 (305)
-        1: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        1: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     1: shadowOffsetX = 1
       swizzleTypes: [Number]
       trace:
         0: (anonymous function) - inspector/canvas/recording-2d.html:327:16 (306)
-        1: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        1: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   61: (duration)
     0: shadowOffsetY
       trace:
         0: (anonymous function) - inspector/canvas/recording-2d.html:330:16 (308)
-        1: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        1: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     1: shadowOffsetY = 1
       swizzleTypes: [Number]
       trace:
         0: (anonymous function) - inspector/canvas/recording-2d.html:331:16 (309)
-        1: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        1: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   62: (duration)
     0: stroke()
       trace:
         0: stroke - [native code] (311)
         1: (anonymous function) - inspector/canvas/recording-2d.html:334:23 (312)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     1: stroke([object Path2D])
       swizzleTypes: [Path2D (55)]
       trace:
         0: stroke - [native code] (311)
         1: (anonymous function) - inspector/canvas/recording-2d.html:335:23 (313)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   63: (duration)
     0: strokeRect(1, 2, 3, 4)
       swizzleTypes: [Number, Number, Number, Number]
       trace:
         0: strokeRect - [native code] (315)
         1: (anonymous function) - inspector/canvas/recording-2d.html:338:27 (316)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   64: (duration)
     0: strokeStyle
       trace:
         0: (anonymous function) - inspector/canvas/recording-2d.html:341:16 (318)
-        1: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        1: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     1: strokeStyle = "test"
       swizzleTypes: [String (121)]
       trace:
         0: (anonymous function) - inspector/canvas/recording-2d.html:342:16 (319)
-        1: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        1: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     2: strokeStyle = [object CanvasGradient]
       swizzleTypes: [CanvasGradient (142)]
       trace:
         0: (anonymous function) - inspector/canvas/recording-2d.html:343:16 (320)
-        1: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        1: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     3: strokeStyle = [object CanvasGradient]
       swizzleTypes: [CanvasGradient (145)]
       trace:
         0: (anonymous function) - inspector/canvas/recording-2d.html:344:16 (321)
-        1: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        1: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     4: strokeStyle = [object CanvasPattern]
       swizzleTypes: [CanvasPattern (149)]
       trace:
         0: (anonymous function) - inspector/canvas/recording-2d.html:345:16 (322)
-        1: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        1: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   65: (duration)
     0: strokeText("testA", 1, 2)
       swizzleTypes: [String (75), Number, Number]
       trace:
         0: strokeText - [native code] (324)
         1: (anonymous function) - inspector/canvas/recording-2d.html:348:27 (325)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     1: strokeText("testB", 3, 4, 5)
       swizzleTypes: [String (80), Number, Number, Number]
       trace:
         0: strokeText - [native code] (324)
         1: (anonymous function) - inspector/canvas/recording-2d.html:349:27 (326)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   66: (duration)
     0: textAlign
       trace:
         0: (anonymous function) - inspector/canvas/recording-2d.html:352:16 (328)
-        1: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        1: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   67: (duration)
     0: textBaseline
       trace:
         0: (anonymous function) - inspector/canvas/recording-2d.html:356:16 (330)
-        1: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        1: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   68: (duration)
     0: transform(1, 2, 3, 4, 5, 6)
       swizzleTypes: [Number, Number, Number, Number, Number, Number]
       trace:
         0: transform - [native code] (332)
         1: (anonymous function) - inspector/canvas/recording-2d.html:360:26 (333)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   69: (duration)
     0: translate(1, 2)
       swizzleTypes: [Number, Number]
       trace:
         0: translate - [native code] (335)
         1: (anonymous function) - inspector/canvas/recording-2d.html:363:26 (336)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        2: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
   70: (duration)
-    0: webkitGetImageDataHD(1, 2, 3, 4)
-      swizzleTypes: [Number, Number, Number, Number]
-      trace:
-        0: webkitGetImageDataHD - [native code] (338)
-        1: (anonymous function) - inspector/canvas/recording-2d.html:366:59 (339)
-        2: ignoreException - inspector/canvas/recording-2d.html:48:13 (17)
-        3: (anonymous function) - inspector/canvas/recording-2d.html:366:28 (340)
-        4: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
-  71: (duration)
     0: webkitImageSmoothingEnabled
       trace:
-        0: (anonymous function) - inspector/canvas/recording-2d.html:369:16 (342)
-        1: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        0: (anonymous function) - inspector/canvas/recording-2d.html:366:16 (338)
+        1: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     1: webkitImageSmoothingEnabled = true
       swizzleTypes: [Boolean]
       trace:
-        0: (anonymous function) - inspector/canvas/recording-2d.html:370:16 (343)
-        1: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
-  72: (duration)
+        0: (anonymous function) - inspector/canvas/recording-2d.html:367:16 (339)
+        1: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
+  71: (duration)
     0: webkitLineDash
       trace:
-        0: (anonymous function) - inspector/canvas/recording-2d.html:373:16 (345)
-        1: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        0: (anonymous function) - inspector/canvas/recording-2d.html:370:16 (341)
+        1: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     1: webkitLineDash = [1,2]
       swizzleTypes: [Array]
       trace:
-        0: (anonymous function) - inspector/canvas/recording-2d.html:374:16 (346)
-        1: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
-  73: (duration)
+        0: (anonymous function) - inspector/canvas/recording-2d.html:371:16 (342)
+        1: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
+  72: (duration)
     0: webkitLineDashOffset
       trace:
-        0: (anonymous function) - inspector/canvas/recording-2d.html:377:16 (348)
-        1: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        0: (anonymous function) - inspector/canvas/recording-2d.html:374:16 (344)
+        1: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
     1: webkitLineDashOffset = 1
       swizzleTypes: [Number]
       trace:
-        0: (anonymous function) - inspector/canvas/recording-2d.html:378:16 (349)
-        1: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
-  74: (duration)
-    0: webkitPutImageDataHD([object ImageData], 5, 6)
-      swizzleTypes: [ImageData (63), Number, Number]
-      trace:
-        0: webkitPutImageDataHD - [native code] (351)
-        1: (anonymous function) - inspector/canvas/recording-2d.html:381:37 (352)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
-    1: webkitPutImageDataHD([object ImageData], 7, 8, 9, 10, 11, 12)
-      swizzleTypes: [ImageData (215), Number, Number, Number, Number, Number, Number]
-      trace:
-        0: webkitPutImageDataHD - [native code] (351)
-        1: (anonymous function) - inspector/canvas/recording-2d.html:382:37 (353)
-        2: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
+        0: (anonymous function) - inspector/canvas/recording-2d.html:375:16 (345)
+        1: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
 data:
   0: "source-over"
   1: "butt"
@@ -1110,9 +1088,9 @@ data:
   17: [16,14,49,13]
   18: [10,14,78,28]
   19: "executeFrameFunction"
-  20: [19,14,391,24]
+  20: [19,14,384,24]
   21: "performActions"
-  22: [21,14,395,25]
+  22: [21,14,388,25]
   23: "global code"
   24: [23,10,1,15]
   25: "evaluateWithScopeExtension"
@@ -1427,23 +1405,15 @@ data:
   334: "translate"
   335: [334,12,0,0]
   336: [10,14,364,26]
-  337: "webkitGetImageDataHD"
-  338: [337,12,0,0]
-  339: [10,14,367,59]
-  340: [10,14,367,28]
-  341: "webkitImageSmoothingEnabled"
-  342: [10,14,370,16]
-  343: [10,14,371,16]
-  344: "webkitLineDash"
-  345: [10,14,374,16]
-  346: [10,14,375,16]
-  347: "webkitLineDashOffset"
-  348: [10,14,378,16]
-  349: [10,14,379,16]
-  350: "webkitPutImageDataHD"
-  351: [350,12,0,0]
-  352: [10,14,382,37]
-  353: [10,14,383,37]
+  337: "webkitImageSmoothingEnabled"
+  338: [10,14,367,16]
+  339: [10,14,368,16]
+  340: "webkitLineDash"
+  341: [10,14,371,16]
+  342: [10,14,372,16]
+  343: "webkitLineDashOffset"
+  344: [10,14,375,16]
+  345: [10,14,376,16]
 
 -- Running test case: Canvas.recording2D.memoryLimit
 initialState:
@@ -1483,8 +1453,8 @@ frames:
         1: (anonymous function) - inspector/canvas/recording-2d.html:77:42 (15)
         2: ignoreException - inspector/canvas/recording-2d.html:48:13 (17)
         3: (anonymous function) - inspector/canvas/recording-2d.html:77:28 (18)
-        4: executeFrameFunction - inspector/canvas/recording-2d.html:390:24 (20)
-        5: performActions - inspector/canvas/recording-2d.html:394:25 (22)
+        4: executeFrameFunction - inspector/canvas/recording-2d.html:383:24 (20)
+        5: performActions - inspector/canvas/recording-2d.html:387:25 (22)
         6: Global Code - [program code] (24)
         7: evaluateWithScopeExtension - [native code] (26)
         8: _evaluateOn (28)
@@ -1510,9 +1480,9 @@ data:
   17: [16,14,49,13]
   18: [10,14,78,28]
   19: "executeFrameFunction"
-  20: [19,14,391,24]
+  20: [19,14,384,24]
   21: "performActions"
-  22: [21,14,395,25]
+  22: [21,14,388,25]
   23: "global code"
   24: [23,10,1,15]
   25: "evaluateWithScopeExtension"
index ca9bafe..9d58efd 100644 (file)
@@ -364,9 +364,6 @@ function performActions() {
             ctx.translate(1, 2);
         },
         () => {
-            ignoreException(() => ctx.webkitGetImageDataHD(1, 2, 3, 4));
-        },
-        () => {
             ctx.webkitImageSmoothingEnabled;
             ctx.webkitImageSmoothingEnabled = true;
         },
@@ -379,10 +376,6 @@ function performActions() {
             ctx.webkitLineDashOffset = 1;
         },
         () => {
-            ctx.webkitPutImageDataHD(imageData14, 5, 6);
-            ctx.webkitPutImageDataHD(imageData23, 7, 8, 9, 10, 11, 12);
-        },
-        () => {
             TestPage.dispatchEventToFrontend("LastFrame");
         },
     ];
index a1ed893..525e76c 100644 (file)
@@ -488,7 +488,6 @@ webkit.org/b/149774 css3/font-variant-small-caps-synthesis.html [ Skip ] # WontF
 # https://bugs.webkit.org/show_bug.cgi?id=87919
 webkit.org/b/87919 compositing/tiled-layers-hidpi.html
 webkit.org/b/87919 fast/canvas/2d.backingStorePixelRatio.html
-webkit.org/b/87919 fast/canvas/2d.imageDataHD.html
 webkit.org/b/87919 fast/hidpi
 webkit.org/b/87919 svg/as-image/image-respects-deviceScaleFactor.html
 webkit.org/b/87919 fast/inline-block/hidpi-margin-top-with-subpixel-value-and-overflow-hidden.html [ ImageOnlyFailure ]
index 9509fdb..71cb038 100644 (file)
@@ -1,3 +1,22 @@
+2017-12-05  Simon Fraser  <simon.fraser@apple.com>
+
+        Remove webkitGetImageDataHD and webkitPutImageDataHD from canvas API
+        https://bugs.webkit.org/show_bug.cgi?id=180387
+
+        Reviewed by Dean Jackson.
+
+        CanvasRenderingContext2D.webkitGetImageDataHD and webkitPutImageDataHD were never standardized,
+        and Blink removed support in 2014 (https://groups.google.com/a/chromium.org/forum/#!topic/blink-dev/FOPH5dloGG8).
+
+        Since our canvas backing store is always 1x, they have no use anyway, so remove them.
+
+        * html/canvas/CanvasRenderingContext2D.cpp:
+        (WebCore::CanvasRenderingContext2D::putImageData):
+        (WebCore::CanvasRenderingContext2D::webkitGetImageDataHD const): Deleted.
+        (WebCore::CanvasRenderingContext2D::webkitPutImageDataHD): Deleted.
+        * html/canvas/CanvasRenderingContext2D.h:
+        * html/canvas/CanvasRenderingContext2D.idl:
+
 2017-12-05  Youenn Fablet  <youenn@apple.com>
 
         Implement setting of service worker to client in SWServer without going to WebProcess
index 7b06bb5..44e6109 100644 (file)
@@ -2122,11 +2122,6 @@ ExceptionOr<RefPtr<ImageData>> CanvasRenderingContext2D::getImageData(float sx,
     return getImageData(ImageBuffer::LogicalCoordinateSystem, sx, sy, sw, sh);
 }
 
-ExceptionOr<RefPtr<ImageData>> CanvasRenderingContext2D::webkitGetImageDataHD(float sx, float sy, float sw, float sh) const
-{
-    return getImageData(ImageBuffer::BackingStoreCoordinateSystem, sx, sy, sw, sh);
-}
-
 ExceptionOr<RefPtr<ImageData>> CanvasRenderingContext2D::getImageData(ImageBuffer::CoordinateSystem coordinateSystem, float sx, float sy, float sw, float sh) const
 {
     if (!canvas().originClean()) {
@@ -2180,21 +2175,11 @@ void CanvasRenderingContext2D::putImageData(ImageData& data, float dx, float dy)
     putImageData(data, dx, dy, 0, 0, data.width(), data.height());
 }
 
-void CanvasRenderingContext2D::webkitPutImageDataHD(ImageData& data, float dx, float dy)
-{
-    webkitPutImageDataHD(data, dx, dy, 0, 0, data.width(), data.height());
-}
-
 void CanvasRenderingContext2D::putImageData(ImageData& data, float dx, float dy, float dirtyX, float dirtyY, float dirtyWidth, float dirtyHeight)
 {
     putImageData(data, ImageBuffer::LogicalCoordinateSystem, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight);
 }
 
-void CanvasRenderingContext2D::webkitPutImageDataHD(ImageData& data, float dx, float dy, float dirtyX, float dirtyY, float dirtyWidth, float dirtyHeight)
-{
-    putImageData(data, ImageBuffer::BackingStoreCoordinateSystem, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight);
-}
-
 void CanvasRenderingContext2D::drawFocusIfNeeded(Element& element)
 {
     drawFocusIfNeededInternal(m_path, element);
index a1d2f35..63361cf 100644 (file)
@@ -187,11 +187,8 @@ public:
     ExceptionOr<RefPtr<ImageData>> createImageData(ImageData*) const;
     ExceptionOr<RefPtr<ImageData>> createImageData(float width, float height) const;
     ExceptionOr<RefPtr<ImageData>> getImageData(float sx, float sy, float sw, float sh) const;
-    ExceptionOr<RefPtr<ImageData>> webkitGetImageDataHD(float sx, float sy, float sw, float sh) const;
     void putImageData(ImageData&, float dx, float dy);
     void putImageData(ImageData&, float dx, float dy, float dirtyX, float dirtyY, float dirtyWidth, float dirtyHeight);
-    void webkitPutImageDataHD(ImageData&, float dx, float dy);
-    void webkitPutImageDataHD(ImageData&, float dx, float dy, float dirtyX, float dirtyY, float dirtyWidth, float dirtyHeight);
 
     void drawFocusIfNeeded(Element&);
     void drawFocusIfNeeded(Path2D&, Element&);
index a6246e5..e884797 100644 (file)
     void setFillColor(unrestricted float c, unrestricted float m, unrestricted float y, unrestricted float k, unrestricted float a);
 
     // Non-standard functionality (CanvasImageData).
-    readonly attribute float webkitBackingStorePixelRatio;
-    [MayThrowException] ImageData webkitGetImageDataHD(float sx, float sy, float sw, float sh);
-    void webkitPutImageDataHD(ImageData imagedata, float dx, float dy);
-    void webkitPutImageDataHD(ImageData imagedata, float dx, float dy, float dirtyX, float dirtyY, float dirtyWidth, float dirtyHeight);
+    readonly attribute float webkitBackingStorePixelRatio; // Always returns 1.
 
     // Non-standard legacy alias (CanvasImageSmoothing).
     [ImplementedAs=imageSmoothingEnabled] attribute boolean webkitImageSmoothingEnabled;
index 5450689..3ff215a 100644 (file)
@@ -1,3 +1,23 @@
+2017-12-05  Simon Fraser  <simon.fraser@apple.com>
+
+        Remove webkitGetImageDataHD and webkitPutImageDataHD from canvas API
+        https://bugs.webkit.org/show_bug.cgi?id=180387
+
+        Reviewed by Dean Jackson.
+
+        CanvasRenderingContext2D.webkitGetImageDataHD and webkitPutImageDataHD were never standardized,
+        and Blink removed support in 2014 (https://groups.google.com/a/chromium.org/forum/#!topic/blink-dev/FOPH5dloGG8).
+
+        Since our canvas backing store is always 1x, they have no use anyway, so remove them.
+
+        * UserInterface/Models/NativeFunctionParameters.js:
+        * UserInterface/Models/RecordingAction.js:
+        (WI.RecordingAction.prototype.getImageParameters):
+        (WI.RecordingAction):
+        * UserInterface/Views/RecordingActionTreeElement.js:
+        (WI.RecordingActionTreeElement._classNameForAction.classNameForActionName):
+        (WI.RecordingActionTreeElement._classNameForAction):
+
 2017-12-04  Devin Rousso  <webkit@devinrousso.com>
 
         Web Inspector: provide method for recording CanvasRenderingContext2D from JavaScript
index 629e0b7..7010c3a 100644 (file)
@@ -681,8 +681,6 @@ WI.NativePrototypeFunctionParameters = {
         strokeText: "text, x, y, [maxWidth]",
         transform: "m11, m12, m21, m22, dx, dy",
         translate: "tx, ty",
-        webkitGetImageDataHD: "sx, sy, sw, sh",
-        webkitPutImageDataHD: "imagedata, dx, dy",
         __proto__: null,
     },
 
index 0141999..7d3b9d7 100644 (file)
@@ -267,7 +267,6 @@ WI.RecordingAction = class RecordingAction extends WI.Object
         case "strokeStyle":
         // 2D (non-standard)
         case "drawImageFromRect":
-        case "webkitPutImageDataHD":
             return this._parameters.slice(0, 1);
         }
 
@@ -338,8 +337,6 @@ WI.RecordingAction._functionNames = {
         "strokeText",
         "transform",
         "translate",
-        "webkitGetImageDataHD",
-        "webkitPutImageDataHD",
     ]),
     [WI.Recording.Type.CanvasWebGL]: new Set([
         "activeTexture",
@@ -496,7 +493,6 @@ WI.RecordingAction._visualNames = {
         "stroke",
         "strokeRect",
         "strokeText",
-        "webkitPutImageDataHD",
     ]),
     [WI.Recording.Type.CanvasWebGL]: new Set([
         "clear",
index f29924a..509e21f 100644 (file)
@@ -270,8 +270,6 @@ WI.RecordingActionTreeElement = class RecordingActionTreeElement extends WI.Gene
             case "imageSmoothingEnabled":
             case "imageSmoothingQuality":
             case "putImageData":
-            case "webkitGetImageDataHD":
-            case "webkitPutImageDataHD":
             case "webkitImageSmoothingEnabled":
                 return "image";