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>