Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 3722912ff800feef138f91f0f4fe26f13d68742e
https://github.com/WebKit/WebKit/commit/3722912ff800feef138f91f0f4fe26f13d68742e
Author: Devin Rousso <[email protected]>
Date: 2026-08-02 (Sun, 02 Aug 2026)
Changed paths:
M LayoutTests/inspector/canvas/recording-expected.txt
A LayoutTests/inspector/canvas/recording-webgpu-expected.txt
A LayoutTests/inspector/canvas/recording-webgpu.html
M LayoutTests/inspector/canvas/recording.html
M LayoutTests/platform/glib/TestExpectations
M LayoutTests/platform/win/TestExpectations
M Source/JavaScriptCore/inspector/protocol/Recording.json
M Source/JavaScriptCore/inspector/scripts/codegen/generator.py
M Source/WebCore/Modules/WebGPU/GPUBindGroup.cpp
M Source/WebCore/Modules/WebGPU/GPUBindGroup.h
M Source/WebCore/Modules/WebGPU/GPUBindGroup.idl
M Source/WebCore/Modules/WebGPU/GPUBindGroupLayout.cpp
M Source/WebCore/Modules/WebGPU/GPUBindGroupLayout.h
M Source/WebCore/Modules/WebGPU/GPUBindGroupLayout.idl
M Source/WebCore/Modules/WebGPU/GPUBuffer.cpp
M Source/WebCore/Modules/WebGPU/GPUBuffer.h
M Source/WebCore/Modules/WebGPU/GPUBuffer.idl
M Source/WebCore/Modules/WebGPU/GPUCommandBuffer.cpp
M Source/WebCore/Modules/WebGPU/GPUCommandBuffer.h
M Source/WebCore/Modules/WebGPU/GPUCommandBuffer.idl
M Source/WebCore/Modules/WebGPU/GPUCommandEncoder.cpp
M Source/WebCore/Modules/WebGPU/GPUCommandEncoder.h
M Source/WebCore/Modules/WebGPU/GPUCommandEncoder.idl
M Source/WebCore/Modules/WebGPU/GPUComputePassEncoder.cpp
M Source/WebCore/Modules/WebGPU/GPUComputePassEncoder.h
M Source/WebCore/Modules/WebGPU/GPUComputePassEncoder.idl
M Source/WebCore/Modules/WebGPU/GPUComputePipeline.cpp
M Source/WebCore/Modules/WebGPU/GPUComputePipeline.h
M Source/WebCore/Modules/WebGPU/GPUComputePipeline.idl
M Source/WebCore/Modules/WebGPU/GPUDevice.cpp
M Source/WebCore/Modules/WebGPU/GPUDevice.h
M Source/WebCore/Modules/WebGPU/GPUDevice.idl
M Source/WebCore/Modules/WebGPU/GPUExternalTexture.cpp
M Source/WebCore/Modules/WebGPU/GPUExternalTexture.h
M Source/WebCore/Modules/WebGPU/GPUExternalTexture.idl
M Source/WebCore/Modules/WebGPU/GPUPipelineLayout.cpp
M Source/WebCore/Modules/WebGPU/GPUPipelineLayout.h
M Source/WebCore/Modules/WebGPU/GPUPipelineLayout.idl
M Source/WebCore/Modules/WebGPU/GPUPresentationContext.h
M Source/WebCore/Modules/WebGPU/GPUQuerySet.cpp
M Source/WebCore/Modules/WebGPU/GPUQuerySet.h
M Source/WebCore/Modules/WebGPU/GPUQuerySet.idl
M Source/WebCore/Modules/WebGPU/GPUQueue.cpp
M Source/WebCore/Modules/WebGPU/GPUQueue.h
M Source/WebCore/Modules/WebGPU/GPUQueue.idl
M Source/WebCore/Modules/WebGPU/GPURenderBundle.cpp
M Source/WebCore/Modules/WebGPU/GPURenderBundle.h
M Source/WebCore/Modules/WebGPU/GPURenderBundle.idl
M Source/WebCore/Modules/WebGPU/GPURenderBundleEncoder.cpp
M Source/WebCore/Modules/WebGPU/GPURenderBundleEncoder.h
M Source/WebCore/Modules/WebGPU/GPURenderBundleEncoder.idl
M Source/WebCore/Modules/WebGPU/GPURenderPassEncoder.cpp
M Source/WebCore/Modules/WebGPU/GPURenderPassEncoder.h
M Source/WebCore/Modules/WebGPU/GPURenderPassEncoder.idl
M Source/WebCore/Modules/WebGPU/GPURenderPipeline.cpp
M Source/WebCore/Modules/WebGPU/GPURenderPipeline.h
M Source/WebCore/Modules/WebGPU/GPURenderPipeline.idl
M Source/WebCore/Modules/WebGPU/GPUSampler.cpp
M Source/WebCore/Modules/WebGPU/GPUSampler.h
M Source/WebCore/Modules/WebGPU/GPUSampler.idl
M Source/WebCore/Modules/WebGPU/GPUShaderModule.cpp
M Source/WebCore/Modules/WebGPU/GPUShaderModule.h
M Source/WebCore/Modules/WebGPU/GPUShaderModule.idl
M Source/WebCore/Modules/WebGPU/GPUTexture.cpp
M Source/WebCore/Modules/WebGPU/GPUTexture.h
M Source/WebCore/Modules/WebGPU/GPUTexture.idl
M Source/WebCore/Modules/WebGPU/GPUTextureView.cpp
M Source/WebCore/Modules/WebGPU/GPUTextureView.h
M Source/WebCore/Modules/WebGPU/GPUTextureView.idl
M Source/WebCore/inspector/InspectorCanvas.cpp
M Source/WebCore/inspector/InspectorCanvas.h
M Source/WebCore/inspector/InspectorCanvasCallTracer.cpp
M Source/WebCore/inspector/InspectorCanvasCallTracer.h
M Source/WebCore/inspector/InspectorInstrumentation.cpp
M Source/WebCore/inspector/InspectorInstrumentation.h
M Source/WebCore/inspector/RecordingSwizzleType.h
M Source/WebCore/inspector/agents/InspectorCanvasAgent.cpp
M Source/WebCore/inspector/agents/InspectorCanvasAgent.h
M Source/WebCore/page/FrameConsoleClient.cpp
M Source/WebCore/workers/WorkerConsoleClient.cpp
M Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js
M Source/WebInspectorUI/UserInterface/Models/Canvas.js
M Source/WebInspectorUI/UserInterface/Models/Recording.js
M Source/WebInspectorUI/UserInterface/Models/RecordingAction.js
M Source/WebInspectorUI/UserInterface/Models/RecordingFrame.js
M Source/WebInspectorUI/UserInterface/Views/CanvasContentView.js
M Source/WebInspectorUI/UserInterface/Views/CanvasSidebarPanel.js
M Source/WebInspectorUI/UserInterface/Views/RecordingActionTreeElement.css
M Source/WebInspectorUI/UserInterface/Views/RecordingActionTreeElement.js
M Source/WebInspectorUI/UserInterface/Views/RecordingContentView.js
M Source/WebInspectorUI/UserInterface/Views/TreeOutline.js
Log Message:
-----------
Web Inspector: Canvas: support recording WebGPU devices
https://bugs.webkit.org/show_bug.cgi?id=201651
Reviewed by Mike Wyrzykowski.
* Source/WebCore/Modules/WebGPU/GPUDevice.idl:
* Source/WebCore/Modules/WebGPU/GPUDevice.h:
(WebCore::GPUDevice::hasActiveInspectorCanvasCallTracer const): Added.
(WebCore::GPUDevice::setHasActiveInspectorCanvasCallTracer): Added.
* Source/WebCore/Modules/WebGPU/GPUDevice.cpp:
(WebCore::GPUDevice::GPUDevice):
(WebCore::GPUDevice::createSampler):
(WebCore::GPUDevice::importExternalTexture):
(WebCore::GPUDevice::createBindGroupLayout):
(WebCore::GPUDevice::createAutoPipelineLayout):
(WebCore::GPUDevice::createPipelineLayout):
(WebCore::GPUDevice::createBindGroup):
(WebCore::GPUDevice::createShaderModule):
(WebCore::GPUDevice::createCommandEncoder):
(WebCore::GPUDevice::createRenderBundleEncoder):
(WebCore::GPUDevice::createQuerySet):
* Source/WebCore/Modules/WebGPU/GPUQueue.idl:
* Source/WebCore/Modules/WebGPU/GPUQueue.h:
(WebCore::GPUQueue::create):
* Source/WebCore/Modules/WebGPU/GPUQueue.cpp:
(WebCore::GPUQueue::GPUQueue):
(WebCore::GPUQueue::hasActiveInspectorCanvasCallTracer const): Added.
(WebCore::GPUQueue::device const): Added.
(WebCore::GPUQueue::submit):
* Source/WebCore/Modules/WebGPU/GPUBuffer.idl:
* Source/WebCore/Modules/WebGPU/GPUBuffer.h:
* Source/WebCore/Modules/WebGPU/GPUBuffer.cpp:
(WebCore::GPUBuffer::hasActiveInspectorCanvasCallTracer const): Added.
(WebCore::GPUBuffer::device const): Added.
* Source/WebCore/Modules/WebGPU/GPUTexture.idl:
* Source/WebCore/Modules/WebGPU/GPUTexture.h:
(WebCore::GPUTexture::create):
* Source/WebCore/Modules/WebGPU/GPUTexture.cpp:
(WebCore::GPUTexture::GPUTexture):
(WebCore::GPUTexture::hasActiveInspectorCanvasCallTracer const): Added.
(WebCore::GPUTexture::device const): Added.
(WebCore::GPUTexture::createView):
* Source/WebCore/Modules/WebGPU/GPUTextureView.idl:
* Source/WebCore/Modules/WebGPU/GPUTextureView.h:
(WebCore::GPUTextureView::create):
* Source/WebCore/Modules/WebGPU/GPUTextureView.cpp:
(WebCore::GPUTextureView::GPUTextureView): Added.
(WebCore::GPUTextureView::hasActiveInspectorCanvasCallTracer const): Added.
(WebCore::GPUTextureView::device const): Added.
* Source/WebCore/Modules/WebGPU/GPUExternalTexture.idl:
* Source/WebCore/Modules/WebGPU/GPUExternalTexture.h:
(WebCore::GPUExternalTexture::create):
* Source/WebCore/Modules/WebGPU/GPUExternalTexture.cpp:
(WebCore::GPUExternalTexture::GPUExternalTexture): Added.
(WebCore::GPUExternalTexture::hasActiveInspectorCanvasCallTracer const): Added.
(WebCore::GPUExternalTexture::device const): Added.
* Source/WebCore/Modules/WebGPU/GPUSampler.idl:
* Source/WebCore/Modules/WebGPU/GPUSampler.h:
(WebCore::GPUSampler::create):
* Source/WebCore/Modules/WebGPU/GPUSampler.cpp:
(WebCore::GPUSampler::GPUSampler): Added.
(WebCore::GPUSampler::hasActiveInspectorCanvasCallTracer const): Added.
(WebCore::GPUSampler::device const): Added.
* Source/WebCore/Modules/WebGPU/GPUBindGroupLayout.idl:
* Source/WebCore/Modules/WebGPU/GPUBindGroupLayout.h:
(WebCore::GPUBindGroupLayout::create):
* Source/WebCore/Modules/WebGPU/GPUBindGroupLayout.cpp:
(WebCore::GPUBindGroupLayout::GPUBindGroupLayout): Added.
(WebCore::GPUBindGroupLayout::hasActiveInspectorCanvasCallTracer const): Added.
(WebCore::GPUBindGroupLayout::device const): Added.
* Source/WebCore/Modules/WebGPU/GPUBindGroup.idl:
* Source/WebCore/Modules/WebGPU/GPUBindGroup.h:
(WebCore::GPUBindGroup::create):
* Source/WebCore/Modules/WebGPU/GPUBindGroup.cpp:
(WebCore::GPUBindGroup::hasActiveInspectorCanvasCallTracer const): Added.
(WebCore::GPUBindGroup::device const): Added.
(WebCore::GPUBindGroup::GPUBindGroup):
* Source/WebCore/Modules/WebGPU/GPUPipelineLayout.idl:
* Source/WebCore/Modules/WebGPU/GPUPipelineLayout.h:
(WebCore::GPUPipelineLayout::create):
* Source/WebCore/Modules/WebGPU/GPUPipelineLayout.cpp:
(WebCore::GPUPipelineLayout::GPUPipelineLayout): Added.
(WebCore::GPUPipelineLayout::hasActiveInspectorCanvasCallTracer const): Added.
(WebCore::GPUPipelineLayout::device const): Added.
* Source/WebCore/Modules/WebGPU/GPUShaderModule.idl:
* Source/WebCore/Modules/WebGPU/GPUShaderModule.h:
(WebCore::GPUShaderModule::create):
* Source/WebCore/Modules/WebGPU/GPUShaderModule.cpp:
(WebCore::GPUShaderModule::GPUShaderModule): Added.
(WebCore::GPUShaderModule::hasActiveInspectorCanvasCallTracer const): Added.
(WebCore::GPUShaderModule::device const): Added.
* Source/WebCore/Modules/WebGPU/GPUComputePipeline.idl:
* Source/WebCore/Modules/WebGPU/GPUComputePipeline.h:
* Source/WebCore/Modules/WebGPU/GPUComputePipeline.cpp:
(WebCore::GPUComputePipeline::hasActiveInspectorCanvasCallTracer const): Added.
(WebCore::GPUComputePipeline::getBindGroupLayout):
* Source/WebCore/Modules/WebGPU/GPURenderPipeline.idl:
* Source/WebCore/Modules/WebGPU/GPURenderPipeline.h:
* Source/WebCore/Modules/WebGPU/GPURenderPipeline.cpp:
(WebCore::GPURenderPipeline::hasActiveInspectorCanvasCallTracer const): Added.
(WebCore::GPURenderPipeline::getBindGroupLayout):
* Source/WebCore/Modules/WebGPU/GPUCommandEncoder.idl:
* Source/WebCore/Modules/WebGPU/GPUCommandEncoder.h:
(WebCore::GPUCommandEncoder::create):
* Source/WebCore/Modules/WebGPU/GPUCommandEncoder.cpp:
(WebCore::GPUCommandEncoder::GPUCommandEncoder):
(WebCore::GPUCommandEncoder::hasActiveInspectorCanvasCallTracer const): Added.
(WebCore::GPUCommandEncoder::device const): Added.
(WebCore::GPUCommandEncoder::beginRenderPass):
(WebCore::GPUCommandEncoder::beginComputePass):
(WebCore::GPUCommandEncoder::finish):
* Source/WebCore/Modules/WebGPU/GPUComputePassEncoder.idl:
* Source/WebCore/Modules/WebGPU/GPUComputePassEncoder.h:
(WebCore::GPUComputePassEncoder::create):
* Source/WebCore/Modules/WebGPU/GPUComputePassEncoder.cpp:
(WebCore::GPUComputePassEncoder::GPUComputePassEncoder):
(WebCore::GPUComputePassEncoder::hasActiveInspectorCanvasCallTracer const):
Added.
(WebCore::GPUComputePassEncoder::device const): Added.
(WebCore::GPUComputePassEncoder::end):
* Source/WebCore/Modules/WebGPU/GPURenderPassEncoder.idl:
* Source/WebCore/Modules/WebGPU/GPURenderPassEncoder.h:
(WebCore::GPURenderPassEncoder::create):
* Source/WebCore/Modules/WebGPU/GPURenderPassEncoder.cpp:
(WebCore::GPURenderPassEncoder::GPURenderPassEncoder):
(WebCore::GPURenderPassEncoder::hasActiveInspectorCanvasCallTracer const):
Added.
(WebCore::GPURenderPassEncoder::device const): Added.
(WebCore::GPURenderPassEncoder::end):
* Source/WebCore/Modules/WebGPU/GPURenderBundleEncoder.idl:
* Source/WebCore/Modules/WebGPU/GPURenderBundleEncoder.h:
(WebCore::GPURenderBundleEncoder::create):
* Source/WebCore/Modules/WebGPU/GPURenderBundleEncoder.cpp:
(WebCore::GPURenderBundleEncoder::GPURenderBundleEncoder): Added.
(WebCore::GPURenderBundleEncoder::hasActiveInspectorCanvasCallTracer const):
Added.
(WebCore::GPURenderBundleEncoder::device const): Added.
(WebCore::GPURenderBundleEncoder::finish):
* Source/WebCore/Modules/WebGPU/GPURenderBundle.idl:
* Source/WebCore/Modules/WebGPU/GPURenderBundle.h:
(WebCore::GPURenderBundle::create):
* Source/WebCore/Modules/WebGPU/GPURenderBundle.cpp:
(WebCore::GPURenderBundle::GPURenderBundle): Added.
(WebCore::GPURenderBundle::hasActiveInspectorCanvasCallTracer const): Added.
(WebCore::GPURenderBundle::device const): Added.
* Source/WebCore/Modules/WebGPU/GPUCommandBuffer.idl:
* Source/WebCore/Modules/WebGPU/GPUCommandBuffer.h:
* Source/WebCore/Modules/WebGPU/GPUCommandBuffer.cpp:
(WebCore::GPUCommandBuffer::hasActiveInspectorCanvasCallTracer const): Added.
(WebCore::GPUCommandBuffer::device const): Added.
* Source/WebCore/Modules/WebGPU/GPUQuerySet.idl:
* Source/WebCore/Modules/WebGPU/GPUQuerySet.h:
(WebCore::GPUQuerySet::create):
* Source/WebCore/Modules/WebGPU/GPUQuerySet.cpp:
(WebCore::GPUQuerySet::GPUQuerySet):
(WebCore::GPUQuerySet::hasActiveInspectorCanvasCallTracer const): Added.
(WebCore::GPUQuerySet::device const): Added.
* Source/WebCore/Modules/WebGPU/GPUPresentationContext.h:
* Source/WebCore/inspector/RecordingSwizzleType.h:
* Source/WebCore/inspector/InspectorCanvasCallTracer.h:
(WebCore::InspectorCanvasCallTracer::processArgument):
(WebCore::InspectorCanvasCallTracer::recordAction):
(WebCore::InspectorCanvasCallTracer::receiverSwizzleType): Added.
(WebCore::InspectorCanvasCallTracer::receiverSwizzleTypeImpl): Added.
* Source/WebCore/inspector/InspectorCanvasCallTracer.cpp:
(WebCore::enabledCanvasAgent):
(WebCore::InspectorCanvasCallTracer::enabledInspectorCanvas):
(WebCore::InspectorCanvasCallTracer::recordAction):
Add `CallTrace` to every WebGPU IDL (including those without any methods today
so future API additions automatically get support).
Each object now has a link to the owner `GPUDevice` so the `CallTracer` can
check whether recording is active.
* Source/JavaScriptCore/inspector/protocol/Recording.json:
* Source/JavaScriptCore/inspector/scripts/codegen/generator.py:
* Source/WebCore/inspector/InspectorCanvas.h:
* Source/WebCore/inspector/InspectorCanvas.cpp:
(WebCore::InspectorCanvas::hasActiveInspectorCanvasCallTracer): Added.
(WebCore::InspectorCanvas::setHasActiveInspectorCanvasCallTracer): Added.
(WebCore::InspectorCanvas::resetRecordingData):
(WebCore::shouldSnapshotWebGPUAction): Added.
(WebCore::InspectorCanvas::recordAction):
(WebCore::buildActionReceiver): Added.
(WebCore::InspectorCanvas::releaseObjectForRecording):
(WebCore::InspectorCanvas::getContentAsDataURL): Added WebGPU support for
device-backed canvases.
(WebCore::InspectorCanvas::appendActionSnapshotIfNeeded):
(WebCore::InspectorCanvas::identifierForRecordingObject): Added.
(WebCore::InspectorCanvas::buildInitialState):
Store explicit receivers as `[identifier, swizzleType]` before the optional
snapshot field.
* Source/WebCore/inspector/agents/InspectorCanvasAgent.h:
* Source/WebCore/inspector/agents/InspectorCanvasAgent.cpp:
(WebCore::InspectorCanvasAgent::startRecording):
(WebCore::InspectorCanvasAgent::stopRecording):
(WebCore::InspectorCanvasAgent::didFinishRecordingCanvasFrame):
(WebCore::InspectorCanvasAgent::didCreateWebGPUDevice):
(WebCore::InspectorCanvasAgent::recordAction):
(WebCore::InspectorCanvasAgent::scheduleRecordingCanvasFrame): Added.
(WebCore::InspectorCanvasAgent::consoleStartRecordingCanvas):
(WebCore::InspectorCanvasAgent::consoleStopRecordingCanvas):
(WebCore::InspectorCanvasAgent::reset):
(WebCore::InspectorCanvasAgent::unbindCanvas):
Support explicit and automatic `GPUDevice` recordings.
* Source/WebCore/page/FrameConsoleClient.cpp:
(WebCore::FrameConsoleClient::record):
(WebCore::FrameConsoleClient::recordEnd):
* Source/WebCore/workers/WorkerConsoleClient.cpp:
(WebCore::WorkerConsoleClient::record):
(WebCore::WorkerConsoleClient::recordEnd):
* Source/WebCore/inspector/InspectorInstrumentation.h:
(WebCore::InspectorInstrumentation::consoleStartRecordingCanvas):
(WebCore::InspectorInstrumentation::consoleStopRecordingCanvas):
* Source/WebCore/inspector/InspectorInstrumentation.cpp:
(WebCore::InspectorInstrumentation::consoleStartRecordingCanvasImpl):
(WebCore::InspectorInstrumentation::consoleStopRecordingCanvasImpl):
Support `console.record()` and `console.recordEnd()` for `GPUDevice`.
* Source/WebInspectorUI/UserInterface/Models/Canvas.js:
(WI.Canvas.prototype.get supportsRecording): Deleted.
(WI.Canvas.prototype.recordingProgress):
* Source/WebInspectorUI/UserInterface/Views/CanvasContentView.js:
(WI.CanvasContentView.prototype.initialLayout):
* Source/WebInspectorUI/UserInterface/Views/CanvasSidebarPanel.js:
(WI.CanvasSidebarPanel.prototype._canvasChanged):
(WI.CanvasSidebarPanel.prototype._updateRecordNavigationItem):
Pass the backend recording version when parsing a live recording.
* Source/WebInspectorUI/UserInterface/Models/Recording.js:
(WI.Recording.fromPayload):
(WI.Recording.displayNameForRecordingType):
(WI.Recording.displayNameForReceiver): Added.
(WI.Recording.prototype.get isCanvas):
(WI.Recording.prototype.get isCanvasWebGPU): Added.
(WI.Recording.prototype.createContext):
(WI.Recording.prototype.toJSON):
(WI.Recording.prototype.toHTML):
(WI.Recording.prototype._process):
* Source/WebInspectorUI/UserInterface/Models/RecordingAction.js:
(WI.RecordingAction):
(WI.RecordingAction.fromPayload):
(WI.RecordingAction.isFunctionForType):
(WI.RecordingAction.bitfieldNamesForParameter):
(WI.RecordingAction.constantNameForParameter):
(WI.RecordingAction._prototypeForType):
(WI.RecordingAction.prototype.get receiver): Added.
(WI.RecordingAction.prototype.get contextReplacer): Deleted.
(WI.RecordingAction.prototype.process):
(WI.RecordingAction.prototype.swizzle):
(WI.RecordingAction.prototype.get isCanvasReceiver): Added.
(WI.RecordingAction.prototype.apply):
(WI.RecordingAction.prototype.toJSON):
* Source/WebInspectorUI/UserInterface/Models/RecordingFrame.js:
(WI.RecordingFrame.fromPayload):
(WI.RecordingFrame.prototype.toJSON):
Parse snapshot-based WebGPU recordings without attempting to replay WebGPU
commands.
Display receiver identifier and type pairs as lower-camel-cased names.
Drive-by: Include offscreen WebGL(2) recordings when resolving constants,
bitfields, and snapshot-based processing.
* Source/WebInspectorUI/UserInterface/Views/RecordingActionTreeElement.js:
(WI.RecordingActionTreeElement._generateDOM):
(WI.RecordingActionTreeElement._classNameForAction):
(WI.RecordingActionTreeElement.prototype.populateContextMenu):
* Source/WebInspectorUI/UserInterface/Views/RecordingActionTreeElement.css:
(body:not(.window-inactive, .window-docked-inactive) .tree-outline:focus-within
.item.recording-action.selected:not(.invalid, .initial-state, .name-unknown) >
.icon): Renamed from `body:not(.window-inactive, .window-docked-inactive)
.tree-outline:focus-within .item.recording-action.selected:not(.invalid,
.initial-state, .has-context-replacer, .name-unknown) > .icon`.
(.item.recording-action:not(.invalid, .initial-state, .name-unknown) > .icon):
Renamed from `.item.recording-action:not(.invalid, .initial-state,
.has-context-replacer, .name-unknown) > .icon`.
Display only explicit receivers and copy actions against the correct
`GPUDevice`, `CanvasRenderingContext`, or `<canvas>`.
* Source/WebInspectorUI/UserInterface/Views/RecordingContentView.js:
(WI.RecordingContentView):
(WI.RecordingContentView.prototype._generateContentFromSnapshot):
(WI.RecordingContentView.prototype._updateImageGrid):
Show WebGPU content from snapshots and clear stale preview content when a
recording has no initial snapshot.
* Source/WebInspectorUI/UserInterface/Views/TreeOutline.js:
(WI.TreeOutline.prototype.registerScrollVirtualizer):
Drive-by: disable native scroll anchoring when virtualized so recycled
recording rows do not cause scrolling to continue on its own.
* Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js:
* LayoutTests/inspector/canvas/recording.html:
* LayoutTests/inspector/canvas/recording-expected.txt:
* LayoutTests/inspector/canvas/recording-webgpu.html: Added.
* LayoutTests/inspector/canvas/recording-webgpu-expected.txt: Added.
* LayoutTests/platform/glib/TestExpectations:
* LayoutTests/platform/win/TestExpectations:
Canonical link: https://commits.webkit.org/318407@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications