From 26a029d407be480d791972afb5975cf62c9360a6 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 19 Apr 2024 02:47:55 +0200 Subject: Adding upstream version 124.0.1. Signed-off-by: Daniel Baumann --- .../tests/css/css-easing/testcommon.js | 65 ++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 testing/web-platform/tests/css/css-easing/testcommon.js (limited to 'testing/web-platform/tests/css/css-easing/testcommon.js') diff --git a/testing/web-platform/tests/css/css-easing/testcommon.js b/testing/web-platform/tests/css/css-easing/testcommon.js new file mode 100644 index 0000000000..9fd25b8650 --- /dev/null +++ b/testing/web-platform/tests/css/css-easing/testcommon.js @@ -0,0 +1,65 @@ +'use strict'; + +// Creates a
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
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)); + } +} -- cgit v1.2.3