tor-browser

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

CSS-supports-selector-detecting-invalid-in-logical-combinations.html (3262B)


      1 <!doctype html>
      2 <meta charset="utf-8">
      3 <title>CSS.supports() detecting invalid in logical combinations</title>
      4 <link rel="help" href="https://www.w3.org/TR/css-conditional-4/#the-css-namespace">
      5 <script src="/resources/testharness.js"></script>
      6 <script src="/resources/testharnessreport.js"></script>
      7 <script>
      8  test(function() {
      9    assert_equals(CSS.supports("selector(:has(:foo))"), false);
     10    assert_equals(CSS.supports("selector(:has(.a, :foo))"), false);
     11    assert_equals(CSS.supports("selector(:has(:foo, .a))"), false);
     12    assert_equals(CSS.supports("selector(:not(:foo))"), false);
     13    assert_equals(CSS.supports("selector(:not(.a, :foo))"), false);
     14    assert_equals(CSS.supports("selector(:not(:foo, .a))"), false);
     15  }, "Invalid selector can be detected with CSS.supports()");
     16 
     17  test(function() {
     18    assert_equals(CSS.supports("selector(:is(:foo))"), false);
     19    assert_equals(CSS.supports("selector(:is(.a, :foo))"), false);
     20    assert_equals(CSS.supports("selector(:is(:foo, .a))"), false);
     21    assert_equals(CSS.supports("selector(:is(:has(:foo, a), .b))"), false);
     22    assert_equals(CSS.supports("selector(:where(:foo))"), false);
     23    assert_equals(CSS.supports("selector(:where(.a, :foo))"), false);
     24    assert_equals(CSS.supports("selector(:where(:foo, .a))"), false);
     25    assert_equals(CSS.supports("selector(:where(:is(:foo, a), .b))"), false);
     26    assert_equals(CSS.supports("selector(:has(:where(:foo, a), .b))"), false);
     27  }, "Invalid selector can be detected with CSS.supports() even if it is dropped by forgiving parsing");
     28 
     29  test(function() {
     30    assert_equals(CSS.supports("selector(:is())"), false);
     31    assert_equals(CSS.supports("selector(:where())"), false);
     32    assert_equals(CSS.supports("selector(:has())"), false);
     33  }, ":is(), :where() or :has() always fails without argument");
     34 
     35  test(function() {
     36    assert_equals(CSS.supports("selector(:has(:has(.a)))"), false);
     37    assert_equals(CSS.supports("selector(:has(:has(.a), b))"), false);
     38    assert_equals(CSS.supports("selector(.a, :has(:has(.b)))"), false);
     39    assert_equals(CSS.supports("selector(:has(:is(:has(.a))))"), false);
     40    assert_equals(CSS.supports("selector(:has(:is(:has(.a), .b)))"), false);
     41    assert_equals(CSS.supports("selector(:has(:is(.a, :has(.b))))"), false);
     42  }, ":has() always fails inside :has()");
     43 
     44  test(function() {
     45    assert_equals(CSS.supports("selector(:is(::after)"), false);
     46    assert_equals(CSS.supports("selector(:is(::before)"), false);
     47    assert_equals(CSS.supports("selector(:is(::first-letter)"), false);
     48    assert_equals(CSS.supports("selector(:is(::first-line)"), false);
     49    assert_equals(CSS.supports("selector(:where(::after)"), false);
     50    assert_equals(CSS.supports("selector(:where(::before)"), false);
     51    assert_equals(CSS.supports("selector(:where(::first-letter)"), false);
     52    assert_equals(CSS.supports("selector(:where(::first-line)"), false);
     53    assert_equals(CSS.supports("selector(:has(::after)"), false);
     54    assert_equals(CSS.supports("selector(:has(::before)"), false);
     55    assert_equals(CSS.supports("selector(:has(::first-letter)"), false);
     56    assert_equals(CSS.supports("selector(:has(::first-line)"), false);
     57  }, "Some pseudo elements always fail inside :is(), :where(), :has()");
     58 </script>