blob: ec798de7660e9d53a61c3d5b62d0495858d07d10 [file] [log] [blame]
<head>
<style>
#a { content: url(c); }
#b { content: url( d); }
#c { content: url(e ); }
#d { content: url( f ); }
#f { content: url('c'); }
#g { content: url(' d'); }
#h { content: url('e '); }
#i { content: url(' f '); }
#j { content: url("url(g)"); }
#l { content: url("c"); }
#m { content: url(" d"); }
#n { content: url("e "); }
#o { content: url(" f "); }
#p { content: url("url(g)"); }
#q { cursor: url("url(q)"), default; }
#r { list-style-image: url("url(r)"); }
#s { background-image: url("url(s)"); }
#t { -webkit-mask-image: url("url(t)"); }
#u { -webkit-border-image: url("url(u)") 1 2 3 4 fill stretch round; }
#v { -webkit-mask-box-image: url("url(v)") 1 2 3 4 fill stretch round; }
#w { content: url("w\0d\
w"); /* URL string contains twice newline */ }
#x { content: url(" x x x "); } /* URL string contains space and tab */
#y { content: url( y\20y\9y ); } /* URL string contains space and tab */
</style>
<script>
// Some ideas for additional things to test in the future:
// 1) Actual control characters in the <style> element.
// 2) URL with only space characters in it.
// 3) Different CSS space characters, and spaces that are not allowed in CSS.
// 4) Different CSS space characters, and spaces that are not allowed in CSS.
// 5) The src property inside font-face.
// 6) Quoted values that are themselves inside quotes (two levels of quotes).
function runTest()
{
if (window.testRunner)
testRunner.dumpAsText();
var rules = document.styleSheets[0].cssRules;
var text = "";
for (var i = 0; i < rules.length; i++) {
var itemText = rules.item(i).cssText;
// Work around bug where WebKit completes the URLs in the CSS DOM.
// The completion of the URL should be when they are used, not in the DOM.
itemText = itemText.replace(/file:.*LayoutTests\/fast\/css\//, "");
text += itemText;
text += "\n";
}
document.getElementById("result").appendChild(document.createTextNode(text));
if (document.getElementById("result").firstChild.data === document.getElementById("expected").firstChild.data)
document.getElementById("message").firstChild.data = "SUCCESS";
else
document.getElementById("message").firstChild.data = "FAILURE";
}
</script>
</head>
<body onload="runTest()">
<p>Test parsing of CSS URI tokens. Older versions of WebKit did some double processing of these, hence this test would have failed.</p>
<p id="message">TEST DID NOT COMPLETE</p>
<p>Rules from the stylesheet:</p>
<pre id="result"></pre>
<p>Expected result:</p>
<pre id="expected">#a { content: url(c); }
#b { content: url(d); }
#c { content: url(e); }
#d { content: url(f); }
#f { content: url(c); }
#g { content: url(d); }
#h { content: url(e); }
#i { content: url(f); }
#j { content: url("url(g)"); }
#l { content: url(c); }
#m { content: url(d); }
#n { content: url(e); }
#o { content: url(f); }
#p { content: url("url(g)"); }
#q { cursor: url("url(q)"), default; }
#r { list-style-image: url("url(r)"); }
#s { background-image: url("url(s)"); }
#t { -webkit-mask-image: url("url(t)"); }
#u { -webkit-border-image: url("url(u)") 1 2 3 4 fill stretch round; }
#v { -webkit-mask-box-image: url("url(v)") 1 2 3 4 fill stretch round; }
#w { content: url(ww); }
#x { content: url(x%20xx); }
#y { content: url(y%20yy); }
</pre>
<script>
</script>
</body>