blob: 8071f93fb6cc9f19ccb8d908c130f5f42e186698 [file] [log] [blame]
description("Test the computed style of the -webkit-filter property.");
// These have to be global for the test helpers to see them.
var stylesheet, filterStyle, subRule;
var styleElement = document.createElement("style");
document.head.appendChild(styleElement);
stylesheet = styleElement.sheet;
function testComputedFilterRule(description, rule, expectedLength, expectedTypes, expectedTexts)
{
debug("");
debug(description + " : " + rule);
stylesheet.insertRule("body { -webkit-filter: " + rule + "; }", 0);
filterStyle = window.getComputedStyle(document.body).getPropertyCSSValue('-webkit-filter');
shouldBe("filterStyle.length", "" + expectedLength);
for (var i = 0; i < expectedLength; i++) {
subRule = filterStyle[i];
shouldBe("subRule.operationType", expectedTypes[i]);
shouldBe("subRule.cssText", "'" + expectedTexts[i] + "'");
}
stylesheet.deleteRule(0);
}
testComputedFilterRule("Basic reference",
"url('#a')", 1,
["WebKitCSSFilterValue.CSS_FILTER_REFERENCE"],
["url(\\'#a\\')"]);
testComputedFilterRule("Bare unquoted reference converting to quoted form",
"url(#a)", 1,
["WebKitCSSFilterValue.CSS_FILTER_REFERENCE"],
["url(\\'#a\\')"]);
testComputedFilterRule("Multiple references",
"url('#a') url('#b')", 2,
["WebKitCSSFilterValue.CSS_FILTER_REFERENCE", "WebKitCSSFilterValue.CSS_FILTER_REFERENCE"],
["url(\\'#a\\')", "url(\\'#b\\')"]);
testComputedFilterRule("Reference as 2nd value",
"grayscale(1) url('#a')", 2,
["WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE", "WebKitCSSFilterValue.CSS_FILTER_REFERENCE"],
["grayscale(1)", "url(\\'#a\\')"]);
testComputedFilterRule("Integer value",
"grayscale(1)", 1,
["WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE"],
["grayscale(1)"]);
testComputedFilterRule("Float value converts to integer",
"grayscale(1.0)", 1,
["WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE"],
["grayscale(1)"]);
testComputedFilterRule("Zero value",
"grayscale(0)", 1,
["WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE"],
["grayscale(0)"]);
testComputedFilterRule("No values",
"grayscale()", 1,
["WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE"],
["grayscale(1)"]);
testComputedFilterRule("Multiple values",
"grayscale(0.5) grayscale(0.25)", 2,
["WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE", "WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE"],
["grayscale(0.5)", "grayscale(0.25)"]);
testComputedFilterRule("Integer value",
"sepia(1)", 1,
["WebKitCSSFilterValue.CSS_FILTER_SEPIA"],
["sepia(1)"]);
testComputedFilterRule("Float value converts to integer",
"sepia(1.0)", 1,
["WebKitCSSFilterValue.CSS_FILTER_SEPIA"],
["sepia(1)"]);
testComputedFilterRule("Zero value",
"sepia(0)", 1,
["WebKitCSSFilterValue.CSS_FILTER_SEPIA"],
["sepia(0)"]);
testComputedFilterRule("No values",
"sepia()", 1,
["WebKitCSSFilterValue.CSS_FILTER_SEPIA"],
["sepia(1)"]);
testComputedFilterRule("Multiple values",
"sepia(0.5) sepia(0.25)", 2,
["WebKitCSSFilterValue.CSS_FILTER_SEPIA", "WebKitCSSFilterValue.CSS_FILTER_SEPIA"],
["sepia(0.5)", "sepia(0.25)"]);
testComputedFilterRule("Rule combinations",
"sepia(0.5) grayscale(0.25)", 2,
["WebKitCSSFilterValue.CSS_FILTER_SEPIA", "WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE"],
["sepia(0.5)", "grayscale(0.25)"]);
testComputedFilterRule("Integer value",
"saturate(1)", 1,
["WebKitCSSFilterValue.CSS_FILTER_SATURATE"],
["saturate(1)"]);
testComputedFilterRule("Float value converts to integer",
"saturate(1.0)", 1,
["WebKitCSSFilterValue.CSS_FILTER_SATURATE"],
["saturate(1)"]);
testComputedFilterRule("Zero value",
"saturate(0)", 1,
["WebKitCSSFilterValue.CSS_FILTER_SATURATE"],
["saturate(0)"]);
testComputedFilterRule("No values",
"saturate()", 1,
["WebKitCSSFilterValue.CSS_FILTER_SATURATE"],
["saturate(1)"]);
testComputedFilterRule("Multiple values",
"saturate(0.5) saturate(0.25)", 2,
["WebKitCSSFilterValue.CSS_FILTER_SATURATE", "WebKitCSSFilterValue.CSS_FILTER_SATURATE"],
["saturate(0.5)", "saturate(0.25)"]);
testComputedFilterRule("Rule combinations",
"saturate(0.5) grayscale(0.25)", 2,
["WebKitCSSFilterValue.CSS_FILTER_SATURATE", "WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE"],
["saturate(0.5)", "grayscale(0.25)"]);
testComputedFilterRule("Degrees value as integer",
"hue-rotate(10deg)", 1,
["WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE"],
["hue-rotate(10deg)"]);
testComputedFilterRule("Degrees float value converts to integer",
"hue-rotate(10.0deg)", 1,
["WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE"],
["hue-rotate(10deg)"]);
testComputedFilterRule("Radians value",
"hue-rotate(10rad)", 1,
["WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE"],
["hue-rotate(572.9577951308232deg)"]);
testComputedFilterRule("Gradians value",
"hue-rotate(10grad)", 1,
["WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE"],
["hue-rotate(9deg)"]);
testComputedFilterRule("Turns value",
"hue-rotate(0.5turn)", 1,
["WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE"],
["hue-rotate(180deg)"]);
testComputedFilterRule("Zero value",
"hue-rotate(0)", 1,
["WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE"],
["hue-rotate(0deg)"]);
testComputedFilterRule("No values",
"hue-rotate()", 1,
["WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE"],
["hue-rotate(0deg)"]);
testComputedFilterRule("Rule combinations",
"hue-rotate(10deg) grayscale(0.25)", 2,
["WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE", "WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE"],
["hue-rotate(10deg)", "grayscale(0.25)"]);
testComputedFilterRule("Integer value",
"invert(1)", 1,
["WebKitCSSFilterValue.CSS_FILTER_INVERT"],
["invert(1)"]);
testComputedFilterRule("Float value converts to integer",
"invert(1.0)", 1,
["WebKitCSSFilterValue.CSS_FILTER_INVERT"],
["invert(1)"]);
testComputedFilterRule("Zero value",
"invert(0)", 1,
["WebKitCSSFilterValue.CSS_FILTER_INVERT"],
["invert(0)"]);
testComputedFilterRule("No values",
"invert()", 1,
["WebKitCSSFilterValue.CSS_FILTER_INVERT"],
["invert(1)"]);
testComputedFilterRule("Multiple values",
"invert(0.5) invert(0.25)", 2,
["WebKitCSSFilterValue.CSS_FILTER_INVERT", "WebKitCSSFilterValue.CSS_FILTER_INVERT"],
["invert(0.5)", "invert(0.25)"]);
testComputedFilterRule("Rule combinations",
"invert(0.5) grayscale(0.25)", 2,
["WebKitCSSFilterValue.CSS_FILTER_INVERT", "WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE"],
["invert(0.5)", "grayscale(0.25)"]);
testComputedFilterRule("Integer value",
"opacity(1)", 1,
["WebKitCSSFilterValue.CSS_FILTER_OPACITY"],
["opacity(1)"]);
testComputedFilterRule("Float value converts to integer",
"opacity(1.0)", 1,
["WebKitCSSFilterValue.CSS_FILTER_OPACITY"],
["opacity(1)"]);
testComputedFilterRule("Zero value",
"opacity(0)", 1,
["WebKitCSSFilterValue.CSS_FILTER_OPACITY"],
["opacity(0)"]);
testComputedFilterRule("No values",
"opacity()", 1,
["WebKitCSSFilterValue.CSS_FILTER_OPACITY"],
["opacity(1)"]);
testComputedFilterRule("Multiple values",
"opacity(0.5) opacity(0.25)", 2,
["WebKitCSSFilterValue.CSS_FILTER_OPACITY", "WebKitCSSFilterValue.CSS_FILTER_OPACITY"],
["opacity(0.5)", "opacity(0.25)"]);
testComputedFilterRule("Rule combinations",
"opacity(0.5) grayscale(0.25)", 2,
["WebKitCSSFilterValue.CSS_FILTER_OPACITY", "WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE"],
["opacity(0.5)", "grayscale(0.25)"]);
testComputedFilterRule("Integer value",
"brightness(1)", 1,
["WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS"],
["brightness(1)"]);
testComputedFilterRule("Float value converts to integer",
"brightness(1.0)", 1,
["WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS"],
["brightness(1)"]);
testComputedFilterRule("Zero value",
"brightness(0)", 1,
["WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS"],
["brightness(0)"]);
testComputedFilterRule("No values",
"brightness()", 1,
["WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS"],
["brightness(0)"]);
testComputedFilterRule("Multiple values",
"brightness(0.5) brightness(0.25)", 2,
["WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS", "WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS"],
["brightness(0.5)", "brightness(0.25)"]);
testComputedFilterRule("Rule combinations",
"brightness(0.5) grayscale(0.25)", 2,
["WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS", "WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE"],
["brightness(0.5)", "grayscale(0.25)"]);
testComputedFilterRule("Integer value",
"contrast(1)", 1,
["WebKitCSSFilterValue.CSS_FILTER_CONTRAST"],
["contrast(1)"]);
testComputedFilterRule("Value greater than 1",
"contrast(2)", 1,
["WebKitCSSFilterValue.CSS_FILTER_CONTRAST"],
["contrast(2)"]);
testComputedFilterRule("Float value converts to integer",
"contrast(1.0)", 1,
["WebKitCSSFilterValue.CSS_FILTER_CONTRAST"],
["contrast(1)"]);
testComputedFilterRule("Zero value",
"contrast(0)", 1,
["WebKitCSSFilterValue.CSS_FILTER_CONTRAST"],
["contrast(0)"]);
testComputedFilterRule("No values",
"contrast()", 1,
["WebKitCSSFilterValue.CSS_FILTER_CONTRAST"],
["contrast(1)"]);
testComputedFilterRule("Multiple values",
"contrast(0.5) contrast(0.25)", 2,
["WebKitCSSFilterValue.CSS_FILTER_CONTRAST", "WebKitCSSFilterValue.CSS_FILTER_CONTRAST"],
["contrast(0.5)", "contrast(0.25)"]);
testComputedFilterRule("Rule combinations",
"contrast(0.5) grayscale(0.25)", 2,
["WebKitCSSFilterValue.CSS_FILTER_CONTRAST", "WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE"],
["contrast(0.5)", "grayscale(0.25)"]);
testComputedFilterRule("One zero to px",
"blur(0)", 1,
["WebKitCSSFilterValue.CSS_FILTER_BLUR"],
["blur(0px)"]);
testComputedFilterRule("One length",
"blur(2em)", 1,
["WebKitCSSFilterValue.CSS_FILTER_BLUR"],
["blur(32px)"]);
testComputedFilterRule("One length",
"blur(5px)", 1,
["WebKitCSSFilterValue.CSS_FILTER_BLUR"],
["blur(5px)"]);
testComputedFilterRule("No values",
"blur()", 1,
["WebKitCSSFilterValue.CSS_FILTER_BLUR"],
["blur(0px)"]);
testComputedFilterRule("Color then three values",
"drop-shadow(red 1px 2px 3px)", 1,
["WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW"],
["drop-shadow(rgb(255, 0, 0) 1px 2px 3px)"]);
testComputedFilterRule("Three values then color",
"drop-shadow(1px 2px 3px red)", 1,
["WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW"],
["drop-shadow(rgb(255, 0, 0) 1px 2px 3px)"]);
testComputedFilterRule("Color then three values with zero length",
"drop-shadow(#abc 0 0 0)", 1,
["WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW"],
["drop-shadow(rgb(170, 187, 204) 0px 0px 0px)"]);
testComputedFilterRule("Three values with zero length",
"drop-shadow(0 0 0)", 1,
["WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW"],
["drop-shadow(rgba(0, 0, 0, 0) 0px 0px 0px)"]);
testComputedFilterRule("Two values no color",
"drop-shadow(1px 2px)", 1,
["WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW"],
["drop-shadow(rgba(0, 0, 0, 0) 1px 2px 0px)"]);
testComputedFilterRule("Multiple operations",
"grayscale(0.5) sepia(0.25) saturate(0.75) hue-rotate(35deg) invert(0.2) opacity(0.9) blur(5px)", 7,
[
"WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE",
"WebKitCSSFilterValue.CSS_FILTER_SEPIA",
"WebKitCSSFilterValue.CSS_FILTER_SATURATE",
"WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE",
"WebKitCSSFilterValue.CSS_FILTER_INVERT",
"WebKitCSSFilterValue.CSS_FILTER_OPACITY",
"WebKitCSSFilterValue.CSS_FILTER_BLUR",
],
[
"grayscale(0.5)",
"sepia(0.25)",
"saturate(0.75)",
"hue-rotate(35deg)",
"invert(0.2)",
"opacity(0.9)",
"blur(5px)"
]);
testComputedFilterRule("Percentage values",
"grayscale(50%) sepia(25%) saturate(75%) invert(20%) opacity(90%) brightness(60%) contrast(30%)", 7,
[
"WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE",
"WebKitCSSFilterValue.CSS_FILTER_SEPIA",
"WebKitCSSFilterValue.CSS_FILTER_SATURATE",
"WebKitCSSFilterValue.CSS_FILTER_INVERT",
"WebKitCSSFilterValue.CSS_FILTER_OPACITY",
"WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS",
"WebKitCSSFilterValue.CSS_FILTER_CONTRAST"
],
[
"grayscale(0.5)",
"sepia(0.25)",
"saturate(0.75)",
"invert(0.2)",
"opacity(0.9)",
"brightness(0.6)",
"contrast(0.3)"
]);
successfullyParsed = true;