diff options
author | James Graham <james@hoppipolla.co.uk> | 2015-03-27 09:18:12 +0000 |
---|---|---|
committer | James Graham <james@hoppipolla.co.uk> | 2015-04-03 23:29:19 +0100 |
commit | 2c9faf5363be229498578bdeca55c0c52730f0fa (patch) | |
tree | e070d5d12a587f1e1939410b2cd88450543d7534 /tests/wpt/css-tests/css-transitions-1_dev/html/reference/support/helper.js | |
parent | 1a81b18b9f22d7bc1a967d08fcc7fbcf2ee200f5 (diff) | |
download | servo-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.js | 122 |
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 |