gecko/layout/style/test/test_property_syntax_errors.html
L. David Baron cd9afca8b6 Limit the hashless color quirk to the properties where it's needed, per http://simon.html5.org/specs/quirks-mode#the-hashless-hex-color-quirk . (Bug 774122, patch 1) r=bzbarsky
This changes test_property_syntax_errors.html in the following ways:
 (1) removes the "known failures" handling, since there aren't any
 (2) changes it to test syntax errors in both quirks mode and standards
     mode, instead of only in standards mode
 (3) uses a (new) quirks_values mechanism to property_database.js to
     test cases that should be invalid in standards mode but accepted in
     quirks mode
2012-07-16 09:11:33 -04:00

98 lines
3.3 KiB
HTML

<!DOCTYPE HTML>
<html>
<!--
-->
<head>
<title>Test that we reject syntax errors listed in property_database.js</title>
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<script type="text/javascript" src="property_database.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
</head>
<body onload="run()">
<p id="display"></p>
<iframe id="quirks" src="data:text/html,<div id='testnode'></div>"></iframe>
<div id="content" style="display: none">
<div id="testnode"></div>
</div>
<pre id="test">
<script class="testbody" type="text/javascript">
SimpleTest.waitForExplicitFinish();
function check_not_accepted(decl, property, info, badval)
{
decl.setProperty(property, badval, "");
is(decl.getPropertyValue(property), "",
"invalid value '" + badval + "' not accepted for '" + property +
"' property");
if ("subproperties" in info) {
for (var sidx in info.subproperties) {
var subprop = info.subproperties[sidx];
is(decl.getPropertyValue(subprop), "",
"invalid value '" + badval + "' not accepted for '" + property +
"' property when testing subproperty '" + subprop + "'");
}
}
decl.removeProperty(property);
}
function run()
{
var gDeclaration = document.getElementById("testnode").style;
var gQuirksDeclaration = document.getElementById("quirks").contentDocument
.getElementById("testnode").style;
for (var property in gCSSProperties) {
var info = gCSSProperties[property];
for (var idx in info.invalid_values) {
check_not_accepted(gDeclaration, property, info,
info.invalid_values[idx]);
check_not_accepted(gQuirksDeclaration, property, info,
info.invalid_values[idx]);
}
if ("quirks_values" in info) {
for (var quirkval in info.quirks_values) {
var standardval = info.quirks_values[quirkval];
check_not_accepted(gDeclaration, property, info, quirkval);
gQuirksDeclaration.setProperty(property, quirkval, "");
gDeclaration.setProperty(property, standardval, "");
var quirkret = gQuirksDeclaration.getPropertyValue(property);
var standardret = gDeclaration.getPropertyValue(property);
isnot(quirkret, "", property + ": " + quirkval +
" should be accepted in quirks mode");
is(quirkret, standardret, property + ": " + quirkval + " result");
if ("subproperties" in info) {
for (var sidx in info.subproperties) {
var subprop = info.subproperties[sidx];
var quirksub = gQuirksDeclaration.getPropertyValue(subprop);
var standardsub = gDeclaration.getPropertyValue(subprop);
isnot(quirksub, "", property + ": " + quirkval +
" should be accepted in quirks mode" +
" when testing subproperty " + subprop);
is(quirksub, standardsub, property + ": " + quirkval + " result" +
" when testing subproperty " + subprop);
}
}
gQuirksDeclaration.removeProperty(property);
gDeclaration.removeProperty(property);
}
}
}
SimpleTest.finish();
}
</script>
</pre>
</body>
</html>