mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-04-25 14:05:15 +00:00
LibWeb: Require CSS combinators to be followed by a simple selector
This commit is contained in:
parent
bb5678a175
commit
a2cf1d17fd
Notes:
github-actions[bot]
2024-11-23 08:51:39 +00:00
Author: https://github.com/Gingeh Commit: https://github.com/LadybirdBrowser/ladybird/commit/a2cf1d17fd5 Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/2478 Reviewed-by: https://github.com/AtkinsSJ
2 changed files with 27 additions and 23 deletions
|
@ -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…
Add table
Reference in a new issue