This would be incredibly useful as a reduction "generator".
<rdar://problem/48588673>
Created attachment 363623 [details] Patch
Comment on attachment 363623 [details] Patch Attachment 363623 [details] did not pass mac-ews (mac): Output: https://webkit-queues.webkit.org/results/11375831 New failing tests: inspector/canvas/recording-2d.html inspector/canvas/recording-html-2d.html
Created attachment 363627 [details] Archive of layout-test-results from ews102 for mac-highsierra The attached test failures were seen while running run-webkit-tests on the mac-ews. Bot: ews102 Port: mac-highsierra Platform: Mac OS X 10.13.6
Comment on attachment 363623 [details] Patch Attachment 363623 [details] did not pass mac-wk2-ews (mac-wk2): Output: https://webkit-queues.webkit.org/results/11375875 New failing tests: inspector/canvas/recording-2d.html
Created attachment 363631 [details] Archive of layout-test-results from ews104 for mac-highsierra-wk2 The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews. Bot: ews104 Port: mac-highsierra-wk2 Platform: Mac OS X 10.13.6
Comment on attachment 363623 [details] Patch Attachment 363623 [details] did not pass mac-debug-ews (mac): Output: https://webkit-queues.webkit.org/results/11375816 New failing tests: inspector/canvas/recording-2d.html inspector/canvas/recording-html-2d.html
Created attachment 363633 [details] Archive of layout-test-results from ews112 for mac-highsierra The attached test failures were seen while running run-webkit-tests on the mac-debug-ews. Bot: ews112 Port: mac-highsierra Platform: Mac OS X 10.13.6
Comment on attachment 363623 [details] Patch Attachment 363623 [details] did not pass ios-sim-ews (ios-simulator-wk2): Output: https://webkit-queues.webkit.org/results/11376026 New failing tests: fast/forms/datalist/datalist-textinput-suggestions-order.html fast/events/click-handler-on-body-simple.html fast/scrolling/ios/hit-testing-iframe-003.html fast/scrolling/ios/hit-testing-iframe-001.html
Created attachment 363635 [details] Archive of layout-test-results from ews123 for ios-simulator-wk2 The attached test failures were seen while running run-webkit-tests on the ios-sim-ews. Bot: ews123 Port: ios-simulator-wk2 Platform: Mac OS X 10.13.6
Created attachment 363664 [details] Patch
Created attachment 363668 [details] Patch
Created attachment 363770 [details] [HTML] Output after Patch is applied This is an example export from recording <https://devinrousso.com> for about ~200 frames.
Comment on attachment 363668 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=363668&action=review This is awesome! r=me > Source/WebInspectorUI/UserInterface/Models/Recording.js:498 > + return JSON.stringify(value); Nice! This will protect against injection! > Source/WebInspectorUI/UserInterface/Models/Recording.js:514 > + lines.push(`<!DOCTYPE html>`); > + lines.push(`<body>`); > + lines.push(`<style>`); > + lines.push(` body {`); > + lines.push(` margin: 0;`); > + lines.push(` }`); > + lines.push(` canvas {`); > + lines.push(` max-width: calc(100% - 40px);`); > + lines.push(` max-height: calc(100% - 40px);`); > + lines.push(` padding: 20px;`); > + lines.push(` }`); > + lines.push(`</style>`); > + lines.push(`<script>`); > + lines.push(`"use strict";`); Template strings allow newlines, so this could be cleaned up a bit, that said I like when things line up nicely. Lets also make an effort to make this more standard and include a nice title for browser tabs. Maybe: <html> <head> <title>${this._displayName}</title> </head> <body> ... Though you'd want to escape the displayName if it can be user defined to avoid script injection. For example if someone did `console.record(ctx, {name: "</title><script>alert(1);</script>});` > Source/WebInspectorUI/UserInterface/Models/Recording.js:546 > + if (name === "setPath" || name === "currentX" || name === "currentY") > + continue; "getPath" is also an InspectorAddition that may need to be skipped. > Source/WebInspectorUI/UserInterface/Models/Recording.js:566 > + lines.push(` console.record(context, {name: "${this._displayName}"});`); If the displayName is user defined you should probably protect against script injection. You could JSON.stringify it here: lines.push(` console.record(context, {name: ${JSON.stringify(this._displayName)});`); For example if someone did `console.record(ctx, {name: "\"}); alert(1); ({foo:\");`. > Source/WebInspectorUI/UserInterface/Models/Recording.js:584 > + if (!action.valid) > + contextString = `// ` + contextString; Clever! This could move above the call string, next to the other contextString setup. > Source/WebInspectorUI/UserInterface/Models/Recording.js:656 > + lines.push(` createImageBitmap(image).then(function (imageBitmap) {`); Style: It is unusual to have the space after `function` here. > Source/WebInspectorUI/UserInterface/Models/Recording.js:702 > + lines.push(`rebuildDOMMatrix(${index}, ${JSON.stringify(data)});`) How about just passing this as an array: let data = [object.a, object.b, object.c, object.d, object.e, object.f]; Then rebuildDOMMatrix just takes the data: function rebuildDOMMatrix(key, data) { objects[key] = new DOMMatrix(data) } Also interesting, DOMMatrix has a toString() which the constructor takes, so you could alternatively do: let data = object.toString(); But I like the array version better.
Comment on attachment 363668 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=363668&action=review >> Source/WebInspectorUI/UserInterface/Models/Recording.js:702 >> + lines.push(`rebuildDOMMatrix(${index}, ${JSON.stringify(data)});`) > > How about just passing this as an array: > > let data = [object.a, object.b, object.c, object.d, object.e, object.f]; > > Then rebuildDOMMatrix just takes the data: > > function rebuildDOMMatrix(key, data) { > objects[key] = new DOMMatrix(data) > } > > Also interesting, DOMMatrix has a toString() which the constructor takes, so you could alternatively do: > > let data = object.toString(); > > But I like the array version better. Hmm, actually using DOMMatrix's toString would support a 3d matrix. Might be worth doing it that way then!
Created attachment 363855 [details] Patch
Comment on attachment 363855 [details] Patch Attachment 363855 [details] did not pass mac-ews (mac): Output: https://webkit-queues.webkit.org/results/11411825 New failing tests: inspector/canvas/recording-html-2d.html
Created attachment 363863 [details] Archive of layout-test-results from ews100 for mac-highsierra The attached test failures were seen while running run-webkit-tests on the mac-ews. Bot: ews100 Port: mac-highsierra Platform: Mac OS X 10.13.6
Comment on attachment 363855 [details] Patch Attachment 363855 [details] did not pass mac-debug-ews (mac): Output: https://webkit-queues.webkit.org/results/11411869 New failing tests: inspector/canvas/recording-html-2d.html
Created attachment 363865 [details] Archive of layout-test-results from ews112 for mac-highsierra The attached test failures were seen while running run-webkit-tests on the mac-debug-ews. Bot: ews112 Port: mac-highsierra Platform: Mac OS X 10.13.6
Created attachment 363892 [details] Patch
Comment on attachment 363892 [details] Patch Attachment 363892 [details] did not pass mac-wk2-ews (mac-wk2): Output: https://webkit-queues.webkit.org/results/11416599 New failing tests: inspector/canvas/recording-html-2d.html
Created attachment 363907 [details] Archive of layout-test-results from ews106 for mac-highsierra-wk2 The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews. Bot: ews106 Port: mac-highsierra-wk2 Platform: Mac OS X 10.13.6
Created attachment 364027 [details] Patch
Created attachment 364029 [details] Patch
Comment on attachment 364029 [details] Patch Attachment 364029 [details] did not pass mac-wk2-ews (mac-wk2): Output: https://webkit-queues.webkit.org/results/11428650 New failing tests: accessibility/mac/selection-notification-focus-change.html
Created attachment 364043 [details] Archive of layout-test-results from ews107 for mac-highsierra-wk2 The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews. Bot: ews107 Port: mac-highsierra-wk2 Platform: Mac OS X 10.13.6
Comment on attachment 364029 [details] Patch Clearing flags on attachment: 364029 Committed r242809: <https://trac.webkit.org/changeset/242809>
All reviewed patches have been landed. Closing bug.