| <!doctype html> |
| <title>Escaped EOF</title> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| |
| <meta name="author" title="Tab Atkins-Bittner"> |
| <link rel=help href="https://drafts.csswg.org/css-syntax/#consume-escaped-code-point"> |
| <link rel=help href="https://drafts.csswg.org/css-syntax/#consume-string-token"> |
| <link rel=help href="https://drafts.csswg.org/css-syntax/#consume-token"> |
| |
| <style>foo { --foo:foo\</style> |
| <style>foo { --foo:1foo\</style> |
| <style>foo { --foo:url(foo\</style> |
| <style>foo { --foo:"foo\</style> |
| |
| <script> |
| test(()=>{ |
| assert_throws_dom("SyntaxError", ()=>{document.querySelector("#123");}, "numeric hash token is invalid in a selector"); |
| document.querySelector("#foo\\"); // escaped-EOF in a hash token is valid in a selector |
| }, "Escaped EOF turns into a U+FFFD in a hash token, makes it 'ID' type."); |
| |
| test(()=>{ |
| const sh = document.styleSheets[0]; |
| const val = sh.cssRules[0].style.getPropertyValue("--foo"); |
| assert_equals("foo\ufffd", val); |
| }, "Escaped EOF turns into a U+FFFD in an ident token."); |
| |
| test(()=>{ |
| const sh = document.styleSheets[1]; |
| const val = sh.cssRules[0].style.getPropertyValue("--foo"); |
| assert_equals("1foo\ufffd", val); |
| }, "Escaped EOF turns into a U+FFFD in a dimension token."); |
| |
| test(()=>{ |
| const sh = document.styleSheets[2]; |
| const val = sh.cssRules[0].style.getPropertyValue("--foo"); |
| assert_equals("url(foo\ufffd)", val); |
| }, "Escaped EOF turns into a U+FFFD in a url token."); |
| |
| test(()=>{ |
| const sh = document.styleSheets[3]; |
| const val = sh.cssRules[0].style.getPropertyValue("--foo"); |
| assert_equals(`"foo"`, val); |
| }, "Escaped EOF in a string is ignored."); |
| |
| </script> |