aboutsummaryrefslogtreecommitdiffstats
path: root/tests/wpt/css-tests/css-transitions-1_dev/html/reference/support/helper.js
diff options
context:
space:
mode:
authorJames Graham <james@hoppipolla.co.uk>2015-03-27 09:18:12 +0000
committerJames Graham <james@hoppipolla.co.uk>2015-04-03 23:29:19 +0100
commit2c9faf5363be229498578bdeca55c0c52730f0fa (patch)
treee070d5d12a587f1e1939410b2cd88450543d7534 /tests/wpt/css-tests/css-transitions-1_dev/html/reference/support/helper.js
parent1a81b18b9f22d7bc1a967d08fcc7fbcf2ee200f5 (diff)
downloadservo-2c9faf5363be229498578bdeca55c0c52730f0fa.tar.gz
servo-2c9faf5363be229498578bdeca55c0c52730f0fa.zip
Update CSS tests to revision 31d63cc79bd4c929ed582229e936d7b389f3e6ab
Diffstat (limited to 'tests/wpt/css-tests/css-transitions-1_dev/html/reference/support/helper.js')
-rw-r--r--tests/wpt/css-tests/css-transitions-1_dev/html/reference/support/helper.js122
1 files changed, 122 insertions, 0 deletions
diff --git a/tests/wpt/css-tests/css-transitions-1_dev/html/reference/support/helper.js b/tests/wpt/css-tests/css-transitions-1_dev/html/reference/support/helper.js
new file mode 100644
index 00000000000..642ee3435c9
--- /dev/null
+++ b/tests/wpt/css-tests/css-transitions-1_dev/html/reference/support/helper.js
@@ -0,0 +1,122 @@
+//
+// Simple Helper Functions For Testing CSS
+//
+
+(function(root) {
+'use strict';
+
+// serialize styles object and dump to dom
+// appends <style id="dynamic-style"> to <head>
+// setStyle("#some-selector", {"some-style" : "value"})
+// setStyle({"#some-selector": {"some-style" : "value"}})
+root.setStyle = function(selector, styles) {
+ var target = document.getElementById('dynamic-style');
+ if (!target) {
+ target = document.createElement('style');
+ target.id = 'dynamic-style';
+ target.type = "text/css";
+ document.getElementsByTagName('head')[0].appendChild(target);
+ }
+
+ var data = [];
+ // single selector/styles
+ if (typeof selector === 'string' && styles !== undefined) {
+ data = [selector, '{', serializeStyles(styles), '}'];
+ target.textContent = data.join("\n");
+ return;
+ }
+ // map of selector/styles
+ for (var key in selector) {
+ if (Object.prototype.hasOwnProperty.call(selector, key)) {
+ var _data = [key, '{', serializeStyles(selector[key]), '}'];
+ data.push(_data.join('\n'));
+ }
+ }
+
+ target.textContent = data.join("\n");
+};
+
+function serializeStyles(styles) {
+ var data = [];
+ for (var property in styles) {
+ if (Object.prototype.hasOwnProperty.call(styles, property)) {
+ var prefixedProperty = addVendorPrefix(property);
+ data.push(prefixedProperty + ":" + styles[property] + ";");
+ }
+ }
+
+ return data.join('\n');
+}
+
+
+// shorthand for computed style
+root.computedStyle = function(element, property, pseudo) {
+ var prefixedProperty = addVendorPrefix(property);
+ return window
+ .getComputedStyle(element, pseudo || null)
+ .getPropertyValue(prefixedProperty);
+};
+
+// flush rendering buffer
+root.reflow = function() {
+ document.body.offsetWidth;
+};
+
+// add all known TransitionEnd events to element
+root.addTransitionEvent = function(element, handler) {
+ return addEvent(element, 'TransitionEnd webkitTransitionEnd transitionend oTransitionEnd otransitionend MSTransitionEnd', handler);
+};
+
+// add space-separated list of events to element
+root.addEvent = function(element, events, handler) {
+ var _events = {};
+ var tokens = events.split(" ");
+ for (var i = 0, token; token = tokens[i]; i++) {
+ element.addEventListener(token, handler, false);
+ _events[token] = handler;
+ }
+ return _events;
+};
+
+// merge objects
+root.extend = function(target /*, ..rest */) {
+ Array.prototype.slice.call(arguments, 1).forEach(function(obj) {
+ Object.keys(obj).forEach(function(key) {
+ target[key] = obj[key];
+ });
+ });
+
+ return target;
+};
+
+// dom fixture helper ("resetting dom test elements")
+var _domFixture;
+var _domFixtureSelector;
+root.domFixture = function(selector) {
+ var fixture = document.querySelector(selector || _domFixtureSelector);
+ if (!fixture) {
+ throw new Error('fixture ' + (selector || _domFixtureSelector) + ' not found!');
+ }
+ if (!_domFixture && selector) {
+ // save a copy
+ _domFixture = fixture.cloneNode(true);
+ _domFixtureSelector = selector;
+ } else if (_domFixture) {
+ // restore the copy
+ var tmp = _domFixture.cloneNode(true);
+ fixture.parentNode.replaceChild(tmp, fixture);
+ } else {
+ throw new Error('domFixture must be initialized first!');
+ }
+};
+
+// return requestAnimationFrame handler, if available
+root.getRequestAnimationFrame = function() {
+ return window.requestAnimationFrame
+ || window.mozRequestAnimationFrame
+ || window.webkitRequestAnimationFrame
+ || window.msRequestAnimationFrame
+ || window.oRequestAnimationFrame;
+};
+
+})(window); \ No newline at end of file