mirror of
https://github.com/roytam1/palemoon27.git
synced 2026-05-26 14:18:48 +00:00
dcbe25ed45
- Bug 1235979 - Remove spammy printf that got left by accident when bug 1226904 landed. r=thinker (fc6fe64f23) - Bug 1208344 part 1: Make EnsurePhysicalProperty() return the property directly, instead of using in/out-param. r=heycam (9515887dd7) - Bug 1208344 part 2: Make EnsurePhysicalProperty() (not its callers) check whether property is logical. r=heycam (defa671bab) - Bug 1208344 part 3: Rename MapSinglePropertyInto() args, to make src-vs-target distinctions clearer. r=heycam (bfd2e2c9bc) - Bug 1208344 part 4: Make MapSinglePropertyInto() take the source property as an arg (unused for the moment). r=heycam (d1278eb58a) - Bug 1208344 part 5: Add (preffed-off) support for "-webkit-box-orient" CSS property, as a writing-mode-dependent alias for "flex-direction". r=heycam (d8407990aa) - Bug 1208344 part 6: Move new CSS_PROPERTY_LOGICAL_CUSTOM flag up with other LOGICAL flags, and adjust bits accordingly. r=heycam (df27d64733) - Bug 1208344 part 7: Add mochitest to test how "-webkit-box-orient" maps to "flex-direction". r=heycam (c448070877) - Bug 686225 - Work around buggy AAT fonts for Bengali and Kannada scripts. r=jdaggett (17afddbc6c) - Bug 739117 - Avoid bidi-wrapping the text to be shaped if Core Text direction override API is available. r=jdaggett (c492390922) - Bug 1156581 - Add null check to nsSVGEffects::InvalidateRenderingObservers to prevent crashes r=dholbert (4c0460e7ac) - remove windows accents (8b0ad08f11) - Bug 1123654 - Replace use of [deprecated] GetStockObject(DEFAULT_GUI_FONT) with newer API; results in use of Tahoma in place of Microsoft Sans Serif in various contexts. r=jmathies (3a81fc1bed) - put back cleartype for winXP (1c24e5ae09) - Bug 1240180 - Optimize native theme scaling for the single-monitor case. r=emk (a5846457ab) - Bug 1242720 - Use (non-dynamic) resolution from GetDeviceCaps when dealing with native-theme code that does not handle dynamic changes to system DPI. r=emk (7c25841f0b) - More win accent removal (afd6af9fd2) - some more vista or later stuff (1d99554064) - missing bits of Bug 1243720 - Send accessibility theme state down to the content process on Windows. r=jimm (8f00b4f3ca) - Bug 1153460 - Support new Fitzpatrick emoji modifiers and regional symbol indicators in Apple Color Emoji font. r=jdaggett (6faf5f30e6) - Bug 1230497 - Ignore font fallback in Core Text shaping if it's just for a join-control character. r=jdaggett (b612806a42) - Bug 1153460 - Followup to fix warnings-as-errors build failure on a CLOSED TREE. r=bustage. (12d492772c) - bug 1243077 - make it possible to get MaiAtkObject::mAccWrap from an AtkObject* without casting to Accessible* or ProxyAccessible* r=davidb (d8f690b6cd) - Bug 1238403 - Fix inconsistent indenting in layout/style/. r=xidorn (4f24334234) - Bug 717722 - Implement WebKitCSSMatrix. r=baku (c10f90ff6e) - Bug 1241723. Update WebKitCSSMatrix.idl to match latest spec updates. r=baku (5f8c33ff14) - Bug 1241727 - Inverting non-invertible WebKitCSSMatrix should throw NotSupportedError. r=baku (c7791802b8) - Bug 1241575 - Use transform property syntax to parse WebKitCSSMatrix transform list. r=heycam (5f886e2bd9) - bug 1243077 - add AccessibleOrProxy::ChildCount() r=davidb (044537f53c) - bug 1243077 - add AccessibleOrProxy::Role() r=davidb (3f61d03c8e) - bug 1243077 - add AccessibleOrProxy::ChildAt() r=davidb (91288f269f) - bug 1243077 - add AccessibleOrProxy::FirstChild() r=davidb (ea3f984716) - bug 1243077 - add AccessibleOrProxy::LastChild() r=davidb (2181f1740b) - Bug 1237720: Put "-webkit-min-device-pixel-ratio"/"-webkit-max-device-pixel-ratio" behind its own disabled pref. r=heycam (9f75535617) - Bug 1239153: Accept unitless '0' for angle values in CSS -webkit-linear-gradient() expressions. r=heycam (c11657a6c9) - Bug 1239799 part 1: Make check for -webkit-device-pixel-ratio pref more targeted, so we can support other webkit-prefixed media queries. r=heycam (1e8a40127e) - Bug 1239799 part 2: Add support for @media(-webkit-transform-3d) media query, for web compatibility. r=heycam (f7ff08423e) - guard some code for 10.5/10.6 which didn't get run, but coulnd't natively compile (cf68e969fd) - Bug 1019856 - avoid double-buffering in BasicCompositor when window allows it. r=mattwoodrow (e94cfc3fb4)
327 lines
12 KiB
HTML
327 lines
12 KiB
HTML
<!DOCTYPE html>
|
|
<meta charset=utf-8>
|
|
<title>Test for WebKitCSSMatrix</title>
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
<div id="log"></div>
|
|
<script>
|
|
function RoughCompareMatrix(dm1, dm2)
|
|
{
|
|
var m1 = dm1.toFloat32Array();
|
|
var m2 = dm2.toFloat32Array();
|
|
|
|
if (m1.length != m2.length) {
|
|
return false;
|
|
}
|
|
|
|
const tolerance = 1 / 65535;
|
|
for (var x = 0; x < m1.length; x++) {
|
|
if (Math.abs(m1[x] - m2[x]) > tolerance) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
function CompareMatrix(dm1, dm2)
|
|
{
|
|
var m1 = dm1.toFloat32Array();
|
|
var m2 = dm2.toFloat32Array();
|
|
|
|
if (m1.length != m2.length) {
|
|
return false;
|
|
}
|
|
|
|
for (var x = 0; x < m1.length; x++) {
|
|
if (m1[x] != m2[x]) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
test(function() {
|
|
var m = new WebKitCSSMatrix();
|
|
|
|
assert_equals(m.m11, 1, "m11 should be 1");
|
|
assert_equals(m.m22, 1, "m22 should be 1");
|
|
assert_equals(m.m33, 1, "m33 should be 1");
|
|
assert_equals(m.m44, 1, "m44 should be 1");
|
|
assert_equals(m.m12, 0, "m12 should be 0");
|
|
assert_equals(m.m13, 0, "m13 should be 0");
|
|
assert_equals(m.m14, 0, "m14 should be 0");
|
|
assert_equals(m.m21, 0, "m21 should be 0");
|
|
assert_equals(m.m23, 0, "m23 should be 0");
|
|
assert_equals(m.m24, 0, "m24 should be 0");
|
|
assert_equals(m.m31, 0, "m31 should be 0");
|
|
assert_equals(m.m32, 0, "m32 should be 0");
|
|
assert_equals(m.m34, 0, "m34 should be 0");
|
|
assert_equals(m.m41, 0, "m41 should be 0");
|
|
assert_equals(m.m42, 0, "m42 should be 0");
|
|
assert_equals(m.m43, 0, "m43 should be 0");
|
|
}, "Test constructor with no arguments.");
|
|
|
|
test(function() {
|
|
var m = new WebKitCSSMatrix("matrix(1,2,3,4,5,6)");
|
|
|
|
assert_equals(m.m11, 1, "m11 should be 1");
|
|
assert_equals(m.m12, 2, "m12 should be 2");
|
|
assert_equals(m.m21, 3, "m21 should be 3");
|
|
assert_equals(m.m22, 4, "m22 should be 4");
|
|
assert_equals(m.m41, 5, "m41 should be 5");
|
|
assert_equals(m.m42, 6, "m42 should be 6");
|
|
}, "Test constructor with transform list.");
|
|
|
|
test(function() {
|
|
var m1 = new WebKitCSSMatrix("matrix(1,2,3,4,5,6)");
|
|
var m2 = new WebKitCSSMatrix(m1);
|
|
|
|
assert_true(RoughCompareMatrix(m1, m2), "Matrix should be equal.");
|
|
}, "Test constructor with other matrix.");
|
|
|
|
test(function() {
|
|
var m = new WebKitCSSMatrix();
|
|
var mr = m.setMatrixValue("matrix(1,2,3,4,5,6)");
|
|
|
|
assert_equals(m.m11, 1, "m11 should be 1");
|
|
assert_equals(m.m12, 2, "m12 should be 2");
|
|
assert_equals(m.m21, 3, "m21 should be 3");
|
|
assert_equals(m.m22, 4, "m22 should be 4");
|
|
assert_equals(m.m41, 5, "m41 should be 5");
|
|
assert_equals(m.m42, 6, "m42 should be 6");
|
|
|
|
assert_equals(m, mr, "Return value of setMatrixValue should be the same matrix.");
|
|
}, "Test setMatrixValue.");
|
|
|
|
test(function() {
|
|
var m1 = new WebKitCSSMatrix("matrix(1,2,3,4,5,6)");
|
|
var m2 = new DOMMatrix("matrix(1,2,3,4,5,6)");
|
|
var m3 = new WebKitCSSMatrix("matrix(6,5,4,3,2,1)");
|
|
var m4 = new WebKitCSSMatrix("matrix(1,2,3,4,5,6)");
|
|
|
|
var m1r = m1.multiply(m3);
|
|
var m2r = m2.multiply(m3);
|
|
|
|
assert_true(RoughCompareMatrix(m1r, m2r), "multiply should return the same result as DOMMatrixReadOnly.");
|
|
assert_true(CompareMatrix(m1, m4), "Multiply should not mutate original matrix.");
|
|
}, "Test multiply.");
|
|
|
|
test(function() {
|
|
var m1 = new WebKitCSSMatrix("matrix(1,2,3,4,5,6)");
|
|
var m2 = new DOMMatrix("matrix(1,2,3,4,5,6)");
|
|
var m3 = new WebKitCSSMatrix("matrix(1,2,3,4,5,6)");
|
|
|
|
var m1r = m1.inverse();
|
|
var m2r = m2.inverse();
|
|
|
|
assert_true(RoughCompareMatrix(m1r, m2r), "inverse should return the same result as DOMMatrixReadOnly.");
|
|
assert_true(CompareMatrix(m1, m3), "inverse should not mutate original matrix.");
|
|
}, "Test inverse.");
|
|
|
|
test(function() {
|
|
var m1 = new WebKitCSSMatrix("matrix(1,2,3,4,5,6)");
|
|
var m2 = new DOMMatrix("matrix(1,2,3,4,5,6)");
|
|
var m3 = new WebKitCSSMatrix("matrix(1,2,3,4,5,6)");
|
|
|
|
var m1r = m1.translate(2, 3, 4);
|
|
var m2r = m2.translate(2, 3, 4);
|
|
|
|
assert_true(RoughCompareMatrix(m1r, m2r), "translate should return the same result as DOMMatrixReadOnly.");
|
|
assert_true(CompareMatrix(m1, m3), "translate should not mutate original matrix.");
|
|
}, "Test inverse.");
|
|
|
|
test(function() {
|
|
var m1 = new WebKitCSSMatrix("matrix(1,2,3,4,5,6)");
|
|
var m2 = new DOMMatrix("matrix(1,2,3,4,5,6)");
|
|
var m3 = new WebKitCSSMatrix("matrix(1,2,3,4,5,6)");
|
|
|
|
var m1r = m1.scale(2);
|
|
var m2r = m2.scaleNonUniform(2, 2, 1);
|
|
|
|
assert_true(RoughCompareMatrix(m1r, m2r), "scale should return the same result as DOMMatrixReadOnly.");
|
|
assert_true(CompareMatrix(m1, m3), "scale should not mutate original matrix.");
|
|
}, "Test scale with 1 argument.");
|
|
|
|
test(function() {
|
|
var m1 = new WebKitCSSMatrix("matrix(1,2,3,4,5,6)");
|
|
var m2 = new DOMMatrix("matrix(1,2,3,4,5,6)");
|
|
var m3 = new WebKitCSSMatrix("matrix(1,2,3,4,5,6)");
|
|
|
|
var m1r = m1.scale(2, 3);
|
|
var m2r = m2.scaleNonUniform(2, 3, 1);
|
|
|
|
assert_true(RoughCompareMatrix(m1r, m2r), "scale should return the same result as DOMMatrixReadOnly.");
|
|
assert_true(CompareMatrix(m1, m3), "scale should not mutate original matrix.");
|
|
}, "Test scale with 2 arguments.");
|
|
|
|
test(function() {
|
|
var m1 = new WebKitCSSMatrix("matrix(1,2,3,4,5,6)");
|
|
var m2 = new DOMMatrix("matrix(1,2,3,4,5,6)");
|
|
var m3 = new WebKitCSSMatrix("matrix(1,2,3,4,5,6)");
|
|
|
|
var m1r = m1.scale(2, 3, 4);
|
|
var m2r = m2.scaleNonUniform(2, 3, 4);
|
|
|
|
assert_true(RoughCompareMatrix(m1r, m2r), "scale should return the same result as DOMMatrixReadOnly.");
|
|
assert_true(CompareMatrix(m1, m3), "scale should not mutate original matrix.");
|
|
}, "Test scale with 3 arguments.");
|
|
|
|
test(function() {
|
|
var m1 = new WebKitCSSMatrix("matrix(1,2,3,4,5,6)");
|
|
var m2 = new DOMMatrix("matrix(1,2,3,4,5,6)");
|
|
var m3 = new WebKitCSSMatrix("matrix(1,2,3,4,5,6)");
|
|
|
|
var m1r = m1.scale(undefined, 3, 4);
|
|
var m2r = m2.scaleNonUniform(1, 3, 4);
|
|
|
|
assert_true(RoughCompareMatrix(m1r, m2r), "scale should return the same result as DOMMatrixReadOnly.");
|
|
assert_true(CompareMatrix(m1, m3), "scale should not mutate original matrix.");
|
|
}, "Test scale with undefined scaleX argument.");
|
|
|
|
test(function() {
|
|
var m1 = new WebKitCSSMatrix("matrix(1,2,3,4,5,6)");
|
|
var m2 = new DOMMatrix("matrix(1,2,3,4,5,6)");
|
|
var m3 = new WebKitCSSMatrix("matrix(1,2,3,4,5,6)");
|
|
|
|
var m1r = m1.scale(2, undefined, 4);
|
|
var m2r = m2.scaleNonUniform(2, 2, 4);
|
|
|
|
assert_true(RoughCompareMatrix(m1r, m2r), "scale should return the same result as DOMMatrixReadOnly.");
|
|
assert_true(CompareMatrix(m1, m3), "scale should not mutate original matrix.");
|
|
}, "Test scale with undefined scaleY argument.");
|
|
|
|
test(function() {
|
|
var m1 = new WebKitCSSMatrix("matrix(1,2,3,4,5,6)");
|
|
var m2 = new DOMMatrix("matrix(1,2,3,4,5,6)");
|
|
var m3 = new WebKitCSSMatrix("matrix(1,2,3,4,5,6)");
|
|
|
|
var m1r = m1.scale(2, 3, undefined);
|
|
var m2r = m2.scaleNonUniform(2, 3, 1);
|
|
|
|
assert_true(RoughCompareMatrix(m1r, m2r), "scale should return the same result as DOMMatrixReadOnly.");
|
|
assert_true(CompareMatrix(m1, m3), "scale should not mutate original matrix.");
|
|
}, "Test scale with undefined scaleZ argument.");
|
|
|
|
test(function() {
|
|
var m1 = new WebKitCSSMatrix("matrix(1,2,3,4,5,6)");
|
|
var m2 = new DOMMatrix("matrix(1,2,3,4,5,6)");
|
|
var m3 = new WebKitCSSMatrix("matrix(1,2,3,4,5,6)");
|
|
|
|
var m1r = m1.rotate(2);
|
|
var m2r = m2.rotateAxisAngle(0, 0, 1, 2); // Rotate around unit vector on z-axis.
|
|
|
|
assert_true(RoughCompareMatrix(m1r, m2r));
|
|
assert_true(CompareMatrix(m1, m3), "rotate should not mutate original matrix.");
|
|
}, "Test rotate with 1 argument.");
|
|
|
|
test(function() {
|
|
var m1 = new WebKitCSSMatrix("matrix(1,2,3,4,5,6)");
|
|
var m2 = new DOMMatrix("matrix(1,2,3,4,5,6)");
|
|
var m3 = new WebKitCSSMatrix("matrix(1,2,3,4,5,6)");
|
|
|
|
var m1r = m1.rotate(2, 3);
|
|
var m2r = m2.rotateAxisAngle(0, 1, 0, 3); // Rotate around unit vector on x-axis.
|
|
m2r = m2r.rotateAxisAngle(1, 0, 0, 2); // Rotate around unit vector on y-axis.
|
|
|
|
assert_true(RoughCompareMatrix(m1r, m2r));
|
|
assert_true(CompareMatrix(m1, m3), "rotate should not mutate original matrix.");
|
|
}, "Test rotate with 2 arguments.");
|
|
|
|
test(function() {
|
|
var m1 = new WebKitCSSMatrix("matrix(1,2,3,4,5,6)");
|
|
var m2 = new DOMMatrix("matrix(1,2,3,4,5,6)");
|
|
var m3 = new WebKitCSSMatrix("matrix(1,2,3,4,5,6)");
|
|
|
|
var m1r = m1.rotate(2, 3, 4);
|
|
var m2r = m2.rotateAxisAngle(0, 0, 1, 4); // Rotate around unit vector on z-axis.
|
|
m2r = m2r.rotateAxisAngle(0, 1, 0, 3); // Rotate around unit vector on y-axis.
|
|
m2r = m2r.rotateAxisAngle(1, 0, 0, 2); // Rotate around unit vector on x-axis.
|
|
|
|
assert_true(RoughCompareMatrix(m1r, m2r));
|
|
assert_true(CompareMatrix(m1, m3), "rotate should not mutate original matrix.");
|
|
}, "Test rotate with 3 arguments.");
|
|
|
|
test(function() {
|
|
var m1 = new WebKitCSSMatrix("matrix(1,2,3,4,5,6)");
|
|
var m2 = new DOMMatrix("matrix(1,2,3,4,5,6)");
|
|
var m3 = new WebKitCSSMatrix("matrix(1,2,3,4,5,6)");
|
|
|
|
var m1r = m1.rotate(2, undefined, undefined);
|
|
var m2r = m2.rotateAxisAngle(0, 0, 1, 2); // Rotate around unit vector on z-axis.
|
|
|
|
assert_true(RoughCompareMatrix(m1r, m2r));
|
|
assert_true(CompareMatrix(m1, m3), "rotate should not mutate original matrix.");
|
|
}, "Test rotate with rotY and rotZ as undefined.");
|
|
|
|
test(function() {
|
|
var m1 = new WebKitCSSMatrix("matrix(1,2,3,4,5,6)");
|
|
var m2 = new DOMMatrix("matrix(1,2,3,4,5,6)");
|
|
var m3 = new WebKitCSSMatrix("matrix(1,2,3,4,5,6)");
|
|
|
|
var m1r = m1.rotate(undefined, 3, 4);
|
|
var m2r = m2.rotateAxisAngle(0, 0, 1, 4); // Rotate around unit vector on z-axis.
|
|
m2r = m2r.rotateAxisAngle(0, 1, 0, 3); // Rotate around unit vector on y-axis.
|
|
|
|
assert_true(RoughCompareMatrix(m1r, m2r));
|
|
assert_true(CompareMatrix(m1, m3), "rotate should not mutate original matrix.");
|
|
}, "Test rotate with rotX as undefined.");
|
|
|
|
test(function() {
|
|
var m1 = new WebKitCSSMatrix("matrix(1,2,3,4,5,6)");
|
|
var m2 = new DOMMatrix("matrix(1,2,3,4,5,6)");
|
|
var m3 = new WebKitCSSMatrix("matrix(1,2,3,4,5,6)");
|
|
|
|
var m1r = m1.rotateAxisAngle(2, 3, 4, 5);
|
|
var m2r = m2.rotateAxisAngle(2, 3, 4, 5);
|
|
|
|
assert_true(RoughCompareMatrix(m1r, m2r), "rotateAxisAngle should return the same result as DOMMatrixReadOnly.");
|
|
assert_true(CompareMatrix(m1, m3), "rotateAxisAngle should not mutate original matrix.");
|
|
}, "Test rotateAxisAngle.");
|
|
|
|
test(function() {
|
|
var m1 = new WebKitCSSMatrix("matrix(1,2,3,4,5,6)");
|
|
var m2 = new DOMMatrix("matrix(1,2,3,4,5,6)");
|
|
var m3 = new WebKitCSSMatrix("matrix(1,2,3,4,5,6)");
|
|
|
|
var m1r = m1.skewX(2);
|
|
var m2r = m2.skewX(2);
|
|
|
|
assert_true(RoughCompareMatrix(m1r, m2r), "skewX should return the same result as DOMMatrixReadOnly.");
|
|
assert_true(CompareMatrix(m1, m3), "skewX should not mutate original matrix.");
|
|
}, "Test skewX.");
|
|
|
|
test(function() {
|
|
var m1 = new WebKitCSSMatrix("matrix(1,2,3,4,5,6)");
|
|
var m2 = new DOMMatrix("matrix(1,2,3,4,5,6)");
|
|
var m3 = new WebKitCSSMatrix("matrix(1,2,3,4,5,6)");
|
|
|
|
var m1r = m1.skewY(2);
|
|
var m2r = m2.skewY(2);
|
|
|
|
assert_true(RoughCompareMatrix(m1r, m2r), "skewY should return the same result as DOMMatrixReadOnly.");
|
|
assert_true(CompareMatrix(m1, m3), "skewY should not mutate original matrix.");
|
|
}, "Test skewY.");
|
|
|
|
test(function() {
|
|
var m = new WebKitCSSMatrix("matrix(1,0,0,0,0,0)");
|
|
assert_throws("NotSupportedError", function() { m.inverse(); }, "Inverting an invertible matrix should throw.")
|
|
}, "Test that inverting an invertible matrix throws.");
|
|
|
|
test(function() {
|
|
var m1 = new WebKitCSSMatrix("translate(10px, 10px)");
|
|
var m2 = new DOMMatrix();
|
|
m2.translateSelf(10, 10);
|
|
assert_true(RoughCompareMatrix(m1, m2), "translate in constructor should result in translated matrix");
|
|
|
|
assert_throws("SyntaxError", function() { new WebKitCSSMatrix("translate(10em, 10em)"); }, "Transform function may not contain relative units.")
|
|
assert_throws("SyntaxError", function() { new WebKitCSSMatrix("translate(10%, 10%)"); }, "Transform function may not contain percentage.")
|
|
}, "Test constructor with translate");
|
|
|
|
test(function() {
|
|
assert_throws("SyntaxError", function() { new WebKitCSSMatrix("initial"); }, "initial is not a valid constructor argument.")
|
|
assert_throws("SyntaxError", function() { new WebKitCSSMatrix("inherit"); }, "inherit is not a valid constructor arugment.")
|
|
}, "Test invalid constructor arguments.");
|
|
</script>
|