mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-08-27 04:37:22 +00:00
LibWeb/CSS: Add StyleValue getter to CSSStyleDeclarations
Will be used by StylePropertyMap, as that wants a StyleValue to reify, not a string representation.
This commit is contained in:
parent
276540fbe9
commit
25c4c2397e
Notes:
github-actions[bot]
2025-08-18 09:14:10 +00:00
Author: https://github.com/AtkinsSJ
Commit: 25c4c2397e
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/5862
Reviewed-by: https://github.com/Calme1709
5 changed files with 21 additions and 0 deletions
|
@ -289,6 +289,14 @@ bool CSSDescriptors::has_property(StringView property_name) const
|
||||||
return descriptor(*descriptor_id) != nullptr;
|
return descriptor(*descriptor_id) != nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RefPtr<StyleValue const> CSSDescriptors::get_property_style_value(StringView property_name) const
|
||||||
|
{
|
||||||
|
auto descriptor_id = descriptor_id_from_string(m_at_rule_id, property_name);
|
||||||
|
if (!descriptor_id.has_value())
|
||||||
|
return nullptr;
|
||||||
|
return descriptor(*descriptor_id);
|
||||||
|
}
|
||||||
|
|
||||||
bool is_shorthand(AtRuleID at_rule, DescriptorID descriptor)
|
bool is_shorthand(AtRuleID at_rule, DescriptorID descriptor)
|
||||||
{
|
{
|
||||||
if (at_rule == AtRuleID::Page && descriptor == DescriptorID::Margin)
|
if (at_rule == AtRuleID::Page && descriptor == DescriptorID::Margin)
|
||||||
|
|
|
@ -34,6 +34,7 @@ public:
|
||||||
virtual WebIDL::ExceptionOr<void> set_css_text(StringView) override;
|
virtual WebIDL::ExceptionOr<void> set_css_text(StringView) override;
|
||||||
|
|
||||||
virtual bool has_property(StringView property_name) const override;
|
virtual bool has_property(StringView property_name) const override;
|
||||||
|
virtual RefPtr<StyleValue const> get_property_style_value(StringView property_name) const override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
CSSDescriptors(JS::Realm&, AtRuleID, Vector<Descriptor>);
|
CSSDescriptors(JS::Realm&, AtRuleID, Vector<Descriptor>);
|
||||||
|
|
|
@ -58,6 +58,7 @@ public:
|
||||||
void set_is_updating(bool value) { m_updating = value; }
|
void set_is_updating(bool value) { m_updating = value; }
|
||||||
|
|
||||||
virtual bool has_property(StringView property_name) const = 0;
|
virtual bool has_property(StringView property_name) const = 0;
|
||||||
|
virtual RefPtr<StyleValue const> get_property_style_value(StringView property_name) const = 0;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
enum class Computed : u8 {
|
enum class Computed : u8 {
|
||||||
|
|
|
@ -434,6 +434,16 @@ bool CSSStyleProperties::has_property(StringView property_name) const
|
||||||
return get_property_internal(*property_id).has_value();
|
return get_property_internal(*property_id).has_value();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RefPtr<StyleValue const> CSSStyleProperties::get_property_style_value(StringView property_name) const
|
||||||
|
{
|
||||||
|
auto property_id = property_id_from_string(property_name);
|
||||||
|
if (!property_id.has_value())
|
||||||
|
return nullptr;
|
||||||
|
if (auto style_property = get_property_internal(*property_id); style_property.has_value())
|
||||||
|
return style_property->value;
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
// https://drafts.csswg.org/cssom/#dom-cssstyledeclaration-getpropertyvalue
|
// https://drafts.csswg.org/cssom/#dom-cssstyledeclaration-getpropertyvalue
|
||||||
Optional<StyleProperty> CSSStyleProperties::get_property_internal(PropertyID property_id) const
|
Optional<StyleProperty> CSSStyleProperties::get_property_internal(PropertyID property_id) const
|
||||||
{
|
{
|
||||||
|
|
|
@ -50,6 +50,7 @@ public:
|
||||||
size_t custom_property_count() const { return m_custom_properties.size(); }
|
size_t custom_property_count() const { return m_custom_properties.size(); }
|
||||||
|
|
||||||
virtual bool has_property(StringView property_name) const override;
|
virtual bool has_property(StringView property_name) const override;
|
||||||
|
virtual RefPtr<StyleValue const> get_property_style_value(StringView property_name) const override;
|
||||||
|
|
||||||
String css_float() const;
|
String css_float() const;
|
||||||
WebIDL::ExceptionOr<void> set_css_float(StringView);
|
WebIDL::ExceptionOr<void> set_css_float(StringView);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue