tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

pseudo-elements-invalid.html (2940B)


      1 <!doctype html>
      2 <meta charset="utf-8">
      3 <title>Test pseudo elements parsing of invalid selectors</title>
      4 <link rel="author" title="Tim Nguyen" href="https://github.com/nt1m">
      5 <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/">
      6 <script src="/resources/testharness.js"></script>
      7 <script src="/resources/testharnessreport.js"></script>
      8 <script src="/css/support/parsing-testcommon.js"></script>
      9 <script>
     10 const functionPseudoElements = [
     11    "::view-transition-group",
     12    "::view-transition-image-pair",
     13    "::view-transition-old",
     14    "::view-transition-new",
     15 ];
     16 
     17 function test_invalid_selector_combinations(pseudo) {
     18    test_invalid_selector(`${pseudo}.a`);
     19    test_invalid_selector(`${pseudo} div`);
     20    test_invalid_selector(`${pseudo}:hover`);
     21    test_invalid_selector(`${pseudo}:active`);
     22    test_invalid_selector(`${pseudo}:first-child`);
     23    test_invalid_selector(`${pseudo}:last-child`);
     24    test_invalid_selector(`${pseudo}:empty`);
     25    test_invalid_selector(`${pseudo}:visited`);
     26    test_invalid_selector(`${pseudo}:enabled`);
     27    test_invalid_selector(`:not(${pseudo})`);
     28    test_invalid_selector(`:has(${pseudo})`);
     29 }
     30 
     31 test_invalid_selector_combinations("::view-transition");
     32 test_invalid_selector("::view-transition:only-child");
     33 test_invalid_selector("::view-transition(*)");
     34 test_invalid_selector("::view-transition(valid)");
     35 test_invalid_selector("::view-transition(root)");
     36 
     37 for (const fn of functionPseudoElements) {
     38    for (const validArgument of ["*", "valid", "root"]) {
     39        test_invalid_selector_combinations(`${fn}(${validArgument})`);
     40    }
     41 
     42    // Test function without argument.
     43    test_invalid_selector(fn);
     44    test_invalid_selector_combinations(fn);
     45 
     46    // Test function with empty argument.
     47    test_invalid_selector(`${fn}()`);
     48    test_invalid_selector_combinations(`${fn}()`);
     49 
     50    // Test function with keywords excluded from <custom-ident>.
     51    test_invalid_selector(`${fn}(default)`);
     52    test_invalid_selector_combinations(`${fn}(default)`);
     53    test_invalid_selector(`${fn}(unset)`);
     54    test_invalid_selector_combinations(`${fn}(unset)`);
     55    test_invalid_selector(`${fn}(initial)`);
     56    test_invalid_selector_combinations(`${fn}(initial)`);
     57    test_invalid_selector(`${fn}(inherit)`);
     58    test_invalid_selector_combinations(`${fn}(inherit)`);
     59    test_invalid_selector(`${fn}(revert)`);
     60    test_invalid_selector_combinations(`${fn}(revert)`);
     61    test_invalid_selector(`${fn}(revert-layer)`);
     62    test_invalid_selector_combinations(`${fn}(revert-layer)`);
     63 
     64    // Test function with multiple arguments.
     65    test_invalid_selector(`${fn}(foo, bar)`);
     66    test_invalid_selector_combinations(`${fn}(foo, bar)`);
     67    test_invalid_selector(`${fn}(foo bar)`);
     68    test_invalid_selector_combinations(`${fn}(foo bar)`);
     69 
     70  // Test function with selector arguments.
     71    test_invalid_selector(`${fn}(#bar)`);
     72    test_invalid_selector_combinations(`${fn}(#bar)`);
     73 }
     74 </script>