blob: 8c126b6ddb3c3dab7e9e5ae71a3f4da09386518b [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<script src="../../resources/js-test.js"></script>
</head>
<body>
<canvas id="canvas">
<script>
description("Test case for bug 39168. This tests the CSS color parsing code using &lt;canvas&gt;.");
function log(message) {
var console = document.getElementById("console");
console.appendChild(document.createTextNode(message));
console.appendChild(document.createElement("BR"));
}
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
function shouldSuccessfullyParse(color) {
ctx.fillStyle = "#f00";
ctx.fillStyle = color;
// Check that there is no red.
if (ctx.fillStyle.match(/^#(?!(FF0000|ff0000|f00)$)/))
testPassed("Setting color to " + color + " was successfully set.");
else
testFailed("Setting color to " + color + " was not set but should!");
}
function shouldNotSuccessfullyParse(color) {
ctx.fillStyle = "#0f0";
ctx.fillStyle = color;
// Check that the color is still green.
if (ctx.fillStyle.match(/^#(00FF00|00ff00|0f0)$/))
testPassed("Setting color to " + color + " was not set (as expected).");
else
testFailed("Setting color to " + color + " was successfully set but should not!");
}
// Taken from CSS 3 color.
var deprecatedSystemColors = [
"ActiveBorder",
"ActiveCaption",
"AppWorkspace",
"Background",
"ButtonFace",
"ButtonHighlight",
"ButtonShadow",
"ButtonText",
"CaptionText",
"GrayText",
"Highlight",
"HighlightText",
"InactiveBorder",
"InactiveCaption",
"InactiveCaptionText",
"InfoBackground",
"InfoText",
"Menu",
"MenuText",
"Scrollbar",
"ThreeDDarkShadow",
"ThreeDFace",
"ThreeDHighlight",
"ThreeDLightShadow",
"ThreeDShadow",
"Window",
"WindowFrame",
"WindowText"
];
// Valid values passed in color matching.
for (var i = 0; i < deprecatedSystemColors.length; ++i) {
shouldSuccessfullyParse(deprecatedSystemColors[i]);
shouldSuccessfullyParse(deprecatedSystemColors[i].toLowerCase());
}
// Taken from CSS 3 color.
var svgColors = [
"aliceblue",
"antiquewhite",
"aqua",
"aquamarine",
"azure",
"beige",
"bisque",
"black",
"blanchedalmond",
"blue",
"blueviolet",
"brown",
"burlywood",
"cadetblue",
"chartreuse",
"chocolate",
"coral",
"cornflowerblue",
"cornsilk",
"crimson",
"cyan",
"darkblue",
"darkcyan",
"darkgoldenrod",
"darkgray",
"darkgreen",
"darkgrey",
"darkkhaki",
"darkmagenta",
"darkolivegreen",
"darkorange",
"darkorchid",
"darkred",
"darksalmon",
"darkseagreen",
"darkslateblue",
"darkslategray",
"darkslategrey",
"darkturquoise",
"darkviolet",
"deeppink",
"deepskyblue",
"dimgray",
"dimgrey",
"dodgerblue",
"firebrick",
"floralwhite",
"forestgreen",
"fuchsia",
"gainsboro",
"ghostwhite",
"gold",
"goldenrod",
"gray",
"green",
"greenyellow",
"grey",
"honeydew",
"hotpink",
"indianred",
"indigo",
"ivory",
"khaki",
"lavender",
"lavenderblush",
"lawngreen",
"lemonchiffon",
"lightblue",
"lightcoral",
"lightcyan",
"lightgoldenrodyellow",
"lightgray",
"lightgreen",
"lightgrey",
"lightpink",
"lightsalmon",
"lightseagreen",
"lightskyblue",
"lightslategray",
"lightslategrey",
"lightsteelblue",
"lightyellow",
"lime",
"limegreen",
"linen",
"magenta",
"maroon",
"mediumaquamarine",
"mediumblue",
"mediumorchid",
"mediumpurple",
"mediumseagreen",
"mediumslateblue",
"mediumspringgreen",
"mediumturquoise",
"mediumvioletred",
"midnightblue",
"mintcream",
"mistyrose",
"moccasin",
"navajowhite",
"navy",
"oldlace",
"olive",
"olivedrab",
"orange",
"orangered",
"orchid",
"palegoldenrod",
"palegreen",
"paleturquoise",
"palevioletred",
"papayawhip",
"peachpuff",
"peru",
"pink",
"plum",
"powderblue",
"purple",
// We do not test red.
"rosybrown",
"royalblue",
"saddlebrown",
"salmon",
"sandybrown",
"seagreen",
"seashell",
"sienna",
"silver",
"skyblue",
"slateblue",
"slategray",
"slategrey",
"snow",
"springgreen",
"steelblue",
"tan",
"teal",
"thistle",
"tomato",
"turquoise",
"violet",
"wheat",
"white",
"whitesmoke",
"yellow",
"yellowgreen"
];
// Valid values passed in color matching.
for (var i = 0; i < svgColors.length; ++i)
shouldSuccessfullyParse(svgColors[i]);
shouldSuccessfullyParse("#0f0");
shouldSuccessfullyParse("hsl(120, 100%, 50%)"); // Green HSL
// Invalid values.
shouldNotSuccessfullyParse("foobar");
shouldNotSuccessfullyParse("counter(foobar)");
shouldNotSuccessfullyParse("url(http://127.0.0.1:8080/)");
shouldNotSuccessfullyParse("inherited");
shouldNotSuccessfullyParse("#100%");
shouldNotSuccessfullyParse("#100px");
shouldNotSuccessfullyParse('var("test")');
</script>
</html>