blob: a19078e41efe2751cb1fa053359c6bb1a747e37a [file] [log] [blame]
description("Test mix() function JS bindings.");
function jsWrapperClass(node) {
if (!node)
return "[null]";
var string = Object.prototype.toString.apply(node);
return string.substr(8, string.length - 9);
}
function shouldBeType(expression, className, prototypeName, constructorName) {
if (!prototypeName)
prototypeName = className + "Prototype";
if (!constructorName)
constructorName = className + "Constructor";
shouldBe("jsWrapperClass(" + expression + ")", "'" + className + "'");
shouldBe("jsWrapperClass(" + expression + ".__proto__)", "'" + prototypeName + "'");
shouldBe("jsWrapperClass(" + expression + ".constructor)", "'" + constructorName + "'");
}
function removeBaseURL(src) {
var urlRegexp = /url\(([^\)]*)\)/g;
return src.replace(urlRegexp, function(match, url) {
return "url(" + url.substr(url.lastIndexOf("/") + 1) + ")";
});
}
if (window.testRunner) {
window.testRunner.overridePreference("WebKitCSSCustomFilterEnabled", "1");
window.testRunner.overridePreference("WebKitWebGLEnabled", "1");
}
var styleElement = document.createElement("style");
document.head.appendChild(styleElement);
var stylesheet = styleElement.sheet;
stylesheet.addRule("body", "-webkit-filter: custom(none mix(url('../resources/color-offset.fs')))", 0);
var cssRule = stylesheet.cssRules.item(0);
shouldBe("cssRule.type", "1");
var declaration = cssRule.style;
shouldBe("declaration.length", "1");
var filterRule = declaration.getPropertyCSSValue('-webkit-filter');
var mixFunction = filterRule[0][0][1];
shouldBeType("mixFunction", "WebKitCSSMixFunctionValue");
var mixFunctionContent = removeBaseURL(mixFunction.cssText);
shouldBeEqualToString("mixFunctionContent", "mix(url(color-offset.fs))");
successfullyParsed = true;