aboutsummaryrefslogtreecommitdiffstats
path: root/tests/wpt/css-tests/css-transitions-1_dev/html/support/vendorPrefix.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/support/vendorPrefix.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/support/vendorPrefix.js')
-rw-r--r--tests/wpt/css-tests/css-transitions-1_dev/html/support/vendorPrefix.js86
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