Skip to content

Complete SVG DOM script and interaction runtime lane#538

Merged
wieslawsoltes merged 3 commits into
masterfrom
codex/svg-dom-runtime-lane-complete
May 29, 2026
Merged

Complete SVG DOM script and interaction runtime lane#538
wieslawsoltes merged 3 commits into
masterfrom
codex/svg-dom-runtime-lane-complete

Conversation

@wieslawsoltes

Copy link
Copy Markdown
Owner

Complete SVG DOM, Script, And Interaction Runtime Lane

Summary

This PR completes the SVG DOM / Script / Interaction Runtime lane by adding the runtime surfaces and rendering hooks needed for the newly enabled W3C DOM, scripting, interaction, text selection, and static resource coverage.

Changes

  • Added SVG JavaScript DOM and CSSOM facades for document, element, event, window, style declaration, animated values, and interaction host APIs.
  • Expanded JavaScript runtime behavior for load dispatch, timers, DOM mutation visibility, namespace-preserving element creation, live DOM queries, computed style lookup, cssText, camel-case CSS properties, and viewer scale/translate APIs.
  • Added interaction dispatch support for pointer/mouse routing, focus/default actions, cursor changes, hyperlink activation, same-document fragment navigation, and <use> instance hit-node routing.
  • Added animation timing support for access-key, wall-clock, event-based begin/end timing, and related controller scheduling behavior.
  • Added retained text selection and caret metadata, selection painting, DOM-facing selection APIs, and JavaScript selection bridge coverage.
  • Added deterministic broken-image placeholder rendering for invalid, missing, and cyclic nested image resources.
  • Hardened nested SVG image loading by forcing static nested documents, handling gzip-compressed SVG data URIs, detecting recursive embedded SVG references, and exposing placeholder settings through Skia asset loading.
  • Expanded unit and W3C coverage across JavaScript runtime, interaction dispatch, hit testing, animation timing, text selection, viewer resources, static resource policy, and DOM runtime fixtures.
  • Removed the stale struct-image-16-f Chrome override so the W3C row uses the real reference with scoped comparison policy instead of a browser-captured failure state.
  • Updated the skipped-test roadmap to document completed runtime-lane coverage and the remaining intentionally skipped policy/browser-only cases.

Validation

  • dotnet format Svg.Skia.slnx --no-restore --verify-no-changes
  • dotnet build Svg.Skia.slnx -c Release --no-restore
  • dotnet test tests/Svg.JavaScript.UnitTests/Svg.JavaScript.UnitTests.csproj -c Release --no-build
  • dotnet test tests/Svg.Skia.UnitTests/Svg.Skia.UnitTests.csproj -f net10.0 -c Release --no-build --filter "FullyQualifiedName~SvgInteractionDispatcherTests|FullyQualifiedName~SvgTextSelectionDomTests|FullyQualifiedName~SvgViewerResourceTests|FullyQualifiedName~SvgJavaScriptRuntimeTests"
  • dotnet test tests/Svg.Skia.UnitTests/Svg.Skia.UnitTests.csproj -f net10.0 -c Release --no-build --filter "FullyQualifiedName~W3CTestSuiteTests.Tests"
  • dotnet test Svg.Skia.slnx -c Release --no-build

The full solution test run passed with Svg.Skia.UnitTests reporting 2442 passed and 16 skipped tests. The build only reports existing package vulnerability warnings from transitive/package references.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant