<!DOCTYPE html>
<html>
<style>
* { font-size: 16px; }
div { font-size: 8px; }
</style>
<body>
<script src="../../resources/js-test-pre.js"></script>
<script>
description('Test parsing and computation of CSS image filter() function.');

function computedStyle(property, value) {
    var div = document.createElement("div");
    document.body.appendChild(div);
    div.style.setProperty(property, value);
    var computedValue = getComputedStyle(div).getPropertyValue(property);
    document.body.removeChild(div);
    return computedValue;
}

function innerStyle(property, value) {
    var div = document.createElement("div");
    div.style.setProperty(property, value);
    return div.style.getPropertyValue(property);
}

function testComputed(property, value, expected) {
    shouldBeEqualToString('computedStyle("' + property + '", "' + value + '")', expected);
}

function testInner(property, value, expected) {
    if (expected === null)
        shouldBeNull('innerStyle("' + property + '", "' + value + '")');
    else
        shouldBeEqualToString('innerStyle("' + property + '", "' + value + '")', expected);
}

function negativeTest(property, value) {
    testInner(property, value, null);
    // FIXME: Computed style not yet implemented.
    testComputed(property, value, 'none');
}

// Test different filter combination.
testInner(
    "background-image",
    "-webkit-filter(none, blur(3px))",
    "-webkit-filter(none, blur(3px))");
testInner(
    "background-image",
    "-webkit-filter(none, url('#a'))",
    "-webkit-filter(none, url('#a'))");
testInner(
    "background-image",
    "-webkit-filter(none, url(#a))",
    "-webkit-filter(none, url('#a'))");
testInner(
    "background-image",
    "-webkit-filter(none, url('#a') url('#b'))",
    "-webkit-filter(none, url('#a') url('#b'))");
testInner(
    "background-image",
    "-webkit-filter(none, grayscale(1) url('#a'))",
    "-webkit-filter(none, grayscale(1) url('#a'))");
testInner(
    "background-image",
    "-webkit-filter(none, grayscale(1))",
    "-webkit-filter(none, grayscale(1))");
testInner(
    "background-image",
    "-webkit-filter(none, grayscale(50%))",
    "-webkit-filter(none, grayscale(50%))");
testInner(
    "background-image",
    "-webkit-filter(none, grayscale(1.0))",
    "-webkit-filter(none, grayscale(1))");
testInner(
    "background-image",
    "-webkit-filter(none, grayscale(0))",
    "-webkit-filter(none, grayscale(0))");
testInner(
    "background-image",
    "-webkit-filter(none, grayscale(0.5) grayscale(0.25))",
    "-webkit-filter(none, grayscale(0.5) grayscale(0.25))");
testInner(
    "background-image",
    "-webkit-filter(none, sepia(1))",
    "-webkit-filter(none, sepia(1))");
testInner(
    "background-image",
    "-webkit-filter(none, sepia(50%))",
    "-webkit-filter(none, sepia(50%))");
testInner(
    "background-image",
    "-webkit-filter(none, sepia(1.0))",
    "-webkit-filter(none, sepia(1))");
testInner(
    "background-image",
    "-webkit-filter(none, sepia(0))",
    "-webkit-filter(none, sepia(0))");
testInner(
    "background-image",
    "-webkit-filter(none, sepia(0.5) sepia(0.25))",
    "-webkit-filter(none, sepia(0.5) sepia(0.25))");
testInner(
    "background-image",
    "-webkit-filter(none, sepia(0.5) grayscale(0.25))",
    "-webkit-filter(none, sepia(0.5) grayscale(0.25))");
testInner(
    "background-image",
    "-webkit-filter(none, saturate(1))",
    "-webkit-filter(none, saturate(1))");
testInner(
    "background-image",
    "-webkit-filter(none, saturate(50%))",
    "-webkit-filter(none, saturate(50%))");
testInner(
    "background-image",
    "-webkit-filter(none, saturate(250%))",
    "-webkit-filter(none, saturate(250%))");
testInner(
    "background-image",
    "-webkit-filter(none, saturate(1.0))",
    "-webkit-filter(none, saturate(1))");
testInner(
    "background-image",
    "-webkit-filter(none, saturate(5.5))",
    "-webkit-filter(none, saturate(5.5))");
testInner(
    "background-image",
    "-webkit-filter(none, saturate(0))",
    "-webkit-filter(none, saturate(0))");
testInner(
    "background-image",
    "-webkit-filter(none, saturate(0.5) saturate(0.25))",
    "-webkit-filter(none, saturate(0.5) saturate(0.25))");
testInner(
    "background-image",
    "-webkit-filter(none, saturate(0.5) grayscale(0.25))",
    "-webkit-filter(none, saturate(0.5) grayscale(0.25))");
testInner(
    "background-image",
    "-webkit-filter(none, hue-rotate(10deg))",
    "-webkit-filter(none, hue-rotate(10deg))");
testInner(
    "background-image",
    "-webkit-filter(none, hue-rotate(10.0deg))",
    "-webkit-filter(none, hue-rotate(10deg))");
testInner(
    "background-image",
    "-webkit-filter(none, hue-rotate(10rad))",
    "-webkit-filter(none, hue-rotate(10rad))");
testInner(
    "background-image",
    "-webkit-filter(none, hue-rotate(10grad))",
    "-webkit-filter(none, hue-rotate(10grad))");
testInner(
    "background-image",
    "-webkit-filter(none, hue-rotate(0.5turn))",
    "-webkit-filter(none, hue-rotate(0.5turn))");
testInner(
    "background-image",
    "-webkit-filter(none, hue-rotate(0))",
    "-webkit-filter(none, hue-rotate(0deg))");
testInner(
    "background-image",
    "-webkit-filter(none, hue-rotate(10deg) grayscale(0.25))",
    "-webkit-filter(none, hue-rotate(10deg) grayscale(0.25))");
testInner(
    "background-image",
    "-webkit-filter(none, invert(1))",
    "-webkit-filter(none, invert(1))");
testInner(
    "background-image",
    "-webkit-filter(none, invert(50%))",
    "-webkit-filter(none, invert(50%))");
testInner(
    "background-image",
    "-webkit-filter(none, invert(1.0))",
    "-webkit-filter(none, invert(1))");
testInner(
    "background-image",
    "-webkit-filter(none, invert(0))",
    "-webkit-filter(none, invert(0))");
testInner(
    "background-image",
    "-webkit-filter(none, invert(0.5) invert(0.25))",
    "-webkit-filter(none, invert(0.5) invert(0.25))");
testInner(
    "background-image",
    "-webkit-filter(none, invert(0.5) grayscale(0.25))",
    "-webkit-filter(none, invert(0.5) grayscale(0.25))");
testInner(
    "background-image",
    "-webkit-filter(none, opacity(1))",
    "-webkit-filter(none, opacity(1))");
testInner(
    "background-image",
    "-webkit-filter(none, opacity(50%))",
    "-webkit-filter(none, opacity(50%))");
testInner(
    "background-image",
    "-webkit-filter(none, opacity(1.0))",
    "-webkit-filter(none, opacity(1))");
testInner(
    "background-image",
    "-webkit-filter(none, opacity(0))",
    "-webkit-filter(none, opacity(0))");
testInner(
    "background-image",
    "-webkit-filter(none, opacity(0.5) opacity(0.25))",
    "-webkit-filter(none, opacity(0.5) opacity(0.25))");
testInner(
    "background-image",
    "-webkit-filter(none, opacity(0.5) grayscale(0.25))",
    "-webkit-filter(none, opacity(0.5) grayscale(0.25))");
testInner(
    "background-image",
    "-webkit-filter(none, brightness(1))",
    "-webkit-filter(none, brightness(1))");
testInner(
    "background-image",
    "-webkit-filter(none, brightness(50%))",
    "-webkit-filter(none, brightness(50%))");
testInner(
    "background-image",
    "-webkit-filter(none, brightness(1.0))",
    "-webkit-filter(none, brightness(1))");
