Test parsing of CSS URI tokens. Older versions of WebKit did some double processing of these, hence this test would have failed.

SUCCESS

Rules from the stylesheet:

#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 { mask-image: url("url(t)"); }
#u { 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\d w"); }
#x { content: url(" x x\9 x "); }
#y { content: url("y y\9 y"); }
Expected result:

#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 { mask-image: url("url(t)"); }
#u { 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\d w"); }
#x { content: url(" x x\9 x "); }
#y { content: url("y y\9 y"); }

