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/support/vendorPrefix.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/support/vendorPrefix.js')
-rw-r--r-- | tests/wpt/css-tests/css-transitions-1_dev/html/support/vendorPrefix.js | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/tests/wpt/css-tests/css-transitions-1_dev/html/support/vendorPrefix.js b/tests/wpt/css-tests/css-transitions-1_dev/html/support/vendorPrefix.js new file mode 100644 index 00000000000..6cf3c5a3783 --- /dev/null +++ b/tests/wpt/css-tests/css-transitions-1_dev/html/support/vendorPrefix.js @@ -0,0 +1,86 @@ +// +// Vendor-Prefix Helper Functions For Testing CSS +// + +(function(root) { +'use strict'; + +var prefixCache = {}; + +// convert "foo-bar" to "fooBar" +function camelCase(str) { + return str.replace(/\-(\w)/g, function(match, letter){ + return letter.toUpperCase(); + }); +} + +// vendor-prefix a css property +root.addVendorPrefix = function (name) { + var prefix = getVendorPrefix(name); + if (prefix === false) { + // property unknown to browser + return name; + } + + return prefix + name; +}; + +// vendor-prefix a css property value +root.addValueVendorPrefix = function (property, value) { + var prefix = getValueVendorPrefix(property, value); + if (prefix === false) { + // property unknown to browser + return name; + } + + return prefix + value; +}; + +// identify vendor-prefix for css property +root.getVendorPrefix = function(name) { + if (prefixCache[name] !== undefined) { + return prefixCache[name]; + } + + var elem = document.createElement("div"); + name = camelCase(name); + + if (name in elem.style) { + return prefixCache[name] = ""; + } + + var prefixes = ["Webkit", "Moz", "O", "ms"]; + var styles = ["-webkit-", "-moz-", "-o-", "-ms-"]; + var _name = name.substring(0, 1).toUpperCase() + name.substring(1); + + for (var i = 0, length = prefixes.length; i < length; i++) { + if (prefixes[i] + _name in elem.style) { + return prefixCache[name] = styles[i]; + } + } + + return prefixCache[name] = name in elem.style ? "" : false; +}; + +// identify vendor-prefix for css property value +root.getValueVendorPrefix = function(property, value) { + var elem = document.createElement("div"); + // note: webkit needs the element to be attached to the dom + document.body.appendChild(elem); + var styles = ["-webkit-", "-moz-", "-o-", "-ms-", ""]; + var _property = getVendorPrefix(property) + property; + for (var i=0, length = styles.length; i < length; i++) { + var _value = styles[i] + value; + elem.setAttribute('style', _property + ": " + _value); + var _computed = computedStyle(elem, _property); + if (_computed && _computed !== 'none') { + document.body.removeChild(elem); + return styles[i]; + } + } + document.body.removeChild(elem); + return false; +}; + + +})(window);
\ No newline at end of file |