canvas: Add HTMLVideoElement to CanvasImageSource union type (#37135)

Follow to the specification and add HTMLVideoElement to
CanvasImageSource union type
to allow use it as image source for createPattern/drawImage operations.
https://html.spec.whatwg.org/multipage/#canvasimagesource

https://html.spec.whatwg.org/multipage/#dom-context-2d-createpattern
https://html.spec.whatwg.org/multipage/#dom-context-2d-drawimage

The HTMLVideoElement media resource has an associated origin:
- media provider object (MediaStream/MediaSource/Blob): CORS-same-origin
 - URL record: CORS-cross-origin/CORS-same-origin

https://html.spec.whatwg.org/multipage/media.html#media-resource

Testing:
 - html/canvas/element/*
 - html/semantics/embedded-content/the-canvas-element/*

Signed-off-by: Andrei Volykhin <andrei.volykhin@gmail.com>
This commit is contained in:
Andrei Volykhin 2025-05-28 15:04:01 +03:00 committed by GitHub
parent 4f4c99a39e
commit 644138c1da
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 184 additions and 88 deletions

View file

@ -1,70 +1,34 @@
[canvas-display-p3-drawImage-video.html]
[sRGB-FF0100, Context srgb, ImageData srgb, scaleImage=false]
expected: FAIL
[sRGB-FF0100, Context srgb, ImageData srgb, scaleImage=true]
expected: FAIL
[sRGB-FF0100, Context srgb, ImageData display-p3, scaleImage=false]
expected: FAIL
[sRGB-FF0100, Context srgb, ImageData display-p3, scaleImage=true]
expected: FAIL
[sRGB-FF0100, Context display-p3, ImageData srgb, scaleImage=false]
expected: FAIL
[sRGB-FF0100, Context display-p3, ImageData srgb, scaleImage=true]
expected: FAIL
[sRGB-FF0100, Context display-p3, ImageData display-p3, scaleImage=false]
expected: FAIL
[sRGB-FF0100, Context display-p3, ImageData display-p3, scaleImage=true]
expected: FAIL
[sRGB-BB0000, Context srgb, ImageData srgb, scaleImage=false]
expected: FAIL
[sRGB-BB0000, Context srgb, ImageData srgb, scaleImage=true]
expected: FAIL
[sRGB-BB0000, Context srgb, ImageData display-p3, scaleImage=false]
expected: FAIL
[sRGB-BB0000, Context srgb, ImageData display-p3, scaleImage=true]
expected: FAIL
[sRGB-BB0000, Context display-p3, ImageData srgb, scaleImage=false]
expected: FAIL
[sRGB-BB0000, Context display-p3, ImageData srgb, scaleImage=true]
expected: FAIL
[sRGB-BB0000, Context display-p3, ImageData display-p3, scaleImage=false]
expected: FAIL
[sRGB-BB0000, Context display-p3, ImageData display-p3, scaleImage=true]
expected: FAIL
[Rec2020-3FF000000, Context srgb, ImageData srgb, scaleImage=false]
expected: FAIL
[Rec2020-3FF000000, Context srgb, ImageData srgb, scaleImage=true]
expected: FAIL
[Rec2020-3FF000000, Context srgb, ImageData display-p3, scaleImage=false]
expected: FAIL
[Rec2020-3FF000000, Context srgb, ImageData display-p3, scaleImage=true]
expected: FAIL
[Rec2020-3FF000000, Context display-p3, ImageData srgb, scaleImage=false]
expected: FAIL
[Rec2020-3FF000000, Context display-p3, ImageData srgb, scaleImage=true]
expected: FAIL
[Rec2020-3FF000000, Context display-p3, ImageData display-p3, scaleImage=false]
expected: FAIL

View file

@ -1,4 +0,0 @@
[2d.video.invalid.html]
[Verify test doesn't crash with invalid video.]
expected: FAIL

View file

@ -1,5 +1,4 @@
[security.pattern.fillStyle.sub.html]
expected: TIMEOUT
[cross-origin SVGImageElement: Setting fillStyle to an origin-unclean pattern makes the canvas origin-unclean]
expected: FAIL
@ -10,31 +9,22 @@
expected: FAIL
[redirected to same-origin HTMLVideoElement: Setting fillStyle to an origin-unclean pattern makes the canvas origin-unclean]
expected: TIMEOUT
[unclean HTMLCanvasElement: Setting fillStyle to an origin-unclean pattern makes the canvas origin-unclean]
expected: NOTRUN
expected: FAIL
[unclean ImageBitmap: Setting fillStyle to an origin-unclean pattern makes the canvas origin-unclean]
expected: NOTRUN
[cross-origin HTMLImageElement: Setting fillStyle to an origin-unclean offscreen canvas pattern makes the canvas origin-unclean]
expected: NOTRUN
expected: FAIL
[cross-origin SVGImageElement: Setting fillStyle to an origin-unclean offscreen canvas pattern makes the canvas origin-unclean]
expected: NOTRUN
expected: FAIL
[cross-origin HTMLVideoElement: Setting fillStyle to an origin-unclean offscreen canvas pattern makes the canvas origin-unclean]
expected: NOTRUN
expected: FAIL
[redirected to cross-origin HTMLVideoElement: Setting fillStyle to an origin-unclean offscreen canvas pattern makes the canvas origin-unclean]
expected: NOTRUN
expected: FAIL
[redirected to same-origin HTMLVideoElement: Setting fillStyle to an origin-unclean offscreen canvas pattern makes the canvas origin-unclean]
expected: NOTRUN
[unclean HTMLCanvasElement: Setting fillStyle to an origin-unclean offscreen canvas pattern makes the canvas origin-unclean]
expected: NOTRUN
expected: FAIL
[unclean ImageBitmap: Setting fillStyle to an origin-unclean offscreen canvas pattern makes the canvas origin-unclean]
expected: NOTRUN
expected: FAIL