8fde11e3a6a86ba934f2d7f97965232e57311f6b
[WebKit-https.git] / LayoutTests / fast / css / uri-token-parsing.html
1 <head>
2 <style>
3 #a { content: url(c); }
4 #b { content: url( d); }
5 #c { content: url(e ); }
6 #d { content: url( f ); }
7 #f { content: url('c'); }
8 #g { content: url(' d'); }
9 #h { content: url('e '); }
10 #i { content: url(' f '); }
11 #j { content: url("url(g)"); }
12 #l { content: url("c"); }
13 #m { content: url(" d"); }
14 #n { content: url("e "); }
15 #o { content: url(" f "); }
16 #p { content: url("url(g)"); }
17 #q { cursor: url("url(q)"); }
18 #r { list-style-image: url("url(r)"); }
19 #s { background-image: url("url(s)"); }
20 #t { -webkit-mask-image: url("url(t)"); }
21 #u { -webkit-border-image: url("url(u)") 1 2 3 4 fill stretch round; }
22 #v { -webkit-mask-box-image: url("url(v)") 1 2 3 4 fill stretch round; }
23 #w { content: url("w\0d\
24 w"); /* URL string contains twice newline */ }
25 #x { content: url(" x x x "); } /* URL string contains space and tab */
26 #y { content: url( y\20y\9y ); } /* URL string contains space and tab */
27 </style>
28
29 <script>
30
31 // Some ideas for additional things to test in the future:
32 //   1) Actual control characters in the <style> element.
33 //   2) URL with only space characters in it.
34 //   3) Different CSS space characters, and spaces that are not allowed in CSS.
35 //   4) Different CSS space characters, and spaces that are not allowed in CSS.
36 //   5) The src property inside font-face.
37 //   6) Quoted values that are themselves inside quotes (two levels of quotes).
38
39 function runTest()
40 {
41     if (window.layoutTestController)
42         layoutTestController.dumpAsText();
43
44     var rules = document.styleSheets[0].cssRules;
45     var text = "";
46     for (var i = 0; i < rules.length; i++) {
47         var itemText = rules.item(i).cssText;
48
49         // Work around bug where WebKit completes the URLs in the CSS DOM.
50         // The completion of the URL should be when they are used, not in the DOM.
51         itemText = itemText.replace(/file:.*LayoutTests\/fast\/css\//, "");
52
53         text += itemText;
54         text += "\n";
55     }
56
57     document.getElementById("result").appendChild(document.createTextNode(text));
58
59     if (document.getElementById("result").firstChild.data === document.getElementById("expected").firstChild.data)
60         document.getElementById("message").firstChild.data = "SUCCESS";
61     else
62         document.getElementById("message").firstChild.data = "FAILURE";
63 }
64
65 </script>
66
67 </head>
68
69 <body onload="runTest()">
70
71 <p>Test parsing of CSS URI tokens. Older versions of WebKit did some double processing of these, hence this test would have failed.</p>
72
73 <p id="message">TEST DID NOT COMPLETE</p>
74
75 <p>Rules from the stylesheet:</p>
76
77 <pre id="result"></pre>
78
79 <p>Expected result:</p>
80
81 <pre id="expected">#a { content: url(c); }
82 #b { content: url(d); }
83 #c { content: url(e); }
84 #d { content: url(f); }
85 #f { content: url(c); }
86 #g { content: url(d); }
87 #h { content: url(e); }
88 #i { content: url(f); }
89 #j { content: url('url(g)'); }
90 #l { content: url(c); }
91 #m { content: url(d); }
92 #n { content: url(e); }
93 #o { content: url(f); }
94 #p { content: url('url(g)'); }
95 #q { cursor: url('url(q)'); }
96 #r { list-style-image: url('url(r)'); }
97 #s { background-image: url('url(s)'); }
98 #t { -webkit-mask-image: url('url(t)'); }
99 #u { -webkit-border-image: url('url(u)') 1 2 3 4 fill stretch round; }
100 #v { -webkit-mask-box-image: url('url(v)') 1 2 3 4 fill stretch round; }
101 #w { content: url(ww); }
102 #x { content: url(x%20xx); }
103 #y { content: url(y%20yy); }
104 </pre>
105
106 <script>
107
108 </script>
109 </body>