tree-abiding-pseudo-elements.html (2603B)
1 <!DOCTYPE html> 2 <meta charset="utf-8"> 3 <title>CSS Pseudo-Elements Test: Parsing tree-abiding pseudo-elements</title> 4 <link rel="help" href="https://drafts.csswg.org/css-pseudo-4/#treelike"> 5 <link rel="author" title="Oriol Brufau" href="mailto:obrufau@igalia.com"> 6 <meta name="assert" content="This test checks the validity of various selectors containing tree-abiding pseudo-elements." /> 7 <script src="/resources/testharness.js"></script> 8 <script src="/resources/testharnessreport.js"></script> 9 <script src="/css/support/parsing-testcommon.js"></script> 10 <script> 11 // Generated content pseudo-elements 12 test_valid_selector("::before"); 13 test_valid_selector("*::before", "::before"); 14 test_valid_selector("foo.bar[baz]::before"); 15 test_invalid_selector("::before *"); 16 17 test_valid_selector("::after"); 18 test_valid_selector("*::after", "::after"); 19 test_valid_selector("foo.bar[baz]::after"); 20 test_invalid_selector("::after *"); 21 22 // List marker pseudo-element 23 test_valid_selector("::marker"); 24 test_valid_selector("*::marker", "::marker"); 25 test_valid_selector("foo.bar[baz]::marker"); 26 test_invalid_selector("::marker *"); 27 28 // Placeholder input pseudo-element 29 test_valid_selector("::placeholder"); 30 test_valid_selector("*::placeholder", "::placeholder"); 31 test_valid_selector("foo.bar[baz]::placeholder"); 32 test_invalid_selector("::placeholder *"); 33 34 // ::file-selector-button 35 test_valid_selector("::file-selector-button"); 36 test_valid_selector("::file-selector-button:hover"); 37 test_valid_selector("::file-selector-button:focus"); 38 test_valid_selector("::file-selector-button:active"); 39 test_valid_selector("::file-selector-button:is(:hover)"); 40 41 test_invalid_selector("::file-selector-button::before"); 42 test_invalid_selector("::file-selector-button#id"); 43 test_invalid_selector("::file-selector-button#class"); 44 test_invalid_selector("::file-selector-button:host"); 45 46 // Combinations of the above 47 test_invalid_selector("::before::before"); 48 test_invalid_selector("::after::before"); 49 test_invalid_selector("::marker::before"); 50 test_invalid_selector("::placeholder::before"); 51 52 test_invalid_selector("::before::after"); 53 test_invalid_selector("::after::after"); 54 test_invalid_selector("::marker::after"); 55 test_invalid_selector("::placeholder::after"); 56 57 test_valid_selector("::before::marker"); 58 test_valid_selector("::after::marker"); 59 test_invalid_selector("::marker::marker"); 60 test_invalid_selector("::placeholder::marker"); 61 62 test_invalid_selector("::before::placeholder"); 63 test_invalid_selector("::after::placeholder"); 64 test_invalid_selector("::marker::placeholder"); 65 test_invalid_selector("::placeholder::placeholder"); 66 </script>