fune/testing/web-platform/tests/css/css-easing/testcommon.js
Boris Chiou 0a23d58b21 Bug 1496619 - Part 2: Rename css-timing to css-easing r=birtles
Rename css-timing to css-easing according to the spec update.

Depends on D9309

Differential Revision: https://phabricator.services.mozilla.com/D9310

--HG--
rename : testing/web-platform/meta/css/css-timing/__dir__.ini => testing/web-platform/meta/css/css-easing/__dir__.ini
rename : testing/web-platform/tests/css/css-timing/META.yml => testing/web-platform/tests/css/css-easing/META.yml
rename : testing/web-platform/tests/css/css-timing/cubic-bezier-timing-functions-output.html => testing/web-platform/tests/css/css-easing/cubic-bezier-timing-functions-output.html
rename : testing/web-platform/tests/css/css-timing/step-timing-functions-output.html => testing/web-platform/tests/css/css-easing/step-timing-functions-output.html
rename : testing/web-platform/tests/css/css-timing/testcommon.js => testing/web-platform/tests/css/css-easing/testcommon.js
extra : moz-landing-system : lando
2018-10-26 18:03:27 +00:00

65 lines
1.6 KiB
JavaScript

'use strict';
// Creates a <div> element, appends it to the document body and
// removes the created element during test cleanup.
function createDiv(test, doc) {
return createElement(test, 'div', doc);
}
// Creates an element with the given |tagName|, appends it to the document body
// and removes the created element during test cleanup.
// If |tagName| is null or undefined, creates a <div> element.
function createElement(test, tagName, doc) {
if (!doc) {
doc = document;
}
var element = doc.createElement(tagName || 'div');
doc.body.appendChild(element);
test.add_cleanup(function() {
element.remove();
});
return element;
}
// Convert px unit value to a Number
function pxToNum(str) {
return Number(String(str).match(/^(-?[\d.]+)px$/)[1]);
}
// Cubic bezier with control points (0, 0), (x1, y1), (x2, y2), and (1, 1).
function cubicBezier(x1, y1, x2, y2) {
function xForT(t) {
var omt = 1-t;
return 3 * omt * omt * t * x1 + 3 * omt * t * t * x2 + t * t * t;
}
function yForT(t) {
var omt = 1-t;
return 3 * omt * omt * t * y1 + 3 * omt * t * t * y2 + t * t * t;
}
function tForX(x) {
// Binary subdivision.
var mint = 0, maxt = 1;
for (var i = 0; i < 30; ++i) {
var guesst = (mint + maxt) / 2;
var guessx = xForT(guesst);
if (x < guessx) {
maxt = guesst;
} else {
mint = guesst;
}
}
return (mint + maxt) / 2;
}
return function bezierClosure(x) {
if (x == 0) {
return 0;
}
if (x == 1) {
return 1;
}
return yForT(tForX(x));
}
}