mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-08-06 16:19:23 +00:00
LibWeb: Resolve FIXME around shorthand properties in remove_property()
Some checks are pending
CI / Lagom (arm64, Sanitizer_CI, false, macOS, macos-15, Clang) (push) Waiting to run
CI / Lagom (x86_64, Fuzzers_CI, false, Linux, blacksmith-16vcpu-ubuntu-2404, Clang) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, false, Linux, blacksmith-16vcpu-ubuntu-2404, GNU) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, true, Linux, blacksmith-16vcpu-ubuntu-2404, Clang) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (arm64, macOS, macOS-arm64, macos-15) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (x86_64, Linux, Linux-x86_64, blacksmith-8vcpu-ubuntu-2404) (push) Waiting to run
Run test262 and test-wasm / run_and_update_results (push) Waiting to run
Lint Code / lint (push) Waiting to run
Label PRs with merge conflicts / auto-labeler (push) Waiting to run
Push notes / build (push) Waiting to run
Some checks are pending
CI / Lagom (arm64, Sanitizer_CI, false, macOS, macos-15, Clang) (push) Waiting to run
CI / Lagom (x86_64, Fuzzers_CI, false, Linux, blacksmith-16vcpu-ubuntu-2404, Clang) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, false, Linux, blacksmith-16vcpu-ubuntu-2404, GNU) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, true, Linux, blacksmith-16vcpu-ubuntu-2404, Clang) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (arm64, macOS, macOS-arm64, macos-15) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (x86_64, Linux, Linux-x86_64, blacksmith-8vcpu-ubuntu-2404) (push) Waiting to run
Run test262 and test-wasm / run_and_update_results (push) Waiting to run
Lint Code / lint (push) Waiting to run
Label PRs with merge conflicts / auto-labeler (push) Waiting to run
Push notes / build (push) Waiting to run
This exposes some false-positive sub-tests in the font-computed.html test which are now correctly marked as failed.
This commit is contained in:
parent
88da6250f9
commit
670c247937
Notes:
github-actions[bot]
2025-06-04 15:35:43 +00:00
Author: https://github.com/Calme1709
Commit: 670c247937
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/4925
Reviewed-by: https://github.com/AtkinsSJ ✅
6 changed files with 95 additions and 59 deletions
|
@ -1077,20 +1077,31 @@ WebIDL::ExceptionOr<String> CSSStyleProperties::remove_property(StringView prope
|
|||
// 3. Let value be the return value of invoking getPropertyValue() with property as argument.
|
||||
auto value = get_property_value(property_name);
|
||||
|
||||
// 4. Let removed be false.
|
||||
bool removed = false;
|
||||
Function<bool(PropertyID)> remove_declaration = [&](auto property_id) {
|
||||
// 4. Let removed be false.
|
||||
bool removed = false;
|
||||
|
||||
// FIXME: 5. If property is a shorthand property, for each longhand property longhand that property maps to:
|
||||
// 1. If longhand is not a property name of a CSS declaration in the declarations, continue.
|
||||
// 2. Remove that CSS declaration and let removed be true.
|
||||
// 5. If property is a shorthand property, for each longhand property longhand that property maps to:
|
||||
if (property_is_shorthand(property_id)) {
|
||||
for (auto longhand_property_id : longhands_for_shorthand(property_id)) {
|
||||
// 1. If longhand is not a property name of a CSS declaration in the declarations, continue.
|
||||
// 2. Remove that CSS declaration and let removed be true.
|
||||
removed |= remove_declaration(longhand_property_id);
|
||||
}
|
||||
} else {
|
||||
// 6. Otherwise, if property is a case-sensitive match for a property name of a CSS declaration in the declarations, remove that CSS declaration and let removed be true.
|
||||
if (property_id == PropertyID::Custom) {
|
||||
auto custom_name = FlyString::from_utf8_without_validation(property_name.bytes());
|
||||
removed = m_custom_properties.remove(custom_name);
|
||||
} else {
|
||||
removed = m_properties.remove_first_matching([&](auto& entry) { return entry.property_id == property_id; });
|
||||
}
|
||||
}
|
||||
|
||||
// 6. Otherwise, if property is a case-sensitive match for a property name of a CSS declaration in the declarations, remove that CSS declaration and let removed be true.
|
||||
if (property_id == PropertyID::Custom) {
|
||||
auto custom_name = FlyString::from_utf8_without_validation(property_name.bytes());
|
||||
removed = m_custom_properties.remove(custom_name);
|
||||
} else {
|
||||
removed = m_properties.remove_first_matching([&](auto& entry) { return entry.property_id == property_id; });
|
||||
}
|
||||
return removed;
|
||||
};
|
||||
|
||||
auto removed = remove_declaration(property_id.value());
|
||||
|
||||
// 7. If removed is true, Update style attribute for the CSS declaration block.
|
||||
if (removed) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue