mirror of
https://github.com/zebrajr/ladybird.git
synced 2025-12-06 12:20:00 +01:00
LibWeb: Require CSS combinators to be followed by a simple selector
This commit is contained in:
parent
bb5678a175
commit
a2cf1d17fd
|
|
@ -166,8 +166,12 @@ Parser::ParseErrorOr<Optional<Selector::CompoundSelector>> Parser::parse_compoun
|
||||||
simple_selectors.append(component.release_value());
|
simple_selectors.append(component.release_value());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (simple_selectors.is_empty())
|
if (simple_selectors.is_empty()) {
|
||||||
|
if (tokens.has_next_token() || combinator != Selector::Combinator::Descendant)
|
||||||
|
return ParseError::SyntaxError;
|
||||||
|
|
||||||
return Optional<Selector::CompoundSelector> {};
|
return Optional<Selector::CompoundSelector> {};
|
||||||
|
}
|
||||||
|
|
||||||
return Selector::CompoundSelector { combinator, move(simple_selectors) };
|
return Selector::CompoundSelector { combinator, move(simple_selectors) };
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,8 +6,8 @@ Rerun
|
||||||
|
|
||||||
Found 1975 tests
|
Found 1975 tests
|
||||||
|
|
||||||
1903 Pass
|
1923 Pass
|
||||||
72 Fail
|
52 Fail
|
||||||
Details
|
Details
|
||||||
Result Test Name MessagePass Selectors-API Test Suite: HTML
|
Result Test Name MessagePass Selectors-API Test Suite: HTML
|
||||||
Pass Document supports querySelector
|
Pass Document supports querySelector
|
||||||
|
|
@ -92,10 +92,10 @@ Pass Document.querySelector: Invalid class: .bar.
|
||||||
Pass Document.querySelectorAll: Invalid class: .bar.
|
Pass Document.querySelectorAll: Invalid class: .bar.
|
||||||
Pass Document.querySelector: Invalid combinator: div % address, p
|
Pass Document.querySelector: Invalid combinator: div % address, p
|
||||||
Pass Document.querySelectorAll: Invalid combinator: div % address, p
|
Pass Document.querySelectorAll: Invalid combinator: div % address, p
|
||||||
Fail Document.querySelector: Invalid combinator: div ++ address, p
|
Pass Document.querySelector: Invalid combinator: div ++ address, p
|
||||||
Fail Document.querySelectorAll: Invalid combinator: div ++ address, p
|
Pass Document.querySelectorAll: Invalid combinator: div ++ address, p
|
||||||
Fail Document.querySelector: Invalid combinator: div ~~ address, p
|
Pass Document.querySelector: Invalid combinator: div ~~ address, p
|
||||||
Fail Document.querySelectorAll: Invalid combinator: div ~~ address, p
|
Pass Document.querySelectorAll: Invalid combinator: div ~~ address, p
|
||||||
Pass Document.querySelector: Invalid [att=value] selector: [*=test]
|
Pass Document.querySelector: Invalid [att=value] selector: [*=test]
|
||||||
Pass Document.querySelectorAll: Invalid [att=value] selector: [*=test]
|
Pass Document.querySelectorAll: Invalid [att=value] selector: [*=test]
|
||||||
Pass Document.querySelector: Invalid [att=value] selector: [*|*=test]
|
Pass Document.querySelector: Invalid [att=value] selector: [*|*=test]
|
||||||
|
|
@ -160,10 +160,10 @@ Pass Detached Element.querySelector: Invalid class: .bar.
|
||||||
Pass Detached Element.querySelectorAll: Invalid class: .bar.
|
Pass Detached Element.querySelectorAll: Invalid class: .bar.
|
||||||
Pass Detached Element.querySelector: Invalid combinator: div % address, p
|
Pass Detached Element.querySelector: Invalid combinator: div % address, p
|
||||||
Pass Detached Element.querySelectorAll: Invalid combinator: div % address, p
|
Pass Detached Element.querySelectorAll: Invalid combinator: div % address, p
|
||||||
Fail Detached Element.querySelector: Invalid combinator: div ++ address, p
|
Pass Detached Element.querySelector: Invalid combinator: div ++ address, p
|
||||||
Fail Detached Element.querySelectorAll: Invalid combinator: div ++ address, p
|
Pass Detached Element.querySelectorAll: Invalid combinator: div ++ address, p
|
||||||
Fail Detached Element.querySelector: Invalid combinator: div ~~ address, p
|
Pass Detached Element.querySelector: Invalid combinator: div ~~ address, p
|
||||||
Fail Detached Element.querySelectorAll: Invalid combinator: div ~~ address, p
|
Pass Detached Element.querySelectorAll: Invalid combinator: div ~~ address, p
|
||||||
Pass Detached Element.querySelector: Invalid [att=value] selector: [*=test]
|
Pass Detached Element.querySelector: Invalid [att=value] selector: [*=test]
|
||||||
Pass Detached Element.querySelectorAll: Invalid [att=value] selector: [*=test]
|
Pass Detached Element.querySelectorAll: Invalid [att=value] selector: [*=test]
|
||||||
Pass Detached Element.querySelector: Invalid [att=value] selector: [*|*=test]
|
Pass Detached Element.querySelector: Invalid [att=value] selector: [*|*=test]
|
||||||
|
|
@ -228,10 +228,10 @@ Pass Fragment.querySelector: Invalid class: .bar.
|
||||||
Pass Fragment.querySelectorAll: Invalid class: .bar.
|
Pass Fragment.querySelectorAll: Invalid class: .bar.
|
||||||
Pass Fragment.querySelector: Invalid combinator: div % address, p
|
Pass Fragment.querySelector: Invalid combinator: div % address, p
|
||||||
Pass Fragment.querySelectorAll: Invalid combinator: div % address, p
|
Pass Fragment.querySelectorAll: Invalid combinator: div % address, p
|
||||||
Fail Fragment.querySelector: Invalid combinator: div ++ address, p
|
Pass Fragment.querySelector: Invalid combinator: div ++ address, p
|
||||||
Fail Fragment.querySelectorAll: Invalid combinator: div ++ address, p
|
Pass Fragment.querySelectorAll: Invalid combinator: div ++ address, p
|
||||||
Fail Fragment.querySelector: Invalid combinator: div ~~ address, p
|
Pass Fragment.querySelector: Invalid combinator: div ~~ address, p
|
||||||
Fail Fragment.querySelectorAll: Invalid combinator: div ~~ address, p
|
Pass Fragment.querySelectorAll: Invalid combinator: div ~~ address, p
|
||||||
Pass Fragment.querySelector: Invalid [att=value] selector: [*=test]
|
Pass Fragment.querySelector: Invalid [att=value] selector: [*=test]
|
||||||
Pass Fragment.querySelectorAll: Invalid [att=value] selector: [*=test]
|
Pass Fragment.querySelectorAll: Invalid [att=value] selector: [*=test]
|
||||||
Pass Fragment.querySelector: Invalid [att=value] selector: [*|*=test]
|
Pass Fragment.querySelector: Invalid [att=value] selector: [*|*=test]
|
||||||
|
|
@ -296,10 +296,10 @@ Pass In-document Element.querySelector: Invalid class: .bar.
|
||||||
Pass In-document Element.querySelectorAll: Invalid class: .bar.
|
Pass In-document Element.querySelectorAll: Invalid class: .bar.
|
||||||
Pass In-document Element.querySelector: Invalid combinator: div % address, p
|
Pass In-document Element.querySelector: Invalid combinator: div % address, p
|
||||||
Pass In-document Element.querySelectorAll: Invalid combinator: div % address, p
|
Pass In-document Element.querySelectorAll: Invalid combinator: div % address, p
|
||||||
Fail In-document Element.querySelector: Invalid combinator: div ++ address, p
|
Pass In-document Element.querySelector: Invalid combinator: div ++ address, p
|
||||||
Fail In-document Element.querySelectorAll: Invalid combinator: div ++ address, p
|
Pass In-document Element.querySelectorAll: Invalid combinator: div ++ address, p
|
||||||
Fail In-document Element.querySelector: Invalid combinator: div ~~ address, p
|
Pass In-document Element.querySelector: Invalid combinator: div ~~ address, p
|
||||||
Fail In-document Element.querySelectorAll: Invalid combinator: div ~~ address, p
|
Pass In-document Element.querySelectorAll: Invalid combinator: div ~~ address, p
|
||||||
Pass In-document Element.querySelector: Invalid [att=value] selector: [*=test]
|
Pass In-document Element.querySelector: Invalid [att=value] selector: [*=test]
|
||||||
Pass In-document Element.querySelectorAll: Invalid [att=value] selector: [*=test]
|
Pass In-document Element.querySelectorAll: Invalid [att=value] selector: [*=test]
|
||||||
Pass In-document Element.querySelector: Invalid [att=value] selector: [*|*=test]
|
Pass In-document Element.querySelector: Invalid [att=value] selector: [*|*=test]
|
||||||
|
|
@ -364,10 +364,10 @@ Pass Empty Element.querySelector: Invalid class: .bar.
|
||||||
Pass Empty Element.querySelectorAll: Invalid class: .bar.
|
Pass Empty Element.querySelectorAll: Invalid class: .bar.
|
||||||
Pass Empty Element.querySelector: Invalid combinator: div % address, p
|
Pass Empty Element.querySelector: Invalid combinator: div % address, p
|
||||||
Pass Empty Element.querySelectorAll: Invalid combinator: div % address, p
|
Pass Empty Element.querySelectorAll: Invalid combinator: div % address, p
|
||||||
Fail Empty Element.querySelector: Invalid combinator: div ++ address, p
|
Pass Empty Element.querySelector: Invalid combinator: div ++ address, p
|
||||||
Fail Empty Element.querySelectorAll: Invalid combinator: div ++ address, p
|
Pass Empty Element.querySelectorAll: Invalid combinator: div ++ address, p
|
||||||
Fail Empty Element.querySelector: Invalid combinator: div ~~ address, p
|
Pass Empty Element.querySelector: Invalid combinator: div ~~ address, p
|
||||||
Fail Empty Element.querySelectorAll: Invalid combinator: div ~~ address, p
|
Pass Empty Element.querySelectorAll: Invalid combinator: div ~~ address, p
|
||||||
Pass Empty Element.querySelector: Invalid [att=value] selector: [*=test]
|
Pass Empty Element.querySelector: Invalid [att=value] selector: [*=test]
|
||||||
Pass Empty Element.querySelectorAll: Invalid [att=value] selector: [*=test]
|
Pass Empty Element.querySelectorAll: Invalid [att=value] selector: [*=test]
|
||||||
Pass Empty Element.querySelector: Invalid [att=value] selector: [*|*=test]
|
Pass Empty Element.querySelector: Invalid [att=value] selector: [*|*=test]
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user