imagebitmap: Make ImageBitmap serializable and transferable (#37101)

According to specification ImageBitmap objects are serializable objects
and transferable objects.

https://html.spec.whatwg.org/multipage/#the-imagebitmap-interface:imagebitmap-11

Testing:
 - html/canvas/element/manual/imagebitmap/*
 - html/infrastructure/safe-passing-of-structured-data/*
 - html/webappapis/structured-clone/*
 - workers/semantics/structured-clone/*

Signed-off-by: Andrei Volykhin <andrei.volykhin@gmail.com>
This commit is contained in:
Andrei Volykhin 2025-05-23 23:40:25 +03:00 committed by GitHub
parent cd36c35cf2
commit 1f5087d773
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
19 changed files with 215 additions and 103 deletions

View file

@ -5,15 +5,9 @@
[Serialize ImageBitmap created from an HTMLVideoElement]
expected: FAIL
[Serialize ImageBitmap created from an HTMLCanvasElement]
expected: FAIL
[Serialize ImageBitmap created from an HTMLVideoElement from a data URL]
expected: FAIL
[Serialize ImageBitmap created from an OffscreenCanvas]
expected: FAIL
[Serialize ImageBitmap created from a vector HTMLImageElement]
expected: FAIL

View file

@ -11,12 +11,6 @@
[Transfer ImageBitmap created from a Blob]
expected: FAIL
[Transfer ImageBitmap created from an HTMLCanvasElement]
expected: FAIL
[Transfer ImageBitmap created from an OffscreenCanvas]
expected: FAIL
[Transfer ImageBitmap created from a bitmap HTMLImageElement]
expected: FAIL

View file

@ -1,3 +1,4 @@
[offscreencanvas.filter.w.html]
expected: ERROR
[offscreencanvas]
expected: FAIL
expected: TIMEOUT

View file

@ -49,24 +49,6 @@
[Object ImageData object, ImageData 1x1 non-transparent non-black]
expected: FAIL
[ImageBitmap 1x1 transparent black]
expected: FAIL
[ImageBitmap 1x1 non-transparent non-black]
expected: FAIL
[Array ImageBitmap object, ImageBitmap 1x1 transparent black]
expected: FAIL
[Array ImageBitmap object, ImageBitmap 1x1 transparent non-black]
expected: FAIL
[Object ImageBitmap object, ImageBitmap 1x1 transparent black]
expected: FAIL
[Object ImageBitmap object, ImageBitmap 1x1 transparent non-black]
expected: FAIL
[A subclass instance will deserialize as its closest serializable superclass]
expected: FAIL

View file

@ -5,15 +5,9 @@
[Serialize should throw before a detached MessagePort is found]
expected: FAIL
[Serialize should make the ImageBitmap detached, so it cannot be transferred again]
expected: FAIL
[Serialize should throw before a detached ImageBitmap is found]
expected: FAIL
[Cannot transfer ImageBitmap detached while the message was serialized]
expected: FAIL
[Serialize should make the OffscreenCanvas detached, so it cannot be transferred again]
expected: FAIL

View file

@ -29,24 +29,6 @@
[Object ImageData object, ImageData 1x1 non-transparent non-black]
expected: FAIL
[ImageBitmap 1x1 transparent black]
expected: FAIL
[ImageBitmap 1x1 non-transparent non-black]
expected: FAIL
[Array ImageBitmap object, ImageBitmap 1x1 transparent black]
expected: FAIL
[Array ImageBitmap object, ImageBitmap 1x1 transparent non-black]
expected: FAIL
[Object ImageBitmap object, ImageBitmap 1x1 transparent black]
expected: FAIL
[Object ImageBitmap object, ImageBitmap 1x1 transparent non-black]
expected: FAIL
[A subclass instance will deserialize as its closest serializable superclass]
expected: FAIL

View file

@ -43,24 +43,6 @@
[Object ImageData object, ImageData 1x1 non-transparent non-black]
expected: FAIL
[ImageBitmap 1x1 transparent black]
expected: FAIL
[ImageBitmap 1x1 non-transparent non-black]
expected: FAIL
[Array ImageBitmap object, ImageBitmap 1x1 transparent black]
expected: FAIL
[Array ImageBitmap object, ImageBitmap 1x1 transparent non-black]
expected: FAIL
[Object ImageBitmap object, ImageBitmap 1x1 transparent black]
expected: FAIL
[Object ImageBitmap object, ImageBitmap 1x1 transparent non-black]
expected: FAIL
[A subclass instance will deserialize as its closest serializable superclass]
expected: FAIL

View file

@ -1,9 +1,10 @@
[postMessage_cross_domain_image_transfer_2d.sub.htm]
expected: TIMEOUT
[sending 2D canvas ImageBitmap to http://web-platform.test:8000]
expected: FAIL
expected: TIMEOUT
[sending 2D canvas ImageBitmap to http://www1.web-platform.test:8000]
expected: FAIL
expected: NOTRUN
[sending 2D canvas ImageBitmap to http://not-web-platform.test:8000]
expected: FAIL
expected: NOTRUN

View file

@ -32,24 +32,6 @@
[Object with a getter that throws]
expected: FAIL
[ImageBitmap 1x1 transparent black]
expected: FAIL
[ImageBitmap 1x1 non-transparent non-black]
expected: FAIL
[Array ImageBitmap object, ImageBitmap 1x1 transparent black]
expected: FAIL
[Array ImageBitmap object, ImageBitmap 1x1 transparent non-black]
expected: FAIL
[Object ImageBitmap object, ImageBitmap 1x1 transparent black]
expected: FAIL
[Object ImageBitmap object, ImageBitmap 1x1 transparent non-black]
expected: FAIL
[A subclass instance will deserialize as its closest serializable superclass]
expected: FAIL