script: Throw a TypeError when trying to create an OffscreenCanvas with an unknown context type (#34276)

* fixing test failures that involves throwing TypeError

Signed-off-by: L Ashwin B <lashwinib@gmail.com>

* handle all unknown values in a single fallback case

Signed-off-by: L Ashwin B <lashwinib@gmail.com>

* updating few more test- expectations

Signed-off-by: L Ashwin B <lashwinib@gmail.com>

---------

Signed-off-by: L Ashwin B <lashwinib@gmail.com>
This commit is contained in:
chickenleaf 2024-11-21 14:53:52 -08:00 committed by GitHub
parent bd9843405a
commit 1f0b88934b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
17 changed files with 23 additions and 32 deletions

View file

@ -15,7 +15,7 @@ use crate::dom::bindings::cell::{ref_filter_map, DomRefCell, Ref};
use crate::dom::bindings::codegen::Bindings::OffscreenCanvasBinding::{
OffscreenCanvasMethods, OffscreenRenderingContext,
};
use crate::dom::bindings::error::Fallible;
use crate::dom::bindings::error::{Error, Fallible};
use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, DomObject};
use crate::dom::bindings::root::{Dom, DomRoot};
use crate::dom::bindings::str::DOMString;
@ -157,18 +157,20 @@ impl OffscreenCanvasMethods for OffscreenCanvas {
_cx: JSContext,
id: DOMString,
_options: HandleValue,
) -> Option<OffscreenRenderingContext> {
) -> Fallible<Option<OffscreenRenderingContext>> {
match &*id {
"2d" => self
"2d" => Ok(self
.get_or_init_2d_context()
.map(OffscreenRenderingContext::OffscreenCanvasRenderingContext2D),
.map(OffscreenRenderingContext::OffscreenCanvasRenderingContext2D)),
/*"webgl" | "experimental-webgl" => self
.get_or_init_webgl_context(cx, options)
.map(OffscreenRenderingContext::WebGLRenderingContext),
"webgl2" | "experimental-webgl2" => self
.get_or_init_webgl2_context(cx, options)
.map(OffscreenRenderingContext::WebGL2RenderingContext),*/
_ => None,
_ => Err(Error::Type(String::from(
"Unrecognized OffscreenCanvas context type",
))),
}
}

View file

@ -19,7 +19,7 @@ interface OffscreenCanvas : EventTarget {
attribute [EnforceRange] unsigned long long width;
attribute [EnforceRange] unsigned long long height;
OffscreenRenderingContext? getContext(DOMString contextId, optional any options = null);
[Throws] OffscreenRenderingContext? getContext(DOMString contextId, optional any options = null);
//ImageBitmap transferToImageBitmap();
//Promise<Blob> convertToBlob(optional ImageEncodeOptions options);
};

View file

@ -1,3 +0,0 @@
[2d.canvas.context.casesensitive.html]
[Context name "2D" is unrecognised; matching is case sensitive]
expected: FAIL

View file

@ -1,3 +0,0 @@
[2d.canvas.context.casesensitive.worker.html]
[Context name "2D" is unrecognised; matching is case sensitive]
expected: FAIL

View file

@ -1,3 +0,0 @@
[2d.canvas.context.emptystring.html]
[getContext with empty string returns null]
expected: FAIL

View file

@ -1,3 +0,0 @@
[2d.canvas.context.emptystring.worker.html]
[getContext with empty string returns null]
expected: FAIL

View file

@ -1,3 +0,0 @@
[2d.canvas.context.invalid.args.html]
[Calling getContext with invalid arguments.]
expected: FAIL

View file

@ -1,3 +0,0 @@
[2d.canvas.context.invalid.args.worker.html]
[Calling getContext with invalid arguments.]
expected: FAIL

View file

@ -5,9 +5,6 @@
[Test that webglcontext.canvas should return the original OffscreenCanvas]
expected: FAIL
[Test that getContext with un-supported string throws a TypeError.]
expected: FAIL
[Test that OffscreenCanvasRenderingContext2D with alpha disabled makes the OffscreenCanvas opaque]
expected: FAIL

View file

@ -5,9 +5,6 @@
[Test that webglcontext.canvas should return the original OffscreenCanvas]
expected: FAIL
[Test that getContext with un-supported string throws a TypeError.]
expected: FAIL
[Test that OffscreenCanvasRenderingContext2D with alpha disabled makes the OffscreenCanvas opaque]
expected: FAIL

View file

@ -1,3 +1,4 @@
[context-creation-worker.html]
expected: ERROR
[WebGL test #0: Some tests failed]
expected: FAIL

View file

@ -1,4 +1,7 @@
[context-creation.html]
expected: ERROR
[WebGL test #0: WebGL context creation failed]
expected: FAIL
[WebGL test #0: successfullyParsed should be true (of type boolean). Was undefined (of type undefined).]
expected: FAIL

View file

@ -1,4 +1,4 @@
[methods-worker.html]
expected: ERROR
[WebGL test #0: Some tests failed]
expected: FAIL

View file

@ -1,4 +1,7 @@
[methods.html]
expected: ERROR
[WebGL test #0: Some WebGL methods not found]
expected: FAIL
[WebGL test #0: successfullyParsed should be true (of type boolean). Was undefined (of type undefined).]
expected: FAIL

View file

@ -1,4 +1,7 @@
[context-creation.html]
expected: ERROR
[WebGL test #0: WebGL2 context creation failed]
expected: FAIL
[WebGL test #0: successfullyParsed should be true (of type boolean). Was undefined (of type undefined).]
expected: FAIL

View file

@ -1,4 +1,4 @@
[methods-2-worker.html]
expected: ERROR
[WebGL test #0: Some tests failed]
expected: FAIL

View file

@ -1,4 +1,7 @@
[methods-2.html]
expected: ERROR
[WebGL test #0: Some WebGL2 methods not found]
expected: FAIL
[WebGL test #0: successfullyParsed should be true (of type boolean). Was undefined (of type undefined).]
expected: FAIL