<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[284801] branches/safari-612-branch</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/284801">284801</a></dd>
<dt>Author</dt> <dd>alancoon@apple.com</dd>
<dt>Date</dt> <dd>2021-10-25 12:09:31 -0700 (Mon, 25 Oct 2021)</dd>
</dl>

<h3>Log Message</h3>
<pre>Cherry-pick <a href="http://trac.webkit.org/projects/webkit/changeset/282984">r282984</a>. rdar://problem/77587429

    Web Inspector: Graphics: add instrumentation for new `CanvasRenderingContext2DSettings`
    https://bugs.webkit.org/show_bug.cgi?id=225180
    <rdar://problem/77587429>

    Reviewed by BJ Burg.

    Source/JavaScriptCore:

    * inspector/protocol/Canvas.json:
    Add `colorSpace` and `desynchronized` to `Canvas.ContextAttributes`.

    Source/WebCore:

    * inspector/InspectorCanvas.cpp:
    (WebCore::buildObjectForCanvasContextAttributes): Added.
    (WebCore::InspectorCanvas::buildObjectForCanvas):
    (WebCore::InspectorCanvas::buildInitialState):
    Unify the two cases where we fetch canvas attributes into a single method so that both get
    the same data. This means that the canvas recorder now also uses `Canvas.ContextAttributes`.

    LayoutTests:

    * inspector/canvas/context-attributes-expected.txt:
    * inspector/canvas/recording-2d-frameCount-expected.txt:
    * inspector/canvas/recording-2d-full-expected.txt:
    * inspector/canvas/recording-2d-memoryLimit-expected.txt:
    * inspector/canvas/recording-bitmaprenderer-frameCount-expected.txt:
    * inspector/canvas/recording-bitmaprenderer-full-expected.txt:
    * inspector/canvas/recording-bitmaprenderer-memoryLimit-expected.txt:
    * inspector/canvas/recording-html-2d-expected.txt:
    * inspector/canvas/recording-webgl-frameCount-expected.txt:
    * inspector/canvas/recording-webgl-full-expected.txt:
    * inspector/canvas/recording-webgl-memoryLimit-expected.txt:
    * inspector/canvas/recording-webgl-snapshots-expected.txt:
    * inspector/canvas/recording-webgl2-frameCount-expected.txt:
    * inspector/canvas/recording-webgl2-full-expected.txt:
    * inspector/canvas/recording-webgl2-memoryLimit-expected.txt:
    * inspector/canvas/recording-webgl2-snapshots-expected.txt:

    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@282984 268f45cc-cd09-0410-ab3c-d52691b4dbfc</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#branchessafari612branchLayoutTestsChangeLog">branches/safari-612-branch/LayoutTests/ChangeLog</a></li>
