72 lines
2.2 KiB
HTML
72 lines
2.2 KiB
HTML
<!doctype html>
|
|
<html>
|
|
<head>
|
|
<script src="../../resources/js-test-pre.js"></script>
|
|
<style id="style-container">
|
|
</style>
|
|
</head>
|
|
<body>
|
|
</body>
|
|
<script>
|
|
description('Test the parsing of :not(selectorList) for querySelector and style. This test focus on pseudo elements nested inside other functional pseudo class.');
|
|
|
|
function testInvalidSelector(selectorString) {
|
|
var styleContainer = document.getElementById('style-container');
|
|
styleContainer.innerHTML = ':not(' + selectorString + ') { }';
|
|
const parsed = document.getElementById('style-container').sheet.cssRules.length == 1;
|
|
debug(`selector '${styleContainer.innerHTML}' parsed: ${parsed ? "YES" : "NO"}`);
|
|
styleContainer.innerHTML = '';
|
|
}
|
|
|
|
var validSelectorsPart2 = [
|
|
// Basic types.
|
|
"foobar",
|
|
".class",
|
|
":last-child",
|
|
|
|
// Compound selectors.
|
|
"foobar#id.class",
|
|
"#id:empty",
|
|
|
|
// Complex selectors.
|
|
"a b",
|
|
"a ~ b",
|
|
|
|
// Functional pseudo classes.
|
|
":-webkit-any(.selector,#tama,#hanayo,#midoriko)",
|
|
":nth-child(even of a, b, c)",
|
|
":not(:is(cocoa, cappuccino))",
|
|
":not(:matches(cocoa, cappuccino))",
|
|
];
|
|
|
|
var invalidSelectors = [
|
|
":is(a, b, c::after)",
|
|
":matches(a, b, c::after)",
|
|
":is(a, b, c:after)",
|
|
":matches(a, b, c:after)",
|
|
":nth-child(2n+1 of d, e, :is(f, g, ::before))",
|
|
":nth-child(2n+1 of d, e, :matches(f, g, ::before))",
|
|
":nth-child(2n+1 of d, e, :is(f, g, :before))",
|
|
":nth-child(2n+1 of d, e, :matches(f, g, :before))",
|
|
":not(:is(a, b, c::after))",
|
|
":not(:matches(a, b, c::after))",
|
|
":not(:is(a, b, c:after))",
|
|
":not(:matches(a, b, c:after))",
|
|
":is(a, b, :is(c, d, :is(e, f, :is(g, h, i::after))))",
|
|
":matches(a, b, :matches(c, d, :matches(e, f, :matches(g, h, i::after))))",
|
|
];
|
|
|
|
debug("3 :not(valid, valid, invalid) selectors");
|
|
for (var i = 0; i < validSelectorsPart2.length; ++i) {
|
|
for (var j = i; j < validSelectorsPart2.length; ++j) {
|
|
for (var k = 0; k < invalidSelectors.length; ++k) {
|
|
var selectorString = validSelectorsPart2[i] + ',' + validSelectorsPart2[j] + ',' + invalidSelectors[k];
|
|
testInvalidSelector(selectorString);
|
|
}
|
|
}
|
|
}
|
|
|
|
</script>
|
|
<script src="../../resources/js-test-post.js"></script>
|
|
</html>
|