svg: Add mock SVGImageElement interface (#36975)

Add mock SVGImageElement interface to fix TIMEOUT WPT tests
which are related to ImageBitmap (html/canvas/*).
https://svgwg.org/svg2-draft/embedded.html#InterfaceSVGImageElement

Rationality of this change to fire event "error" on any attempt to fetch
image resource on href attribute change to not block WPT tests
execution.

Some WPT tests use the legacy namespace attribute "xlink:href", so
support for it was added to source code.
https://svgwg.org/svg2-draft/linking.html#XLinkHrefAttribute
 - setAttributeNS("http://www.w3.org/1999/xlink", 'xlink:href', src);

Testing: Covered by existed WPT tests
 - fetch/metadata/generated/svg-image*
 - html/canvas/element/manual/*
 - html/dom/idlharness.https.html
 - html/semantics/embedded-content/the-canvas-element/*
 - html/webappapis/scripting/events/event-handler-all-global-events.html
 - mozilla/interfaces.https.html

Fixes: https://github.com/servo/servo/issues/35881

Signed-off-by: Andrei Volykhin <andrei.volykhin@gmail.com>
This commit is contained in:
Andrei Volykhin 2025-05-13 13:43:10 +03:00 committed by GitHub
parent e4f62d5c16
commit 6468734aea
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
24 changed files with 262 additions and 811 deletions

View file

@ -1,13 +1,13 @@
[createImageBitmap-drawImage.html]
expected: ERROR
[createImageBitmap from an OffscreenCanvas resized, and drawImage on the created ImageBitmap]
expected: NOTRUN
expected: FAIL
[createImageBitmap from a vector HTMLImageElement resized, and drawImage on the created ImageBitmap]
expected: FAIL
[createImageBitmap from an OffscreenCanvas, and drawImage on the created ImageBitmap]
expected: NOTRUN
expected: FAIL
[createImageBitmap from an HTMLCanvasElement, and drawImage on the created ImageBitmap]
expected: FAIL
@ -22,34 +22,34 @@
expected: FAIL
[createImageBitmap from an ImageData scaled down, and drawImage on the created ImageBitmap]
expected: NOTRUN
expected: FAIL
[createImageBitmap from an OffscreenCanvas scaled down, and drawImage on the created ImageBitmap]
expected: NOTRUN
expected: FAIL
[createImageBitmap from a bitmap SVGImageElement, and drawImage on the created ImageBitmap]
expected: TIMEOUT
expected: FAIL
[createImageBitmap from a bitmap SVGImageElement resized, and drawImage on the created ImageBitmap]
expected: NOTRUN
expected: FAIL
[createImageBitmap from an HTMLCanvasElement scaled down, and drawImage on the created ImageBitmap]
expected: FAIL
[createImageBitmap from a vector SVGImageElement, and drawImage on the created ImageBitmap]
expected: NOTRUN
expected: FAIL
[createImageBitmap from an ImageData scaled up, and drawImage on the created ImageBitmap]
expected: NOTRUN
expected: FAIL
[createImageBitmap from an HTMLVideoElement with negative sw/sh, and drawImage on the created ImageBitmap]
expected: FAIL
[createImageBitmap from a bitmap SVGImageElement scaled up, and drawImage on the created ImageBitmap]
expected: NOTRUN
expected: FAIL
[createImageBitmap from a vector SVGImageElement resized, and drawImage on the created ImageBitmap]
expected: NOTRUN
expected: FAIL
[createImageBitmap from a bitmap HTMLImageElement scaled up, and drawImage on the created ImageBitmap]
expected: FAIL
@ -58,10 +58,10 @@
expected: FAIL
[createImageBitmap from a vector SVGImageElement scaled down, and drawImage on the created ImageBitmap]
expected: NOTRUN
expected: FAIL
[createImageBitmap from a vector SVGImageElement with negative sw/sh, and drawImage on the created ImageBitmap]
expected: NOTRUN
expected: FAIL
[createImageBitmap from a bitmap HTMLImageElement scaled down, and drawImage on the created ImageBitmap]
expected: FAIL
@ -73,16 +73,16 @@
expected: FAIL
[createImageBitmap from a Blob scaled down, and drawImage on the created ImageBitmap]
expected: NOTRUN
expected: FAIL
[createImageBitmap from an ImageData resized, and drawImage on the created ImageBitmap]
expected: NOTRUN
expected: FAIL
[createImageBitmap from a vector HTMLImageElement scaled down, and drawImage on the created ImageBitmap]
expected: FAIL
[createImageBitmap from an ImageData, and drawImage on the created ImageBitmap]
expected: NOTRUN
expected: FAIL
[createImageBitmap from an HTMLCanvasElement with negative sw/sh, and drawImage on the created ImageBitmap]
expected: FAIL
@ -91,16 +91,16 @@
expected: FAIL
[createImageBitmap from a vector SVGImageElement scaled up, and drawImage on the created ImageBitmap]
expected: NOTRUN
expected: FAIL
[createImageBitmap from an ImageBitmap, and drawImage on the created ImageBitmap]
expected: NOTRUN
expected: FAIL
[createImageBitmap from a Blob scaled up, and drawImage on the created ImageBitmap]
expected: NOTRUN
expected: FAIL
[createImageBitmap from a bitmap SVGImageElement scaled down, and drawImage on the created ImageBitmap]
expected: NOTRUN
expected: FAIL
[createImageBitmap from an HTMLVideoElement scaled up, and drawImage on the created ImageBitmap]
expected: FAIL
@ -109,7 +109,7 @@
expected: FAIL
[createImageBitmap from a Blob, and drawImage on the created ImageBitmap]
expected: NOTRUN
expected: FAIL
[createImageBitmap from an HTMLVideoElement resized, and drawImage on the created ImageBitmap]
expected: FAIL
@ -118,31 +118,31 @@
expected: FAIL
[createImageBitmap from an ImageBitmap scaled down, and drawImage on the created ImageBitmap]
expected: NOTRUN
expected: FAIL
[createImageBitmap from a Blob with negative sw/sh, and drawImage on the created ImageBitmap]
expected: NOTRUN
expected: FAIL
[createImageBitmap from a bitmap SVGImageElement with negative sw/sh, and drawImage on the created ImageBitmap]
expected: NOTRUN
expected: FAIL
[createImageBitmap from an ImageData with negative sw/sh, and drawImage on the created ImageBitmap]
expected: NOTRUN
expected: FAIL
[createImageBitmap from an ImageBitmap scaled up, and drawImage on the created ImageBitmap]
expected: NOTRUN
expected: FAIL
[createImageBitmap from an ImageBitmap resized, and drawImage on the created ImageBitmap]
expected: NOTRUN
expected: FAIL
[createImageBitmap from an OffscreenCanvas scaled up, and drawImage on the created ImageBitmap]
expected: NOTRUN
expected: FAIL
[createImageBitmap from an HTMLCanvasElement scaled up, and drawImage on the created ImageBitmap]
expected: FAIL
[createImageBitmap from a Blob resized, and drawImage on the created ImageBitmap]
expected: NOTRUN
expected: FAIL
[createImageBitmap from an HTMLVideoElement from a data URL, and drawImage on the created ImageBitmap]
expected: FAIL
@ -154,10 +154,10 @@
expected: FAIL
[createImageBitmap from an ImageBitmap with negative sw/sh, and drawImage on the created ImageBitmap]
expected: NOTRUN
expected: FAIL
[createImageBitmap from an OffscreenCanvas with negative sw/sh, and drawImage on the created ImageBitmap]
expected: NOTRUN
expected: FAIL
[createImageBitmap from a vector HTMLImageElement with negative sw/sh, and drawImage on the created ImageBitmap]
expected: FAIL

View file

@ -4,7 +4,7 @@
expected: NOTRUN
[createImageBitmap from a vector SVGImageElement imageOrientation: "flipY", and drawImage on the created ImageBitmap]
expected: NOTRUN
expected: FAIL
[createImageBitmap from an HTMLCanvasElement imageOrientation: "none", and drawImage on the created ImageBitmap]
expected: FAIL
@ -16,7 +16,7 @@
expected: FAIL
[createImageBitmap from an OffscreenCanvas imageOrientation: "flipY", and drawImage on the created ImageBitmap]
expected: NOTRUN
expected: FAIL
[createImageBitmap from a vector HTMLImageElement imageOrientation: "flipY", and drawImage on the created ImageBitmap]
expected: FAIL
@ -25,7 +25,7 @@
expected: FAIL
[createImageBitmap from a Blob imageOrientation: "flipY", and drawImage on the created ImageBitmap]
expected: NOTRUN
expected: FAIL
[createImageBitmap from an HTMLCanvasElement imageOrientation: "flipY", and drawImage on the created ImageBitmap]
expected: FAIL
@ -34,7 +34,7 @@
expected: FAIL
[createImageBitmap from an ImageData imageOrientation: "flipY", and drawImage on the created ImageBitmap]
expected: NOTRUN
expected: FAIL
[createImageBitmap from a bitmap HTMLImageElement imageOrientation: "flipY", and drawImage on the created ImageBitmap]
expected: FAIL
@ -43,7 +43,7 @@
expected: NOTRUN
[createImageBitmap from an ImageBitmap imageOrientation: "flipY", and drawImage on the created ImageBitmap]
expected: NOTRUN
expected: FAIL
[createImageBitmap from a vector HTMLImageElement imageOrientation: "none", and drawImage on the created ImageBitmap]
expected: FAIL
@ -61,7 +61,7 @@
expected: FAIL
[createImageBitmap from a bitmap SVGImageElement imageOrientation: "flipY", and drawImage on the created ImageBitmap]
expected: NOTRUN
expected: FAIL
[createImageBitmap from a bitmap SVGImageElement imageOrientation: "none", and drawImage on the created ImageBitmap]
expected: TIMEOUT
@ -82,19 +82,19 @@
expected: FAIL
[createImageBitmap from a bitmap SVGImageElement imageOrientation: "from-image", and drawImage on the created ImageBitmap]
expected: TIMEOUT
expected: FAIL
[createImageBitmap from a vector SVGImageElement imageOrientation: "from-image", and drawImage on the created ImageBitmap]
expected: NOTRUN
expected: FAIL
[createImageBitmap from an OffscreenCanvas imageOrientation: "from-image", and drawImage on the created ImageBitmap]
expected: NOTRUN
expected: FAIL
[createImageBitmap from an ImageData imageOrientation: "from-image", and drawImage on the created ImageBitmap]
expected: NOTRUN
expected: FAIL
[createImageBitmap from an ImageBitmap imageOrientation: "from-image", and drawImage on the created ImageBitmap]
expected: NOTRUN
expected: FAIL
[createImageBitmap from a Blob imageOrientation: "from-image", and drawImage on the created ImageBitmap]
expected: NOTRUN
expected: FAIL

View file

@ -1,5 +1,5 @@
[createImageBitmap-invalid-args.html]
expected: ERROR
expected: CRASH
[createImageBitmap with a vector HTMLImageElement source and sw set to 0]
expected: FAIL

View file

@ -1,34 +1,34 @@
[createImageBitmap-origin.sub.html]
expected: TIMEOUT
[redirected to cross-origin HTMLVideoElement: origin unclear 2dContext.drawImage]
expected: NOTRUN
expected: FAIL
[redirected to cross-origin HTMLVideoElement: origin unclear bitmaprenderer.transferFromImageBitmap]
expected: NOTRUN
expected: FAIL
[unclean HTMLCanvasElement: origin unclear bitmaprenderer.transferFromImageBitmap]
expected: NOTRUN
expected: FAIL
[unclean HTMLCanvasElement: origin unclear getImageData]
expected: NOTRUN
expected: FAIL
[cross-origin HTMLVideoElement: origin unclear getImageData]
expected: NOTRUN
expected: FAIL
[cross-origin SVGImageElement: origin unclear bitmaprenderer.transferFromImageBitmap]
expected: NOTRUN
expected: FAIL
[cross-origin HTMLVideoElement: origin unclear bitmaprenderer.transferFromImageBitmap]
expected: NOTRUN
expected: FAIL
[redirected to same-origin HTMLVideoElement: origin unclear getImageData]
expected: NOTRUN
expected: FAIL
[cross-origin HTMLImageElement: origin unclear 2dContext.drawImage]
expected: FAIL
[cross-origin SVGImageElement: origin unclear 2dContext.drawImage]
expected: NOTRUN
expected: FAIL
[cross-origin HTMLImageElement: origin unclear getImageData]
expected: FAIL
@ -37,28 +37,28 @@
expected: FAIL
[redirected to same-origin HTMLVideoElement: origin unclear 2dContext.drawImage]
expected: NOTRUN
expected: FAIL
[unclean ImageBitmap: origin unclear bitmaprenderer.transferFromImageBitmap]
expected: NOTRUN
expected: FAIL
[redirected to same-origin HTMLVideoElement: origin unclear bitmaprenderer.transferFromImageBitmap]
expected: NOTRUN
expected: FAIL
[redirected to cross-origin HTMLVideoElement: origin unclear getImageData]
expected: NOTRUN
expected: FAIL
[unclean ImageBitmap: origin unclear getImageData]
expected: NOTRUN
expected: FAIL
[unclean HTMLCanvasElement: origin unclear 2dContext.drawImage]
expected: NOTRUN
expected: FAIL
[cross-origin HTMLVideoElement: origin unclear 2dContext.drawImage]
expected: NOTRUN
expected: FAIL
[unclean ImageBitmap: origin unclear 2dContext.drawImage]
expected: NOTRUN
expected: FAIL
[cross-origin SVGImageElement: origin unclear getImageData]
expected: TIMEOUT
expected: FAIL

View file

@ -1,7 +1,6 @@
[createImageBitmap-serializable.html]
expected: TIMEOUT
[Serialize ImageBitmap created from a vector SVGImageElement]
expected: NOTRUN
expected: FAIL
[Serialize ImageBitmap created from an HTMLVideoElement]
expected: FAIL
@ -13,25 +12,25 @@
expected: FAIL
[Serialize ImageBitmap created from an OffscreenCanvas]
expected: NOTRUN
expected: FAIL
[Serialize ImageBitmap created from a vector HTMLImageElement]
expected: FAIL
[Serialize ImageBitmap created from a Blob]
expected: NOTRUN
expected: FAIL
[Serialize ImageBitmap created from a bitmap HTMLImageElement]
expected: FAIL
[Serializing a non-origin-clean ImageBitmap throws.]
expected: NOTRUN
expected: FAIL
[Serialize ImageBitmap created from an ImageData]
expected: NOTRUN
expected: FAIL
[Serialize ImageBitmap created from an ImageBitmap]
expected: NOTRUN
expected: FAIL
[Serialize ImageBitmap created from a bitmap SVGImageElement]
expected: TIMEOUT
expected: FAIL

View file

@ -1,22 +1,21 @@
[createImageBitmap-transfer.html]
expected: ERROR
[Transfer ImageBitmap created from a vector HTMLImageElement]
expected: FAIL
[Transfer ImageBitmap created from an ImageData]
expected: NOTRUN
expected: FAIL
[Transfer ImageBitmap created from a vector SVGImageElement]
expected: NOTRUN
expected: FAIL
[Transfer ImageBitmap created from a Blob]
expected: NOTRUN
expected: FAIL
[Transfer ImageBitmap created from an HTMLCanvasElement]
expected: FAIL
[Transfer ImageBitmap created from an OffscreenCanvas]
expected: NOTRUN
expected: FAIL
[Transfer ImageBitmap created from a bitmap HTMLImageElement]
expected: FAIL
@ -25,13 +24,13 @@
expected: FAIL
[Transfer ImageBitmap created from a bitmap SVGImageElement]
expected: TIMEOUT
expected: FAIL
[Transfer ImageBitmap created from an ImageBitmap]
expected: NOTRUN
expected: FAIL
[Transfer ImageBitmap created from an HTMLVideoElement]
expected: FAIL
[Transferring a non-origin-clean ImageBitmap throws.]
expected: NOTRUN
expected: FAIL