diff options
Diffstat (limited to 'layout/reftests/css-parsing/invalid-url-handling.xhtml')
-rw-r--r-- | layout/reftests/css-parsing/invalid-url-handling.xhtml | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/layout/reftests/css-parsing/invalid-url-handling.xhtml b/layout/reftests/css-parsing/invalid-url-handling.xhtml new file mode 100644 index 0000000000..e6b85a81c9 --- /dev/null +++ b/layout/reftests/css-parsing/invalid-url-handling.xhtml @@ -0,0 +1,135 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> + <head> + <title>CSS Test: handling of invalid url() functions</title> + <link rel="author" title="L. David Baron" href="https://dbaron.org/" /> + <link rel="author" title="Mozilla Corporation" href="http://mozilla.com/" /> + <link rel="help" href="http://www.w3.org/TR/CSS21/syndata.html#tokenization" /> + <link rel="help" href="http://www.w3.org/TR/CSS21/syndata.html#parsing-errors" /> + <meta name="flags" content="invalid" /> + <style type="text/css"> + div { background-color: red } + </style> + <style type="text/css"> + /* not a URI token, but handled according to rules for parsing errors */ + #one { background: url(foo"bar") } + #one { background-color: green; } + </style> + <style type="text/css"> + /* not a URI token, but handled according to rules for parsing errors */ + #foo { background: url(foo"bar + ) } + #two { background-color: green; } + </style> + <style type="text/css"> + /* not a URI token; bad-url token is consumed until the first closing ) */ + #foo { background: url(foo"bar) } + #three { background-color: green; } + </style> + <style type="text/css"> + /* not a URI token; bad-url token is consumed until the first closing ) */ + #four { background-color: green; } + #foo { background: url(foo"bar) } + ) } + #four { background-color: red; } + </style> + <style type="text/css"> + /* not a URI token; the unterminated string ends at end of line, so + the brace never matches */ + #five { background-color: green; } + #foo { background: url("bar) } + #five { background-color: red; } + </style> + <style type="text/css"> + /* not a URI token; the unterminated string ends at end of line */ + #foo { background: url("bar) } + ) } + #six { background-color: green; } + </style> + <style type="text/css"> + /* not a URI token, but brace matching should work */ + #seven { background: url(()); background-color: green; } + </style> + <style type="text/css"> + /* not a URI token, but brace matching should work */ + #eight { background: url([{}]); background-color: green; } + </style> + <style type="text/css"> + /* not a URI token, but brace matching should work */ + #nine { background: url([)]); background-color: green; } + </style> + <style type="text/css"> + /* perfectly good URI token (image is a 404, though) */ + #ten { background: url({) green; } + </style> + <style type="text/css"> + /* perfectly good URI token (image is a 404, though) */ + #eleven { background: url([) green; } + </style> + <style type="text/css"> + /* not a URI token; bad-url token is consumed until the first closing ) + so the brace immediately after it closes the declaration block */ + #twelve { background-color: green; } + #twelve { background: url(}{""{)}); background-color: red; } + </style> + <style type="text/css"> + /* invalid URI token absorbs the [ */ + #thirteen { background: url([""); background-color: green; } + </style> + <style type="text/css"> + /* not a URI token; bad-url token is consumed until the first closing ) */ + #foo { background: url(() } + #fourteen { background-color: green; } + </style> + <!-- The next three tests test that invalid URI tokens absorb [ and { --> + <style type="text/css"> + #foo { background: url(a()); } + #fifteen { background-color: green } + </style> + <style type="text/css"> + #foo { background: url([()); } + #sixteen { background-color: green } + </style> + <style type="text/css"> + #foo { background: url({()); } + #seventeen { background-color: green } + </style> + <!-- Test that url() starting with a quote and without its closing ')' eaten + by any of the tokens that come after the initial quote doesn't eat the rest of + the stylesheet. In particular, this checks whether, once we reach the end of + the string and discover garbage after it, we tokenize the garbage or just skip + to the nearest ')'. --> + <style type="text/css"> + #eighteen { background-color: red; } + #foo { background: url('('')'); } + #eighteen { background-color: green; } + </style> + <!-- And the same thing with double quotes --> + <style type="text/css"> + #nineteen { background-color: red; } + #foo { background: url("("')'); } + #nineteen { background-color: green; } + </style> + </head> + <body> + <div id="one">This should have a green background</div> + <div id="two">This should have a green background</div> + <div id="three">This should have a green background</div> + <div id="four">This should have a green background</div> + <div id="five">This should have a green background</div> + <div id="six">This should have a green background</div> + <div id="seven">This should have a green background</div> + <div id="eight">This should have a green background</div> + <div id="nine">This should have a green background</div> + <div id="ten">This should have a green background</div> + <div id="eleven">This should have a green background</div> + <div id="twelve">This should have a green background</div> + <div id="thirteen">This should have a green background</div> + <div id="fourteen">This should have a green background</div> + <div id="fifteen">This should have a green background</div> + <div id="sixteen">This should have a green background</div> + <div id="seventeen">This should have a green background</div> + <div id="eighteen">This should have a green background</div> + <div id="nineteen">This should have a green background</div> + </body> +</html> |