testInner(
    "background-image",
    "-webkit-filter(none, brightness(0))",
    "-webkit-filter(none, brightness(0))");
testInner(
    "background-image",
    "-webkit-filter(none, brightness(0.5) brightness(0.25))",
    "-webkit-filter(none, brightness(0.5) brightness(0.25))");
testInner(
    "background-image",
    "-webkit-filter(none, brightness(0.5) grayscale(0.25))",
    "-webkit-filter(none, brightness(0.5) grayscale(0.25))");
testInner(
    "background-image",
    "-webkit-filter(none, brightness(-1.1))",
    "-webkit-filter(none, brightness(-1.1))");
testInner(
    "background-image",
    "-webkit-filter(none, brightness(101%))",
    "-webkit-filter(none, brightness(101%))");
testInner(
    "background-image",
    "-webkit-filter(none, grayscale(0.25) brightness(0.5))",
    "-webkit-filter(none, grayscale(0.25) brightness(0.5))");
testInner(
    "background-image",
    "-webkit-filter(none, contrast(1))",
    "-webkit-filter(none, contrast(1))");
testInner(
    "background-image",
    "-webkit-filter(none, contrast(50%))",
    "-webkit-filter(none, contrast(50%))");
testInner(
    "background-image",
    "-webkit-filter(none, contrast(250%))",
    "-webkit-filter(none, contrast(250%))");
testInner(
    "background-image",
    "-webkit-filter(none, contrast(1.0))",
    "-webkit-filter(none, contrast(1))");
testInner(
    "background-image",
    "-webkit-filter(none, contrast(0))",
    "-webkit-filter(none, contrast(0))");
testInner(
    "background-image",
    "-webkit-filter(none, contrast(2))",
    "-webkit-filter(none, contrast(2))");
testInner(
    "background-image",
    "-webkit-filter(none, contrast(0.5) contrast(0.25))",
    "-webkit-filter(none, contrast(0.5) contrast(0.25))");
testInner(
    "background-image",
    "-webkit-filter(none, contrast(0.5) grayscale(0.25))",
    "-webkit-filter(none, contrast(0.5) grayscale(0.25))");
testInner(
    "background-image",
    "-webkit-filter(none, grayscale(0.25) contrast(0.5))",
    "-webkit-filter(none, grayscale(0.25) contrast(0.5))");
testInner(
    "background-image",
    "-webkit-filter(none, blur(0))",
    "-webkit-filter(none, blur(0px))");
testInner(
    "background-image",
    "-webkit-filter(none, blur(10px))",
    "-webkit-filter(none, blur(10px))");
testInner(
    "background-image",
    "-webkit-filter(none, drop-shadow(red 1px 2px 3px))",
    "-webkit-filter(none, drop-shadow(red 1px 2px 3px))");
testInner(
    "background-image",
    "-webkit-filter(none, drop-shadow(1px 2px 3px red))",
    "-webkit-filter(none, drop-shadow(red 1px 2px 3px))");
testInner(
    "background-image",
    "-webkit-filter(none, drop-shadow(#abc 0 0 0))",
    "-webkit-filter(none, drop-shadow(rgb(170, 187, 204) 0px 0px 0px))");
testInner(
    "background-image",
    "-webkit-filter(none, drop-shadow(0 0 0))",
    "-webkit-filter(none, drop-shadow(0px 0px 0px))");
testInner(
    "background-image",
    "-webkit-filter(none, drop-shadow(1px 2px))",
    "-webkit-filter(none, drop-shadow(1px 2px))");
testInner(
    "background-image",
    "-webkit-filter(none, grayscale(0.5) sepia(0.25) saturate(0.75) hue-rotate(35deg) invert(0.2) opacity(0.9) blur(5px) drop-shadow(green 1px 2px 3px))",
    "-webkit-filter(none, grayscale(0.5) sepia(0.25) saturate(0.75) hue-rotate(35deg) invert(0.2) opacity(0.9) blur(5px) drop-shadow(green 1px 2px 3px))");

