| Index: third_party/WebKit/LayoutTests/imported/wpt/web-animations/testcommon.js
|
| diff --git a/third_party/WebKit/LayoutTests/imported/wpt/web-animations/testcommon.js b/third_party/WebKit/LayoutTests/imported/wpt/web-animations/testcommon.js
|
| index 31ebdfaf279deca00ef5384fd7d347e1cf00e8e1..348af6e5c1738227d0e5475158b241039fe3cfb0 100644
|
| --- a/third_party/WebKit/LayoutTests/imported/wpt/web-animations/testcommon.js
|
| +++ b/third_party/WebKit/LayoutTests/imported/wpt/web-animations/testcommon.js
|
| @@ -174,3 +174,68 @@ function waitForAnimationFramesWithDelay(minDelay) {
|
| }());
|
| });
|
| }
|
| +
|
| +// Returns 'matrix()' or 'matrix3d()' function string generated from an array.
|
| +function createMatrixFromArray(array) {
|
| + return (array.length == 16 ? 'matrix3d' : 'matrix') +
|
| + '(' + array.join() + ')';
|
| +}
|
| +
|
| +// Returns 'matrix3d()' function string equivalent to
|
| +// 'rotate3d(x, y, z, radian)'.
|
| +function rotate3dToMatrix3d(x, y, z, radian) {
|
| + return createMatrixFromArray(rotate3dToMatrix(x, y, z, radian));
|
| +}
|
| +
|
| +// Returns an array of the 4x4 matrix equivalent to 'rotate3d(x, y, z, radian)'.
|
| +// https://www.w3.org/TR/css-transforms-1/#Rotate3dDefined
|
| +function rotate3dToMatrix(x, y, z, radian) {
|
| + var sc = Math.sin(radian / 2) * Math.cos(radian / 2);
|
| + var sq = Math.sin(radian / 2) * Math.sin(radian / 2);
|
| +
|
| + // Normalize the vector.
|
| + var length = Math.sqrt(x*x + y*y + z*z);
|
| + x /= length;
|
| + y /= length;
|
| + z /= length;
|
| +
|
| + return [
|
| + 1 - 2 * (y*y + z*z) * sq,
|
| + 2 * (x * y * sq + z * sc),
|
| + 2 * (x * z * sq - y * sc),
|
| + 0,
|
| + 2 * (x * y * sq - z * sc),
|
| + 1 - 2 * (x*x + z*z) * sq,
|
| + 2 * (y * z * sq + x * sc),
|
| + 0,
|
| + 2 * (x * z * sq + y * sc),
|
| + 2 * (y * z * sq - x * sc),
|
| + 1 - 2 * (x*x + y*y) * sq,
|
| + 0,
|
| + 0,
|
| + 0,
|
| + 0,
|
| + 1
|
| + ];
|
| +}
|
| +
|
| +// Compare matrix string like 'matrix(1, 0, 0, 1, 100, 0)' with tolerances.
|
| +function assert_matrix_equals(actual, expected, description) {
|
| + var matrixRegExp = /^matrix(?:3d)*\((.+)\)/;
|
| + assert_regexp_match(actual, matrixRegExp,
|
| + 'Actual value is not a matrix')
|
| + assert_regexp_match(expected, matrixRegExp,
|
| + 'Expected value is not a matrix');
|
| +
|
| + var actualMatrixArray =
|
| + actual.match(matrixRegExp)[1].split(',').map(Number);
|
| + var expectedMatrixArray =
|
| + expected.match(matrixRegExp)[1].split(',').map(Number);
|
| +
|
| + assert_equals(actualMatrixArray.length, expectedMatrixArray.length,
|
| + 'dimension of the matrix: ' + description);
|
| + for (var i = 0; i < actualMatrixArray.length; i++) {
|
| + assert_approx_equals(actualMatrixArray[i], expectedMatrixArray[i], 0.0001,
|
| + 'expecetd ' + expected + ' but got ' + actual + ": " + description);
|
| + }
|
| +}
|
|
|