<li><a href="#branchessafari612branchLayoutTestsinspectorcanvascontextattributesexpectedtxt">branches/safari-612-branch/LayoutTests/inspector/canvas/context-attributes-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsinspectorcanvasrecording2dframeCountexpectedtxt">branches/safari-612-branch/LayoutTests/inspector/canvas/recording-2d-frameCount-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsinspectorcanvasrecording2dfullexpectedtxt">branches/safari-612-branch/LayoutTests/inspector/canvas/recording-2d-full-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsinspectorcanvasrecording2dmemoryLimitexpectedtxt">branches/safari-612-branch/LayoutTests/inspector/canvas/recording-2d-memoryLimit-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsinspectorcanvasrecordingbitmaprendererframeCountexpectedtxt">branches/safari-612-branch/LayoutTests/inspector/canvas/recording-bitmaprenderer-frameCount-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsinspectorcanvasrecordingbitmaprendererfullexpectedtxt">branches/safari-612-branch/LayoutTests/inspector/canvas/recording-bitmaprenderer-full-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsinspectorcanvasrecordingbitmaprenderermemoryLimitexpectedtxt">branches/safari-612-branch/LayoutTests/inspector/canvas/recording-bitmaprenderer-memoryLimit-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsinspectorcanvasrecordinghtml2dexpectedtxt">branches/safari-612-branch/LayoutTests/inspector/canvas/recording-html-2d-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsinspectorcanvasrecordingwebglframeCountexpectedtxt">branches/safari-612-branch/LayoutTests/inspector/canvas/recording-webgl-frameCount-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsinspectorcanvasrecordingwebglfullexpectedtxt">branches/safari-612-branch/LayoutTests/inspector/canvas/recording-webgl-full-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsinspectorcanvasrecordingwebglmemoryLimitexpectedtxt">branches/safari-612-branch/LayoutTests/inspector/canvas/recording-webgl-memoryLimit-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsinspectorcanvasrecordingwebglsnapshotsexpectedtxt">branches/safari-612-branch/LayoutTests/inspector/canvas/recording-webgl-snapshots-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsinspectorcanvasrecordingwebgl2frameCountexpectedtxt">branches/safari-612-branch/LayoutTests/inspector/canvas/recording-webgl2-frameCount-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsinspectorcanvasrecordingwebgl2fullexpectedtxt">branches/safari-612-branch/LayoutTests/inspector/canvas/recording-webgl2-full-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsinspectorcanvasrecordingwebgl2memoryLimitexpectedtxt">branches/safari-612-branch/LayoutTests/inspector/canvas/recording-webgl2-memoryLimit-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsinspectorcanvasrecordingwebgl2snapshotsexpectedtxt">branches/safari-612-branch/LayoutTests/inspector/canvas/recording-webgl2-snapshots-expected.txt</a></li>
<li><a href="#branchessafari612branchSourceJavaScriptCoreChangeLog">branches/safari-612-branch/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#branchessafari612branchSourceJavaScriptCoreinspectorprotocolCanvasjson">branches/safari-612-branch/Source/JavaScriptCore/inspector/protocol/Canvas.json</a></li>
<li><a href="#branchessafari612branchSourceWebCoreChangeLog">branches/safari-612-branch/Source/WebCore/ChangeLog</a></li>
<li><a href="#branchessafari612branchSourceWebCoreinspectorInspectorCanvascpp">branches/safari-612-branch/Source/WebCore/inspector/InspectorCanvas.cpp</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li>branches/safari-612-branch/LayoutTests/platform/mac-wk1/inspector/canvas/</li>
<li><a href="#branchessafari612branchLayoutTestsplatformmacwk1inspectorcanvasrecordingwebglframeCountexpectedtxt">branches/safari-612-branch/LayoutTests/platform/mac-wk1/inspector/canvas/recording-webgl-frameCount-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsplatformmacwk1inspectorcanvasrecordingwebglfullexpectedtxt">branches/safari-612-branch/LayoutTests/platform/mac-wk1/inspector/canvas/recording-webgl-full-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsplatformmacwk1inspectorcanvasrecordingwebglmemoryLimitexpectedtxt">branches/safari-612-branch/LayoutTests/platform/mac-wk1/inspector/canvas/recording-webgl-memoryLimit-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsplatformmacwk1inspectorcanvasrecordingwebglsnapshotsexpectedtxt">branches/safari-612-branch/LayoutTests/platform/mac-wk1/inspector/canvas/recording-webgl-snapshots-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsplatformmacwk1inspectorcanvasrecordingwebgl2frameCountexpectedtxt">branches/safari-612-branch/LayoutTests/platform/mac-wk1/inspector/canvas/recording-webgl2-frameCount-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsplatformmacwk1inspectorcanvasrecordingwebgl2fullexpectedtxt">branches/safari-612-branch/LayoutTests/platform/mac-wk1/inspector/canvas/recording-webgl2-full-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsplatformmacwk1inspectorcanvasrecordingwebgl2memoryLimitexpectedtxt">branches/safari-612-branch/LayoutTests/platform/mac-wk1/inspector/canvas/recording-webgl2-memoryLimit-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsplatformmacwk1inspectorcanvasrecordingwebgl2snapshotsexpectedtxt">branches/safari-612-branch/LayoutTests/platform/mac-wk1/inspector/canvas/recording-webgl2-snapshots-expected.txt</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="branchessafari612branchLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/ChangeLog (284800 => 284801)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/ChangeLog 2021-10-25 18:37:30 UTC (rev 284800)
+++ branches/safari-612-branch/LayoutTests/ChangeLog    2021-10-25 19:09:31 UTC (rev 284801)
</span><span class="lines">@@ -1,3 +1,74 @@
</span><ins>+2021-10-25  Null  <null@apple.com>
+
+        Cherry-pick r282984. rdar://problem/77587429
+
+    Web Inspector: Graphics: add instrumentation for new `CanvasRenderingContext2DSettings`
+    https://bugs.webkit.org/show_bug.cgi?id=225180
+    <rdar://problem/77587429>
+    
+    Reviewed by BJ Burg.
+    
+    Source/JavaScriptCore:
+    
+    * inspector/protocol/Canvas.json:
+    Add `colorSpace` and `desynchronized` to `Canvas.ContextAttributes`.
+    
+    Source/WebCore:
+    
+    * inspector/InspectorCanvas.cpp:
+    (WebCore::buildObjectForCanvasContextAttributes): Added.
+    (WebCore::InspectorCanvas::buildObjectForCanvas):
+    (WebCore::InspectorCanvas::buildInitialState):
+    Unify the two cases where we fetch canvas attributes into a single method so that both get
+    the same data. This means that the canvas recorder now also uses `Canvas.ContextAttributes`.
+    
+    LayoutTests:
+    
+    * inspector/canvas/context-attributes-expected.txt:
+    * inspector/canvas/recording-2d-frameCount-expected.txt:
+    * inspector/canvas/recording-2d-full-expected.txt:
+    * inspector/canvas/recording-2d-memoryLimit-expected.txt:
+    * inspector/canvas/recording-bitmaprenderer-frameCount-expected.txt:
+    * inspector/canvas/recording-bitmaprenderer-full-expected.txt:
+    * inspector/canvas/recording-bitmaprenderer-memoryLimit-expected.txt:
+    * inspector/canvas/recording-html-2d-expected.txt:
+    * inspector/canvas/recording-webgl-frameCount-expected.txt:
+    * inspector/canvas/recording-webgl-full-expected.txt:
+    * inspector/canvas/recording-webgl-memoryLimit-expected.txt:
+    * inspector/canvas/recording-webgl-snapshots-expected.txt:
+    * inspector/canvas/recording-webgl2-frameCount-expected.txt:
+    * inspector/canvas/recording-webgl2-full-expected.txt:
+    * inspector/canvas/recording-webgl2-memoryLimit-expected.txt:
+    * inspector/canvas/recording-webgl2-snapshots-expected.txt:
+    
+    
+    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@282984 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+    2021-09-23  Devin Rousso  <drousso@apple.com>
+
+            Web Inspector: Graphics: add instrumentation for new `CanvasRenderingContext2DSettings`
+            https://bugs.webkit.org/show_bug.cgi?id=225180
+            <rdar://problem/77587429>
+
+            Reviewed by BJ Burg.
+
+            * inspector/canvas/context-attributes-expected.txt:
+            * inspector/canvas/recording-2d-frameCount-expected.txt:
+            * inspector/canvas/recording-2d-full-expected.txt:
+            * inspector/canvas/recording-2d-memoryLimit-expected.txt:
+            * inspector/canvas/recording-bitmaprenderer-frameCount-expected.txt:
+            * inspector/canvas/recording-bitmaprenderer-full-expected.txt:
+            * inspector/canvas/recording-bitmaprenderer-memoryLimit-expected.txt:
+            * inspector/canvas/recording-html-2d-expected.txt:
+            * inspector/canvas/recording-webgl-frameCount-expected.txt:
+            * inspector/canvas/recording-webgl-full-expected.txt:
+            * inspector/canvas/recording-webgl-memoryLimit-expected.txt:
+            * inspector/canvas/recording-webgl-snapshots-expected.txt:
+            * inspector/canvas/recording-webgl2-frameCount-expected.txt:
+            * inspector/canvas/recording-webgl2-full-expected.txt:
+            * inspector/canvas/recording-webgl2-memoryLimit-expected.txt:
+            * inspector/canvas/recording-webgl2-snapshots-expected.txt:
+
</ins><span class="cx"> 2021-10-22  Alan Coon  <alancoon@apple.com>
</span><span class="cx"> 
</span><span class="cx">         Cherry-pick r283952. rdar://problem/84558050
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsinspectorcanvascontextattributesexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/inspector/canvas/context-attributes-expected.txt (284800 => 284801)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/inspector/canvas/context-attributes-expected.txt  2021-10-25 18:37:30 UTC (rev 284800)
+++ branches/safari-612-branch/LayoutTests/inspector/canvas/context-attributes-expected.txt     2021-10-25 19:09:31 UTC (rev 284801)
</span><span class="lines">@@ -5,7 +5,10 @@
</span><span class="cx"> -- Running test case: Create2DCanvasContext
</span><span class="cx"> Added canvas.
</span><span class="cx"> PASS: Canvas context should be "2D".
</span><del>-{}
</del><ins>+{
+  "colorSpace": "srgb",
+  "desynchronized": false
+}
</ins><span class="cx"> 
</span><span class="cx"> -- Running test case: CreateBitmapRendererCanvasContext
</span><span class="cx"> Added canvas.
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsinspectorcanvasrecording2dframeCountexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/inspector/canvas/recording-2d-frameCount-expected.txt (284800 => 284801)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/inspector/canvas/recording-2d-frameCount-expected.txt     2021-10-25 18:37:30 UTC (rev 284800)
+++ branches/safari-612-branch/LayoutTests/inspector/canvas/recording-2d-frameCount-expected.txt        2021-10-25 19:09:31 UTC (rev 284801)
</span><span class="lines">@@ -31,6 +31,7 @@
</span><span class="cx">     imageSmoothingQuality: "low"
</span><span class="cx">     setPath: [""]
</span><span class="cx">   parameters:
</span><ins>+    0: {"colorSpace":"srgb","desynchronized":false}
</ins><span class="cx">   content: <filtered>
</span><span class="cx"> frames:
</span><span class="cx">   0: (duration)
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsinspectorcanvasrecording2dfullexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/inspector/canvas/recording-2d-full-expected.txt (284800 => 284801)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/inspector/canvas/recording-2d-full-expected.txt   2021-10-25 18:37:30 UTC (rev 284800)
+++ branches/safari-612-branch/LayoutTests/inspector/canvas/recording-2d-full-expected.txt      2021-10-25 19:09:31 UTC (rev 284801)
</span><span class="lines">@@ -31,6 +31,7 @@
</span><span class="cx">     imageSmoothingQuality: "low"
</span><span class="cx">     setPath: [""]
</span><span class="cx">   parameters:
</span><ins>+    0: {"colorSpace":"srgb","desynchronized":false}
</ins><span class="cx">   content: <filtered>
</span><span class="cx"> frames:
</span><span class="cx">   0: (duration)
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsinspectorcanvasrecording2dmemoryLimitexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/inspector/canvas/recording-2d-memoryLimit-expected.txt (284800 => 284801)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/inspector/canvas/recording-2d-memoryLimit-expected.txt    2021-10-25 18:37:30 UTC (rev 284800)
+++ branches/safari-612-branch/LayoutTests/inspector/canvas/recording-2d-memoryLimit-expected.txt       2021-10-25 19:09:31 UTC (rev 284801)
</span><span class="lines">@@ -31,6 +31,7 @@
</span><span class="cx">     imageSmoothingQuality: "low"
</span><span class="cx">     setPath: [""]
</span><span class="cx">   parameters:
</span><ins>+    0: {"colorSpace":"srgb","desynchronized":false}
</ins><span class="cx">   content: <filtered>
</span><span class="cx"> frames:
</span><span class="cx">   0: (duration) (incomplete)
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsinspectorcanvasrecordingbitmaprendererframeCountexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/inspector/canvas/recording-bitmaprenderer-frameCount-expected.txt (284800 => 284801)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/inspector/canvas/recording-bitmaprenderer-frameCount-expected.txt 2021-10-25 18:37:30 UTC (rev 284800)
+++ branches/safari-612-branch/LayoutTests/inspector/canvas/recording-bitmaprenderer-frameCount-expected.txt    2021-10-25 19:09:31 UTC (rev 284801)
</span><span class="lines">@@ -8,6 +8,7 @@
</span><span class="cx">     width: 2
</span><span class="cx">     height: 2
</span><span class="cx">   parameters:
</span><ins>+    0: {"alpha":true}
</ins><span class="cx">   content: <filtered>
</span><span class="cx"> frames:
</span><span class="cx">   0: (duration)
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsinspectorcanvasrecordingbitmaprendererfullexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/inspector/canvas/recording-bitmaprenderer-full-expected.txt (284800 => 284801)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/inspector/canvas/recording-bitmaprenderer-full-expected.txt       2021-10-25 18:37:30 UTC (rev 284800)
+++ branches/safari-612-branch/LayoutTests/inspector/canvas/recording-bitmaprenderer-full-expected.txt  2021-10-25 19:09:31 UTC (rev 284801)
</span><span class="lines">@@ -8,6 +8,7 @@
</span><span class="cx">     width: 2
</span><span class="cx">     height: 2
</span><span class="cx">   parameters:
</span><ins>+    0: {"alpha":true}
</ins><span class="cx">   content: <filtered>
</span><span class="cx"> frames:
</span><span class="cx">   0: (duration)
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsinspectorcanvasrecordingbitmaprenderermemoryLimitexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/inspector/canvas/recording-bitmaprenderer-memoryLimit-expected.txt (284800 => 284801)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/inspector/canvas/recording-bitmaprenderer-memoryLimit-expected.txt        2021-10-25 18:37:30 UTC (rev 284800)
+++ branches/safari-612-branch/LayoutTests/inspector/canvas/recording-bitmaprenderer-memoryLimit-expected.txt   2021-10-25 19:09:31 UTC (rev 284801)
</span><span class="lines">@@ -8,6 +8,7 @@
</span><span class="cx">     width: 2
</span><span class="cx">     height: 2
</span><span class="cx">   parameters:
</span><ins>+    0: {"alpha":true}
</ins><span class="cx">   content: <filtered>
</span><span class="cx"> frames:
</span><span class="cx">   0: (duration) (incomplete)
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsinspectorcanvasrecordinghtml2dexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/inspector/canvas/recording-html-2d-expected.txt (284800 => 284801)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/inspector/canvas/recording-html-2d-expected.txt   2021-10-25 18:37:30 UTC (rev 284800)
+++ branches/safari-612-branch/LayoutTests/inspector/canvas/recording-html-2d-expected.txt      2021-10-25 19:09:31 UTC (rev 284801)
</span><span class="lines">@@ -29,11 +29,11 @@
</span><span class="cx"> canvas.width = 2;
</span><span class="cx"> canvas.height = 2;
</span><span class="cx"> 
</span><del>-let context = canvas.getContext("2d");
</del><ins>+let context = canvas.getContext("2d", objects[0]);
</ins><span class="cx"> 
</span><span class="cx"> let frames = [
</span><span class="cx">     function initialState() {
</span><del>-        context.drawImage(objects[0], 0, 0);
</del><ins>+        context.drawImage(objects[1], 0, 0);
</ins><span class="cx"> 
</span><span class="cx">         context.direction = "ltr";
</span><span class="cx">         context.fillStyle = "#000000";
</span><span class="lines">@@ -60,7 +60,7 @@
</span><span class="cx">         context.webkitLineDash = [];
</span><span class="cx">         context.webkitLineDashOffset = 0;
</span><span class="cx">         if ("setPath" in context)
</span><del>-            context.setPath(objects[1]);
</del><ins>+            context.setPath(objects[2]);
</ins><span class="cx">         context.save();
</span><span class="cx"> 
</span><span class="cx">         context.direction = "ltr";
</span><span class="lines">@@ -88,7 +88,7 @@
</span><span class="cx">         context.webkitLineDash = [];
</span><span class="cx">         context.webkitLineDashOffset = 0;
</span><span class="cx">         if ("setPath" in context)
</span><del>-            context.setPath(objects[2]);
</del><ins>+            context.setPath(objects[3]);
</ins><span class="cx">         context.save();
</span><span class="cx"> 
</span><span class="cx">         context.direction = "ltr";
</span><span class="lines">@@ -116,7 +116,7 @@
</span><span class="cx">         context.webkitLineDash = [];
</span><span class="cx">         context.webkitLineDashOffset = 0;
</span><span class="cx">         if ("setPath" in context)
</span><del>-            context.setPath(objects[3]);
</del><ins>+            context.setPath(objects[4]);
</ins><span class="cx">     },
</span><span class="cx">     function startRecording() {
</span><span class="cx">         if (typeof console.record === "function")
</span><span class="lines">@@ -125,10 +125,10 @@
</span><span class="cx">     function frame1() {
</span><span class="cx">         context.fillStyle;
</span><span class="cx">         context.fillStyle = "test";
</span><del>-        context.fillStyle = objects[4];
</del><span class="cx">         context.fillStyle = objects[5];
</span><span class="cx">         context.fillStyle = objects[6];
</span><span class="cx">         context.fillStyle = objects[7];
</span><ins>+        context.fillStyle = objects[8];
</ins><span class="cx">     },
</span><span class="cx">     function frame2() {
</span><span class="cx">         context.beginPath();
</span><span class="lines">@@ -137,19 +137,19 @@
</span><span class="cx">         context.moveTo(1, 2);
</span><span class="cx">     },
</span><span class="cx">     function frame4() {
</span><del>-        context.drawImage(objects[8], 11, 12);
</del><ins>+        context.drawImage(objects[9], 11, 12);
</ins><span class="cx">     },
</span><span class="cx">     function frame5() {
</span><del>-        context.createImageData(objects[9]);
</del><ins>+        context.createImageData(objects[10]);
</ins><span class="cx">     },
</span><span class="cx">     function frame6() {
</span><del>-        context.drawImage(objects[10], 11, 12);
</del><ins>+        context.drawImage(objects[11], 11, 12);
</ins><span class="cx">     },
</span><span class="cx">     function frame7() {
</span><del>-        context.setTransform(objects[11]);
</del><ins>+        context.setTransform(objects[12]);
</ins><span class="cx">     },
</span><span class="cx">     function frame8() {
</span><del>-        // context.drawFocusIfNeeded(objects[12], "Element");
</del><ins>+        // context.drawFocusIfNeeded(objects[13], "Element");
</ins><span class="cx">     },
</span><span class="cx">     function stopRecording() {
</span><span class="cx">         if (typeof console.recordEnd === "function")
</span><span class="lines">@@ -217,19 +217,19 @@
</span><span class="cx">     objects[key] = new Path2D(data);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-rebuildImage(0, <filtered>);
-rebuildPath2D(1, "");
</del><ins>+rebuildImage(1, <filtered>);
</ins><span class="cx"> rebuildPath2D(2, "");
</span><span class="cx"> rebuildPath2D(3, "");
</span><del>-rebuildCanvasGradient(4, {"type":"linear-gradient","points":[1,2,3,4],"stops":[{"offset":1,"color":"rgb(255, 0, 0)"},{"offset":1,"color":"rgb(0, 0, 255)"}]});
-rebuildCanvasGradient(5, {"type":"radial-gradient","points":[1,2,3,4,5,6],"stops":[]});
-rebuildCanvasGradient(6, {"type":"conic-gradient","points":[2,3,1],"stops":[{"offset":1,"color":"rgb(0, 128, 0)"}]});
-rebuildCanvasPattern(7, {"image":<filtered>,"repeat":"no-repeat"});
-rebuildImage(8, <filtered>);
-rebuildImageData(9, {"data":[0,0,0,0,0,0,0,0],"width":1,"height":2});
-rebuildImageBitmap(10, <filtered>);
-rebuildDOMMatrix(11, "matrix(1, 2, 3, 4, 5, 6)");
-rebuildPath2D(12, "M1 2");
</del><ins>+rebuildPath2D(4, "");
+rebuildCanvasGradient(5, {"type":"linear-gradient","points":[1,2,3,4],"stops":[{"offset":1,"color":"rgb(255, 0, 0)"},{"offset":1,"color":"rgb(0, 0, 255)"}]});
+rebuildCanvasGradient(6, {"type":"radial-gradient","points":[1,2,3,4,5,6],"stops":[]});
+rebuildCanvasGradient(7, {"type":"conic-gradient","points":[2,3,1],"stops":[{"offset":1,"color":"rgb(0, 128, 0)"}]});
+rebuildCanvasPattern(8, {"image":<filtered>,"repeat":"no-repeat"});
+rebuildImage(9, <filtered>);
+rebuildImageData(10, {"data":[0,0,0,0,0,0,0,0],"width":1,"height":2});
+rebuildImageBitmap(11, <filtered>);
+rebuildDOMMatrix(12, "matrix(1, 2, 3, 4, 5, 6)");
+rebuildPath2D(13, "M1 2");
</ins><span class="cx"> 
</span><span class="cx"> Promise.all(promises).then(function() {
</span><span class="cx">     window.requestAnimationFrame(function executeFrame() {
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsinspectorcanvasrecordingwebglframeCountexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/inspector/canvas/recording-webgl-frameCount-expected.txt (284800 => 284801)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/inspector/canvas/recording-webgl-frameCount-expected.txt  2021-10-25 18:37:30 UTC (rev 284800)
+++ branches/safari-612-branch/LayoutTests/inspector/canvas/recording-webgl-frameCount-expected.txt     2021-10-25 19:09:31 UTC (rev 284801)
</span><span class="lines">@@ -8,7 +8,7 @@
</span><span class="cx">     width: 2
</span><span class="cx">     height: 2
</span><span class="cx">   parameters:
</span><del>-    0: {"alpha":true,"depth":true,"stencil":false,"antialias":true,"premultipliedAlpha":true,"preserveDrawingBuffer":false,"failIfMajorPerformanceCaveat":false}
</del><ins>+    0: {"alpha":true,"depth":true,"stencil":false,"antialias":true,"premultipliedAlpha":true,"preserveDrawingBuffer":false,"powerPreference":"default","failIfMajorPerformanceCaveat":false}
</ins><span class="cx">   content: <filtered>
</span><span class="cx"> frames:
</span><span class="cx">   0: (duration)
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsinspectorcanvasrecordingwebglfullexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/inspector/canvas/recording-webgl-full-expected.txt (284800 => 284801)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/inspector/canvas/recording-webgl-full-expected.txt        2021-10-25 18:37:30 UTC (rev 284800)
+++ branches/safari-612-branch/LayoutTests/inspector/canvas/recording-webgl-full-expected.txt   2021-10-25 19:09:31 UTC (rev 284801)
</span><span class="lines">@@ -8,7 +8,7 @@
</span><span class="cx">     width: 2
</span><span class="cx">     height: 2
</span><span class="cx">   parameters:
</span><del>-    0: {"alpha":true,"depth":true,"stencil":false,"antialias":true,"premultipliedAlpha":true,"preserveDrawingBuffer":false,"failIfMajorPerformanceCaveat":false}
</del><ins>+    0: {"alpha":true,"depth":true,"stencil":false,"antialias":true,"premultipliedAlpha":true,"preserveDrawingBuffer":false,"powerPreference":"default","failIfMajorPerformanceCaveat":false}
</ins><span class="cx">   content: <filtered>
</span><span class="cx"> frames:
</span><span class="cx">   0: (duration)
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsinspectorcanvasrecordingwebglmemoryLimitexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/inspector/canvas/recording-webgl-memoryLimit-expected.txt (284800 => 284801)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/inspector/canvas/recording-webgl-memoryLimit-expected.txt 2021-10-25 18:37:30 UTC (rev 284800)
+++ branches/safari-612-branch/LayoutTests/inspector/canvas/recording-webgl-memoryLimit-expected.txt    2021-10-25 19:09:31 UTC (rev 284801)
</span><span class="lines">@@ -8,7 +8,7 @@
</span><span class="cx">     width: 2
</span><span class="cx">     height: 2
</span><span class="cx">   parameters:
</span><del>-    0: {"alpha":true,"depth":true,"stencil":false,"antialias":true,"premultipliedAlpha":true,"preserveDrawingBuffer":false,"failIfMajorPerformanceCaveat":false}
</del><ins>+    0: {"alpha":true,"depth":true,"stencil":false,"antialias":true,"premultipliedAlpha":true,"preserveDrawingBuffer":false,"powerPreference":"default","failIfMajorPerformanceCaveat":false}
</ins><span class="cx">   content: <filtered>
</span><span class="cx"> frames:
</span><span class="cx">   0: (duration) (incomplete)
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsinspectorcanvasrecordingwebglsnapshotsexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/inspector/canvas/recording-webgl-snapshots-expected.txt (284800 => 284801)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/inspector/canvas/recording-webgl-snapshots-expected.txt   2021-10-25 18:37:30 UTC (rev 284800)
+++ branches/safari-612-branch/LayoutTests/inspector/canvas/recording-webgl-snapshots-expected.txt      2021-10-25 19:09:31 UTC (rev 284801)
</span><span class="lines">@@ -8,7 +8,7 @@
</span><span class="cx">     width: 300
</span><span class="cx">     height: 150
</span><span class="cx">   parameters:
</span><del>-    0: {"alpha":true,"depth":true,"stencil":false,"antialias":true,"premultipliedAlpha":true,"preserveDrawingBuffer":false,"failIfMajorPerformanceCaveat":false}
</del><ins>+    0: {"alpha":true,"depth":true,"stencil":false,"antialias":true,"premultipliedAlpha":true,"preserveDrawingBuffer":false,"powerPreference":"default","failIfMajorPerformanceCaveat":false}
</ins><span class="cx">   content: <filtered>
</span><span class="cx"> frames:
</span><span class="cx">   0: (duration)
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsinspectorcanvasrecordingwebgl2frameCountexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/inspector/canvas/recording-webgl2-frameCount-expected.txt (284800 => 284801)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/inspector/canvas/recording-webgl2-frameCount-expected.txt 2021-10-25 18:37:30 UTC (rev 284800)
+++ branches/safari-612-branch/LayoutTests/inspector/canvas/recording-webgl2-frameCount-expected.txt    2021-10-25 19:09:31 UTC (rev 284801)
</span><span class="lines">@@ -8,7 +8,7 @@
</span><span class="cx">     width: 2
</span><span class="cx">     height: 2
</span><span class="cx">   parameters:
</span><del>-    0: {"alpha":true,"depth":true,"stencil":false,"antialias":true,"premultipliedAlpha":true,"preserveDrawingBuffer":false,"failIfMajorPerformanceCaveat":false}
</del><ins>+    0: {"alpha":true,"depth":true,"stencil":false,"antialias":true,"premultipliedAlpha":true,"preserveDrawingBuffer":false,"powerPreference":"default","failIfMajorPerformanceCaveat":false}
</ins><span class="cx">   content: <filtered>
</span><span class="cx"> frames:
</span><span class="cx">   0: (duration)
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsinspectorcanvasrecordingwebgl2fullexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/inspector/canvas/recording-webgl2-full-expected.txt (284800 => 284801)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/inspector/canvas/recording-webgl2-full-expected.txt       2021-10-25 18:37:30 UTC (rev 284800)
+++ branches/safari-612-branch/LayoutTests/inspector/canvas/recording-webgl2-full-expected.txt  2021-10-25 19:09:31 UTC (rev 284801)
</span><span class="lines">@@ -8,7 +8,7 @@
</span><span class="cx">     width: 2
</span><span class="cx">     height: 2
</span><span class="cx">   parameters:
</span><del>-    0: {"alpha":true,"depth":true,"stencil":false,"antialias":true,"premultipliedAlpha":true,"preserveDrawingBuffer":false,"failIfMajorPerformanceCaveat":false}
</del><ins>+    0: {"alpha":true,"depth":true,"stencil":false,"antialias":true,"premultipliedAlpha":true,"preserveDrawingBuffer":false,"powerPreference":"default","failIfMajorPerformanceCaveat":false}
</ins><span class="cx">   content: <filtered>
</span><span class="cx"> frames:
</span><span class="cx">   0: (duration)
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsinspectorcanvasrecordingwebgl2memoryLimitexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/inspector/canvas/recording-webgl2-memoryLimit-expected.txt (284800 => 284801)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/inspector/canvas/recording-webgl2-memoryLimit-expected.txt        2021-10-25 18:37:30 UTC (rev 284800)
+++ branches/safari-612-branch/LayoutTests/inspector/canvas/recording-webgl2-memoryLimit-expected.txt   2021-10-25 19:09:31 UTC (rev 284801)
</span><span class="lines">@@ -8,7 +8,7 @@
</span><span class="cx">     width: 2
</span><span class="cx">     height: 2
</span><span class="cx">   parameters:
</span><del>-    0: {"alpha":true,"depth":true,"stencil":false,"antialias":true,"premultipliedAlpha":true,"preserveDrawingBuffer":false,"failIfMajorPerformanceCaveat":false}
</del><ins>+    0: {"alpha":true,"depth":true,"stencil":false,"antialias":true,"premultipliedAlpha":true,"preserveDrawingBuffer":false,"powerPreference":"default","failIfMajorPerformanceCaveat":false}
</ins><span class="cx">   content: <filtered>
</span><span class="cx"> frames:
</span><span class="cx">   0: (duration) (incomplete)
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsinspectorcanvasrecordingwebgl2snapshotsexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/inspector/canvas/recording-webgl2-snapshots-expected.txt (284800 => 284801)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/inspector/canvas/recording-webgl2-snapshots-expected.txt  2021-10-25 18:37:30 UTC (rev 284800)
+++ branches/safari-612-branch/LayoutTests/inspector/canvas/recording-webgl2-snapshots-expected.txt     2021-10-25 19:09:31 UTC (rev 284801)
</span><span class="lines">@@ -8,7 +8,7 @@
</span><span class="cx">     width: 300
</span><span class="cx">     height: 150
</span><span class="cx">   parameters:
</span><del>-    0: {"alpha":true,"depth":true,"stencil":false,"antialias":true,"premultipliedAlpha":true,"preserveDrawingBuffer":false,"failIfMajorPerformanceCaveat":false}
</del><ins>+    0: {"alpha":true,"depth":true,"stencil":false,"antialias":true,"premultipliedAlpha":true,"preserveDrawingBuffer":false,"powerPreference":"default","failIfMajorPerformanceCaveat":false}
</ins><span class="cx">   content: <filtered>
</span><span class="cx"> frames:
</span><span class="cx">   0: (duration)
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsplatformmacwk1inspectorcanvasrecordingwebglframeCountexpectedtxtfromrev284707branchessafari612branchLayoutTestsinspectorcanvasrecordingwebglframeCountexpectedtxt"></a>
<div class="copfile"><h4>Copied: branches/safari-612-branch/LayoutTests/platform/mac-wk1/inspector/canvas/recording-webgl-frameCount-expected.txt (from rev 284707, branches/safari-612-branch/LayoutTests/inspector/canvas/recording-webgl-frameCount-expected.txt) (0 => 284801)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/platform/mac-wk1/inspector/canvas/recording-webgl-frameCount-expected.txt                         (rev 0)
+++ branches/safari-612-branch/LayoutTests/platform/mac-wk1/inspector/canvas/recording-webgl-frameCount-expected.txt    2021-10-25 19:09:31 UTC (rev 284801)
</span><span class="lines">@@ -0,0 +1,26 @@
</span><ins>+Test that CanvasManager is able to record actions made to WebGL canvas contexts.
+
+
+== Running test suite: Canvas.recordingWebGL
+-- Running test case: Canvas.recordingWebGL.singleFrame
+initialState:
+  attributes:
+    width: 2
+    height: 2
+  parameters:
+    0: {"alpha":true,"depth":true,"stencil":false,"antialias":true,"premultipliedAlpha":true,"preserveDrawingBuffer":false,"powerPreference":"low-power","failIfMajorPerformanceCaveat":false}
+  content: <filtered>
+frames:
+  0: (duration)
+    0: activeTexture(1)
+      swizzleTypes: [Number]
+      trace:
+        0: activeTexture
+        1: (anonymous function)
+        2: executeFrameFunction
+        3: performActions
+        4: Global Code
+        5: evaluateWithScopeExtension
+        6: (anonymous function)
+        7: _wrapCall
+
</ins></span></pre></div>
<a id="branchessafari612branchLayoutTestsplatformmacwk1inspectorcanvasrecordingwebglfullexpectedtxtfromrev284707branchessafari612branchLayoutTestsinspectorcanvasrecordingwebglfullexpectedtxt"></a>
<div class="copfile"><h4>Copied: branches/safari-612-branch/LayoutTests/platform/mac-wk1/inspector/canvas/recording-webgl-full-expected.txt (from rev 284707, branches/safari-612-branch/LayoutTests/inspector/canvas/recording-webgl-full-expected.txt) (0 => 284801)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/platform/mac-wk1/inspector/canvas/recording-webgl-full-expected.txt                               (rev 0)
+++ branches/safari-612-branch/LayoutTests/platform/mac-wk1/inspector/canvas/recording-webgl-full-expected.txt  2021-10-25 19:09:31 UTC (rev 284801)
</span><span class="lines">@@ -0,0 +1,1001 @@
</span><ins>+Test that CanvasManager is able to record actions made to WebGL canvas contexts.
+
+
+== Running test suite: Canvas.recordingWebGL
+-- Running test case: Canvas.recordingWebGL.multipleFrames
+initialState:
+  attributes:
+    width: 2
+    height: 2
+  parameters:
+    0: {"alpha":true,"depth":true,"stencil":false,"antialias":true,"premultipliedAlpha":true,"preserveDrawingBuffer":false,"powerPreference":"low-power","failIfMajorPerformanceCaveat":false}
+  content: <filtered>
+frames:
+  0: (duration)
+    0: activeTexture(1)
+      swizzleTypes: [Number]
+      trace:
+        0: activeTexture
+        1: (anonymous function)
+        2: executeFrameFunction
+        3: performActions
+        4: Global Code
+        5: evaluateWithScopeExtension
+        6: (anonymous function)
+        7: _wrapCall
+  1: (duration)
+    0: attachShader(0, 0)
+      swizzleTypes: [WebGLProgram, WebGLShader]
+      trace:
+        0: attachShader
+        1: (anonymous function)
+        2: executeFrameFunction
+  2: (duration)
+    0: bindAttribLocation(0, 1, "test")
+      swizzleTypes: [WebGLProgram, Number, String]
+      trace:
+        0: bindAttribLocation
+        1: (anonymous function)
+        2: executeFrameFunction
+  3: (duration)
+    0: bindBuffer(1, 0)
+      swizzleTypes: [Number, WebGLBuffer]
+      trace:
+        0: bindBuffer
+        1: (anonymous function)
+        2: executeFrameFunction
+  4: (duration)
+    0: bindFramebuffer(1, 0)
+      swizzleTypes: [Number, WebGLFramebuffer]
+      trace:
+        0: bindFramebuffer
+        1: (anonymous function)
+        2: executeFrameFunction
+  5: (duration)
+    0: bindRenderbuffer(1, 0)
+      swizzleTypes: [Number, WebGLRenderbuffer]
+      trace:
+        0: bindRenderbuffer
+        1: (anonymous function)
+        2: executeFrameFunction
+  6: (duration)
+    0: bindTexture(1, 0)
+      swizzleTypes: [Number, WebGLTexture]
+      trace:
+        0: bindTexture
+        1: (anonymous function)
+        2: executeFrameFunction
+  7: (duration)
+    0: blendColor(1, 2, 3, 4)
+      swizzleTypes: [Number, Number, Number, Number]
+      trace:
+        0: blendColor
+        1: (anonymous function)
+        2: executeFrameFunction
+  8: (duration)
+    0: blendEquation(1)
+      swizzleTypes: [Number]
+      trace:
+        0: blendEquation
+        1: (anonymous function)
+        2: executeFrameFunction
+  9: (duration)
+    0: blendEquationSeparate(1, 2)
+      swizzleTypes: [Number, Number]
+      trace:
+        0: blendEquationSeparate
+        1: (anonymous function)
+        2: executeFrameFunction
+  10: (duration)
+    0: blendFunc(1, 2)
+      swizzleTypes: [Number, Number]
+      trace:
+        0: blendFunc
+        1: (anonymous function)
+        2: executeFrameFunction
+  11: (duration)
+    0: blendFuncSeparate(1, 2, 3, 4)
+      swizzleTypes: [Number, Number, Number, Number]
+      trace:
+        0: blendFuncSeparate
+        1: (anonymous function)
+        2: executeFrameFunction
+  12: (duration)
+    0: bufferData(1, 0, 2)
+      swizzleTypes: [Number, TypedArray, Number]
+      trace:
+        0: bufferData
+        1: (anonymous function)
+        2: executeFrameFunction
+    1: bufferData(3, 4, 5)
+      swizzleTypes: [Number, Number, Number]
+      trace:
+        0: bufferData
+        1: (anonymous function)
+        2: executeFrameFunction
+  13: (duration)
+    0: bufferSubData(1, 2, 0)
+      swizzleTypes: [Number, Number, TypedArray]
+      trace:
+        0: bufferSubData
+        1: (anonymous function)
+        2: executeFrameFunction
+  14: (duration)
+    0: checkFramebufferStatus(1)
+      swizzleTypes: [Number]
+      trace:
+        0: checkFramebufferStatus
+        1: (anonymous function)
+        2: executeFrameFunction
+  15: (duration)
+    0: clear(1)
+      swizzleTypes: [Number]
+      trace:
+        0: clear
+        1: (anonymous function)
+        2: executeFrameFunction
+      snapshot: <filtered>
+  16: (duration)
+    0: clearColor(1, 2, 3, 4)
+      swizzleTypes: [Number, Number, Number, Number]
+      trace:
+        0: clearColor
+        1: (anonymous function)
+        2: executeFrameFunction
+  17: (duration)
+    0: clearDepth(1)
+      swizzleTypes: [Number]
+      trace:
+        0: clearDepth
+        1: (anonymous function)
+        2: executeFrameFunction
+  18: (duration)
+    0: clearStencil(1)
+      swizzleTypes: [Number]
+      trace:
+        0: clearStencil
+        1: (anonymous function)
+        2: executeFrameFunction
+  19: (duration)
+    0: colorMask(true, false, true, false)
+      swizzleTypes: [Boolean, Boolean, Boolean, Boolean]
+      trace:
+        0: colorMask
+        1: (anonymous function)
+        2: executeFrameFunction
+  20: (duration)
+    0: compileShader(0)
+      swizzleTypes: [WebGLShader]
+      trace:
+        0: compileShader
+        1: (anonymous function)
+        2: executeFrameFunction
+  21: (duration)
+    0: compressedTexImage2D(1, 2, 3, 4, 5, 6, 0)
+      swizzleTypes: [Number, Number, Number, Number, Number, Number, TypedArray]
+      trace:
+        0: compressedTexImage2D
+        1: (anonymous function)
+        2: executeFrameFunction
+  22: (duration)
+    0: compressedTexSubImage2D(1, 2, 3, 4, 5, 6, 7, 0)
+      swizzleTypes: [Number, Number, Number, Number, Number, Number, Number, TypedArray]
+      trace:
+        0: compressedTexSubImage2D
+        1: (anonymous function)
+        2: executeFrameFunction
+  23: (duration)
+    0: copyTexImage2D(1, 2, 3, 4, 5, 6, 7, 8)
+      swizzleTypes: [Number, Number, Number, Number, Number, Number, Number, Number]
+      trace:
+        0: copyTexImage2D
+        1: (anonymous function)
+        2: executeFrameFunction
+  24: (duration)
+    0: copyTexSubImage2D(1, 2, 3, 4, 5, 6, 7, 8)
+      swizzleTypes: [Number, Number, Number, Number, Number, Number, Number, Number]
+      trace:
+        0: copyTexSubImage2D
+        1: (anonymous function)
+        2: executeFrameFunction
+  25: (duration)
+    0: createBuffer()
+      trace:
+        0: createBuffer
+        1: (anonymous function)
+        2: executeFrameFunction
+  26: (duration)
+    0: createFramebuffer()
+      trace:
+        0: createFramebuffer
+        1: (anonymous function)
+        2: executeFrameFunction
+  27: (duration)
+    0: createProgram()
+      trace:
+        0: createProgram
+        1: (anonymous function)
+        2: executeFrameFunction
+  28: (duration)
+    0: createRenderbuffer()
+      trace:
+        0: createRenderbuffer
+        1: (anonymous function)
+        2: executeFrameFunction
+  29: (duration)
+    0: createShader(1)
+      swizzleTypes: [Number]
+      trace:
+        0: createShader
+        1: (anonymous function)
+        2: executeFrameFunction
+  30: (duration)
+    0: createTexture()
+      trace:
+        0: createTexture
+        1: (anonymous function)
+        2: executeFrameFunction
+  31: (duration)
+    0: cullFace(1)
+      swizzleTypes: [Number]
+      trace:
+        0: cullFace
+        1: (anonymous function)
+        2: executeFrameFunction
+  32: (duration)
+    0: deleteBuffer(0)
+      swizzleTypes: [WebGLBuffer]
+      trace:
+        0: deleteBuffer
+        1: (anonymous function)
+        2: executeFrameFunction
+  33: (duration)
+    0: deleteFramebuffer(0)
+      swizzleTypes: [WebGLFramebuffer]
+      trace:
+        0: deleteFramebuffer
+        1: (anonymous function)
+        2: executeFrameFunction
+  34: (duration)
+    0: deleteProgram(0)
+      swizzleTypes: [WebGLProgram]
+      trace:
+        0: deleteProgram
+        1: (anonymous function)
+        2: executeFrameFunction
+  35: (duration)
+    0: deleteRenderbuffer(0)
+      swizzleTypes: [WebGLRenderbuffer]
+      trace:
+        0: deleteRenderbuffer
+        1: (anonymous function)
+        2: executeFrameFunction
+  36: (duration)
+    0: deleteShader(0)
+      swizzleTypes: [WebGLShader]
+      trace:
+        0: deleteShader
+        1: (anonymous function)
+        2: executeFrameFunction
+  37: (duration)
+    0: deleteTexture(0)
+      swizzleTypes: [WebGLTexture]
+      trace:
+        0: deleteTexture
+        1: (anonymous function)
+        2: executeFrameFunction
+  38: (duration)
+    0: depthFunc(1)
+      swizzleTypes: [Number]
+      trace:
+        0: depthFunc
+        1: (anonymous function)
+        2: executeFrameFunction
+  39: (duration)
+    0: depthMask(true)
+      swizzleTypes: [Boolean]
+      trace:
+        0: depthMask
+        1: (anonymous function)
+        2: executeFrameFunction
+  40: (duration)
+    0: depthRange(1, 2)
+      swizzleTypes: [Number, Number]
+      trace:
+        0: depthRange
+        1: (anonymous function)
+        2: executeFrameFunction
+  41: (duration)
+    0: detachShader(0, 0)
+      swizzleTypes: [WebGLProgram, WebGLShader]
+      trace:
+        0: detachShader
+        1: (anonymous function)
+        2: executeFrameFunction
+  42: (duration)
+    0: disable(1)
+      swizzleTypes: [Number]
+      trace:
+        0: disable
+        1: (anonymous function)
+        2: executeFrameFunction
+  43: (duration)
+    0: disableVertexAttribArray(1)
+      swizzleTypes: [Number]
+      trace:
+        0: disableVertexAttribArray
+        1: (anonymous function)
+        2: executeFrameFunction
+  44: (duration)
+    0: drawArrays(1, 2, 3)
+      swizzleTypes: [Number, Number, Number]
+      trace:
+        0: drawArrays
+        1: (anonymous function)
+        2: executeFrameFunction
+      snapshot: <filtered>
+  45: (duration)
+    0: drawElements(1, 2, 3, 4)
+      swizzleTypes: [Number, Number, Number, Number]
+      trace:
+        0: drawElements
+        1: (anonymous function)
+        2: executeFrameFunction
+      snapshot: <filtered>
+  46: (duration)
+    0: enable(1)
+      swizzleTypes: [Number]
+      trace:
+        0: enable
+        1: (anonymous function)
+        2: executeFrameFunction
+  47: (duration)
+    0: enableVertexAttribArray(1)
+      swizzleTypes: [Number]
+      trace:
+        0: enableVertexAttribArray
+        1: (anonymous function)
+        2: executeFrameFunction
+  48: (duration)
+    0: finish()
+      trace:
+        0: finish
+        1: (anonymous function)
+        2: executeFrameFunction
+  49: (duration)
+    0: flush()
+      trace:
+        0: flush
+        1: (anonymous function)
+        2: executeFrameFunction
+  50: (duration)
+    0: framebufferRenderbuffer(1, 2, 3, 0)
+      swizzleTypes: [Number, Number, Number, WebGLRenderbuffer]
+      trace:
+        0: framebufferRenderbuffer
+        1: (anonymous function)
+        2: executeFrameFunction
+  51: (duration)
+    0: framebufferTexture2D(1, 2, 3, 0, 4)
+      swizzleTypes: [Number, Number, Number, WebGLTexture, Number]
+      trace:
+        0: framebufferTexture2D
+        1: (anonymous function)
+        2: executeFrameFunction
+  52: (duration)
+    0: frontFace(1)
+      swizzleTypes: [Number]
+      trace:
+        0: frontFace
+        1: (anonymous function)
+        2: executeFrameFunction
+  53: (duration)
+    0: generateMipmap(1)
+      swizzleTypes: [Number]
+      trace:
+        0: generateMipmap
+        1: (anonymous function)
+        2: executeFrameFunction
+  54: (duration)
+    0: getActiveAttrib(0, 1)
+      swizzleTypes: [WebGLProgram, Number]
+      trace:
+        0: getActiveAttrib
+        1: (anonymous function)
+        2: executeFrameFunction
+  55: (duration)
+    0: getActiveUniform(0, 1)
+      swizzleTypes: [WebGLProgram, Number]
+      trace:
+        0: getActiveUniform
+        1: (anonymous function)
+        2: executeFrameFunction
+  56: (duration)
+    0: getAttachedShaders(0)
+      swizzleTypes: [WebGLProgram]
+      trace:
+        0: getAttachedShaders
+        1: (anonymous function)
+        2: executeFrameFunction
+  57: (duration)
+    0: getAttribLocation(0, "test")
+      swizzleTypes: [WebGLProgram, String]
+      trace:
+        0: getAttribLocation
+        1: (anonymous function)
+        2: executeFrameFunction
+  58: (duration)
+    0: getBufferParameter(1, 2)
+      swizzleTypes: [Number, Number]
+      trace:
+        0: getBufferParameter
+        1: (anonymous function)
+        2: executeFrameFunction
+  59: (duration)
+    0: getContextAttributes()
+      trace:
+        0: getContextAttributes
+        1: (anonymous function)
+        2: executeFrameFunction
+  60: (duration)
+    0: getError()
+      trace:
+        0: getError
+        1: (anonymous function)
+        2: executeFrameFunction
+  61: (duration)
+    0: getExtension("test")
+      swizzleTypes: [String]
+      trace:
+        0: getExtension
+        1: (anonymous function)
+        2: executeFrameFunction
+  62: (duration)
+    0: getFramebufferAttachmentParameter(1, 2, 3)
+      swizzleTypes: [Number, Number, Number]
+      trace:
+        0: getFramebufferAttachmentParameter
+        1: (anonymous function)
+        2: executeFrameFunction
+  63: (duration)
+    0: getParameter(1)
+      swizzleTypes: [Number]
+      trace:
+        0: getParameter
+        1: (anonymous function)
+        2: executeFrameFunction
+  64: (duration)
+    0: getProgramInfoLog(0)
+      swizzleTypes: [WebGLProgram]
+      trace:
+        0: getProgramInfoLog
+        1: (anonymous function)
+        2: executeFrameFunction
+  65: (duration)
+    0: getProgramParameter(0, 1)
+      swizzleTypes: [WebGLProgram, Number]
+      trace:
+        0: getProgramParameter
+        1: (anonymous function)
+        2: executeFrameFunction
+  66: (duration)
+    0: getRenderbufferParameter(1, 2)
+      swizzleTypes: [Number, Number]
+      trace:
+        0: getRenderbufferParameter
+        1: (anonymous function)
+        2: executeFrameFunction
+  67: (duration)
+    0: getShaderInfoLog(0)
+      swizzleTypes: [WebGLShader]
+      trace:
+        0: getShaderInfoLog
+        1: (anonymous function)
+        2: executeFrameFunction
+  68: (duration)
+    0: getShaderParameter(0, 1)
+      swizzleTypes: [WebGLShader, Number]
+      trace:
+        0: getShaderParameter
+        1: (anonymous function)
+        2: executeFrameFunction
+  69: (duration)
+    0: getShaderPrecisionFormat(1, 2)
+      swizzleTypes: [Number, Number]
+      trace:
+        0: getShaderPrecisionFormat
+        1: (anonymous function)
+        2: executeFrameFunction
+  70: (duration)
+    0: getShaderSource(0)
+      swizzleTypes: [WebGLShader]
+      trace:
+        0: getShaderSource
+        1: (anonymous function)
+        2: executeFrameFunction
+  71: (duration)
+    0: getSupportedExtensions()
+      trace:
+        0: getSupportedExtensions
+        1: (anonymous function)
+        2: executeFrameFunction
+  72: (duration)
+    0: getTexParameter(1, 2)
+      swizzleTypes: [Number, Number]
+      trace:
+        0: getTexParameter
+        1: (anonymous function)
+        2: executeFrameFunction
+  73: (duration)
+    0: getUniform(0, 0)
+      swizzleTypes: [WebGLProgram, WebGLUniformLocation]
+      trace:
+        0: getUniform
+        1: (anonymous function)
+        2: executeFrameFunction
+  74: (duration)
+    0: getUniformLocation(0, "test")
+      swizzleTypes: [WebGLProgram, String]
+      trace:
+        0: getUniformLocation
+        1: (anonymous function)
+        2: executeFrameFunction
+  75: (duration)
+    0: getVertexAttrib(1, 2)
+      swizzleTypes: [Number, Number]
+      trace:
+        0: getVertexAttrib
+        1: (anonymous function)
+        2: executeFrameFunction
+  76: (duration)
+    0: getVertexAttribOffset(1, 2)
+      swizzleTypes: [Number, Number]
+      trace:
+        0: getVertexAttribOffset
+        1: (anonymous function)
+        2: executeFrameFunction
+  77: (duration)
+    0: hint(1, 2)
+      swizzleTypes: [Number, Number]
+      trace:
+        0: hint
+        1: (anonymous function)
+        2: executeFrameFunction
+  78: (duration)
+    0: isBuffer(0)
+      swizzleTypes: [WebGLBuffer]
+      trace:
+        0: isBuffer
+        1: (anonymous function)
+        2: executeFrameFunction
+  79: (duration)
+    0: isContextLost()
+      trace:
+        0: isContextLost
+        1: (anonymous function)
+        2: executeFrameFunction
+  80: (duration)
+    0: isEnabled(1)
+      swizzleTypes: [Number]
+      trace:
+        0: isEnabled
+        1: (anonymous function)
+        2: executeFrameFunction
+  81: (duration)
+    0: isFramebuffer(0)
+      swizzleTypes: [WebGLFramebuffer]
+      trace:
+        0: isFramebuffer
+        1: (anonymous function)
+        2: executeFrameFunction
+  82: (duration)
+    0: isProgram(0)
+      swizzleTypes: [WebGLProgram]
+      trace:
+        0: isProgram
+        1: (anonymous function)
+        2: executeFrameFunction
+  83: (duration)
+    0: isRenderbuffer(0)
+      swizzleTypes: [WebGLRenderbuffer]
+      trace:
+        0: isRenderbuffer
+        1: (anonymous function)
+        2: executeFrameFunction
+  84: (duration)
+    0: isShader(0)
+      swizzleTypes: [WebGLShader]
+      trace:
+        0: isShader
+        1: (anonymous function)
+        2: executeFrameFunction
+  85: (duration)
+    0: isTexture(0)
+      swizzleTypes: [WebGLTexture]
+      trace:
+        0: isTexture
+        1: (anonymous function)
+        2: executeFrameFunction
+  86: (duration)
+    0: lineWidth(1)
+      swizzleTypes: [Number]
+      trace:
+        0: lineWidth
+        1: (anonymous function)
+        2: executeFrameFunction
+  87: (duration)
+    0: linkProgram(0)
+      swizzleTypes: [WebGLProgram]
+      trace:
+        0: linkProgram
+        1: (anonymous function)
+        2: executeFrameFunction
+  88: (duration)
+    0: pixelStorei(1, 2)
+      swizzleTypes: [Number, Number]
+      trace:
+        0: pixelStorei
+        1: (anonymous function)
+        2: executeFrameFunction
+  89: (duration)
+    0: polygonOffset(1, 2)
+      swizzleTypes: [Number, Number]
+      trace:
+        0: polygonOffset
+        1: (anonymous function)
+        2: executeFrameFunction
+  90: (duration)
+    0: readPixels(1, 2, 3, 4, 5, 6, 0)
+      swizzleTypes: [Number, Number, Number, Number, Number, Number, TypedArray]
+      trace:
+        0: readPixels
+        1: (anonymous function)
+        2: executeFrameFunction
+  91: (duration)
+    0: renderbufferStorage(1, 2, 3, 4)
+      swizzleTypes: [Number, Number, Number, Number]
+      trace:
+        0: renderbufferStorage
+        1: (anonymous function)
+        2: executeFrameFunction
+  92: (duration)
+    0: sampleCoverage(1, true)
+      swizzleTypes: [Number, Boolean]
+      trace:
+        0: sampleCoverage
+        1: (anonymous function)
+        2: executeFrameFunction
+  93: (duration)
+    0: scissor(1, 2, 3, 4)
+      swizzleTypes: [Number, Number, Number, Number]
+      trace:
+        0: scissor
+        1: (anonymous function)
+        2: executeFrameFunction
+  94: (duration)
+    0: shaderSource(0, "test")
+      swizzleTypes: [WebGLShader, String]
+      trace:
+        0: shaderSource
+        1: (anonymous function)
+        2: executeFrameFunction
+  95: (duration)
+    0: stencilFunc(1, 2, 3)
+      swizzleTypes: [Number, Number, Number]
+      trace:
+        0: stencilFunc
+        1: (anonymous function)
+        2: executeFrameFunction
+  96: (duration)
+    0: stencilFuncSeparate(1, 2, 3, 4)
+      swizzleTypes: [Number, Number, Number, Number]
+      trace:
+        0: stencilFuncSeparate
+        1: (anonymous function)
+        2: executeFrameFunction
+  97: (duration)
+    0: stencilMask(1)
+      swizzleTypes: [Number]
+      trace:
+        0: stencilMask
+        1: (anonymous function)
+        2: executeFrameFunction
+  98: (duration)
+    0: stencilMaskSeparate(1, 2)
+      swizzleTypes: [Number, Number]
+      trace:
+        0: stencilMaskSeparate
+        1: (anonymous function)
+        2: executeFrameFunction
+  99: (duration)
+    0: stencilOp(1, 2, 3)
+      swizzleTypes: [Number, Number, Number]
+      trace:
+        0: stencilOp
+        1: (anonymous function)
+        2: executeFrameFunction
+  100: (duration)
+    0: stencilOpSeparate(1, 2, 3, 4)
+      swizzleTypes: [Number, Number, Number, Number]
+      trace:
+        0: stencilOpSeparate
+        1: (anonymous function)
+        2: executeFrameFunction
+  101: (duration)
+    0: texImage2D(1, 2, 3, 4, 5, [object HTMLImageElement])
+      swizzleTypes: [Number, Number, Number, Number, Number, Image]
+      trace:
+        0: texImage2D
+        1: (anonymous function)
+        2: executeFrameFunction
+    1: texImage2D(6, 7, 8, 9, 10, 11, 12, 13, 0)
+      swizzleTypes: [Number, Number, Number, Number, Number, Number, Number, Number, TypedArray]
+      trace:
+        0: texImage2D
+        1: (anonymous function)
+        2: executeFrameFunction
+  102: (duration)
+    0: texParameterf(1, 2, 3)
+      swizzleTypes: [Number, Number, Number]
+      trace:
+        0: texParameterf
+        1: (anonymous function)
+        2: executeFrameFunction
+  103: (duration)
+    0: texParameteri(1, 2, 3)
+      swizzleTypes: [Number, Number, Number]
+      trace:
+        0: texParameteri
+        1: (anonymous function)
+        2: executeFrameFunction
+  104: (duration)
+    0: texSubImage2D(1, 2, 3, 4, 5, 6, [object HTMLImageElement])
+      swizzleTypes: [Number, Number, Number, Number, Number, Number, Image]
+      trace:
+        0: texSubImage2D
+        1: (anonymous function)
+        2: executeFrameFunction
+    1: texSubImage2D(7, 8, 9, 10, 11, 12, 13, 14, 0)
+      swizzleTypes: [Number, Number, Number, Number, Number, Number, Number, Number, TypedArray]
+      trace:
+        0: texSubImage2D
+        1: (anonymous function)
+        2: executeFrameFunction
+  105: (duration)
+    0: uniform1f(0, 1)
+      swizzleTypes: [WebGLUniformLocation, Number]
+      trace:
+        0: uniform1f
+        1: (anonymous function)
+        2: executeFrameFunction
+  106: (duration)
+    0: uniform1fv(0, 0)
+      swizzleTypes: [WebGLUniformLocation, TypedArray]
+      trace:
+        0: uniform1fv
+        1: (anonymous function)
+        2: executeFrameFunction
+  107: (duration)
+    0: uniform1i(0, 1)
+      swizzleTypes: [WebGLUniformLocation, Number]
+      trace:
+        0: uniform1i
+        1: (anonymous function)
+        2: executeFrameFunction
+  108: (duration)
+    0: uniform1iv(0, 0)
+      swizzleTypes: [WebGLUniformLocation, TypedArray]
+      trace:
+        0: uniform1iv
+        1: (anonymous function)
+        2: executeFrameFunction
+  109: (duration)
+    0: uniform2f(0, 1, 2)
+      swizzleTypes: [WebGLUniformLocation, Number, Number]
+      trace:
+        0: uniform2f
+        1: (anonymous function)
+        2: executeFrameFunction
+  110: (duration)
+    0: uniform2fv(0, 0)
+      swizzleTypes: [WebGLUniformLocation, TypedArray]
+      trace:
+        0: uniform2fv
+        1: (anonymous function)
+        2: executeFrameFunction
+  111: (duration)
+    0: uniform2i(0, 1, 2)
+      swizzleTypes: [WebGLUniformLocation, Number, Number]
+      trace:
+        0: uniform2i
+        1: (anonymous function)
+        2: executeFrameFunction
+  112: (duration)
+    0: uniform2iv(0, 0)
+      swizzleTypes: [WebGLUniformLocation, TypedArray]
+      trace:
+        0: uniform2iv
+        1: (anonymous function)
+        2: executeFrameFunction
+  113: (duration)
+    0: uniform3f(0, 1, 2, 3)
+      swizzleTypes: [WebGLUniformLocation, Number, Number, Number]
+      trace:
+        0: uniform3f
+        1: (anonymous function)
+        2: executeFrameFunction
+  114: (duration)
+    0: uniform3fv(0, 0)
+      swizzleTypes: [WebGLUniformLocation, TypedArray]
+      trace:
+        0: uniform3fv
+        1: (anonymous function)
+        2: executeFrameFunction
+  115: (duration)
+    0: uniform3i(0, 1, 2, 3)
+      swizzleTypes: [WebGLUniformLocation, Number, Number, Number]
+      trace:
+        0: uniform3i
+        1: (anonymous function)
+        2: executeFrameFunction
+  116: (duration)
+    0: uniform3iv(0, 0)
+      swizzleTypes: [WebGLUniformLocation, TypedArray]
+      trace:
+        0: uniform3iv
+        1: (anonymous function)
+        2: executeFrameFunction
+  117: (duration)
+    0: uniform4f(0, 1, 2, 3, 4)
+      swizzleTypes: [WebGLUniformLocation, Number, Number, Number, Number]
+      trace:
+        0: uniform4f
+        1: (anonymous function)
+        2: executeFrameFunction
+  118: (duration)
+    0: uniform4fv(0, 0)
+      swizzleTypes: [WebGLUniformLocation, TypedArray]
+      trace:
+        0: uniform4fv
+        1: (anonymous function)
+        2: executeFrameFunction
+  119: (duration)
+    0: uniform4i(0, 1, 2, 3, 4)
+      swizzleTypes: [WebGLUniformLocation, Number, Number, Number, Number]
+      trace:
+        0: uniform4i
+        1: (anonymous function)
+        2: executeFrameFunction
+  120: (duration)
+    0: uniform4iv(0, 0)
+      swizzleTypes: [WebGLUniformLocation, TypedArray]
+      trace:
+        0: uniform4iv
+        1: (anonymous function)
+        2: executeFrameFunction
+  121: (duration)
+    0: uniformMatrix2fv(0, true, 0)
+      swizzleTypes: [WebGLUniformLocation, Boolean, TypedArray]
+      trace:
+        0: uniformMatrix2fv
+        1: (anonymous function)
+        2: executeFrameFunction
+  122: (duration)
+    0: uniformMatrix3fv(0, true, 0)
+      swizzleTypes: [WebGLUniformLocation, Boolean, TypedArray]
+      trace:
+        0: uniformMatrix3fv
+        1: (anonymous function)
+        2: executeFrameFunction
+  123: (duration)
+    0: uniformMatrix4fv(0, true, 0)
+      swizzleTypes: [WebGLUniformLocation, Boolean, TypedArray]
+      trace:
+        0: uniformMatrix4fv
+        1: (anonymous function)
+        2: executeFrameFunction
+  124: (duration)
+    0: useProgram(0)
+      swizzleTypes: [WebGLProgram]
+      trace:
+        0: useProgram
+        1: (anonymous function)
+        2: executeFrameFunction
+  125: (duration)
+    0: validateProgram(0)
+      swizzleTypes: [WebGLProgram]
+      trace:
+        0: validateProgram
+        1: (anonymous function)
+        2: executeFrameFunction
+  126: (duration)
+    0: vertexAttrib1f(1, 2)
+      swizzleTypes: [Number, Number]
+      trace:
+        0: vertexAttrib1f
+        1: (anonymous function)
+        2: executeFrameFunction
+  127: (duration)
+    0: vertexAttrib1fv(1, 0)
+      swizzleTypes: [Number, TypedArray]
+      trace:
+        0: vertexAttrib1fv
+        1: (anonymous function)
+        2: executeFrameFunction
+  128: (duration)
+    0: vertexAttrib2f(1, 2, 3)
+      swizzleTypes: [Number, Number, Number]
+      trace:
+        0: vertexAttrib2f
+        1: (anonymous function)
+        2: executeFrameFunction
+  129: (duration)
+    0: vertexAttrib2fv(1, 0)
+      swizzleTypes: [Number, TypedArray]
+      trace:
+        0: vertexAttrib2fv
+        1: (anonymous function)
+        2: executeFrameFunction
+  130: (duration)
+    0: vertexAttrib3f(1, 2, 3, 4)
+      swizzleTypes: [Number, Number, Number, Number]
+      trace:
+        0: vertexAttrib3f
+        1: (anonymous function)
+        2: executeFrameFunction
+  131: (duration)
+    0: vertexAttrib3fv(1, 0)
+      swizzleTypes: [Number, TypedArray]
+      trace:
+        0: vertexAttrib3fv
+        1: (anonymous function)
+        2: executeFrameFunction
+  132: (duration)
+    0: vertexAttrib4f(1, 2, 3, 4, 5)
+      swizzleTypes: [Number, Number, Number, Number, Number]
+      trace:
+        0: vertexAttrib4f
+        1: (anonymous function)
+        2: executeFrameFunction
+  133: (duration)
+    0: vertexAttrib4fv(1, 0)
+      swizzleTypes: [Number, TypedArray]
+      trace:
+        0: vertexAttrib4fv
+        1: (anonymous function)
+        2: executeFrameFunction
+  134: (duration)
+    0: vertexAttribPointer(1, 2, 3, true, 5, 6)
+      swizzleTypes: [Number, Number, Number, Boolean, Number, Number]
+      trace:
+        0: vertexAttribPointer
+        1: (anonymous function)
+        2: executeFrameFunction
+  135: (duration)
+    0: viewport(1, 2, 3, 4)
+      swizzleTypes: [Number, Number, Number, Number]
+      trace:
+        0: viewport
+        1: (anonymous function)
+        2: executeFrameFunction
+  136: (duration)
+    0: width
+      trace:
+        0: (anonymous function)
+        1: executeFrameFunction
+    1: width = 2
+      swizzleTypes: [Number]
+      trace:
+        0: (anonymous function)
+        1: executeFrameFunction
+  137: (duration)
+    0: height
+      trace:
+        0: (anonymous function)
+        1: executeFrameFunction
+    1: height = 2
+      swizzleTypes: [Number]
+      trace:
+        0: (anonymous function)
+        1: executeFrameFunction
+
</ins></span></pre></div>
<a id="branchessafari612branchLayoutTestsplatformmacwk1inspectorcanvasrecordingwebglmemoryLimitexpectedtxtfromrev284707branchessafari612branchLayoutTestsinspectorcanvasrecordingwebglmemoryLimitexpectedtxt"></a>
<div class="copfile"><h4>Copied: branches/safari-612-branch/LayoutTests/platform/mac-wk1/inspector/canvas/recording-webgl-memoryLimit-expected.txt (from rev 284707, branches/safari-612-branch/LayoutTests/inspector/canvas/recording-webgl-memoryLimit-expected.txt) (0 => 284801)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/platform/mac-wk1/inspector/canvas/recording-webgl-memoryLimit-expected.txt                                (rev 0)
+++ branches/safari-612-branch/LayoutTests/platform/mac-wk1/inspector/canvas/recording-webgl-memoryLimit-expected.txt   2021-10-25 19:09:31 UTC (rev 284801)
</span><span class="lines">@@ -0,0 +1,26 @@
</span><ins>+Test that CanvasManager is able to record actions made to WebGL canvas contexts.
+
+
+== Running test suite: Canvas.recordingWebGL
+-- Running test case: Canvas.recordingWebGL.memoryLimit
+initialState:
+  attributes:
+    width: 2
+    height: 2
+  parameters:
+    0: {"alpha":true,"depth":true,"stencil":false,"antialias":true,"premultipliedAlpha":true,"preserveDrawingBuffer":false,"powerPreference":"low-power","failIfMajorPerformanceCaveat":false}
+  content: <filtered>
+frames:
+  0: (duration) (incomplete)
+    0: activeTexture(1)
+      swizzleTypes: [Number]
+      trace:
+        0: activeTexture
+        1: (anonymous function)
+        2: executeFrameFunction
+        3: performActions
+        4: Global Code
+        5: evaluateWithScopeExtension
+        6: (anonymous function)
+        7: _wrapCall
+
</ins></span></pre></div>
<a id="branchessafari612branchLayoutTestsplatformmacwk1inspectorcanvasrecordingwebglsnapshotsexpectedtxtfromrev284707branchessafari612branchLayoutTestsinspectorcanvasrecordingwebglsnapshotsexpectedtxt"></a>
<div class="copfile"><h4>Copied: branches/safari-612-branch/LayoutTests/platform/mac-wk1/inspector/canvas/recording-webgl-snapshots-expected.txt (from rev 284707, branches/safari-612-branch/LayoutTests/inspector/canvas/recording-webgl-snapshots-expected.txt) (0 => 284801)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/platform/mac-wk1/inspector/canvas/recording-webgl-snapshots-expected.txt                          (rev 0)
+++ branches/safari-612-branch/LayoutTests/platform/mac-wk1/inspector/canvas/recording-webgl-snapshots-expected.txt     2021-10-25 19:09:31 UTC (rev 284801)
</span><span class="lines">@@ -0,0 +1,139 @@
</span><ins>+Test that CanvasManager is able to record actions made to WebGL canvas contexts.
+
+
+== Running test suite: Canvas.recordingWebGL
+-- Running test case: Canvas.recordingWebGL.snapshots
+initialState:
+  attributes:
+    width: 300
+    height: 150
+  parameters:
+    0: {"alpha":true,"depth":true,"stencil":false,"antialias":true,"premultipliedAlpha":true,"preserveDrawingBuffer":false,"powerPreference":"low-power","failIfMajorPerformanceCaveat":false}
+  content: <filtered>
+frames:
+  0: (duration)
+    0: useProgram(0)
+      swizzleTypes: [WebGLProgram]
+      trace:
+        0: useProgram
+        1: performActions
+        2: Global Code
+        3: evaluateWithScopeExtension
+        4: (anonymous function)
+        5: _wrapCall
+    1: clearColor(0, 0, 0, 1)
+      swizzleTypes: [Number, Number, Number, Number]
+      trace:
+        0: clearColor
+        1: clearContext
+        2: performActions
+        3: Global Code
+        4: evaluateWithScopeExtension
+        5: (anonymous function)
+        6: _wrapCall
+    2: clear(16384)
+      swizzleTypes: [Number]
+      trace:
+        0: clear
+        1: clearContext
+        2: performActions
+        3: Global Code
+        4: evaluateWithScopeExtension
+        5: (anonymous function)
+        6: _wrapCall
+      snapshot: <PASS: content changed>
+    3: bufferData(34962, 0, 35044)
+      swizzleTypes: [Number, TypedArray, Number]
+      trace:
+        0: bufferData
+        1: drawArrays
+        2: performActions
+        3: Global Code
+        4: evaluateWithScopeExtension
+        5: (anonymous function)
+        6: _wrapCall
+    4: drawArrays(4, 0, 3)
+      swizzleTypes: [Number, Number, Number]
+      trace:
+        0: drawArrays
+        1: drawArrays
+        2: performActions
+        3: Global Code
+        4: evaluateWithScopeExtension
+        5: (anonymous function)
+        6: _wrapCall
+      snapshot: <PASS: content changed>
+    5: clearColor(0, 0, 0, 1)
+      swizzleTypes: [Number, Number, Number, Number]
+      trace:
+        0: clearColor
+        1: clearContext
+        2: performActions
+        3: Global Code
+        4: evaluateWithScopeExtension
+        5: (anonymous function)
+        6: _wrapCall
+    6: clear(16384)
+      swizzleTypes: [Number]
+      trace:
+        0: clear
+        1: clearContext
+        2: performActions
+        3: Global Code
+        4: evaluateWithScopeExtension
+        5: (anonymous function)
+        6: _wrapCall
+      snapshot: <PASS: content changed>
+    7: bufferData(34962, 0, 35044)
+      swizzleTypes: [Number, TypedArray, Number]
+      trace:
+        0: bufferData
+        1: drawElements
+        2: performActions
+        3: Global Code
+        4: evaluateWithScopeExtension
+        5: (anonymous function)
+        6: _wrapCall
+    8: bufferData(34963, 0, 35044)
+      swizzleTypes: [Number, TypedArray, Number]
+      trace:
+        0: bufferData
+        1: drawElements
+        2: performActions
+        3: Global Code
+        4: evaluateWithScopeExtension
+        5: (anonymous function)
+        6: _wrapCall
+    9: drawElements(4, 3, 5123, 0)
+      swizzleTypes: [Number, Number, Number, Number]
+      trace:
+        0: drawElements
+        1: drawElements
+        2: performActions
+        3: Global Code
+        4: evaluateWithScopeExtension
+        5: (anonymous function)
+        6: _wrapCall
+      snapshot: <PASS: content changed>
+    10: clearColor(0, 0, 0, 1)
+      swizzleTypes: [Number, Number, Number, Number]
+      trace:
+        0: clearColor
+        1: clearContext
+        2: performActions
+        3: Global Code
+        4: evaluateWithScopeExtension
+        5: (anonymous function)
+        6: _wrapCall
+    11: clear(16384)
+      swizzleTypes: [Number]
+      trace:
+        0: clear
+        1: clearContext
+        2: performActions
+        3: Global Code
+        4: evaluateWithScopeExtension
+        5: (anonymous function)
+        6: _wrapCall
+      snapshot: <PASS: content changed>
+
</ins></span></pre></div>
<a id="branchessafari612branchLayoutTestsplatformmacwk1inspectorcanvasrecordingwebgl2frameCountexpectedtxtfromrev284707branchessafari612branchLayoutTestsinspectorcanvasrecordingwebgl2frameCountexpectedtxt"></a>
<div class="copfile"><h4>Copied: branches/safari-612-branch/LayoutTests/platform/mac-wk1/inspector/canvas/recording-webgl2-frameCount-expected.txt (from rev 284707, branches/safari-612-branch/LayoutTests/inspector/canvas/recording-webgl2-frameCount-expected.txt) (0 => 284801)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/platform/mac-wk1/inspector/canvas/recording-webgl2-frameCount-expected.txt                                (rev 0)
+++ branches/safari-612-branch/LayoutTests/platform/mac-wk1/inspector/canvas/recording-webgl2-frameCount-expected.txt   2021-10-25 19:09:31 UTC (rev 284801)
</span><span class="lines">@@ -0,0 +1,26 @@
</span><ins>+Test that CanvasManager is able to record actions made to WebGL2 canvas contexts.
+
+
+== Running test suite: Canvas.recordingWebGL2
+-- Running test case: Canvas.recordingWebGL2.singleFrame
+initialState:
+  attributes:
+    width: 2
+    height: 2
+  parameters:
+    0: {"alpha":true,"depth":true,"stencil":false,"antialias":true,"premultipliedAlpha":true,"preserveDrawingBuffer":false,"powerPreference":"low-power","failIfMajorPerformanceCaveat":false}
+  content: <filtered>
+frames:
+  0: (duration)
+    0: activeTexture(1)
+      swizzleTypes: [Number]
+      trace:
+        0: activeTexture
+        1: (anonymous function)
+        2: executeFrameFunction
+        3: performActions
+        4: Global Code
+        5: evaluateWithScopeExtension
+        6: (anonymous function)
+        7: _wrapCall
+
</ins></span></pre></div>
<a id="branchessafari612branchLayoutTestsplatformmacwk1inspectorcanvasrecordingwebgl2fullexpectedtxtfromrev284707branchessafari612branchLayoutTestsinspectorcanvasrecordingwebgl2fullexpectedtxt"></a>
<div class="copfile"><h4>Copied: branches/safari-612-branch/LayoutTests/platform/mac-wk1/inspector/canvas/recording-webgl2-full-expected.txt (from rev 284707, branches/safari-612-branch/LayoutTests/inspector/canvas/recording-webgl2-full-expected.txt) (0 => 284801)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/platform/mac-wk1/inspector/canvas/recording-webgl2-full-expected.txt                              (rev 0)
+++ branches/safari-612-branch/LayoutTests/platform/mac-wk1/inspector/canvas/recording-webgl2-full-expected.txt 2021-10-25 19:09:31 UTC (rev 284801)
</span><span class="lines">@@ -0,0 +1,968 @@
</span><ins>+Test that CanvasManager is able to record actions made to WebGL2 canvas contexts.
+
+
+== Running test suite: Canvas.recordingWebGL2
+-- Running test case: Canvas.recordingWebGL2.multipleFrames
+initialState:
+  attributes:
+    width: 2
+    height: 2
+  parameters:
+    0: {"alpha":true,"depth":true,"stencil":false,"antialias":true,"premultipliedAlpha":true,"preserveDrawingBuffer":false,"powerPreference":"low-power","failIfMajorPerformanceCaveat":false}
+  content: <filtered>
+frames:
+  0: (duration)
+    0: activeTexture(1)
+      swizzleTypes: [Number]
+      trace:
+        0: activeTexture
+        1: (anonymous function)
+        2: executeFrameFunction
+        3: performActions
+        4: Global Code
+        5: evaluateWithScopeExtension
+        6: (anonymous function)
+        7: _wrapCall
+  1: (duration)
+    0: attachShader(0, 0)
+      swizzleTypes: [WebGLProgram, WebGLShader]
+      trace:
+        0: attachShader
+        1: (anonymous function)
+        2: executeFrameFunction
+  2: (duration)
+    0: bindAttribLocation(0, 1, "test")
+      swizzleTypes: [WebGLProgram, Number, String]
+      trace:
+        0: bindAttribLocation
+        1: (anonymous function)
+        2: executeFrameFunction
+  3: (duration)
+    0: bindBuffer(1, 0)
+      swizzleTypes: [Number, WebGLBuffer]
+      trace:
+        0: bindBuffer
+        1: (anonymous function)
+        2: executeFrameFunction
+  4: (duration)
+    0: bindFramebuffer(1, 0)
+      swizzleTypes: [Number, WebGLFramebuffer]
+      trace:
+        0: bindFramebuffer
+        1: (anonymous function)
+        2: executeFrameFunction
+  5: (duration)
+    0: bindRenderbuffer(1, 0)
+      swizzleTypes: [Number, WebGLRenderbuffer]
+      trace:
+        0: bindRenderbuffer
+        1: (anonymous function)
+        2: executeFrameFunction
+  6: (duration)
+    0: bindTexture(1, 0)
+      swizzleTypes: [Number, WebGLTexture]
+      trace:
+        0: bindTexture
+        1: (anonymous function)
+        2: executeFrameFunction
+  7: (duration)
+    0: blendColor(1, 2, 3, 4)
+      swizzleTypes: [Number, Number, Number, Number]
+      trace:
+        0: blendColor
+        1: (anonymous function)
+        2: executeFrameFunction
+  8: (duration)
+    0: blendEquation(1)
+      swizzleTypes: [Number]
+      trace:
+        0: blendEquation
+        1: (anonymous function)
+        2: executeFrameFunction
+  9: (duration)
+    0: blendEquationSeparate(1, 2)
+      swizzleTypes: [Number, Number]
+      trace:
+        0: blendEquationSeparate
+        1: (anonymous function)
+        2: executeFrameFunction
+  10: (duration)
+    0: blendFunc(1, 2)
+      swizzleTypes: [Number, Number]
+      trace:
+        0: blendFunc
+        1: (anonymous function)
+        2: executeFrameFunction
+  11: (duration)
+    0: blendFuncSeparate(1, 2, 3, 4)
+      swizzleTypes: [Number, Number, Number, Number]
+      trace:
+        0: blendFuncSeparate
+        1: (anonymous function)
+        2: executeFrameFunction
+  12: (duration)
+    0: bufferData(1, 0, 2)
+      swizzleTypes: [Number, TypedArray, Number]
+      trace:
+        0: bufferData
+        1: (anonymous function)
+        2: executeFrameFunction
+    1: bufferData(3, 4, 5)
+      swizzleTypes: [Number, Number, Number]
+      trace:
+        0: bufferData
+        1: (anonymous function)
+        2: executeFrameFunction
+  13: (duration)
+    0: bufferSubData(1, 2, 0)
+      swizzleTypes: [Number, Number, TypedArray]
+      trace:
+        0: bufferSubData
+        1: (anonymous function)
+        2: executeFrameFunction
+  14: (duration)
+    0: checkFramebufferStatus(1)
+      swizzleTypes: [Number]
+      trace:
+        0: checkFramebufferStatus
+        1: (anonymous function)
+        2: executeFrameFunction
+  15: (duration)
+    0: clear(1)
+      swizzleTypes: [Number]
+      trace:
+        0: clear
+        1: (anonymous function)
+        2: executeFrameFunction
+      snapshot: <filtered>
+  16: (duration)
+    0: clearColor(1, 2, 3, 4)
+      swizzleTypes: [Number, Number, Number, Number]
+      trace:
+        0: clearColor
+        1: (anonymous function)
+        2: executeFrameFunction
+  17: (duration)
+    0: clearDepth(1)
+      swizzleTypes: [Number]
+      trace:
+        0: clearDepth
+        1: (anonymous function)
+        2: executeFrameFunction
+  18: (duration)
+    0: clearStencil(1)
+      swizzleTypes: [Number]
+      trace:
+        0: clearStencil
+        1: (anonymous function)
+        2: executeFrameFunction
+  19: (duration)
+    0: colorMask(true, false, true, false)
+      swizzleTypes: [Boolean, Boolean, Boolean, Boolean]
+      trace:
+        0: colorMask
+        1: (anonymous function)
+        2: executeFrameFunction
+  20: (duration)
+    0: compileShader(0)
+      swizzleTypes: [WebGLShader]
+      trace:
+        0: compileShader
+        1: (anonymous function)
+        2: executeFrameFunction
+  21: (duration)
+    0: compressedTexSubImage2D(1, 2, 3, 4, 5, 6, 7, 0)
+      swizzleTypes: [Number, Number, Number, Number, Number, Number, Number, TypedArray]
+      trace:
+        0: compressedTexSubImage2D
+        1: (anonymous function)
+        2: executeFrameFunction
+  22: (duration)
+    0: copyTexImage2D(1, 2, 3, 4, 5, 6, 7, 8)
+      swizzleTypes: [Number, Number, Number, Number, Number, Number, Number, Number]
+      trace:
+        0: copyTexImage2D
+        1: (anonymous function)
+        2: executeFrameFunction
+  23: (duration)
+    0: copyTexSubImage2D(1, 2, 3, 4, 5, 6, 7, 8)
+      swizzleTypes: [Number, Number, Number, Number, Number, Number, Number, Number]
+      trace:
+        0: copyTexSubImage2D
+        1: (anonymous function)
+        2: executeFrameFunction
+  24: (duration)
+    0: createBuffer()
+      trace:
+        0: createBuffer
+        1: (anonymous function)
+        2: executeFrameFunction
+  25: (duration)
+    0: createFramebuffer()
+      trace:
+        0: createFramebuffer
+        1: (anonymous function)
+        2: executeFrameFunction
+  26: (duration)
+    0: createProgram()
+      trace:
+        0: createProgram
+        1: (anonymous function)
+        2: executeFrameFunction
+  27: (duration)
+    0: createRenderbuffer()
+      trace:
+        0: createRenderbuffer
+        1: (anonymous function)
+        2: executeFrameFunction
+  28: (duration)
+    0: createShader(1)
+      swizzleTypes: [Number]
+      trace:
+        0: createShader
+        1: (anonymous function)
+        2: executeFrameFunction
+  29: (duration)
+    0: createTexture()
+      trace:
+        0: createTexture
+        1: (anonymous function)
+        2: executeFrameFunction
+  30: (duration)
+    0: cullFace(1)
+      swizzleTypes: [Number]
+      trace:
+        0: cullFace
+        1: (anonymous function)
+        2: executeFrameFunction
+  31: (duration)
+    0: deleteBuffer(0)
+      swizzleTypes: [WebGLBuffer]
+      trace:
+        0: deleteBuffer
+        1: (anonymous function)
+        2: executeFrameFunction
+  32: (duration)
+    0: deleteFramebuffer(0)
+      swizzleTypes: [WebGLFramebuffer]
+      trace:
+        0: deleteFramebuffer
+        1: (anonymous function)
+        2: executeFrameFunction
+  33: (duration)
+    0: deleteProgram(0)
+      swizzleTypes: [WebGLProgram]
+      trace:
+        0: deleteProgram
+        1: (anonymous function)
+        2: executeFrameFunction
+  34: (duration)
+    0: deleteRenderbuffer(0)
+      swizzleTypes: [WebGLRenderbuffer]
+      trace:
+        0: deleteRenderbuffer
+        1: (anonymous function)
+        2: executeFrameFunction
+  35: (duration)
+    0: deleteShader(0)
+      swizzleTypes: [WebGLShader]
+      trace:
+        0: deleteShader
+        1: (anonymous function)
+        2: executeFrameFunction
+  36: (duration)
+    0: deleteTexture(0)
+      swizzleTypes: [WebGLTexture]
+      trace:
+        0: deleteTexture
+        1: (anonymous function)
+        2: executeFrameFunction
+  37: (duration)
+    0: depthFunc(1)
+      swizzleTypes: [Number]
+      trace:
+        0: depthFunc
+        1: (anonymous function)
+        2: executeFrameFunction
+  38: (duration)
+    0: depthMask(true)
+      swizzleTypes: [Boolean]
+      trace:
+        0: depthMask
+        1: (anonymous function)
+        2: executeFrameFunction
+  39: (duration)
+    0: depthRange(1, 2)
+      swizzleTypes: [Number, Number]
+      trace:
+        0: depthRange
+        1: (anonymous function)
+        2: executeFrameFunction
+  40: (duration)
+    0: detachShader(0, 0)
+      swizzleTypes: [WebGLProgram, WebGLShader]
+      trace:
+        0: detachShader
+        1: (anonymous function)
+        2: executeFrameFunction
+  41: (duration)
+    0: disable(1)
+      swizzleTypes: [Number]
+      trace:
+        0: disable
+        1: (anonymous function)
+        2: executeFrameFunction
+  42: (duration)
+    0: disableVertexAttribArray(1)
+      swizzleTypes: [Number]
+      trace:
+        0: disableVertexAttribArray
+        1: (anonymous function)
+        2: executeFrameFunction
+  43: (duration)
+    0: drawArrays(1, 2, 3)
+      swizzleTypes: [Number, Number, Number]
+      trace:
+        0: drawArrays
+        1: (anonymous function)
+        2: executeFrameFunction
+      snapshot: <filtered>
+  44: (duration)
+    0: drawElements(1, 2, 3, 4)
+      swizzleTypes: [Number, Number, Number, Number]
+      trace:
+        0: drawElements
+        1: (anonymous function)
+        2: executeFrameFunction
+      snapshot: <filtered>
+  45: (duration)
+    0: enable(1)
+      swizzleTypes: [Number]
+      trace:
+        0: enable
+        1: (anonymous function)
+        2: executeFrameFunction
+  46: (duration)
+    0: enableVertexAttribArray(1)
+      swizzleTypes: [Number]
+      trace:
+        0: enableVertexAttribArray
+        1: (anonymous function)
+        2: executeFrameFunction
+  47: (duration)
+    0: finish()
+      trace:
+        0: finish
+        1: (anonymous function)
+        2: executeFrameFunction
+  48: (duration)
+    0: flush()
+      trace:
+        0: flush
+        1: (anonymous function)
+        2: executeFrameFunction
+  49: (duration)
+    0: framebufferRenderbuffer(1, 2, 3, 0)
+      swizzleTypes: [Number, Number, Number, WebGLRenderbuffer]
+      trace:
+        0: framebufferRenderbuffer
+        1: (anonymous function)
+        2: executeFrameFunction
+  50: (duration)
+    0: framebufferTexture2D(1, 2, 3, 0, 4)
+      swizzleTypes: [Number, Number, Number, WebGLTexture, Number]
+      trace:
+        0: framebufferTexture2D
+        1: (anonymous function)
+        2: executeFrameFunction
+  51: (duration)
+    0: frontFace(1)
+      swizzleTypes: [Number]
+      trace:
+        0: frontFace
+        1: (anonymous function)
+        2: executeFrameFunction
+  52: (duration)
+    0: generateMipmap(1)
+      swizzleTypes: [Number]
+      trace:
+        0: generateMipmap
+        1: (anonymous function)
+        2: executeFrameFunction
+  53: (duration)
+    0: getActiveAttrib(0, 1)
+      swizzleTypes: [WebGLProgram, Number]
+      trace:
+        0: getActiveAttrib
+        1: (anonymous function)
+        2: executeFrameFunction
+  54: (duration)
+    0: getActiveUniform(0, 1)
+      swizzleTypes: [WebGLProgram, Number]
+      trace:
+        0: getActiveUniform
+        1: (anonymous function)
+        2: executeFrameFunction
+  55: (duration)
+    0: getAttachedShaders(0)
+      swizzleTypes: [WebGLProgram]
+      trace:
+        0: getAttachedShaders
+        1: (anonymous function)
+        2: executeFrameFunction
+  56: (duration)
+    0: getAttribLocation(0, "test")
+      swizzleTypes: [WebGLProgram, String]
+      trace:
+        0: getAttribLocation
+        1: (anonymous function)
+        2: executeFrameFunction
+  57: (duration)
+    0: getBufferParameter(1, 2)
+      swizzleTypes: [Number, Number]
+      trace:
+        0: getBufferParameter
+        1: (anonymous function)
+        2: executeFrameFunction
+  58: (duration)
+    0: getContextAttributes()
+      trace:
+        0: getContextAttributes
+        1: (anonymous function)
+        2: executeFrameFunction
+  59: (duration)
+    0: getError()
+      trace:
+        0: getError
+        1: (anonymous function)
+        2: executeFrameFunction
+  60: (duration)
+    0: getExtension("test")
+      swizzleTypes: [String]
+      trace:
+        0: getExtension
+        1: (anonymous function)
+        2: executeFrameFunction
+  61: (duration)
+    0: getFramebufferAttachmentParameter(1, 2, 3)
+      swizzleTypes: [Number, Number, Number]
+      trace:
+        0: getFramebufferAttachmentParameter
+        1: (anonymous function)
+        2: executeFrameFunction
+  62: (duration)
+    0: getParameter(1)
+      swizzleTypes: [Number]
+      trace:
+        0: getParameter
+        1: (anonymous function)
+        2: executeFrameFunction
+  63: (duration)
+    0: getProgramInfoLog(0)
+      swizzleTypes: [WebGLProgram]
+      trace:
+        0: getProgramInfoLog
+        1: (anonymous function)
+        2: executeFrameFunction
+  64: (duration)
+    0: getProgramParameter(0, 1)
+      swizzleTypes: [WebGLProgram, Number]
+      trace:
+        0: getProgramParameter
+        1: (anonymous function)
+        2: executeFrameFunction
+  65: (duration)
+    0: getRenderbufferParameter(1, 2)
+      swizzleTypes: [Number, Number]
+      trace:
+        0: getRenderbufferParameter
+        1: (anonymous function)
+        2: executeFrameFunction
+  66: (duration)
+    0: getShaderInfoLog(0)
+      swizzleTypes: [WebGLShader]
+      trace:
+        0: getShaderInfoLog
+        1: (anonymous function)
+        2: executeFrameFunction
+  67: (duration)
+    0: getShaderParameter(0, 1)
+      swizzleTypes: [WebGLShader, Number]
+      trace:
+        0: getShaderParameter
+        1: (anonymous function)
+        2: executeFrameFunction
+  68: (duration)
+    0: getShaderPrecisionFormat(1, 2)
+      swizzleTypes: [Number, Number]
+      trace:
+        0: getShaderPrecisionFormat
+        1: (anonymous function)
+        2: executeFrameFunction
+  69: (duration)
+    0: getShaderSource(0)
+      swizzleTypes: [WebGLShader]
+      trace:
+        0: getShaderSource
+        1: (anonymous function)
+        2: executeFrameFunction
+  70: (duration)
+    0: getSupportedExtensions()
+      trace:
+        0: getSupportedExtensions
+        1: (anonymous function)
+        2: executeFrameFunction
+  71: (duration)
+    0: getTexParameter(1, 2)
+      swizzleTypes: [Number, Number]
+      trace:
+        0: getTexParameter
+        1: (anonymous function)
+        2: executeFrameFunction
+  72: (duration)
+    0: getUniform(0, 0)
+      swizzleTypes: [WebGLProgram, WebGLUniformLocation]
+      trace:
+        0: getUniform
+        1: (anonymous function)
+        2: executeFrameFunction
+  73: (duration)
+    0: getUniformLocation(0, "test")
+      swizzleTypes: [WebGLProgram, String]
+      trace:
+        0: getUniformLocation
+        1: (anonymous function)
+        2: executeFrameFunction
+  74: (duration)
+    0: getVertexAttrib(1, 2)
+      swizzleTypes: [Number, Number]
+      trace:
+        0: getVertexAttrib
+        1: (anonymous function)
+        2: executeFrameFunction
+  75: (duration)
+    0: getVertexAttribOffset(1, 2)
+      swizzleTypes: [Number, Number]
+      trace:
+        0: getVertexAttribOffset
+        1: (anonymous function)
+        2: executeFrameFunction
+  76: (duration)
+    0: hint(1, 2)
+      swizzleTypes: [Number, Number]
+      trace:
+        0: hint
+        1: (anonymous function)
+        2: executeFrameFunction
+  77: (duration)
+    0: isBuffer(0)
+      swizzleTypes: [WebGLBuffer]
+      trace:
+        0: isBuffer
+        1: (anonymous function)
+        2: executeFrameFunction
+  78: (duration)
+    0: isContextLost()
+      trace:
+        0: isContextLost
+        1: (anonymous function)
+        2: executeFrameFunction
+  79: (duration)
+    0: isEnabled(1)
+      swizzleTypes: [Number]
+      trace:
+        0: isEnabled
+        1: (anonymous function)
+        2: executeFrameFunction
+  80: (duration)
+    0: isFramebuffer(0)
+      swizzleTypes: [WebGLFramebuffer]
+      trace:
+        0: isFramebuffer
+        1: (anonymous function)
+        2: executeFrameFunction
+  81: (duration)
+    0: isProgram(0)
+      swizzleTypes: [WebGLProgram]
+      trace:
+        0: isProgram
+        1: (anonymous function)
+        2: executeFrameFunction
+  82: (duration)
+    0: isRenderbuffer(0)
+      swizzleTypes: [WebGLRenderbuffer]
+      trace:
+        0: isRenderbuffer
+        1: (anonymous function)
+        2: executeFrameFunction
+  83: (duration)
+    0: isShader(0)
+      swizzleTypes: [WebGLShader]
+      trace:
+        0: isShader
+        1: (anonymous function)
+        2: executeFrameFunction
+  84: (duration)
+    0: isTexture(0)
+      swizzleTypes: [WebGLTexture]
+      trace:
+        0: isTexture
+        1: (anonymous function)
+        2: executeFrameFunction
+  85: (duration)
+    0: lineWidth(1)
+      swizzleTypes: [Number]
+      trace:
+        0: lineWidth
+        1: (anonymous function)
+        2: executeFrameFunction
+  86: (duration)
+    0: linkProgram(0)
+      swizzleTypes: [WebGLProgram]
+      trace:
+        0: linkProgram
+        1: (anonymous function)
+        2: executeFrameFunction
+  87: (duration)
+    0: pixelStorei(1, 2)
+      swizzleTypes: [Number, Number]
+      trace:
+        0: pixelStorei
+        1: (anonymous function)
+        2: executeFrameFunction
+  88: (duration)
+    0: polygonOffset(1, 2)
+      swizzleTypes: [Number, Number]
+      trace:
+        0: polygonOffset
+        1: (anonymous function)
+        2: executeFrameFunction
+  89: (duration)
+    0: readPixels(1, 2, 3, 4, 5, 6, 0)
+      swizzleTypes: [Number, Number, Number, Number, Number, Number, TypedArray]
+      trace:
+        0: readPixels
+        1: (anonymous function)
+        2: executeFrameFunction
+  90: (duration)
+    0: renderbufferStorage(1, 2, 3, 4)
+      swizzleTypes: [Number, Number, Number, Number]
+      trace:
+        0: renderbufferStorage
+        1: (anonymous function)
+        2: executeFrameFunction
+  91: (duration)
+    0: sampleCoverage(1, true)
+      swizzleTypes: [Number, Boolean]
+      trace:
+        0: sampleCoverage
+        1: (anonymous function)
+        2: executeFrameFunction
+  92: (duration)
+    0: scissor(1, 2, 3, 4)
+      swizzleTypes: [Number, Number, Number, Number]
+      trace:
+        0: scissor
+        1: (anonymous function)
+        2: executeFrameFunction
+  93: (duration)
+    0: shaderSource(0, "test")
+      swizzleTypes: [WebGLShader, String]
+      trace:
+        0: shaderSource
+        1: (anonymous function)
+        2: executeFrameFunction
+  94: (duration)
+    0: stencilFunc(1, 2, 3)
+      swizzleTypes: [Number, Number, Number]
+      trace:
+        0: stencilFunc
+        1: (anonymous function)
+        2: executeFrameFunction
+  95: (duration)
+    0: stencilFuncSeparate(1, 2, 3, 4)
+      swizzleTypes: [Number, Number, Number, Number]
+      trace:
+        0: stencilFuncSeparate
+        1: (anonymous function)
+        2: executeFrameFunction
+  96: (duration)
+    0: stencilMask(1)
+      swizzleTypes: [Number]
+      trace:
+        0: stencilMask
+        1: (anonymous function)
+        2: executeFrameFunction
+  97: (duration)
+    0: stencilMaskSeparate(1, 2)
+      swizzleTypes: [Number, Number]
+      trace:
+        0: stencilMaskSeparate
+        1: (anonymous function)
+        2: executeFrameFunction
+  98: (duration)
+    0: stencilOp(1, 2, 3)
+      swizzleTypes: [Number, Number, Number]
+      trace:
+        0: stencilOp
+        1: (anonymous function)
+        2: executeFrameFunction
+  99: (duration)
+    0: stencilOpSeparate(1, 2, 3, 4)
+      swizzleTypes: [Number, Number, Number, Number]
+      trace:
+        0: stencilOpSeparate
+        1: (anonymous function)
+        2: executeFrameFunction
+  100: (duration)
+    0: texParameterf(1, 2, 3)
+      swizzleTypes: [Number, Number, Number]
+      trace:
+        0: texParameterf
+        1: (anonymous function)
+        2: executeFrameFunction
+  101: (duration)
+    0: texParameteri(1, 2, 3)
+      swizzleTypes: [Number, Number, Number]
+      trace:
+        0: texParameteri
+        1: (anonymous function)
+        2: executeFrameFunction
+  102: (duration)
+    0: uniform1f(0, 1)
+      swizzleTypes: [WebGLUniformLocation, Number]
+      trace:
+        0: uniform1f
+        1: (anonymous function)
+        2: executeFrameFunction
+  103: (duration)
+    0: uniform1fv(0, 0)
+      swizzleTypes: [WebGLUniformLocation, TypedArray]
+      trace:
+        0: uniform1fv
+        1: (anonymous function)
+        2: executeFrameFunction
+  104: (duration)
+    0: uniform1i(0, 1)
+      swizzleTypes: [WebGLUniformLocation, Number]
+      trace:
+        0: uniform1i
+        1: (anonymous function)
+        2: executeFrameFunction
+  105: (duration)
+    0: uniform1iv(0, 0)
+      swizzleTypes: [WebGLUniformLocation, TypedArray]
+      trace:
+        0: uniform1iv
+        1: (anonymous function)
+        2: executeFrameFunction
+  106: (duration)
+    0: uniform2f(0, 1, 2)
+      swizzleTypes: [WebGLUniformLocation, Number, Number]
+      trace:
+        0: uniform2f
+        1: (anonymous function)
+        2: executeFrameFunction
+  107: (duration)
+    0: uniform2fv(0, 0)
+      swizzleTypes: [WebGLUniformLocation, TypedArray]
+      trace:
+        0: uniform2fv
+        1: (anonymous function)
+        2: executeFrameFunction
+  108: (duration)
+    0: uniform2i(0, 1, 2)
+      swizzleTypes: [WebGLUniformLocation, Number, Number]
+      trace:
+        0: uniform2i
+        1: (anonymous function)
+        2: executeFrameFunction
+  109: (duration)
+    0: uniform2iv(0, 0)
+      swizzleTypes: [WebGLUniformLocation, TypedArray]
+      trace:
+        0: uniform2iv
+        1: (anonymous function)
+        2: executeFrameFunction
+  110: (duration)
+    0: uniform3f(0, 1, 2, 3)
+      swizzleTypes: [WebGLUniformLocation, Number, Number, Number]
+      trace:
+        0: uniform3f
+        1: (anonymous function)
+        2: executeFrameFunction
+  111: (duration)
+    0: uniform3fv(0, 0)
+      swizzleTypes: [WebGLUniformLocation, TypedArray]
+      trace:
+        0: uniform3fv
+        1: (anonymous function)
+        2: executeFrameFunction
+  112: (duration)
+    0: uniform3i(0, 1, 2, 3)
+      swizzleTypes: [WebGLUniformLocation, Number, Number, Number]
+      trace:
+        0: uniform3i
+        1: (anonymous function)
+        2: executeFrameFunction
+  113: (duration)
+    0: uniform3iv(0, 0)
+      swizzleTypes: [WebGLUniformLocation, TypedArray]
+      trace:
+        0: uniform3iv
+        1: (anonymous function)
+        2: executeFrameFunction
+  114: (duration)
+    0: uniform4f(0, 1, 2, 3, 4)
+      swizzleTypes: [WebGLUniformLocation, Number, Number, Number, Number]
+      trace:
+        0: uniform4f
+        1: (anonymous function)
+        2: executeFrameFunction
+  115: (duration)
+    0: uniform4fv(0, 0)
+      swizzleTypes: [WebGLUniformLocation, TypedArray]
+      trace:
+        0: uniform4fv
+        1: (anonymous function)
+        2: executeFrameFunction
+  116: (duration)
+    0: uniform4i(0, 1, 2, 3, 4)
+      swizzleTypes: [WebGLUniformLocation, Number, Number, Number, Number]
+      trace:
+        0: uniform4i
+        1: (anonymous function)
+        2: executeFrameFunction
+  117: (duration)
+    0: uniform4iv(0, 0)
+      swizzleTypes: [WebGLUniformLocation, TypedArray]
+      trace:
+        0: uniform4iv
+        1: (anonymous function)
+        2: executeFrameFunction
+  118: (duration)
+    0: uniformMatrix2fv(0, true, 0)
+      swizzleTypes: [WebGLUniformLocation, Boolean, TypedArray]
+      trace:
+        0: uniformMatrix2fv
+        1: (anonymous function)
+        2: executeFrameFunction
+  119: (duration)
+    0: uniformMatrix3fv(0, true, 0)
+      swizzleTypes: [WebGLUniformLocation, Boolean, TypedArray]
+      trace:
+        0: uniformMatrix3fv
+        1: (anonymous function)
+        2: executeFrameFunction
+  120: (duration)
+    0: uniformMatrix4fv(0, true, 0)
+      swizzleTypes: [WebGLUniformLocation, Boolean, TypedArray]
+      trace:
+        0: uniformMatrix4fv
+        1: (anonymous function)
+        2: executeFrameFunction
+  121: (duration)
+    0: useProgram(0)
+      swizzleTypes: [WebGLProgram]
+      trace:
+        0: useProgram
+        1: (anonymous function)
+        2: executeFrameFunction
+  122: (duration)
+    0: validateProgram(0)
+      swizzleTypes: [WebGLProgram]
+      trace:
+        0: validateProgram
+        1: (anonymous function)
+        2: executeFrameFunction
+  123: (duration)
+    0: vertexAttrib1f(1, 2)
+      swizzleTypes: [Number, Number]
+      trace:
+        0: vertexAttrib1f
+        1: (anonymous function)
+        2: executeFrameFunction
+  124: (duration)
+    0: vertexAttrib1fv(1, 0)
+      swizzleTypes: [Number, TypedArray]
+      trace:
+        0: vertexAttrib1fv
+        1: (anonymous function)
+        2: executeFrameFunction
+  125: (duration)
+    0: vertexAttrib2f(1, 2, 3)
+      swizzleTypes: [Number, Number, Number]
+      trace:
+        0: vertexAttrib2f
+        1: (anonymous function)
+        2: executeFrameFunction
+  126: (duration)
+    0: vertexAttrib2fv(1, 0)
+      swizzleTypes: [Number, TypedArray]
+      trace:
+        0: vertexAttrib2fv
+        1: (anonymous function)
+        2: executeFrameFunction
+  127: (duration)
+    0: vertexAttrib3f(1, 2, 3, 4)
+      swizzleTypes: [Number, Number, Number, Number]
+      trace:
+        0: vertexAttrib3f
+        1: (anonymous function)
+        2: executeFrameFunction
+  128: (duration)
+    0: vertexAttrib3fv(1, 0)
+      swizzleTypes: [Number, TypedArray]
+      trace:
+        0: vertexAttrib3fv
+        1: (anonymous function)
+        2: executeFrameFunction
+  129: (duration)
+    0: vertexAttrib4f(1, 2, 3, 4, 5)
+      swizzleTypes: [Number, Number, Number, Number, Number]
+      trace:
+        0: vertexAttrib4f
+        1: (anonymous function)
+        2: executeFrameFunction
+  130: (duration)
+    0: vertexAttrib4fv(1, 0)
+      swizzleTypes: [Number, TypedArray]
+      trace:
+        0: vertexAttrib4fv
+        1: (anonymous function)
+        2: executeFrameFunction
+  131: (duration)
+    0: vertexAttribPointer(1, 2, 3, true, 5, 6)
+      swizzleTypes: [Number, Number, Number, Boolean, Number, Number]
+      trace:
+        0: vertexAttribPointer
+        1: (anonymous function)
+        2: executeFrameFunction
+  132: (duration)
+    0: viewport(1, 2, 3, 4)
+      swizzleTypes: [Number, Number, Number, Number]
+      trace:
+        0: viewport
+        1: (anonymous function)
+        2: executeFrameFunction
+  133: (duration)
+    0: width
+      trace:
+        0: (anonymous function)
+        1: executeFrameFunction
+    1: width = 2
+      swizzleTypes: [Number]
+      trace:
+        0: (anonymous function)
+        1: executeFrameFunction
+  134: (duration)
+    0: height
+      trace:
+        0: (anonymous function)
+        1: executeFrameFunction
+    1: height = 2
+      swizzleTypes: [Number]
+      trace:
+        0: (anonymous function)
+        1: executeFrameFunction
+
</ins></span></pre></div>
<a id="branchessafari612branchLayoutTestsplatformmacwk1inspectorcanvasrecordingwebgl2memoryLimitexpectedtxtfromrev284707branchessafari612branchLayoutTestsinspectorcanvasrecordingwebgl2memoryLimitexpectedtxt"></a>
<div class="copfile"><h4>Copied: branches/safari-612-branch/LayoutTests/platform/mac-wk1/inspector/canvas/recording-webgl2-memoryLimit-expected.txt (from rev 284707, branches/safari-612-branch/LayoutTests/inspector/canvas/recording-webgl2-memoryLimit-expected.txt) (0 => 284801)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/platform/mac-wk1/inspector/canvas/recording-webgl2-memoryLimit-expected.txt                               (rev 0)
+++ branches/safari-612-branch/LayoutTests/platform/mac-wk1/inspector/canvas/recording-webgl2-memoryLimit-expected.txt  2021-10-25 19:09:31 UTC (rev 284801)
</span><span class="lines">@@ -0,0 +1,26 @@
</span><ins>+Test that CanvasManager is able to record actions made to WebGL2 canvas contexts.
+
+
+== Running test suite: Canvas.recordingWebGL2
+-- Running test case: Canvas.recordingWebGL2.memoryLimit
+initialState:
+  attributes:
+    width: 2
+    height: 2
+  parameters:
+    0: {"alpha":true,"depth":true,"stencil":false,"antialias":true,"premultipliedAlpha":true,"preserveDrawingBuffer":false,"powerPreference":"low-power","failIfMajorPerformanceCaveat":false}
+  content: <filtered>
+frames:
+  0: (duration) (incomplete)
+    0: activeTexture(1)
+      swizzleTypes: [Number]
+      trace:
+        0: activeTexture
+        1: (anonymous function)
+        2: executeFrameFunction
+        3: performActions
+        4: Global Code
+        5: evaluateWithScopeExtension
+        6: (anonymous function)
+        7: _wrapCall
+
</ins></span></pre></div>
<a id="branchessafari612branchLayoutTestsplatformmacwk1inspectorcanvasrecordingwebgl2snapshotsexpectedtxtfromrev284707branchessafari612branchLayoutTestsinspectorcanvasrecordingwebgl2snapshotsexpectedtxt"></a>
<div class="copfile"><h4>Copied: branches/safari-612-branch/LayoutTests/platform/mac-wk1/inspector/canvas/recording-webgl2-snapshots-expected.txt (from rev 284707, branches/safari-612-branch/LayoutTests/inspector/canvas/recording-webgl2-snapshots-expected.txt) (0 => 284801)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/platform/mac-wk1/inspector/canvas/recording-webgl2-snapshots-expected.txt                         (rev 0)
+++ branches/safari-612-branch/LayoutTests/platform/mac-wk1/inspector/canvas/recording-webgl2-snapshots-expected.txt    2021-10-25 19:09:31 UTC (rev 284801)
</span><span class="lines">@@ -0,0 +1,139 @@
</span><ins>+Test that CanvasManager is able to record actions made to WebGL2 canvas contexts.
+
+
+== Running test suite: Canvas.recordingWebGL2
+-- Running test case: Canvas.recordingWebGL2.snapshots
+initialState:
+  attributes:
+    width: 300
+    height: 150
+  parameters:
+    0: {"alpha":true,"depth":true,"stencil":false,"antialias":true,"premultipliedAlpha":true,"preserveDrawingBuffer":false,"powerPreference":"low-power","failIfMajorPerformanceCaveat":false}
+  content: <filtered>
+frames:
+  0: (duration)
+    0: useProgram(0)
+      swizzleTypes: [WebGLProgram]
+      trace:
+        0: useProgram
+        1: performActions
+        2: Global Code
+        3: evaluateWithScopeExtension
+        4: (anonymous function)
+        5: _wrapCall
+    1: clearColor(0, 0, 0, 1)
+      swizzleTypes: [Number, Number, Number, Number]
+      trace:
+        0: clearColor
+        1: clearContext
+        2: performActions
+        3: Global Code
+        4: evaluateWithScopeExtension
+        5: (anonymous function)
+        6: _wrapCall
+    2: clear(16384)
+      swizzleTypes: [Number]
+      trace:
+        0: clear
+        1: clearContext
+        2: performActions
+        3: Global Code
+        4: evaluateWithScopeExtension
+        5: (anonymous function)
+        6: _wrapCall
+      snapshot: <PASS: content changed>
+    3: bufferData(34962, 0, 35044)
+      swizzleTypes: [Number, TypedArray, Number]
+      trace:
+        0: bufferData
+        1: drawArrays
+        2: performActions
+        3: Global Code
+        4: evaluateWithScopeExtension
+        5: (anonymous function)
+        6: _wrapCall
+    4: drawArrays(4, 0, 3)
+      swizzleTypes: [Number, Number, Number]
+      trace:
+        0: drawArrays
+        1: drawArrays
+        2: performActions
+        3: Global Code
+        4: evaluateWithScopeExtension
+        5: (anonymous function)
+        6: _wrapCall
+      snapshot: <PASS: content changed>
+    5: clearColor(0, 0, 0, 1)
+      swizzleTypes: [Number, Number, Number, Number]
+      trace:
+        0: clearColor
+        1: clearContext
+        2: performActions
+        3: Global Code
+        4: evaluateWithScopeExtension
+        5: (anonymous function)
+        6: _wrapCall
+    6: clear(16384)
+      swizzleTypes: [Number]
+      trace:
+        0: clear
+        1: clearContext
+        2: performActions
+        3: Global Code
+        4: evaluateWithScopeExtension
+        5: (anonymous function)
+        6: _wrapCall
+      snapshot: <PASS: content changed>
+    7: bufferData(34962, 0, 35044)
+      swizzleTypes: [Number, TypedArray, Number]
+      trace:
+        0: bufferData
+        1: drawElements
+        2: performActions
+        3: Global Code
+        4: evaluateWithScopeExtension
+        5: (anonymous function)
+        6: _wrapCall
+    8: bufferData(34963, 0, 35044)
+      swizzleTypes: [Number, TypedArray, Number]
+      trace:
+        0: bufferData
+        1: drawElements
+        2: performActions
+        3: Global Code
+        4: evaluateWithScopeExtension
+        5: (anonymous function)
+        6: _wrapCall
+    9: drawElements(4, 3, 5123, 0)
+      swizzleTypes: [Number, Number, Number, Number]
+      trace:
+        0: drawElements
+        1: drawElements
+        2: performActions
+        3: Global Code
+        4: evaluateWithScopeExtension
+        5: (anonymous function)
+        6: _wrapCall
+      snapshot: <PASS: content changed>
+    10: clearColor(0, 0, 0, 1)
+      swizzleTypes: [Number, Number, Number, Number]
+      trace:
+        0: clearColor
+        1: clearContext
+        2: performActions
+        3: Global Code
+        4: evaluateWithScopeExtension
+        5: (anonymous function)
+        6: _wrapCall
+    11: clear(16384)
+      swizzleTypes: [Number]
+      trace:
+        0: clear
+        1: clearContext
+        2: performActions
+        3: Global Code
+        4: evaluateWithScopeExtension
+        5: (anonymous function)
+        6: _wrapCall
+      snapshot: <PASS: content changed>
+
</ins></span></pre></div>
<a id="branchessafari612branchSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/Source/JavaScriptCore/ChangeLog (284800 => 284801)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/JavaScriptCore/ChangeLog       2021-10-25 18:37:30 UTC (rev 284800)
+++ branches/safari-612-branch/Source/JavaScriptCore/ChangeLog  2021-10-25 19:09:31 UTC (rev 284801)
</span><span class="lines">@@ -1,3 +1,60 @@
</span><ins>+2021-10-25  Null  <null@apple.com>
+
+        Cherry-pick r282984. rdar://problem/77587429
+
+    Web Inspector: Graphics: add instrumentation for new `CanvasRenderingContext2DSettings`
+    https://bugs.webkit.org/show_bug.cgi?id=225180
+    <rdar://problem/77587429>
+    
+    Reviewed by BJ Burg.
+    
+    Source/JavaScriptCore:
+    
+    * inspector/protocol/Canvas.json:
+    Add `colorSpace` and `desynchronized` to `Canvas.ContextAttributes`.
+    
+    Source/WebCore:
+    
+    * inspector/InspectorCanvas.cpp:
+    (WebCore::buildObjectForCanvasContextAttributes): Added.
+    (WebCore::InspectorCanvas::buildObjectForCanvas):
+    (WebCore::InspectorCanvas::buildInitialState):
+    Unify the two cases where we fetch canvas attributes into a single method so that both get
+    the same data. This means that the canvas recorder now also uses `Canvas.ContextAttributes`.
+    
+    LayoutTests:
+    
+    * inspector/canvas/context-attributes-expected.txt:
+    * inspector/canvas/recording-2d-frameCount-expected.txt:
+    * inspector/canvas/recording-2d-full-expected.txt:
+    * inspector/canvas/recording-2d-memoryLimit-expected.txt:
+    * inspector/canvas/recording-bitmaprenderer-frameCount-expected.txt:
+    * inspector/canvas/recording-bitmaprenderer-full-expected.txt:
+    * inspector/canvas/recording-bitmaprenderer-memoryLimit-expected.txt:
+    * inspector/canvas/recording-html-2d-expected.txt:
+    * inspector/canvas/recording-webgl-frameCount-expected.txt:
+    * inspector/canvas/recording-webgl-full-expected.txt:
+    * inspector/canvas/recording-webgl-memoryLimit-expected.txt:
+    * inspector/canvas/recording-webgl-snapshots-expected.txt:
+    * inspector/canvas/recording-webgl2-frameCount-expected.txt:
+    * inspector/canvas/recording-webgl2-full-expected.txt:
+    * inspector/canvas/recording-webgl2-memoryLimit-expected.txt:
+    * inspector/canvas/recording-webgl2-snapshots-expected.txt:
+    
+    
+    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@282984 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+    2021-09-23  Devin Rousso  <drousso@apple.com>
+
+            Web Inspector: Graphics: add instrumentation for new `CanvasRenderingContext2DSettings`
+            https://bugs.webkit.org/show_bug.cgi?id=225180
+            <rdar://problem/77587429>
+
+            Reviewed by BJ Burg.
+
+            * inspector/protocol/Canvas.json:
+            Add `colorSpace` and `desynchronized` to `Canvas.ContextAttributes`.
+
</ins><span class="cx"> 2021-10-18  Russell Epstein  <repstein@apple.com>
</span><span class="cx"> 
</span><span class="cx">         Cherry-pick r284348. rdar://problem/84398090
</span></span></pre></div>
<a id="branchessafari612branchSourceJavaScriptCoreinspectorprotocolCanvasjson"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/Source/JavaScriptCore/inspector/protocol/Canvas.json (284800 => 284801)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/JavaScriptCore/inspector/protocol/Canvas.json  2021-10-25 18:37:30 UTC (rev 284800)
+++ branches/safari-612-branch/Source/JavaScriptCore/inspector/protocol/Canvas.json     2021-10-25 19:09:31 UTC (rev 284801)
</span><span class="lines">@@ -39,6 +39,8 @@
</span><span class="cx">             "description": "Drawing surface attributes.",
</span><span class="cx">             "properties": [
</span><span class="cx">                 { "name": "alpha", "type": "boolean", "optional": true, "description": "WebGL, WebGL2, ImageBitmapRenderingContext" },
</span><ins>+                { "name": "colorSpace", "type": "string", "optional": true, "description": "2D" },
+                { "name": "desynchronized", "type": "boolean", "optional": true, "description": "2D" },
</ins><span class="cx">                 { "name": "depth", "type": "boolean", "optional": true, "description": "WebGL, WebGL2" },
</span><span class="cx">                 { "name": "stencil", "type": "boolean", "optional": true, "description": "WebGL, WebGL2" },
</span><span class="cx">                 { "name": "antialias", "type": "boolean", "optional": true, "description": "WebGL, WebGL2" },
</span></span></pre></div>
<a id="branchessafari612branchSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/Source/WebCore/ChangeLog (284800 => 284801)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebCore/ChangeLog      2021-10-25 18:37:30 UTC (rev 284800)
+++ branches/safari-612-branch/Source/WebCore/ChangeLog 2021-10-25 19:09:31 UTC (rev 284801)
</span><span class="lines">@@ -1,3 +1,64 @@
</span><ins>+2021-10-25  Null  <null@apple.com>
+
+        Cherry-pick r282984. rdar://problem/77587429
+
+    Web Inspector: Graphics: add instrumentation for new `CanvasRenderingContext2DSettings`
+    https://bugs.webkit.org/show_bug.cgi?id=225180
+    <rdar://problem/77587429>
+    
+    Reviewed by BJ Burg.
+    
+    Source/JavaScriptCore:
+    
+    * inspector/protocol/Canvas.json:
+    Add `colorSpace` and `desynchronized` to `Canvas.ContextAttributes`.
+    
+    Source/WebCore:
+    
+    * inspector/InspectorCanvas.cpp:
+    (WebCore::buildObjectForCanvasContextAttributes): Added.
+    (WebCore::InspectorCanvas::buildObjectForCanvas):
+    (WebCore::InspectorCanvas::buildInitialState):
+    Unify the two cases where we fetch canvas attributes into a single method so that both get
+    the same data. This means that the canvas recorder now also uses `Canvas.ContextAttributes`.
+    
+    LayoutTests:
+    
+    * inspector/canvas/context-attributes-expected.txt:
+    * inspector/canvas/recording-2d-frameCount-expected.txt:
+    * inspector/canvas/recording-2d-full-expected.txt:
+    * inspector/canvas/recording-2d-memoryLimit-expected.txt:
+    * inspector/canvas/recording-bitmaprenderer-frameCount-expected.txt:
+    * inspector/canvas/recording-bitmaprenderer-full-expected.txt:
+    * inspector/canvas/recording-bitmaprenderer-memoryLimit-expected.txt:
+    * inspector/canvas/recording-html-2d-expected.txt:
+    * inspector/canvas/recording-webgl-frameCount-expected.txt:
+    * inspector/canvas/recording-webgl-full-expected.txt:
+    * inspector/canvas/recording-webgl-memoryLimit-expected.txt:
+    * inspector/canvas/recording-webgl-snapshots-expected.txt:
+    * inspector/canvas/recording-webgl2-frameCount-expected.txt:
+    * inspector/canvas/recording-webgl2-full-expected.txt:
+    * inspector/canvas/recording-webgl2-memoryLimit-expected.txt:
+    * inspector/canvas/recording-webgl2-snapshots-expected.txt:
+    
+    
+    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@282984 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+    2021-09-23  Devin Rousso  <drousso@apple.com>
+
+            Web Inspector: Graphics: add instrumentation for new `CanvasRenderingContext2DSettings`
+            https://bugs.webkit.org/show_bug.cgi?id=225180
+            <rdar://problem/77587429>
+
+            Reviewed by BJ Burg.
+
+            * inspector/InspectorCanvas.cpp:
+            (WebCore::buildObjectForCanvasContextAttributes): Added.
+            (WebCore::InspectorCanvas::buildObjectForCanvas):
+            (WebCore::InspectorCanvas::buildInitialState):
+            Unify the two cases where we fetch canvas attributes into a single method so that both get
+            the same data. This means that the canvas recorder now also uses `Canvas.ContextAttributes`.
+
</ins><span class="cx"> 2021-10-22  Alan Coon  <alancoon@apple.com>
</span><span class="cx"> 
</span><span class="cx">         Cherry-pick r283952. rdar://problem/84558050
</span></span></pre></div>
<a id="branchessafari612branchSourceWebCoreinspectorInspectorCanvascpp"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/Source/WebCore/inspector/InspectorCanvas.cpp (284800 => 284801)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebCore/inspector/InspectorCanvas.cpp  2021-10-25 18:37:30 UTC (rev 284800)
+++ branches/safari-612-branch/Source/WebCore/inspector/InspectorCanvas.cpp     2021-10-25 19:09:31 UTC (rev 284801)
</span><span class="lines">@@ -813,6 +813,67 @@
</span><span class="cx">     return m_frameCount && m_framesCaptured >= m_frameCount.value();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+static RefPtr<Inspector::Protocol::Canvas::ContextAttributes> buildObjectForCanvasContextAttributes(CanvasRenderingContext& context)
+{
+    if (is<CanvasRenderingContext2D>(context)) {
+        auto attributes = downcast<CanvasRenderingContext2D>(context).getContextAttributes();
+        auto contextAttributesPayload = Inspector::Protocol::Canvas::ContextAttributes::create()
+            .release();
+        switch (attributes.colorSpace) {
+        case PredefinedColorSpace::SRGB:
+            contextAttributesPayload->setColorSpace("srgb"_s);
+            break;
+
+#if ENABLE(PREDEFINED_COLOR_SPACE_DISPLAY_P3)
+        case PredefinedColorSpace::DisplayP3:
+            contextAttributesPayload->setColorSpace("display-p3"_s);
+            break;
+#endif
+        }
+        contextAttributesPayload->setDesynchronized(attributes.desynchronized);
+        return contextAttributesPayload;
+    }
+
+    if (is<ImageBitmapRenderingContext>(context)) {
+        auto contextAttributesPayload = Inspector::Protocol::Canvas::ContextAttributes::create()
+            .release();
+        contextAttributesPayload->setAlpha(downcast<ImageBitmapRenderingContext>(context).hasAlpha());
+        return contextAttributesPayload;
+    }
+
+#if ENABLE(WEBGL)
+    if (is<WebGLRenderingContextBase>(context)) {
+        const auto& attributes = downcast<WebGLRenderingContextBase>(context).getContextAttributes();
+        if (!attributes)
+            return nullptr;
+
+        auto contextAttributesPayload = Inspector::Protocol::Canvas::ContextAttributes::create()
+            .release();
+        contextAttributesPayload->setAlpha(attributes->alpha);
+        contextAttributesPayload->setDepth(attributes->depth);
+        contextAttributesPayload->setStencil(attributes->stencil);
+        contextAttributesPayload->setAntialias(attributes->antialias);
+        contextAttributesPayload->setPremultipliedAlpha(attributes->premultipliedAlpha);
+        contextAttributesPayload->setPreserveDrawingBuffer(attributes->preserveDrawingBuffer);
+        switch (attributes->powerPreference) {
+        case WebGLPowerPreference::Default:
+            contextAttributesPayload->setPowerPreference("default"_s);
+            break;
+        case WebGLPowerPreference::LowPower:
+            contextAttributesPayload->setPowerPreference("low-power"_s);
+            break;
+        case WebGLPowerPreference::HighPerformance:
+            contextAttributesPayload->setPowerPreference("high-performance"_s);
+            break;
+        }
+        contextAttributesPayload->setFailIfMajorPerformanceCaveat(attributes->failIfMajorPerformanceCaveat);
+        return contextAttributesPayload;
+    }
+#endif // ENABLE(WEBGL)
+
+    return nullptr;
+}
+
</ins><span class="cx"> Ref<Protocol::Canvas::Canvas> InspectorCanvas::buildObjectForCanvas(bool captureBacktrace)
</span><span class="cx"> {
</span><span class="cx">     using ContextTypeType = std::optional<Protocol::Canvas::ContextType>;
</span><span class="lines">@@ -856,45 +917,9 @@
</span><span class="cx">         // FIXME: <https://webkit.org/b/178282> Web Inspector: send a DOM node with each Canvas payload and eliminate Canvas.requestNode
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    using ContextAttributesType = RefPtr<Protocol::Canvas::ContextAttributes>;
</del><span class="cx">     auto contextAttributes = WTF::switchOn(m_context,
</span><del>-        [] (std::reference_wrapper<CanvasRenderingContext> contextWrapper) -> ContextAttributesType {
-            auto& context = contextWrapper.get();
-            if (is<ImageBitmapRenderingContext>(context)) {
-                auto contextAttributesPayload = Protocol::Canvas::ContextAttributes::create()
-                    .release();
-                contextAttributesPayload->setAlpha(downcast<ImageBitmapRenderingContext>(context).hasAlpha());
-                return contextAttributesPayload;
-            }
-
-#if ENABLE(WEBGL)
-            if (is<WebGLRenderingContextBase>(context)) {
-                if (const auto& attributes = downcast<WebGLRenderingContextBase>(context).getContextAttributes()) {
-                    auto contextAttributesPayload = Protocol::Canvas::ContextAttributes::create()
-                        .release();
-                    contextAttributesPayload->setAlpha(attributes->alpha);
-                    contextAttributesPayload->setDepth(attributes->depth);
-                    contextAttributesPayload->setStencil(attributes->stencil);
-                    contextAttributesPayload->setAntialias(attributes->antialias);
-                    contextAttributesPayload->setPremultipliedAlpha(attributes->premultipliedAlpha);
-                    contextAttributesPayload->setPreserveDrawingBuffer(attributes->preserveDrawingBuffer);
-                    switch (attributes->powerPreference) {
-                    case WebGLPowerPreference::Default:
-                        contextAttributesPayload->setPowerPreference("default");
-                        break;
-                    case WebGLPowerPreference::LowPower:
-                        contextAttributesPayload->setPowerPreference("low-power");
-                        break;
-                    case WebGLPowerPreference::HighPerformance:
-                        contextAttributesPayload->setPowerPreference("high-performance");
-                        break;
-                    }
-                    contextAttributesPayload->setFailIfMajorPerformanceCaveat(attributes->failIfMajorPerformanceCaveat);
-                    return contextAttributesPayload;
-                }
-            }
-#endif
-            return nullptr;
</del><ins>+        [] (std::reference_wrapper<CanvasRenderingContext> contextWrapper) {
+            return buildObjectForCanvasContextAttributes(contextWrapper);
</ins><span class="cx">         },
</span><span class="cx">         [] (Monostate) {
</span><span class="cx">             ASSERT_NOT_REACHED();
</span><span class="lines">@@ -1229,23 +1254,10 @@
</span><span class="cx">             statesPayload->addItem(WTFMove(statePayload));
</span><span class="cx">         }
</span><span class="cx">     }
</span><del>-#if ENABLE(WEBGL)
-    else if (is<WebGLRenderingContextBase>(context)) {
-        auto& contextWebGLBase = downcast<WebGLRenderingContextBase>(*context);
-        if (std::optional<WebGLContextAttributes> webGLContextAttributes = contextWebGLBase.getContextAttributes()) {
-            auto webGLContextAttributesPayload = JSON::Object::create();
-            webGLContextAttributesPayload->setBoolean("alpha"_s, webGLContextAttributes->alpha);
-            webGLContextAttributesPayload->setBoolean("depth"_s, webGLContextAttributes->depth);
-            webGLContextAttributesPayload->setBoolean("stencil"_s, webGLContextAttributes->stencil);
-            webGLContextAttributesPayload->setBoolean("antialias"_s, webGLContextAttributes->antialias);
-            webGLContextAttributesPayload->setBoolean("premultipliedAlpha"_s, webGLContextAttributes->premultipliedAlpha);
-            webGLContextAttributesPayload->setBoolean("preserveDrawingBuffer"_s, webGLContextAttributes->preserveDrawingBuffer);
-            webGLContextAttributesPayload->setBoolean("failIfMajorPerformanceCaveat"_s, webGLContextAttributes->failIfMajorPerformanceCaveat);
-            parametersPayload->addItem(WTFMove(webGLContextAttributesPayload));
-        }
-    }
-#endif
</del><span class="cx"> 
</span><ins>+    if (auto contextAttributes = buildObjectForCanvasContextAttributes(*context))
+        parametersPayload->addItem(contextAttributes.releaseNonNull());
+
</ins><span class="cx">     initialStatePayload->setAttributes(WTFMove(attributesPayload));
</span><span class="cx"> 
</span><span class="cx">     if (statesPayload->length())
</span></span></pre>
</div>
</div>

</body>
</html>