mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-05-24 20:12:53 +00:00
LibWeb: Ensure lang
pseudoclass matches multiple segment subcodes
This commit is contained in:
parent
74c803c87b
commit
04fde1c550
Notes:
github-actions[bot]
2025-04-28 10:30:44 +00:00
Author: https://github.com/tcl3
Commit: 04fde1c550
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/4495
Reviewed-by: https://github.com/AtkinsSJ ✅
4 changed files with 109 additions and 5 deletions
|
@ -68,11 +68,15 @@ static inline bool matches_lang_pseudo_class(DOM::Element const& element, Vector
|
|||
continue;
|
||||
if (language == "*"sv)
|
||||
return true;
|
||||
if (!element_language.contains('-') && Infra::is_ascii_case_insensitive_match(element_language, language))
|
||||
return true;
|
||||
auto parts = element_language.split_limit('-', 2).release_value_but_fixme_should_propagate_errors();
|
||||
if (!parts.is_empty() && Infra::is_ascii_case_insensitive_match(parts[0], language))
|
||||
return true;
|
||||
auto element_language_length = element_language.bytes_as_string_view().length();
|
||||
auto language_length = language.bytes_as_string_view().length();
|
||||
if (element_language_length == language_length) {
|
||||
if (Infra::is_ascii_case_insensitive_match(element_language, language))
|
||||
return true;
|
||||
} else if (element_language_length > language_length) {
|
||||
if (element_language.starts_with_bytes(language, CaseSensitivity::CaseInsensitive) && element_language.bytes_as_string_view()[language_length] == '-')
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue