mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-08-02 14:19:48 +00:00
LibWeb/CSS: Pass Length::ResolutionContext to resolve_integer
The length resolution context might be needed even when resolving an integer value, since it might contain a sign() function with length values inside. This fixes a WPT subtest.
This commit is contained in:
parent
8bec80ac47
commit
1882a2e19b
Notes:
github-actions[bot]
2024-12-04 12:38:56 +00:00
Author: https://github.com/milotier
Commit: 1882a2e19b
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/2640
Reviewed-by: https://github.com/AtkinsSJ ✅
7 changed files with 75 additions and 17 deletions
|
@ -90,12 +90,12 @@ bool MediaFeature::evaluate(HTML::Window const& window) const
|
|||
return false;
|
||||
auto queried_value = maybe_queried_value.release_value();
|
||||
|
||||
auto resolution_context = Length::ResolutionContext::for_window(window);
|
||||
switch (m_type) {
|
||||
case Type::IsTrue:
|
||||
if (queried_value.is_integer())
|
||||
return queried_value.integer().resolved() != 0;
|
||||
return queried_value.integer().resolved(resolution_context) != 0;
|
||||
if (queried_value.is_length()) {
|
||||
auto resolution_context = Length::ResolutionContext::for_window(window);
|
||||
auto length = queried_value.length().resolved(resolution_context);
|
||||
return length.raw_value() != 0;
|
||||
}
|
||||
|
@ -149,17 +149,18 @@ bool MediaFeature::compare(HTML::Window const& window, MediaFeatureValue left, C
|
|||
}
|
||||
|
||||
if (left.is_integer()) {
|
||||
auto resolution_context = Length::ResolutionContext::for_window(window);
|
||||
switch (comparison) {
|
||||
case Comparison::Equal:
|
||||
return left.integer().resolved() == right.integer().resolved();
|
||||
return left.integer().resolved(resolution_context) == right.integer().resolved(resolution_context);
|
||||
case Comparison::LessThan:
|
||||
return left.integer().resolved() < right.integer().resolved();
|
||||
return left.integer().resolved(resolution_context) < right.integer().resolved(resolution_context);
|
||||
case Comparison::LessThanOrEqual:
|
||||
return left.integer().resolved() <= right.integer().resolved();
|
||||
return left.integer().resolved(resolution_context) <= right.integer().resolved(resolution_context);
|
||||
case Comparison::GreaterThan:
|
||||
return left.integer().resolved() > right.integer().resolved();
|
||||
return left.integer().resolved(resolution_context) > right.integer().resolved(resolution_context);
|
||||
case Comparison::GreaterThanOrEqual:
|
||||
return left.integer().resolved() >= right.integer().resolved();
|
||||
return left.integer().resolved(resolution_context) >= right.integer().resolved(resolution_context);
|
||||
}
|
||||
VERIFY_NOT_REACHED();
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue