From 59b99de90a72cbed5816549be4cb392660467627 Mon Sep 17 00:00:00 2001 From: Andrei Volykhin Date: Wed, 25 Jun 2025 19:11:54 +0300 Subject: [PATCH] canvas: Add CanvasTransform 'setTransform(transform)' method (#37692) Follow the HTML canvas specification and add missing 'setTransform(transform)' method to CanvasTransform interface. https://html.spec.whatwg.org/multipage/#dom-context-2d-settransform-matrix The third-party WebIDL doesn't support different extended attributes on different overloads of methods, so 'Throws' attribute was added to another 'setTransform(...)' method. https://bugzilla.mozilla.org/show_bug.cgi?id=1020975 Testing: Improvements in the tests - css/geometry/DOMMatrix* - html/canvas/element/transformations/2d.transformation.setTransform.multiple.html - html/canvas/offscreen/transformations/2d.transformation.setTransform.multiple New failing tests due to disabled 'paint worklet' feature - css/css-paint-api/setTransform-00*.https.html Signed-off-by: Andrei Volykhin --- components/script/canvas_state.rs | 50 +++- .../script/dom/canvasrenderingcontext2d.rs | 13 +- components/script/dom/dommatrixreadonly.rs | 215 ++++++++++------ .../dom/offscreencanvasrenderingcontext2d.rs | 10 +- .../script/dom/paintrenderingcontext2d.rs | 13 +- .../webidls/CanvasRenderingContext2D.webidl | 5 +- .../setTransform-001.https.html.ini | 2 + .../setTransform-002.https.html.ini | 2 + .../setTransform-003.https.html.ini | 2 + .../setTransform-004.https.html.ini | 2 + .../DOMMatrix2DInit-validate-fixup.html.ini | 237 ------------------ .../DOMMatrixInit-validate-fixup.html.ini | 7 - ...nsformation.setTransform.multiple.html.ini | 4 - ...nsformation.setTransform.multiple.html.ini | 4 - ...mation.setTransform.multiple.worker.js.ini | 4 - tests/wpt/meta/html/dom/idlharness.any.js.ini | 6 - .../meta/html/dom/idlharness.https.html.ini | 12 - 17 files changed, 226 insertions(+), 362 deletions(-) create mode 100644 tests/wpt/meta/css/css-paint-api/setTransform-001.https.html.ini create mode 100644 tests/wpt/meta/css/css-paint-api/setTransform-002.https.html.ini create mode 100644 tests/wpt/meta/css/css-paint-api/setTransform-003.https.html.ini create mode 100644 tests/wpt/meta/css/css-paint-api/setTransform-004.https.html.ini delete mode 100644 tests/wpt/meta/css/geometry/DOMMatrixInit-validate-fixup.html.ini delete mode 100644 tests/wpt/meta/html/canvas/element/transformations/2d.transformation.setTransform.multiple.html.ini delete mode 100644 tests/wpt/meta/html/canvas/offscreen/transformations/2d.transformation.setTransform.multiple.html.ini delete mode 100644 tests/wpt/meta/html/canvas/offscreen/transformations/2d.transformation.setTransform.multiple.worker.js.ini diff --git a/components/script/canvas_state.rs b/components/script/canvas_state.rs index 72da50677ee..4416c40eb49 100644 --- a/components/script/canvas_state.rs +++ b/components/script/canvas_state.rs @@ -42,6 +42,7 @@ use crate::dom::bindings::codegen::Bindings::CanvasRenderingContext2DBinding::{ CanvasDirection, CanvasFillRule, CanvasImageSource, CanvasLineCap, CanvasLineJoin, CanvasTextAlign, CanvasTextBaseline, ImageDataMethods, }; +use crate::dom::bindings::codegen::Bindings::DOMMatrixBinding::DOMMatrix2DInit; use crate::dom::bindings::codegen::UnionTypes::StringOrCanvasGradientOrCanvasPattern; use crate::dom::bindings::error::{Error, ErrorResult, Fallible}; use crate::dom::bindings::inheritance::Castable; @@ -51,6 +52,7 @@ use crate::dom::bindings::str::DOMString; use crate::dom::canvasgradient::{CanvasGradient, CanvasGradientStyle, ToFillOrStrokeStyle}; use crate::dom::canvaspattern::CanvasPattern; use crate::dom::dommatrix::DOMMatrix; +use crate::dom::dommatrixreadonly::dommatrix2dinit_to_matrix; use crate::dom::element::{Element, cors_setting_for_element}; use crate::dom::globalscope::GlobalScope; use crate::dom::htmlcanvaselement::HTMLCanvasElement; @@ -1901,23 +1903,57 @@ impl CanvasState { DOMMatrix::new(global, true, transform.cast::().to_3d(), can_gc) } - // https://html.spec.whatwg.org/multipage/#dom-context-2d-settransform + /// pub(crate) fn set_transform(&self, a: f64, b: f64, c: f64, d: f64, e: f64, f: f64) { - if !(a.is_finite() && - b.is_finite() && - c.is_finite() && - d.is_finite() && - e.is_finite() && - f.is_finite()) + // Step 1. If any of the arguments are infinite or NaN, then return. + if !a.is_finite() || + !b.is_finite() || + !c.is_finite() || + !d.is_finite() || + !e.is_finite() || + !f.is_finite() { return; } + // Step 2. Reset the current transformation matrix to the matrix described by: self.state.borrow_mut().transform = Transform2D::new(a as f32, b as f32, c as f32, d as f32, e as f32, f as f32); self.update_transform() } + /// + pub(crate) fn set_transform_(&self, transform: &DOMMatrix2DInit) -> ErrorResult { + // Step 1. Let matrix be the result of creating a DOMMatrix from the 2D + // dictionary transform. + let matrix = dommatrix2dinit_to_matrix(transform)?; + + // Step 2. If one or more of matrix's m11 element, m12 element, m21 + // element, m22 element, m41 element, or m42 element are infinite or + // NaN, then return. + if !matrix.m11.is_finite() || + !matrix.m12.is_finite() || + !matrix.m21.is_finite() || + !matrix.m22.is_finite() || + !matrix.m41.is_finite() || + !matrix.m42.is_finite() + { + return Ok(()); + } + + // Step 3. Reset the current transformation matrix to matrix. + self.state.borrow_mut().transform = Transform2D::new( + matrix.m11 as f32, + matrix.m12 as f32, + matrix.m21 as f32, + matrix.m22 as f32, + matrix.m41 as f32, + matrix.m42 as f32, + ); + self.update_transform(); + Ok(()) + } + // https://html.spec.whatwg.org/multipage/#dom-context-2d-resettransform pub(crate) fn reset_transform(&self) { self.state.borrow_mut().transform = Transform2D::identity(); diff --git a/components/script/dom/canvasrenderingcontext2d.rs b/components/script/dom/canvasrenderingcontext2d.rs index 3e7cf1f0bda..267a0648d4a 100644 --- a/components/script/dom/canvasrenderingcontext2d.rs +++ b/components/script/dom/canvasrenderingcontext2d.rs @@ -18,6 +18,7 @@ use crate::dom::bindings::codegen::Bindings::CanvasRenderingContext2DBinding::{ CanvasDirection, CanvasFillRule, CanvasImageSource, CanvasLineCap, CanvasLineJoin, CanvasRenderingContext2DMethods, CanvasTextAlign, CanvasTextBaseline, }; +use crate::dom::bindings::codegen::Bindings::DOMMatrixBinding::DOMMatrix2DInit; use crate::dom::bindings::codegen::UnionTypes::{ HTMLCanvasElementOrOffscreenCanvas, StringOrCanvasGradientOrCanvasPattern, }; @@ -235,9 +236,15 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingCo self.canvas_state.get_transform(&self.global(), can_gc) } - // https://html.spec.whatwg.org/multipage/#dom-context-2d-settransform - fn SetTransform(&self, a: f64, b: f64, c: f64, d: f64, e: f64, f: f64) { - self.canvas_state.set_transform(a, b, c, d, e, f) + /// + fn SetTransform(&self, a: f64, b: f64, c: f64, d: f64, e: f64, f: f64) -> ErrorResult { + self.canvas_state.set_transform(a, b, c, d, e, f); + Ok(()) + } + + /// + fn SetTransform_(&self, transform: &DOMMatrix2DInit) -> ErrorResult { + self.canvas_state.set_transform_(transform) } // https://html.spec.whatwg.org/multipage/#dom-context-2d-resettransform diff --git a/components/script/dom/dommatrixreadonly.rs b/components/script/dom/dommatrixreadonly.rs index bae91f1edb0..5c7d31710d9 100644 --- a/components/script/dom/dommatrixreadonly.rs +++ b/components/script/dom/dommatrixreadonly.rs @@ -18,7 +18,9 @@ use url::Url; use crate::dom::bindings::buffer_source::create_buffer_source; use crate::dom::bindings::cell::{DomRefCell, Ref}; -use crate::dom::bindings::codegen::Bindings::DOMMatrixBinding::{DOMMatrixInit, DOMMatrixMethods}; +use crate::dom::bindings::codegen::Bindings::DOMMatrixBinding::{ + DOMMatrix2DInit, DOMMatrixInit, DOMMatrixMethods, +}; use crate::dom::bindings::codegen::Bindings::DOMMatrixReadOnlyBinding::DOMMatrixReadOnlyMethods; use crate::dom::bindings::codegen::Bindings::DOMPointBinding::DOMPointInit; use crate::dom::bindings::codegen::UnionTypes::StringOrUnrestrictedDoubleSequence; @@ -966,80 +968,147 @@ pub(crate) fn entries_to_matrix(entries: &[f64]) -> Fallible<(bool, Transform3D< } } -// https://drafts.fxtf.org/geometry-1/#validate-and-fixup -pub(crate) fn dommatrixinit_to_matrix(dict: &DOMMatrixInit) -> Fallible<(bool, Transform3D)> { - // Step 1. - if dict.parent.a.is_some() && - dict.parent.m11.is_some() && - dict.parent.a.unwrap() != dict.parent.m11.unwrap() || - dict.parent.b.is_some() && - dict.parent.m12.is_some() && - dict.parent.b.unwrap() != dict.parent.m12.unwrap() || - dict.parent.c.is_some() && - dict.parent.m21.is_some() && - dict.parent.c.unwrap() != dict.parent.m21.unwrap() || - dict.parent.d.is_some() && - dict.parent.m22.is_some() && - dict.parent.d.unwrap() != dict.parent.m22.unwrap() || - dict.parent.e.is_some() && - dict.parent.m41.is_some() && - dict.parent.e.unwrap() != dict.parent.m41.unwrap() || - dict.parent.f.is_some() && - dict.parent.m42.is_some() && - dict.parent.f.unwrap() != dict.parent.m42.unwrap() || - dict.is2D.is_some() && - dict.is2D.unwrap() && - (dict.m31 != 0.0 || - dict.m32 != 0.0 || - dict.m13 != 0.0 || - dict.m23 != 0.0 || - dict.m43 != 0.0 || - dict.m14 != 0.0 || - dict.m24 != 0.0 || - dict.m34 != 0.0 || - dict.m33 != 1.0 || - dict.m44 != 1.0) +/// +fn validate_and_fixup_2d(dict: &DOMMatrix2DInit) -> Fallible<[f64; 6]> { + // + let same_value_zero = |x: f64, y: f64| -> bool { x.is_nan() && y.is_nan() || x == y }; + + // Step 1. If if at least one of the following conditions are true for dict, + // then throw a TypeError exception and abort these steps. + if dict.a.is_some() && + dict.m11.is_some() && + !same_value_zero(dict.a.unwrap(), dict.m11.unwrap()) || + dict.b.is_some() && + dict.m12.is_some() && + !same_value_zero(dict.b.unwrap(), dict.m12.unwrap()) || + dict.c.is_some() && + dict.m21.is_some() && + !same_value_zero(dict.c.unwrap(), dict.m21.unwrap()) || + dict.d.is_some() && + dict.m22.is_some() && + !same_value_zero(dict.d.unwrap(), dict.m22.unwrap()) || + dict.e.is_some() && + dict.m41.is_some() && + !same_value_zero(dict.e.unwrap(), dict.m41.unwrap()) || + dict.f.is_some() && + dict.m42.is_some() && + !same_value_zero(dict.f.unwrap(), dict.m42.unwrap()) { - Err(error::Error::Type("Invalid matrix initializer.".to_owned())) - } else { - let mut is_2d = dict.is2D; - // Step 2. - let m11 = dict.parent.m11.unwrap_or(dict.parent.a.unwrap_or(1.0)); - // Step 3. - let m12 = dict.parent.m12.unwrap_or(dict.parent.b.unwrap_or(0.0)); - // Step 4. - let m21 = dict.parent.m21.unwrap_or(dict.parent.c.unwrap_or(0.0)); - // Step 5. - let m22 = dict.parent.m22.unwrap_or(dict.parent.d.unwrap_or(1.0)); - // Step 6. - let m41 = dict.parent.m41.unwrap_or(dict.parent.e.unwrap_or(0.0)); - // Step 7. - let m42 = dict.parent.m42.unwrap_or(dict.parent.f.unwrap_or(0.0)); - // Step 8. - if is_2d.is_none() && - (dict.m31 != 0.0 || - dict.m32 != 0.0 || - dict.m13 != 0.0 || - dict.m23 != 0.0 || - dict.m43 != 0.0 || - dict.m14 != 0.0 || - dict.m24 != 0.0 || - dict.m34 != 0.0 || - dict.m33 != 1.0 || - dict.m44 != 1.0) - { - is_2d = Some(false); - } - // Step 9. - if is_2d.is_none() { - is_2d = Some(true); - } - let matrix = Transform3D::new( - m11, m12, dict.m13, dict.m14, m21, m22, dict.m23, dict.m24, dict.m31, dict.m32, - dict.m33, dict.m34, m41, m42, dict.m43, dict.m44, - ); - Ok((is_2d.unwrap(), matrix)) + return Err(error::Error::Type( + "Property mismatch on matrix initialization.".to_owned(), + )); } + + // Step 2. If m11 is not present then set it to the value of member a, + // or value 1 if a is also not present. + let m11 = dict.m11.unwrap_or(dict.a.unwrap_or(1.0)); + + // Step 3. If m12 is not present then set it to the value of member b, + // or value 0 if b is also not present. + let m12 = dict.m12.unwrap_or(dict.b.unwrap_or(0.0)); + + // Step 4. If m21 is not present then set it to the value of member c, + // or value 0 if c is also not present. + let m21 = dict.m21.unwrap_or(dict.c.unwrap_or(0.0)); + + // Step 5. If m22 is not present then set it to the value of member d, + // or value 1 if d is also not present. + let m22 = dict.m22.unwrap_or(dict.d.unwrap_or(1.0)); + + // Step 6. If m41 is not present then set it to the value of member e, + // or value 0 if e is also not present. + let m41 = dict.m41.unwrap_or(dict.e.unwrap_or(0.0)); + + // Step 7. If m42 is not present then set it to the value of member f, + // or value 0 if f is also not present. + let m42 = dict.m42.unwrap_or(dict.f.unwrap_or(0.0)); + + Ok([m11, m12, m21, m22, m41, m42]) +} + +/// +fn validate_and_fixup(dict: &DOMMatrixInit) -> Fallible<(bool, [f64; 16])> { + // Step 1. Validate and fixup (2D) dict. + let entries = validate_and_fixup_2d(&dict.parent)?; + + // Step 2. If is2D is true and: at least one of m13, m14, m23, m24, m31, + // m32, m34, m43 are present with a value other than 0 or -0, or at least + // one of m33, m44 are present with a value other than 1, then throw + // a TypeError exception and abort these steps. + if dict.is2D == Some(true) && + (dict.m13 != 0.0 || + dict.m14 != 0.0 || + dict.m23 != 0.0 || + dict.m24 != 0.0 || + dict.m31 != 0.0 || + dict.m32 != 0.0 || + dict.m34 != 0.0 || + dict.m43 != 0.0 || + dict.m33 != 1.0 || + dict.m44 != 1.0) + { + return Err(error::Error::Type( + "The is2D member is set to true but the input matrix is a 3d matrix.".to_owned(), + )); + } + + let mut is_2d = dict.is2D; + + // Step 3. If is2D is not present and at least one of m13, m14, m23, m24, + // m31, m32, m34, m43 are present with a value other than 0 or -0, or at + // least one of m33, m44 are present with a value other than 1, set is2D + // to false. + if is_2d.is_none() && + (dict.m13 != 0.0 || + dict.m14 != 0.0 || + dict.m23 != 0.0 || + dict.m24 != 0.0 || + dict.m31 != 0.0 || + dict.m32 != 0.0 || + dict.m34 != 0.0 || + dict.m43 != 0.0 || + dict.m33 != 1.0 || + dict.m44 != 1.0) + { + is_2d = Some(false); + } + + // Step 4. If is2D is still not present, set it to true. + if is_2d.is_none() { + is_2d = Some(true); + } + + Ok(( + is_2d.unwrap(), + [ + entries[0], entries[1], dict.m13, dict.m14, entries[2], entries[3], dict.m23, dict.m24, + dict.m31, dict.m32, dict.m33, dict.m34, entries[4], entries[5], dict.m43, dict.m44, + ], + )) +} + +/// +pub(crate) fn dommatrix2dinit_to_matrix(dict: &DOMMatrix2DInit) -> Fallible> { + // Step 1. Validate and fixup (2D) other. + let entries = validate_and_fixup_2d(dict)?; + + // Step 2. Return the result of invoking create a 2d matrix of type + // DOMMatrixReadOnly or DOMMatrix as appropriate, with a sequence of + // numbers, the values being the 6 elements m11, m12, m21, m22, m41 and m42 + // of other in the given order. + Ok(create_2d_matrix(&entries)) +} + +/// +pub(crate) fn dommatrixinit_to_matrix(dict: &DOMMatrixInit) -> Fallible<(bool, Transform3D)> { + // Step 1. Validate and fixup other. + let (is_2d, entries) = validate_and_fixup(dict)?; + + // Step 2. Return the result of invoking create a 3d matrix of type + // DOMMatrixReadOnly or DOMMatrix as appropriate, with a sequence of + // numbers, the values being the 16 elements m11, m12, m13, ..., m44 + // of other in the given order. + Ok((is_2d, create_3d_matrix(&entries))) } #[inline] diff --git a/components/script/dom/offscreencanvasrenderingcontext2d.rs b/components/script/dom/offscreencanvasrenderingcontext2d.rs index 702cd609214..5066d5f3df8 100644 --- a/components/script/dom/offscreencanvasrenderingcontext2d.rs +++ b/components/script/dom/offscreencanvasrenderingcontext2d.rs @@ -13,6 +13,7 @@ use crate::dom::bindings::codegen::Bindings::CanvasRenderingContext2DBinding::{ CanvasDirection, CanvasFillRule, CanvasImageSource, CanvasLineCap, CanvasLineJoin, CanvasTextAlign, CanvasTextBaseline, }; +use crate::dom::bindings::codegen::Bindings::DOMMatrixBinding::DOMMatrix2DInit; use crate::dom::bindings::codegen::Bindings::OffscreenCanvasRenderingContext2DBinding::OffscreenCanvasRenderingContext2DMethods; use crate::dom::bindings::codegen::UnionTypes::StringOrCanvasGradientOrCanvasPattern; use crate::dom::bindings::error::{ErrorResult, Fallible}; @@ -529,11 +530,16 @@ impl OffscreenCanvasRenderingContext2DMethods self.context.GetTransform(can_gc) } - // https://html.spec.whatwg.org/multipage/#dom-context-2d-settransform - fn SetTransform(&self, a: f64, b: f64, c: f64, d: f64, e: f64, f: f64) { + /// + fn SetTransform(&self, a: f64, b: f64, c: f64, d: f64, e: f64, f: f64) -> ErrorResult { self.context.SetTransform(a, b, c, d, e, f) } + /// + fn SetTransform_(&self, transform: &DOMMatrix2DInit) -> ErrorResult { + self.context.SetTransform_(transform) + } + // https://html.spec.whatwg.org/multipage/#dom-context-2d-resettransform fn ResetTransform(&self) { self.context.ResetTransform() diff --git a/components/script/dom/paintrenderingcontext2d.rs b/components/script/dom/paintrenderingcontext2d.rs index 04660e56a6b..b835507b807 100644 --- a/components/script/dom/paintrenderingcontext2d.rs +++ b/components/script/dom/paintrenderingcontext2d.rs @@ -17,6 +17,7 @@ use crate::canvas_state::CanvasState; use crate::dom::bindings::codegen::Bindings::CanvasRenderingContext2DBinding::{ CanvasFillRule, CanvasImageSource, CanvasLineCap, CanvasLineJoin, }; +use crate::dom::bindings::codegen::Bindings::DOMMatrixBinding::DOMMatrix2DInit; use crate::dom::bindings::codegen::Bindings::PaintRenderingContext2DBinding::PaintRenderingContext2DMethods; use crate::dom::bindings::codegen::UnionTypes::StringOrCanvasGradientOrCanvasPattern; use crate::dom::bindings::error::{ErrorResult, Fallible}; @@ -131,10 +132,18 @@ impl PaintRenderingContext2DMethods for PaintRenderingCont self.canvas_state.get_transform(&self.global(), can_gc) } - // https://html.spec.whatwg.org/multipage/#dom-context-2d-settransform - fn SetTransform(&self, a: f64, b: f64, c: f64, d: f64, e: f64, f: f64) { + /// + fn SetTransform(&self, a: f64, b: f64, c: f64, d: f64, e: f64, f: f64) -> ErrorResult { self.canvas_state.set_transform(a, b, c, d, e, f); self.scale_by_device_pixel_ratio(); + Ok(()) + } + + /// + fn SetTransform_(&self, transform: &DOMMatrix2DInit) -> ErrorResult { + self.canvas_state.set_transform_(transform)?; + self.scale_by_device_pixel_ratio(); + Ok(()) } // https://html.spec.whatwg.org/multipage/#dom-context-2d-resettransform diff --git a/components/script_bindings/webidls/CanvasRenderingContext2D.webidl b/components/script_bindings/webidls/CanvasRenderingContext2D.webidl index b277ec2df41..985bc0ecd06 100644 --- a/components/script_bindings/webidls/CanvasRenderingContext2D.webidl +++ b/components/script_bindings/webidls/CanvasRenderingContext2D.webidl @@ -60,13 +60,16 @@ interface mixin CanvasTransform { unrestricted double f); [NewObject] DOMMatrix getTransform(); + // See https://bugzilla.mozilla.org/show_bug.cgi?id=1020975 + [Throws] undefined setTransform(unrestricted double a, unrestricted double b, unrestricted double c, unrestricted double d, unrestricted double e, unrestricted double f); - // void setTransform(optional DOMMatrixInit matrix); + [Throws] + undefined setTransform(optional DOMMatrix2DInit transform = {}); undefined resetTransform(); }; diff --git a/tests/wpt/meta/css/css-paint-api/setTransform-001.https.html.ini b/tests/wpt/meta/css/css-paint-api/setTransform-001.https.html.ini new file mode 100644 index 00000000000..4ad1c25e25b --- /dev/null +++ b/tests/wpt/meta/css/css-paint-api/setTransform-001.https.html.ini @@ -0,0 +1,2 @@ +[setTransform-001.https.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-paint-api/setTransform-002.https.html.ini b/tests/wpt/meta/css/css-paint-api/setTransform-002.https.html.ini new file mode 100644 index 00000000000..67c96362280 --- /dev/null +++ b/tests/wpt/meta/css/css-paint-api/setTransform-002.https.html.ini @@ -0,0 +1,2 @@ +[setTransform-002.https.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-paint-api/setTransform-003.https.html.ini b/tests/wpt/meta/css/css-paint-api/setTransform-003.https.html.ini new file mode 100644 index 00000000000..7303d08506e --- /dev/null +++ b/tests/wpt/meta/css/css-paint-api/setTransform-003.https.html.ini @@ -0,0 +1,2 @@ +[setTransform-003.https.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-paint-api/setTransform-004.https.html.ini b/tests/wpt/meta/css/css-paint-api/setTransform-004.https.html.ini new file mode 100644 index 00000000000..ceb665f479c --- /dev/null +++ b/tests/wpt/meta/css/css-paint-api/setTransform-004.https.html.ini @@ -0,0 +1,2 @@ +[setTransform-004.https.html] + expected: FAIL diff --git a/tests/wpt/meta/css/geometry/DOMMatrix2DInit-validate-fixup.html.ini b/tests/wpt/meta/css/geometry/DOMMatrix2DInit-validate-fixup.html.ini index 9e5595973d8..f1fa8d6a32c 100644 --- a/tests/wpt/meta/css/geometry/DOMMatrix2DInit-validate-fixup.html.ini +++ b/tests/wpt/meta/css/geometry/DOMMatrix2DInit-validate-fixup.html.ini @@ -17,299 +17,62 @@ [addPath({f: 0, m42: 5e-324}) (invalid)] expected: FAIL - [addPath (Sanity check without second parameter)] - expected: FAIL - - [setTransform({})] - expected: FAIL - - [addPath({})] - expected: FAIL - - [setTransform({is2D: undefined})] - expected: FAIL - - [addPath({is2D: undefined})] - expected: FAIL - - [setTransform({a: 1, m11: 1})] - expected: FAIL - - [addPath({a: 1, m11: 1})] - expected: FAIL - - [setTransform({b: 0, m12: undefined})] - expected: FAIL - - [addPath({b: 0, m12: undefined})] - expected: FAIL - - [setTransform({c: 0, m21: 0})] - expected: FAIL - - [addPath({c: 0, m21: 0})] - expected: FAIL - - [setTransform({c: 0, m21: -0})] - expected: FAIL - - [addPath({c: 0, m21: -0})] - expected: FAIL - - [setTransform({c: -0, m21: 0})] - expected: FAIL - - [addPath({c: -0, m21: 0})] - expected: FAIL - - [setTransform({c: -0, m21: -0})] - expected: FAIL - - [addPath({c: -0, m21: -0})] - expected: FAIL - - [setTransform({d: Infinity, m22: Infinity})] - expected: FAIL - [addPath({d: Infinity, m22: Infinity})] expected: FAIL - [setTransform({e: -Infinity, m41: -Infinity})] - expected: FAIL - [addPath({e: -Infinity, m41: -Infinity})] expected: FAIL - [setTransform({f: NaN, m42: NaN})] - expected: FAIL - [addPath({f: NaN, m42: NaN})] expected: FAIL - [setTransform({f: NaN, m42: NaN, is2D: true})] - expected: FAIL - [addPath({f: NaN, m42: NaN, is2D: true})] expected: FAIL - [setTransform({f: 0, m42: null})] - expected: FAIL - - [addPath({f: 0, m42: null})] - expected: FAIL - - [setTransform({f: -0, m42: null})] - expected: FAIL - - [addPath({f: -0, m42: null})] - expected: FAIL - - [setTransform({a: 2})] - expected: FAIL - [addPath({a: 2})] expected: FAIL - [setTransform({b: 2})] - expected: FAIL - [addPath({b: 2})] expected: FAIL - [setTransform({c: 2})] - expected: FAIL - [addPath({c: 2})] expected: FAIL - [setTransform({d: 2})] - expected: FAIL - [addPath({d: 2})] expected: FAIL - [setTransform({e: 2})] - expected: FAIL - [addPath({e: 2})] expected: FAIL - [setTransform({f: 2})] - expected: FAIL - [addPath({f: 2})] expected: FAIL - [setTransform({a: -0, b: -0, c: -0, d: -0, e: -0, f: -0})] - expected: FAIL - [addPath({a: -0, b: -0, c: -0, d: -0, e: -0, f: -0})] expected: FAIL - [setTransform({a: -0, b: -0, c: -0, d: -0, e: -0, f: -0, is2D: true})] - expected: FAIL - [addPath({a: -0, b: -0, c: -0, d: -0, e: -0, f: -0, is2D: true})] expected: FAIL - [setTransform({m11: 2})] - expected: FAIL - [addPath({m11: 2})] expected: FAIL - [setTransform({m12: 2})] - expected: FAIL - [addPath({m12: 2})] expected: FAIL - [setTransform({m21: 2})] - expected: FAIL - [addPath({m21: 2})] expected: FAIL - [setTransform({m22: 2})] - expected: FAIL - [addPath({m22: 2})] expected: FAIL - [setTransform({m41: 2})] - expected: FAIL - [addPath({m41: 2})] expected: FAIL - [setTransform({m42: 2})] - expected: FAIL - [addPath({m42: 2})] expected: FAIL - [setTransform({m11: -0, m12: -0, m21: -0, m22: -0, m41: -0, m42: -0})] - expected: FAIL - [addPath({m11: -0, m12: -0, m21: -0, m22: -0, m41: -0, m42: -0})] expected: FAIL - [setTransform({m11: -0, m12: -0, m21: -0, m22: -0, m41: -0, m42: -0, is2D: true})] - expected: FAIL - [addPath({m11: -0, m12: -0, m21: -0, m22: -0, m41: -0, m42: -0, is2D: true})] expected: FAIL - - [setTransform({m13: 0, is2D: true})] - expected: FAIL - - [addPath({m13: 0, is2D: true})] - expected: FAIL - - [setTransform({m13: -0, is2D: true})] - expected: FAIL - - [addPath({m13: -0, is2D: true})] - expected: FAIL - - [setTransform({m14: 0, is2D: true})] - expected: FAIL - - [addPath({m14: 0, is2D: true})] - expected: FAIL - - [setTransform({m14: -0, is2D: true})] - expected: FAIL - - [addPath({m14: -0, is2D: true})] - expected: FAIL - - [setTransform({m23: 0, is2D: true})] - expected: FAIL - - [addPath({m23: 0, is2D: true})] - expected: FAIL - - [setTransform({m23: -0, is2D: true})] - expected: FAIL - - [addPath({m23: -0, is2D: true})] - expected: FAIL - - [setTransform({m24: 0, is2D: true})] - expected: FAIL - - [addPath({m24: 0, is2D: true})] - expected: FAIL - - [setTransform({m24: -0, is2D: true})] - expected: FAIL - - [addPath({m24: -0, is2D: true})] - expected: FAIL - - [setTransform({m31: 0, is2D: true})] - expected: FAIL - - [addPath({m31: 0, is2D: true})] - expected: FAIL - - [setTransform({m31: -0, is2D: true})] - expected: FAIL - - [addPath({m31: -0, is2D: true})] - expected: FAIL - - [setTransform({m32: 0, is2D: true})] - expected: FAIL - - [addPath({m32: 0, is2D: true})] - expected: FAIL - - [setTransform({m32: -0, is2D: true})] - expected: FAIL - - [addPath({m32: -0, is2D: true})] - expected: FAIL - - [setTransform({m33: 1, is2D: true})] - expected: FAIL - - [addPath({m33: 1, is2D: true})] - expected: FAIL - - [setTransform({m34: 0, is2D: true})] - expected: FAIL - - [addPath({m34: 0, is2D: true})] - expected: FAIL - - [setTransform({m34: -0, is2D: true})] - expected: FAIL - - [addPath({m34: -0, is2D: true})] - expected: FAIL - - [setTransform({m43: 0, is2D: true})] - expected: FAIL - - [addPath({m43: 0, is2D: true})] - expected: FAIL - - [setTransform({m43: -0, is2D: true})] - expected: FAIL - - [addPath({m43: -0, is2D: true})] - expected: FAIL - - [setTransform({m44: 1, is2D: true})] - expected: FAIL - - [addPath({m44: 1, is2D: true})] - expected: FAIL - - [setTransform({is2D: true})] - expected: FAIL - - [addPath({is2D: true})] - expected: FAIL diff --git a/tests/wpt/meta/css/geometry/DOMMatrixInit-validate-fixup.html.ini b/tests/wpt/meta/css/geometry/DOMMatrixInit-validate-fixup.html.ini deleted file mode 100644 index a45217daca9..00000000000 --- a/tests/wpt/meta/css/geometry/DOMMatrixInit-validate-fixup.html.ini +++ /dev/null @@ -1,7 +0,0 @@ -[DOMMatrixInit-validate-fixup.html] - [{f: NaN, m42: NaN, is2D: true} (2d)] - expected: FAIL - - [{f: NaN, m42: NaN} (2d)] - expected: FAIL - diff --git a/tests/wpt/meta/html/canvas/element/transformations/2d.transformation.setTransform.multiple.html.ini b/tests/wpt/meta/html/canvas/element/transformations/2d.transformation.setTransform.multiple.html.ini deleted file mode 100644 index 5bce7011c4d..00000000000 --- a/tests/wpt/meta/html/canvas/element/transformations/2d.transformation.setTransform.multiple.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.transformation.setTransform.multiple.html] - [Canvas test: 2d.transformation.setTransform.multiple] - expected: FAIL - diff --git a/tests/wpt/meta/html/canvas/offscreen/transformations/2d.transformation.setTransform.multiple.html.ini b/tests/wpt/meta/html/canvas/offscreen/transformations/2d.transformation.setTransform.multiple.html.ini deleted file mode 100644 index bb0c112471e..00000000000 --- a/tests/wpt/meta/html/canvas/offscreen/transformations/2d.transformation.setTransform.multiple.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.transformation.setTransform.multiple.html] - [OffscreenCanvas test: 2d.transformation.setTransform.multiple] - expected: FAIL - diff --git a/tests/wpt/meta/html/canvas/offscreen/transformations/2d.transformation.setTransform.multiple.worker.js.ini b/tests/wpt/meta/html/canvas/offscreen/transformations/2d.transformation.setTransform.multiple.worker.js.ini deleted file mode 100644 index 96745cd2549..00000000000 --- a/tests/wpt/meta/html/canvas/offscreen/transformations/2d.transformation.setTransform.multiple.worker.js.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.transformation.setTransform.multiple.worker.html] - [2d] - expected: FAIL - diff --git a/tests/wpt/meta/html/dom/idlharness.any.js.ini b/tests/wpt/meta/html/dom/idlharness.any.js.ini index ad5e57e0759..df7f1034ae4 100644 --- a/tests/wpt/meta/html/dom/idlharness.any.js.ini +++ b/tests/wpt/meta/html/dom/idlharness.any.js.ini @@ -47,12 +47,6 @@ [OffscreenCanvasRenderingContext2D interface: operation isContextLost()] expected: FAIL - [OffscreenCanvasRenderingContext2D interface: operation setTransform(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)] - expected: FAIL - - [OffscreenCanvasRenderingContext2D interface: operation setTransform(optional DOMMatrix2DInit)] - expected: FAIL - [OffscreenCanvasRenderingContext2D interface: attribute imageSmoothingQuality] expected: FAIL diff --git a/tests/wpt/meta/html/dom/idlharness.https.html.ini b/tests/wpt/meta/html/dom/idlharness.https.html.ini index 82ed190e10f..3d27ceb612d 100644 --- a/tests/wpt/meta/html/dom/idlharness.https.html.ini +++ b/tests/wpt/meta/html/dom/idlharness.https.html.ini @@ -4229,12 +4229,6 @@ [CanvasRenderingContext2D interface: operation isContextLost()] expected: FAIL - [CanvasRenderingContext2D interface: operation setTransform(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)] - expected: FAIL - - [CanvasRenderingContext2D interface: operation setTransform(optional DOMMatrix2DInit)] - expected: FAIL - [CanvasRenderingContext2D interface: attribute imageSmoothingQuality] expected: FAIL @@ -4403,12 +4397,6 @@ [OffscreenCanvasRenderingContext2D interface: operation isContextLost()] expected: FAIL - [OffscreenCanvasRenderingContext2D interface: operation setTransform(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)] - expected: FAIL - - [OffscreenCanvasRenderingContext2D interface: operation setTransform(optional DOMMatrix2DInit)] - expected: FAIL - [OffscreenCanvasRenderingContext2D interface: attribute imageSmoothingQuality] expected: FAIL