mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-26 14:22:01 +00:00
Backed out changeset d63622bdde81 (bug 1560462
) for wpt failures at css/geometry/DOMMatrixInit-validate-fixup.html
This commit is contained in:
parent
ef13c99bda
commit
3712f3103e
@ -19,8 +19,6 @@
|
||||
|
||||
#include <math.h>
|
||||
|
||||
#include "js/Equality.h" // JS::SameValueZero
|
||||
|
||||
namespace mozilla {
|
||||
namespace dom {
|
||||
|
||||
@ -40,126 +38,6 @@ JSObject* DOMMatrixReadOnly::WrapObject(JSContext* aCx,
|
||||
return DOMMatrixReadOnly_Binding::Wrap(aCx, this, aGivenProto);
|
||||
}
|
||||
|
||||
// https://drafts.fxtf.org/geometry/#matrix-validate-and-fixup-2d
|
||||
static bool ValidateAndFixupMatrix2DInit(DOMMatrix2DInit& aMatrixInit,
|
||||
ErrorResult& aRv) {
|
||||
#define ValidateAliases(field, alias, fieldName, aliasName) \
|
||||
if ((field).WasPassed() && (alias).WasPassed() && \
|
||||
!JS::SameValueZero((field).Value(), (alias).Value())) { \
|
||||
aRv.ThrowTypeError<MSG_MATRIX_INIT_CONFLICTING_VALUE>((fieldName), \
|
||||
(aliasName)); \
|
||||
return false; \
|
||||
}
|
||||
#define SetFromAliasOrDefault(field, alias, defaultValue) \
|
||||
if (!(field).WasPassed()) { \
|
||||
if ((alias).WasPassed()) { \
|
||||
(field).Construct((alias).Value()); \
|
||||
} else { \
|
||||
(field).Construct(defaultValue); \
|
||||
} \
|
||||
}
|
||||
#define ValidateAndSet(field, alias, fieldName, aliasName, defaultValue) \
|
||||
ValidateAliases((field), (alias), NS_LITERAL_STRING(fieldName), \
|
||||
NS_LITERAL_STRING(aliasName)); \
|
||||
SetFromAliasOrDefault((field), (alias), (defaultValue));
|
||||
|
||||
ValidateAndSet(aMatrixInit.mM11, aMatrixInit.mA, "m11", "a", 1);
|
||||
ValidateAndSet(aMatrixInit.mM12, aMatrixInit.mB, "m12", "b", 0);
|
||||
ValidateAndSet(aMatrixInit.mM21, aMatrixInit.mC, "m21", "c", 0);
|
||||
ValidateAndSet(aMatrixInit.mM22, aMatrixInit.mD, "m22", "d", 1);
|
||||
ValidateAndSet(aMatrixInit.mM41, aMatrixInit.mE, "m41", "e", 0);
|
||||
ValidateAndSet(aMatrixInit.mM42, aMatrixInit.mF, "m42", "f", 0);
|
||||
|
||||
return true;
|
||||
|
||||
#undef ValidateAliases
|
||||
#undef SetFromAliasOrDefault
|
||||
#undef ValidateAndSet
|
||||
}
|
||||
|
||||
// https://drafts.fxtf.org/geometry/#matrix-validate-and-fixup
|
||||
static bool ValidateAndFixupMatrixInit(DOMMatrixInit& aMatrixInit,
|
||||
ErrorResult& aRv) {
|
||||
#define Check3DField(field, fieldName, defaultValue) \
|
||||
if ((field) != (defaultValue)) { \
|
||||
if (!aMatrixInit.mIs2D.WasPassed()) { \
|
||||
aMatrixInit.mIs2D.Construct(false); \
|
||||
return true; \
|
||||
} \
|
||||
if (aMatrixInit.mIs2D.Value()) { \
|
||||
aRv.ThrowTypeError<MSG_MATRIX_INIT_EXCEEDS_2D>( \
|
||||
NS_LITERAL_STRING(fieldName)); \
|
||||
return false; \
|
||||
} \
|
||||
}
|
||||
|
||||
if (!ValidateAndFixupMatrix2DInit(aMatrixInit, aRv)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
Check3DField(aMatrixInit.mM13, "m13", 0);
|
||||
Check3DField(aMatrixInit.mM14, "m14", 0);
|
||||
Check3DField(aMatrixInit.mM23, "m23", 0);
|
||||
Check3DField(aMatrixInit.mM24, "m24", 0);
|
||||
Check3DField(aMatrixInit.mM31, "m31", 0);
|
||||
Check3DField(aMatrixInit.mM32, "m32", 0);
|
||||
Check3DField(aMatrixInit.mM34, "m34", 0);
|
||||
Check3DField(aMatrixInit.mM43, "m43", 0);
|
||||
Check3DField(aMatrixInit.mM33, "m33", 1);
|
||||
Check3DField(aMatrixInit.mM44, "m44", 1);
|
||||
|
||||
if (!aMatrixInit.mIs2D.WasPassed()) {
|
||||
aMatrixInit.mIs2D.Construct(true);
|
||||
}
|
||||
return true;
|
||||
|
||||
#undef Check3DField
|
||||
}
|
||||
|
||||
void DOMMatrixReadOnly::SetDataFromMatrixInit(DOMMatrixInit& aMatrixInit) {
|
||||
const bool is2D = aMatrixInit.mIs2D.Value();
|
||||
MOZ_ASSERT(is2D == Is2D());
|
||||
if (is2D) {
|
||||
mMatrix2D->_11 = aMatrixInit.mM11.Value();
|
||||
mMatrix2D->_12 = aMatrixInit.mM12.Value();
|
||||
mMatrix2D->_21 = aMatrixInit.mM21.Value();
|
||||
mMatrix2D->_22 = aMatrixInit.mM22.Value();
|
||||
mMatrix2D->_31 = aMatrixInit.mM41.Value();
|
||||
mMatrix2D->_32 = aMatrixInit.mM42.Value();
|
||||
} else {
|
||||
mMatrix3D->_11 = aMatrixInit.mM11.Value();
|
||||
mMatrix3D->_12 = aMatrixInit.mM12.Value();
|
||||
mMatrix3D->_13 = aMatrixInit.mM13;
|
||||
mMatrix3D->_14 = aMatrixInit.mM14;
|
||||
mMatrix3D->_21 = aMatrixInit.mM21.Value();
|
||||
mMatrix3D->_22 = aMatrixInit.mM22.Value();
|
||||
mMatrix3D->_23 = aMatrixInit.mM23;
|
||||
mMatrix3D->_24 = aMatrixInit.mM24;
|
||||
mMatrix3D->_31 = aMatrixInit.mM31;
|
||||
mMatrix3D->_32 = aMatrixInit.mM32;
|
||||
mMatrix3D->_33 = aMatrixInit.mM33;
|
||||
mMatrix3D->_34 = aMatrixInit.mM34;
|
||||
mMatrix3D->_41 = aMatrixInit.mM41.Value();
|
||||
mMatrix3D->_42 = aMatrixInit.mM42.Value();
|
||||
mMatrix3D->_43 = aMatrixInit.mM43;
|
||||
mMatrix3D->_44 = aMatrixInit.mM44;
|
||||
}
|
||||
}
|
||||
|
||||
already_AddRefed<DOMMatrixReadOnly> DOMMatrixReadOnly::FromMatrix(
|
||||
const GlobalObject& aGlobal, const DOMMatrixInit& aMatrixInit,
|
||||
ErrorResult& aRv) {
|
||||
DOMMatrixInit matrixInit(aMatrixInit);
|
||||
if (!ValidateAndFixupMatrixInit(matrixInit, aRv)) {
|
||||
return nullptr;
|
||||
};
|
||||
|
||||
RefPtr<DOMMatrixReadOnly> rval =
|
||||
new DOMMatrixReadOnly(aGlobal.GetAsSupports(), matrixInit.mIs2D.Value());
|
||||
rval->SetDataFromMatrixInit(matrixInit);
|
||||
return rval.forget();
|
||||
}
|
||||
|
||||
already_AddRefed<DOMMatrixReadOnly> DOMMatrixReadOnly::Constructor(
|
||||
const GlobalObject& aGlobal,
|
||||
const Optional<StringOrUnrestrictedDoubleSequence>& aArg,
|
||||
@ -288,9 +166,9 @@ already_AddRefed<DOMMatrix> DOMMatrixReadOnly::SkewY(double aSy) const {
|
||||
}
|
||||
|
||||
already_AddRefed<DOMMatrix> DOMMatrixReadOnly::Multiply(
|
||||
const DOMMatrixInit& other, ErrorResult& aRv) const {
|
||||
const DOMMatrix& other) const {
|
||||
RefPtr<DOMMatrix> retval = new DOMMatrix(mParent, *this);
|
||||
retval->MultiplySelf(other, aRv);
|
||||
retval->MultiplySelf(other);
|
||||
|
||||
return retval.forget();
|
||||
}
|
||||
@ -575,26 +453,6 @@ bool DOMMatrixReadOnly::ReadStructuredCloneElements(
|
||||
#undef ReadDouble
|
||||
}
|
||||
|
||||
already_AddRefed<DOMMatrix> DOMMatrix::FromMatrix(
|
||||
nsISupports* aParent, const DOMMatrixInit& aMatrixInit, ErrorResult& aRv) {
|
||||
DOMMatrixInit matrixInit(aMatrixInit);
|
||||
if (!ValidateAndFixupMatrixInit(matrixInit, aRv)) {
|
||||
return nullptr;
|
||||
};
|
||||
|
||||
RefPtr<DOMMatrix> matrix = new DOMMatrix(aParent, matrixInit.mIs2D.Value());
|
||||
matrix->SetDataFromMatrixInit(matrixInit);
|
||||
return matrix.forget();
|
||||
}
|
||||
|
||||
already_AddRefed<DOMMatrix> DOMMatrix::FromMatrix(
|
||||
const GlobalObject& aGlobal, const DOMMatrixInit& aMatrixInit,
|
||||
ErrorResult& aRv) {
|
||||
RefPtr<DOMMatrix> matrix =
|
||||
FromMatrix(aGlobal.GetAsSupports(), aMatrixInit, aRv);
|
||||
return matrix.forget();
|
||||
}
|
||||
|
||||
already_AddRefed<DOMMatrix> DOMMatrix::Constructor(const GlobalObject& aGlobal,
|
||||
ErrorResult& aRv) {
|
||||
RefPtr<DOMMatrix> obj = new DOMMatrix(aGlobal.GetAsSupports());
|
||||
@ -718,43 +576,39 @@ void DOMMatrixReadOnly::Ensure3DMatrix() {
|
||||
}
|
||||
}
|
||||
|
||||
DOMMatrix* DOMMatrix::MultiplySelf(const DOMMatrixInit& aOtherInit,
|
||||
ErrorResult& aRv) {
|
||||
RefPtr<DOMMatrix> other = FromMatrix(mParent, aOtherInit, aRv);
|
||||
if (other->IsIdentity()) {
|
||||
DOMMatrix* DOMMatrix::MultiplySelf(const DOMMatrix& aOther) {
|
||||
if (aOther.IsIdentity()) {
|
||||
return this;
|
||||
}
|
||||
|
||||
if (other->Is2D()) {
|
||||
if (aOther.Is2D()) {
|
||||
if (mMatrix3D) {
|
||||
*mMatrix3D = gfx::Matrix4x4Double::From2D(*other->mMatrix2D) * *mMatrix3D;
|
||||
*mMatrix3D = gfx::Matrix4x4Double::From2D(*aOther.mMatrix2D) * *mMatrix3D;
|
||||
} else {
|
||||
*mMatrix2D = *other->mMatrix2D * *mMatrix2D;
|
||||
*mMatrix2D = *aOther.mMatrix2D * *mMatrix2D;
|
||||
}
|
||||
} else {
|
||||
Ensure3DMatrix();
|
||||
*mMatrix3D = *other->mMatrix3D * *mMatrix3D;
|
||||
*mMatrix3D = *aOther.mMatrix3D * *mMatrix3D;
|
||||
}
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
DOMMatrix* DOMMatrix::PreMultiplySelf(const DOMMatrixInit& aOtherInit,
|
||||
ErrorResult& aRv) {
|
||||
RefPtr<DOMMatrix> other = FromMatrix(mParent, aOtherInit, aRv);
|
||||
if (other->IsIdentity()) {
|
||||
DOMMatrix* DOMMatrix::PreMultiplySelf(const DOMMatrix& aOther) {
|
||||
if (aOther.IsIdentity()) {
|
||||
return this;
|
||||
}
|
||||
|
||||
if (other->Is2D()) {
|
||||
if (aOther.Is2D()) {
|
||||
if (mMatrix3D) {
|
||||
*mMatrix3D = *mMatrix3D * gfx::Matrix4x4Double::From2D(*other->mMatrix2D);
|
||||
*mMatrix3D = *mMatrix3D * gfx::Matrix4x4Double::From2D(*aOther.mMatrix2D);
|
||||
} else {
|
||||
*mMatrix2D = *mMatrix2D * *other->mMatrix2D;
|
||||
*mMatrix2D = *mMatrix2D * *aOther.mMatrix2D;
|
||||
}
|
||||
} else {
|
||||
Ensure3DMatrix();
|
||||
*mMatrix3D = *mMatrix3D * *other->mMatrix3D;
|
||||
*mMatrix3D = *mMatrix3D * *aOther.mMatrix3D;
|
||||
}
|
||||
|
||||
return this;
|
||||
|
@ -28,7 +28,6 @@ class DOMMatrix;
|
||||
class DOMPoint;
|
||||
class StringOrUnrestrictedDoubleSequence;
|
||||
struct DOMPointInit;
|
||||
struct DOMMatrixInit;
|
||||
|
||||
class DOMMatrixReadOnly : public nsWrapperCache {
|
||||
public:
|
||||
@ -56,10 +55,6 @@ class DOMMatrixReadOnly : public nsWrapperCache {
|
||||
virtual JSObject* WrapObject(JSContext* cx,
|
||||
JS::Handle<JSObject*> aGivenProto) override;
|
||||
|
||||
static already_AddRefed<DOMMatrixReadOnly> FromMatrix(
|
||||
const GlobalObject& aGlobal, const DOMMatrixInit& aMatrixInit,
|
||||
ErrorResult& aRv);
|
||||
|
||||
static already_AddRefed<DOMMatrixReadOnly> Constructor(
|
||||
const GlobalObject& aGlobal,
|
||||
const Optional<StringOrUnrestrictedDoubleSequence>& aArg,
|
||||
@ -177,8 +172,7 @@ class DOMMatrixReadOnly : public nsWrapperCache {
|
||||
double aAngle) const;
|
||||
already_AddRefed<DOMMatrix> SkewX(double aSx) const;
|
||||
already_AddRefed<DOMMatrix> SkewY(double aSy) const;
|
||||
already_AddRefed<DOMMatrix> Multiply(const DOMMatrixInit& aOther,
|
||||
ErrorResult& aRv) const;
|
||||
already_AddRefed<DOMMatrix> Multiply(const DOMMatrix& aOther) const;
|
||||
already_AddRefed<DOMMatrix> FlipX() const;
|
||||
already_AddRefed<DOMMatrix> FlipY() const;
|
||||
already_AddRefed<DOMMatrix> Inverse() const;
|
||||
@ -202,13 +196,6 @@ class DOMMatrixReadOnly : public nsWrapperCache {
|
||||
|
||||
virtual ~DOMMatrixReadOnly() {}
|
||||
|
||||
/**
|
||||
* Sets data from a fully validated and fixed-up matrix init,
|
||||
* where all of its members are properly defined.
|
||||
* The init dictionary's dimension must match the matrix one.
|
||||
*/
|
||||
void SetDataFromMatrixInit(DOMMatrixInit& aMatrixInit);
|
||||
|
||||
DOMMatrixReadOnly* SetMatrixValue(const nsAString& aTransformList,
|
||||
ErrorResult& aRv);
|
||||
void Ensure3DMatrix();
|
||||
@ -240,13 +227,6 @@ class DOMMatrix : public DOMMatrixReadOnly {
|
||||
DOMMatrix(nsISupports* aParent, const gfx::Matrix4x4& aMatrix)
|
||||
: DOMMatrixReadOnly(aParent, aMatrix) {}
|
||||
|
||||
static already_AddRefed<DOMMatrix> FromMatrix(
|
||||
nsISupports* aParent, const DOMMatrixInit& aMatrixInit, ErrorResult& aRv);
|
||||
|
||||
static already_AddRefed<DOMMatrix> FromMatrix(
|
||||
const GlobalObject& aGlobal, const DOMMatrixInit& aMatrixInit,
|
||||
ErrorResult& aRv);
|
||||
|
||||
static already_AddRefed<DOMMatrix> Constructor(const GlobalObject& aGlobal,
|
||||
ErrorResult& aRv);
|
||||
static already_AddRefed<DOMMatrix> Constructor(
|
||||
@ -272,8 +252,8 @@ class DOMMatrix : public DOMMatrixReadOnly {
|
||||
virtual JSObject* WrapObject(JSContext* aCx,
|
||||
JS::Handle<JSObject*> aGivenProto) override;
|
||||
|
||||
DOMMatrix* MultiplySelf(const DOMMatrixInit& aOther, ErrorResult& aRv);
|
||||
DOMMatrix* PreMultiplySelf(const DOMMatrixInit& aOther, ErrorResult& aRv);
|
||||
DOMMatrix* MultiplySelf(const DOMMatrix& aOther);
|
||||
DOMMatrix* PreMultiplySelf(const DOMMatrix& aOther);
|
||||
DOMMatrix* TranslateSelf(double aTx, double aTy, double aTz = 0);
|
||||
DOMMatrix* ScaleSelf(double aScale, double aOriginX = 0, double aOriginY = 0);
|
||||
DOMMatrix* Scale3dSelf(double aScale, double aOriginX = 0,
|
||||
|
@ -55,9 +55,9 @@ WebKitCSSMatrix* WebKitCSSMatrix::SetMatrixValue(
|
||||
}
|
||||
|
||||
already_AddRefed<WebKitCSSMatrix> WebKitCSSMatrix::Multiply(
|
||||
const DOMMatrixInit& aOtherInit, ErrorResult& aRv) const {
|
||||
const WebKitCSSMatrix& other) const {
|
||||
RefPtr<WebKitCSSMatrix> retval = new WebKitCSSMatrix(mParent, *this);
|
||||
retval->MultiplySelf(aOtherInit, aRv);
|
||||
retval->MultiplySelf(other);
|
||||
|
||||
return retval.forget();
|
||||
}
|
||||
|
@ -37,8 +37,8 @@ class WebKitCSSMatrix final : public DOMMatrix {
|
||||
WebKitCSSMatrix* SetMatrixValue(const nsAString& aTransformList,
|
||||
ErrorResult& aRv);
|
||||
|
||||
already_AddRefed<WebKitCSSMatrix> Multiply(const DOMMatrixInit& aOtherInit,
|
||||
ErrorResult& aRv) const;
|
||||
already_AddRefed<WebKitCSSMatrix> Multiply(
|
||||
const WebKitCSSMatrix& aOther) const;
|
||||
already_AddRefed<WebKitCSSMatrix> Inverse(ErrorResult& aRv) const;
|
||||
already_AddRefed<WebKitCSSMatrix> Translate(double aTx, double aTy,
|
||||
double aTz) const;
|
||||
|
@ -102,8 +102,6 @@ MSG_DEF(MSG_ONLY_IF_CACHED_WITHOUT_SAME_ORIGIN, 1, JSEXN_TYPEERR, "Request mode
|
||||
MSG_DEF(MSG_THRESHOLD_RANGE_ERROR, 0, JSEXN_RANGEERR, "Threshold values must all be in the range [0, 1].")
|
||||
MSG_DEF(MSG_WORKER_THREAD_SHUTTING_DOWN, 0, JSEXN_TYPEERR, "The Worker thread is shutting down.")
|
||||
MSG_DEF(MSG_CACHE_OPEN_FAILED, 0, JSEXN_TYPEERR, "CacheStorage.open() failed to access the storage system.")
|
||||
MSG_DEF(MSG_MATRIX_INIT_CONFLICTING_VALUE, 2, JSEXN_TYPEERR, "Matrix init unexpectedly got different values for '{0}' and '{1}'.")
|
||||
MSG_DEF(MSG_MATRIX_INIT_EXCEEDS_2D, 1, JSEXN_TYPEERR, "Matrix init has an unexpected 3D element '{0}' which cannot coexist with 'is2D: true'.")
|
||||
MSG_DEF(MSG_MATRIX_INIT_LENGTH_WRONG, 1, JSEXN_TYPEERR, "Matrix init sequence must have a length of 6 or 16 (actual value: {0})")
|
||||
MSG_DEF(MSG_INVALID_MEDIA_VIDEO_CONFIGURATION, 0, JSEXN_TYPEERR, "Invalid VideoConfiguration.")
|
||||
MSG_DEF(MSG_INVALID_MEDIA_AUDIO_CONFIGURATION, 0, JSEXN_TYPEERR, "Invalid AudioConfiguration.")
|
||||
|
@ -15,8 +15,6 @@
|
||||
Exposed=(Window,Worker),
|
||||
Serializable]
|
||||
interface DOMMatrixReadOnly {
|
||||
[NewObject, Throws] static DOMMatrixReadOnly fromMatrix(optional DOMMatrixInit other);
|
||||
|
||||
// These attributes are simple aliases for certain elements of the 4x4 matrix
|
||||
readonly attribute unrestricted double a;
|
||||
readonly attribute unrestricted double b;
|
||||
@ -70,7 +68,7 @@ interface DOMMatrixReadOnly {
|
||||
unrestricted double angle);
|
||||
DOMMatrix skewX(optional unrestricted double sx = 0);
|
||||
DOMMatrix skewY(optional unrestricted double sy = 0);
|
||||
[NewObject, Throws] DOMMatrix multiply(optional DOMMatrixInit other);
|
||||
DOMMatrix multiply(DOMMatrix other);
|
||||
DOMMatrix flipX();
|
||||
DOMMatrix flipY();
|
||||
DOMMatrix inverse();
|
||||
@ -95,8 +93,6 @@ interface DOMMatrixReadOnly {
|
||||
Exposed=(Window,Worker),
|
||||
Serializable]
|
||||
interface DOMMatrix : DOMMatrixReadOnly {
|
||||
[NewObject, Throws] static DOMMatrix fromMatrix(optional DOMMatrixInit other);
|
||||
|
||||
// These attributes are simple aliases for certain elements of the 4x4 matrix
|
||||
inherit attribute unrestricted double a;
|
||||
inherit attribute unrestricted double b;
|
||||
@ -123,8 +119,8 @@ interface DOMMatrix : DOMMatrixReadOnly {
|
||||
inherit attribute unrestricted double m44;
|
||||
|
||||
// Mutable transform methods
|
||||
[Throws] DOMMatrix multiplySelf(optional DOMMatrixInit other);
|
||||
[Throws] DOMMatrix preMultiplySelf(optional DOMMatrixInit other);
|
||||
DOMMatrix multiplySelf(DOMMatrix other);
|
||||
DOMMatrix preMultiplySelf(DOMMatrix other);
|
||||
DOMMatrix translateSelf(optional unrestricted double tx = 0,
|
||||
optional unrestricted double ty = 0,
|
||||
optional unrestricted double tz = 0);
|
||||
@ -156,31 +152,3 @@ interface DOMMatrix : DOMMatrixReadOnly {
|
||||
[Exposed=Window, Throws] DOMMatrix setMatrixValue(DOMString transformList);
|
||||
};
|
||||
|
||||
dictionary DOMMatrix2DInit {
|
||||
unrestricted double a;
|
||||
unrestricted double b;
|
||||
unrestricted double c;
|
||||
unrestricted double d;
|
||||
unrestricted double e;
|
||||
unrestricted double f;
|
||||
unrestricted double m11;
|
||||
unrestricted double m12;
|
||||
unrestricted double m21;
|
||||
unrestricted double m22;
|
||||
unrestricted double m41;
|
||||
unrestricted double m42;
|
||||
};
|
||||
|
||||
dictionary DOMMatrixInit : DOMMatrix2DInit {
|
||||
unrestricted double m13 = 0;
|
||||
unrestricted double m14 = 0;
|
||||
unrestricted double m23 = 0;
|
||||
unrestricted double m24 = 0;
|
||||
unrestricted double m31 = 0;
|
||||
unrestricted double m32 = 0;
|
||||
unrestricted double m33 = 1;
|
||||
unrestricted double m34 = 0;
|
||||
unrestricted double m43 = 0;
|
||||
unrestricted double m44 = 1;
|
||||
boolean is2D;
|
||||
};
|
||||
|
@ -18,8 +18,7 @@ interface WebKitCSSMatrix : DOMMatrix {
|
||||
WebKitCSSMatrix setMatrixValue(DOMString transformList);
|
||||
|
||||
// Immutable transform methods
|
||||
[Throws]
|
||||
WebKitCSSMatrix multiply(optional DOMMatrixInit other);
|
||||
WebKitCSSMatrix multiply(WebKitCSSMatrix other);
|
||||
[Throws]
|
||||
WebKitCSSMatrix inverse();
|
||||
WebKitCSSMatrix translate(optional unrestricted double tx = 0,
|
||||
|
@ -0,0 +1,40 @@
|
||||
[DOMMatrix-002.html]
|
||||
[test translate() doesn't mutate]
|
||||
expected: FAIL
|
||||
|
||||
[test scale() doesn't mutate]
|
||||
expected: FAIL
|
||||
|
||||
[test scale3d() doesn't mutate]
|
||||
expected: FAIL
|
||||
|
||||
[test rotate() doesn't mutate]
|
||||
expected: FAIL
|
||||
|
||||
[test rotateFromVector() doesn't mutate]
|
||||
expected: FAIL
|
||||
|
||||
[test rotateAxisAngle() doesn't mutate]
|
||||
expected: FAIL
|
||||
|
||||
[test skewX() doesn't mutate]
|
||||
expected: FAIL
|
||||
|
||||
[test skewY() doesn't mutate]
|
||||
expected: FAIL
|
||||
|
||||
[test multiply() doesn't mutate]
|
||||
expected: FAIL
|
||||
|
||||
[test flipX() doesn't mutate]
|
||||
expected: FAIL
|
||||
|
||||
[test flipY() doesn't mutate]
|
||||
expected: FAIL
|
||||
|
||||
[test inverse() doesn't mutate]
|
||||
expected: FAIL
|
||||
|
||||
[test scaleNonUniform() doesn't mutate]
|
||||
expected: FAIL
|
||||
|
@ -1,4 +1,7 @@
|
||||
[DOMMatrix-003.html]
|
||||
[test translate()]
|
||||
expected: FAIL
|
||||
|
||||
[test scale() without offsets]
|
||||
expected: FAIL
|
||||
|
||||
@ -8,9 +11,33 @@
|
||||
[test scale3d()]
|
||||
expected: FAIL
|
||||
|
||||
[test rotate() 2d]
|
||||
expected: FAIL
|
||||
|
||||
[test rotate()]
|
||||
expected: FAIL
|
||||
|
||||
[test rotateFromVector()]
|
||||
expected: FAIL
|
||||
|
||||
[test rotateAxisAngle() ]
|
||||
expected: FAIL
|
||||
|
||||
[test skewX()]
|
||||
expected: FAIL
|
||||
|
||||
[test skewY()]
|
||||
expected: FAIL
|
||||
|
||||
[test multiply with inverse is identity]
|
||||
expected: FAIL
|
||||
|
||||
[test flipX()]
|
||||
expected: FAIL
|
||||
|
||||
[test flipY()]
|
||||
expected: FAIL
|
||||
|
||||
[test scaleNonUniform()]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -0,0 +1,6 @@
|
||||
[DOMMatrix-css-string.worker.html]
|
||||
[DOMMatrix stringifier in worker (3d identity)]
|
||||
expected: FAIL
|
||||
|
||||
[DOMMatrixReadOnly stringifier in worker (3d identity)]
|
||||
expected: FAIL
|
@ -14,6 +14,9 @@
|
||||
[DOMMatrix rotateAxisAngle]
|
||||
expected: FAIL
|
||||
|
||||
[DOMMatrix multiply]
|
||||
expected: FAIL
|
||||
|
||||
[DOMMatrixReadOnly scale]
|
||||
expected: FAIL
|
||||
|
||||
@ -28,3 +31,6 @@
|
||||
|
||||
[DOMMatrixReadOnly rotateAxisAngle]
|
||||
expected: FAIL
|
||||
|
||||
[DOMMatrixReadOnly multiply]
|
||||
expected: FAIL
|
||||
|
@ -1,4 +1,7 @@
|
||||
[DOMMatrix-stringifier.html]
|
||||
[DOMMatrix stringifier: identity (3d)]
|
||||
expected: FAIL
|
||||
|
||||
[DOMMatrix stringifier: NaN (2d)]
|
||||
expected: FAIL
|
||||
|
||||
@ -65,6 +68,12 @@
|
||||
[DOMMatrix stringifier: Number.MIN_VALUE (3d)]
|
||||
expected: FAIL
|
||||
|
||||
[DOMMatrix stringifier: throwing getters (3d)]
|
||||
expected: FAIL
|
||||
|
||||
[DOMMatrixReadOnly stringifier: identity (3d)]
|
||||
expected: FAIL
|
||||
|
||||
[DOMMatrixReadOnly stringifier: NaN (2d)]
|
||||
expected: FAIL
|
||||
|
||||
@ -131,6 +140,12 @@
|
||||
[DOMMatrixReadOnly stringifier: Number.MIN_VALUE (3d)]
|
||||
expected: FAIL
|
||||
|
||||
[DOMMatrixReadOnly stringifier: throwing getters (3d)]
|
||||
expected: FAIL
|
||||
|
||||
[WebKitCSSMatrix stringifier: identity (3d)]
|
||||
expected: FAIL
|
||||
|
||||
[WebKitCSSMatrix stringifier: NaN (2d)]
|
||||
expected: FAIL
|
||||
|
||||
@ -197,3 +212,6 @@
|
||||
[WebKitCSSMatrix stringifier: Number.MIN_VALUE (3d)]
|
||||
expected: FAIL
|
||||
|
||||
[WebKitCSSMatrix stringifier: throwing getters (3d)]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -0,0 +1,274 @@
|
||||
[DOMMatrixInit-validate-fixup.html]
|
||||
[{a: 1, m11: 2} (invalid)]
|
||||
expected: FAIL
|
||||
|
||||
[{b: 0, m12: -1} (invalid)]
|
||||
expected: FAIL
|
||||
|
||||
[{c: Infinity, m21: -Infinity} (invalid)]
|
||||
expected: FAIL
|
||||
|
||||
[{d: 0, m22: NaN} (invalid)]
|
||||
expected: FAIL
|
||||
|
||||
[{e: 1, m41: 1.00000001} (invalid)]
|
||||
expected: FAIL
|
||||
|
||||
[{f: 0, m42: 5e-324} (invalid)]
|
||||
expected: FAIL
|
||||
|
||||
[{m13: 1, is2D: true} (invalid)]
|
||||
expected: FAIL
|
||||
|
||||
[{m14: 1, is2D: true} (invalid)]
|
||||
expected: FAIL
|
||||
|
||||
[{m23: 1, is2D: true} (invalid)]
|
||||
expected: FAIL
|
||||
|
||||
[{m24: 1, is2D: true} (invalid)]
|
||||
expected: FAIL
|
||||
|
||||
[{m31: 1, is2D: true} (invalid)]
|
||||
expected: FAIL
|
||||
|
||||
[{m32: 1, is2D: true} (invalid)]
|
||||
expected: FAIL
|
||||
|
||||
[{m33: 0, is2D: true} (invalid)]
|
||||
expected: FAIL
|
||||
|
||||
[{m33: -0, is2D: true} (invalid)]
|
||||
expected: FAIL
|
||||
|
||||
[{m33: -1, is2D: true} (invalid)]
|
||||
expected: FAIL
|
||||
|
||||
[{m34: 1, is2D: true} (invalid)]
|
||||
expected: FAIL
|
||||
|
||||
[{m43: 1, is2D: true} (invalid)]
|
||||
expected: FAIL
|
||||
|
||||
[{m44: 0, is2D: true} (invalid)]
|
||||
expected: FAIL
|
||||
|
||||
[{} (2d)]
|
||||
expected: FAIL
|
||||
|
||||
[{is2D: undefined} (2d)]
|
||||
expected: FAIL
|
||||
|
||||
[{a: 1, m11: 1} (2d)]
|
||||
expected: FAIL
|
||||
|
||||
[{b: 0, m12: undefined} (2d)]
|
||||
expected: FAIL
|
||||
|
||||
[{c: 0, m21: 0} (2d)]
|
||||
expected: FAIL
|
||||
|
||||
[{c: 0, m21: -0} (2d)]
|
||||
expected: FAIL
|
||||
|
||||
[{c: -0, m21: 0} (2d)]
|
||||
expected: FAIL
|
||||
|
||||
[{c: -0, m21: -0} (2d)]
|
||||
expected: FAIL
|
||||
|
||||
[{d: Infinity, m22: Infinity} (2d)]
|
||||
expected: FAIL
|
||||
|
||||
[{e: -Infinity, m41: -Infinity} (2d)]
|
||||
expected: FAIL
|
||||
|
||||
[{f: NaN, m42: NaN} (2d)]
|
||||
expected: FAIL
|
||||
|
||||
[{f: NaN, m42: NaN, is2D: true} (2d)]
|
||||
expected: FAIL
|
||||
|
||||
[{f: 0, m42: null} (2d)]
|
||||
expected: FAIL
|
||||
|
||||
[{f: -0, m42: null} (2d)]
|
||||
expected: FAIL
|
||||
|
||||
[{a: 2} (2d)]
|
||||
expected: FAIL
|
||||
|
||||
[{b: 2} (2d)]
|
||||
expected: FAIL
|
||||
|
||||
[{c: 2} (2d)]
|
||||
expected: FAIL
|
||||
|
||||
[{d: 2} (2d)]
|
||||
expected: FAIL
|
||||
|
||||
[{e: 2} (2d)]
|
||||
expected: FAIL
|
||||
|
||||
[{f: 2} (2d)]
|
||||
expected: FAIL
|
||||
|
||||
[{a: -0, b: -0, c: -0, d: -0, e: -0, f: -0} (2d)]
|
||||
expected: FAIL
|
||||
|
||||
[{a: -0, b: -0, c: -0, d: -0, e: -0, f: -0, is2D: true} (2d)]
|
||||
expected: FAIL
|
||||
|
||||
[{m11: 2} (2d)]
|
||||
expected: FAIL
|
||||
|
||||
[{m12: 2} (2d)]
|
||||
expected: FAIL
|
||||
|
||||
[{m21: 2} (2d)]
|
||||
expected: FAIL
|
||||
|
||||
[{m22: 2} (2d)]
|
||||
expected: FAIL
|
||||
|
||||
[{m41: 2} (2d)]
|
||||
expected: FAIL
|
||||
|
||||
[{m42: 2} (2d)]
|
||||
expected: FAIL
|
||||
|
||||
[{m11: -0, m12: -0, m21: -0, m22: -0, m41: -0, m42: -0} (2d)]
|
||||
expected: FAIL
|
||||
|
||||
[{m11: -0, m12: -0, m21: -0, m22: -0, m41: -0, m42: -0, is2D: true} (2d)]
|
||||
expected: FAIL
|
||||
|
||||
[{m13: 0, is2D: true} (2d)]
|
||||
expected: FAIL
|
||||
|
||||
[{m13: -0, is2D: true} (2d)]
|
||||
expected: FAIL
|
||||
|
||||
[{m14: 0, is2D: true} (2d)]
|
||||
expected: FAIL
|
||||
|
||||
[{m14: -0, is2D: true} (2d)]
|
||||
expected: FAIL
|
||||
|
||||
[{m23: 0, is2D: true} (2d)]
|
||||
expected: FAIL
|
||||
|
||||
[{m23: -0, is2D: true} (2d)]
|
||||
expected: FAIL
|
||||
|
||||
[{m24: 0, is2D: true} (2d)]
|
||||
expected: FAIL
|
||||
|
||||
[{m24: -0, is2D: true} (2d)]
|
||||
expected: FAIL
|
||||
|
||||
[{m31: 0, is2D: true} (2d)]
|
||||
expected: FAIL
|
||||
|
||||
[{m31: -0, is2D: true} (2d)]
|
||||
expected: FAIL
|
||||
|
||||
[{m32: 0, is2D: true} (2d)]
|
||||
expected: FAIL
|
||||
|
||||
[{m32: -0, is2D: true} (2d)]
|
||||
expected: FAIL
|
||||
|
||||
[{m33: 1, is2D: true} (2d)]
|
||||
expected: FAIL
|
||||
|
||||
[{m34: 0, is2D: true} (2d)]
|
||||
expected: FAIL
|
||||
|
||||
[{m34: -0, is2D: true} (2d)]
|
||||
expected: FAIL
|
||||
|
||||
[{m43: 0, is2D: true} (2d)]
|
||||
expected: FAIL
|
||||
|
||||
[{m43: -0, is2D: true} (2d)]
|
||||
expected: FAIL
|
||||
|
||||
[{m44: 1, is2D: true} (2d)]
|
||||
expected: FAIL
|
||||
|
||||
[{is2D: true} (2d)]
|
||||
expected: FAIL
|
||||
|
||||
[{m13: 1, is2D: false} (3d)]
|
||||
expected: FAIL
|
||||
|
||||
[{m14: 1, is2D: false} (3d)]
|
||||
expected: FAIL
|
||||
|
||||
[{m23: 1, is2D: false} (3d)]
|
||||
expected: FAIL
|
||||
|
||||
[{m24: 1, is2D: false} (3d)]
|
||||
expected: FAIL
|
||||
|
||||
[{m31: 1, is2D: false} (3d)]
|
||||
expected: FAIL
|
||||
|
||||
[{m32: 1, is2D: false} (3d)]
|
||||
expected: FAIL
|
||||
|
||||
[{m33: 0, is2D: false} (3d)]
|
||||
expected: FAIL
|
||||
|
||||
[{m33: -0, is2D: false} (3d)]
|
||||
expected: FAIL
|
||||
|
||||
[{m33: -1, is2D: false} (3d)]
|
||||
expected: FAIL
|
||||
|
||||
[{m34: 1, is2D: false} (3d)]
|
||||
expected: FAIL
|
||||
|
||||
[{m43: 1, is2D: false} (3d)]
|
||||
expected: FAIL
|
||||
|
||||
[{m44: 0, is2D: false} (3d)]
|
||||
expected: FAIL
|
||||
|
||||
[{m13: 1} (3d)]
|
||||
expected: FAIL
|
||||
|
||||
[{m14: 1} (3d)]
|
||||
expected: FAIL
|
||||
|
||||
[{m23: 1} (3d)]
|
||||
expected: FAIL
|
||||
|
||||
[{m24: 1} (3d)]
|
||||
expected: FAIL
|
||||
|
||||
[{m31: 1} (3d)]
|
||||
expected: FAIL
|
||||
|
||||
[{m32: 1} (3d)]
|
||||
expected: FAIL
|
||||
|
||||
[{m33: 0} (3d)]
|
||||
expected: FAIL
|
||||
|
||||
[{m34: 1} (3d)]
|
||||
expected: FAIL
|
||||
|
||||
[{m43: 1} (3d)]
|
||||
expected: FAIL
|
||||
|
||||
[{m44: 0} (3d)]
|
||||
expected: FAIL
|
||||
|
||||
[{is2D: false} (3d)]
|
||||
expected: FAIL
|
||||
|
||||
[{is2D: null} (3d)]
|
||||
expected: FAIL
|
||||
|
@ -28,3 +28,13 @@
|
||||
|
||||
[DOMPointReadOnly matrixTransform number of required arguments]
|
||||
expected: FAIL
|
||||
|
||||
[DOMMatrixReadOnly multiply number of required arguments]
|
||||
expected: FAIL
|
||||
|
||||
[DOMMatrix multiplySelf number of required arguments]
|
||||
expected: FAIL
|
||||
|
||||
[DOMMatrix preMultiplySelf number of required arguments]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -47,6 +47,9 @@
|
||||
[DOMQuad interface: calling fromQuad(DOMQuadInit) on new DOMQuad() with too few arguments must throw TypeError]
|
||||
expected: FAIL
|
||||
|
||||
[DOMMatrixReadOnly interface: operation fromMatrix(DOMMatrixInit)]
|
||||
expected: FAIL
|
||||
|
||||
[DOMMatrixReadOnly interface: operation fromFloat32Array(Float32Array)]
|
||||
expected: FAIL
|
||||
|
||||
@ -71,21 +74,42 @@
|
||||
[DOMMatrixReadOnly interface: operation rotateAxisAngle(unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
|
||||
expected: FAIL
|
||||
|
||||
[DOMMatrixReadOnly interface: operation multiply(DOMMatrixInit)]
|
||||
expected: FAIL
|
||||
|
||||
[DOMMatrixReadOnly interface: calling fromMatrix(DOMMatrixInit) on new DOMMatrixReadOnly() with too few arguments must throw TypeError]
|
||||
expected: FAIL
|
||||
|
||||
[DOMMatrixReadOnly interface: calling fromFloat32Array(Float32Array) on new DOMMatrixReadOnly() with too few arguments must throw TypeError]
|
||||
expected: FAIL
|
||||
|
||||
[DOMMatrixReadOnly interface: calling fromFloat64Array(Float64Array) on new DOMMatrixReadOnly() with too few arguments must throw TypeError]
|
||||
expected: FAIL
|
||||
|
||||
[DOMMatrixReadOnly must be primary interface of DOMMatrixReadOnly.fromMatrix({is2D: false})]
|
||||
expected: FAIL
|
||||
|
||||
[Stringification of DOMMatrixReadOnly.fromMatrix({is2D: false})]
|
||||
expected: FAIL
|
||||
|
||||
[DOMMatrix interface: legacy window alias]
|
||||
expected: FAIL
|
||||
|
||||
[DOMMatrix interface: operation fromMatrix(DOMMatrixInit)]
|
||||
expected: FAIL
|
||||
|
||||
[DOMMatrix interface: operation fromFloat32Array(Float32Array)]
|
||||
expected: FAIL
|
||||
|
||||
[DOMMatrix interface: operation fromFloat64Array(Float64Array)]
|
||||
expected: FAIL
|
||||
|
||||
[DOMMatrix interface: operation multiplySelf(DOMMatrixInit)]
|
||||
expected: FAIL
|
||||
|
||||
[DOMMatrix interface: operation preMultiplySelf(DOMMatrixInit)]
|
||||
expected: FAIL
|
||||
|
||||
[DOMMatrix interface: operation scaleSelf(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
|
||||
expected: FAIL
|
||||
|
||||
@ -101,8 +125,17 @@
|
||||
[DOMMatrix interface: operation rotateAxisAngleSelf(unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
|
||||
expected: FAIL
|
||||
|
||||
[DOMMatrix interface: calling fromMatrix(DOMMatrixInit) on new DOMMatrix() with too few arguments must throw TypeError]
|
||||
expected: FAIL
|
||||
|
||||
[DOMMatrix interface: calling fromFloat32Array(Float32Array) on new DOMMatrix() with too few arguments must throw TypeError]
|
||||
expected: FAIL
|
||||
|
||||
[DOMMatrix interface: calling fromFloat64Array(Float64Array) on new DOMMatrix() with too few arguments must throw TypeError]
|
||||
expected: FAIL
|
||||
|
||||
[DOMMatrix must be primary interface of DOMMatrix.fromMatrix({is2D: false})]
|
||||
expected: FAIL
|
||||
|
||||
[Stringification of DOMMatrix.fromMatrix({is2D: false})]
|
||||
expected: FAIL
|
||||
|
@ -41,6 +41,9 @@
|
||||
[DOMQuad interface: calling fromQuad(DOMQuadInit) on new DOMQuad() with too few arguments must throw TypeError]
|
||||
expected: FAIL
|
||||
|
||||
[DOMMatrixReadOnly interface: operation fromMatrix(DOMMatrixInit)]
|
||||
expected: FAIL
|
||||
|
||||
[DOMMatrixReadOnly interface: operation fromFloat32Array(Float32Array)]
|
||||
expected: FAIL
|
||||
|
||||
@ -65,18 +68,39 @@
|
||||
[DOMMatrixReadOnly interface: operation rotateAxisAngle(unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
|
||||
expected: FAIL
|
||||
|
||||
[DOMMatrixReadOnly interface: operation multiply(DOMMatrixInit)]
|
||||
expected: FAIL
|
||||
|
||||
[DOMMatrixReadOnly interface: calling fromMatrix(DOMMatrixInit) on new DOMMatrixReadOnly() with too few arguments must throw TypeError]
|
||||
expected: FAIL
|
||||
|
||||
[DOMMatrixReadOnly interface: calling fromFloat32Array(Float32Array) on new DOMMatrixReadOnly() with too few arguments must throw TypeError]
|
||||
expected: FAIL
|
||||
|
||||
[DOMMatrixReadOnly interface: calling fromFloat64Array(Float64Array) on new DOMMatrixReadOnly() with too few arguments must throw TypeError]
|
||||
expected: FAIL
|
||||
|
||||
[DOMMatrixReadOnly must be primary interface of DOMMatrixReadOnly.fromMatrix({is2D: false})]
|
||||
expected: FAIL
|
||||
|
||||
[Stringification of DOMMatrixReadOnly.fromMatrix({is2D: false})]
|
||||
expected: FAIL
|
||||
|
||||
[DOMMatrix interface: operation fromMatrix(DOMMatrixInit)]
|
||||
expected: FAIL
|
||||
|
||||
[DOMMatrix interface: operation fromFloat32Array(Float32Array)]
|
||||
expected: FAIL
|
||||
|
||||
[DOMMatrix interface: operation fromFloat64Array(Float64Array)]
|
||||
expected: FAIL
|
||||
|
||||
[DOMMatrix interface: operation multiplySelf(DOMMatrixInit)]
|
||||
expected: FAIL
|
||||
|
||||
[DOMMatrix interface: operation preMultiplySelf(DOMMatrixInit)]
|
||||
expected: FAIL
|
||||
|
||||
[DOMMatrix interface: operation scaleSelf(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
|
||||
expected: FAIL
|
||||
|
||||
@ -92,8 +116,17 @@
|
||||
[DOMMatrix interface: operation rotateAxisAngleSelf(unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
|
||||
expected: FAIL
|
||||
|
||||
[DOMMatrix interface: calling fromMatrix(DOMMatrixInit) on new DOMMatrix() with too few arguments must throw TypeError]
|
||||
expected: FAIL
|
||||
|
||||
[DOMMatrix interface: calling fromFloat32Array(Float32Array) on new DOMMatrix() with too few arguments must throw TypeError]
|
||||
expected: FAIL
|
||||
|
||||
[DOMMatrix interface: calling fromFloat64Array(Float64Array) on new DOMMatrix() with too few arguments must throw TypeError]
|
||||
expected: FAIL
|
||||
|
||||
[DOMMatrix must be primary interface of DOMMatrix.fromMatrix({is2D: false})]
|
||||
expected: FAIL
|
||||
|
||||
[Stringification of DOMMatrix.fromMatrix({is2D: false})]
|
||||
expected: FAIL
|
||||
|
Loading…
Reference in New Issue
Block a user