blob: c7aa033d6b7f45b7fe14ca27dda20fb435862f1e [file] [edit]
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
</head>
<body>
<p id="description"></p>
<div id="console"></div>
<script>
description("Test the parsing of the image-set and -webkit-image-set functions.");
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)
{
shouldBe("jsWrapperClass(" + expression + ")", "'" + className + "'");
shouldBe("jsWrapperClass(" + expression + ".__proto__)", "'" + className + "'");
shouldBe("jsWrapperClass(" + expression + ".constructor)", "'Function'");
}
// These have to be global for the test helpers to see them.
var imageSetRule, serializedRule
function testImageSetRule(description, property, rule, expectedSerialization)
{
["image-set", "-webkit-image-set"].forEach((valueName) => {
debug("");
debug(`${description}: ${valueName}(${rule})`);
var div = document.createElement("div");
div.setAttribute("style", property + ": " + valueName + "(" + rule + ")");
document.body.appendChild(div);
imageSetRule = div.style.getPropertyCSSValue(property);
shouldBeType("imageSetRule", "CSSValueList");
serializedRule = div.style.getPropertyValue(property);
expectTrue(serializedRule == `image-set(${expectedSerialization})`, "Image Set rule serializes as expected.");
document.body.removeChild(div);
});
}
testImageSetRule("Single value for -webkit-mask-box-image-source",
"-webkit-mask-box-image-source",
"url('#a')",
"url(\"#a\") 1x");
testImageSetRule("Multiple values for -webkit-mask-box-image-source",
"-webkit-mask-box-image-source",
"url('#a'), url('#b') 2x",
"url(\"#a\") 1x, url(\"#b\") 2x");
testImageSetRule("Single value for -webkit-mask-box-image-source with gradient.",
"-webkit-mask-box-image-source",
"linear-gradient(green, white)",
"linear-gradient(green, white) 1x");
testImageSetRule("Multiple values for -webkit-mask-box-image-source with gradients",
"-webkit-mask-box-image-source",
"linear-gradient(green, white) 1x, radial-gradient(blue, white) 2x",
"linear-gradient(green, white) 1x, radial-gradient(blue, white) 2x");
testImageSetRule("Combined gradient and URL for -webkit-mask-box-image-source",
"-webkit-mask-box-image-source",
"url(\"#a\"), linear-gradient(green, white) 2x",
"url(\"#a\") 1x, linear-gradient(green, white) 2x");
testImageSetRule("Single -webkit-cross-fade for -webkit-mask-box-image-source",
"-webkit-mask-box-image-source",
"-webkit-cross-fade(url(\"#a\"), url(\"#b\"), 70%)",
"-webkit-cross-fade(url(\"#a\"), url(\"#b\"), 0.7) 1x");
testImageSetRule("Combined gradient and cross-fade for -webkit-mask-box-image-source",
"-webkit-mask-box-image-source",
"-webkit-cross-fade(url(\"#a\"), url(\"#b\"), 70%), linear-gradient(green, white) 2x",
"-webkit-cross-fade(url(\"#a\"), url(\"#b\"), 0.7) 1x, linear-gradient(green, white) 2x");
testImageSetRule("Single value for -webkit-mask-box-image-source with gradient and dpi",
"-webkit-mask-box-image-source",
"linear-gradient(green, white) 192dpi",
"linear-gradient(green, white) 192dpi");
successfullyParsed = true;
</script>
<script src="../../resources/js-test-post.js"></script>
</body>
</html>