// Test different CSS Image values.
testInner(
    "background-image",
    "-webkit-filter(radial-gradient(ellipse closest-corner, white, black), hue-rotate(90deg))",
    "-webkit-filter(radial-gradient(closest-corner, white, black), hue-rotate(90deg))");
testInner(
    "background-image",
    "-webkit-filter(radial-gradient(circle closest-side at 50px 50%, white, black), hue-rotate(90deg))",
    "-webkit-filter(radial-gradient(circle closest-side at 50px 50%, white, black), hue-rotate(90deg))");
testInner(
    "background-image",
    "-webkit-filter(radial-gradient(ellipse closest-corner at 20px 50px, white, black), hue-rotate(90deg))",
    "-webkit-filter(radial-gradient(closest-corner at 20px 50px, white, black), hue-rotate(90deg))");
testInner(
    "background-image",
    "-webkit-filter(linear-gradient(white, black), hue-rotate(90deg))",
    "-webkit-filter(linear-gradient(white, black), hue-rotate(90deg))");
testInner(
    "background-image",
    "-webkit-filter(linear-gradient(to top left, white, black), hue-rotate(90deg))",
    "-webkit-filter(linear-gradient(to left top, white, black), hue-rotate(90deg))");
testInner(
    "background-image",
    "-webkit-filter(linear-gradient(0deg, white -20%, blue, black 120%), hue-rotate(90deg))",
    "-webkit-filter(linear-gradient(0deg, white -20%, blue, black 120%), hue-rotate(90deg))");
testInner(
    "background-image",
    "-webkit-filter(-webkit-cross-fade(url(http://image1.png), url(http://image2.png), 50%), contrast(0.5))",
    "-webkit-filter(-webkit-cross-fade(url(http://image1.png/), url(http://image2.png/), 0.5), contrast(0.5))");
testInner(
    "background-image",
    "-webkit-filter(url(http://image1.png), brightness(50%))",
    "-webkit-filter(url(http://image1.png/), brightness(50%))");
testInner(
    "background-image",
    "-webkit-filter('http://image1.png', brightness(50%))",
    "-webkit-filter(url(http://image1.png/), brightness(50%))");

// Test different properties, taking CSS Image values.
testInner(
    "border-image-source",
    "-webkit-filter(url(http://image1.png), invert(50%))",
    "-webkit-filter(url(http://image1.png/), invert(50%))");
testInner(
    "-webkit-mask-image",
    "-webkit-filter(url(http://image1.png), invert(50%))",
    "-webkit-filter(url(http://image1.png/), invert(50%))");
testInner(
    "-webkit-mask-box-image-source",
    "-webkit-filter(url(http://image1.png), invert(50%))",
    "-webkit-filter(url(http://image1.png/), invert(50%))");
testInner(
    "content",
    "-webkit-filter(url(http://image1.png), invert(50%))",
    "-webkit-filter(url(http://image1.png/), invert(50%))");

// negative tests
negativeTest("background-image", "-webkit-filter()");
negativeTest("background-image", "-webkit-filter(url(image1.png))");
negativeTest("background-image", "-webkit-filter(url(image1.png), )");
negativeTest("background-image", "-webkit-filter(url(image1.png) brightness(50%))");
negativeTest("background-image", "-webkit-filter(brightness(50%) url(image1.png))");
negativeTest("background-image", "-webkit-filter(brightness(50%), url(image1.png))");
negativeTest("background-image", "-webkit-filter(url(image1.png) url(#filter))");
negativeTest("background-image", "-webkit-filter(brightness(50%))");
negativeTest("background-image", "-webkit-filter(brightness(50%), )");
negativeTest("background-image", "-webkit-filter(url(image1.png), brightness(50%), brightness(50%))");
negativeTest("background-image", "-webkit-filter(url(image1.png) url(image2.png), brightness(50%))");
negativeTest("background-image", "-webkit-filter(url(image1.png), url(image2.png), brightness(50%))");
negativeTest("background-image", "-webkit-filter(invalidToken.png, blur(3px))");
</script>
<script src="../../resources/js-test-post.js"></script>
</body>
</html>
