diff options
author | Sam Atkins <atkinssj@serenityos.org> | 2021-11-10 13:54:33 +0000 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2021-11-10 21:58:14 +0100 |
commit | e52f987020be996f49c09dfdd53306366f2cbab9 (patch) | |
tree | 2efbd6939f235e00058110623d64bd3c36c0e129 | |
parent | 4d4291548531e7ceaa734b0a782a891b8a85fbd4 (diff) | |
download | serenity-e52f987020be996f49c09dfdd53306366f2cbab9.zip |
LibWeb: Make property_initial_value() return a NonnullRefPtr
The finale! Users can now be sure that the value is valid, which makes
things simpler.
3 files changed, 7 insertions, 17 deletions
diff --git a/Meta/Lagom/Tools/CodeGenerators/LibWeb/Generate_CSS_PropertyID_cpp.cpp b/Meta/Lagom/Tools/CodeGenerators/LibWeb/Generate_CSS_PropertyID_cpp.cpp index 24c7ea9b94..7c4e524dab 100644 --- a/Meta/Lagom/Tools/CodeGenerators/LibWeb/Generate_CSS_PropertyID_cpp.cpp +++ b/Meta/Lagom/Tools/CodeGenerators/LibWeb/Generate_CSS_PropertyID_cpp.cpp @@ -169,7 +169,7 @@ bool is_inherited_property(PropertyID property_id) } } -RefPtr<StyleValue> property_initial_value(PropertyID property_id) +NonnullRefPtr<StyleValue> property_initial_value(PropertyID property_id) { static HashMap<PropertyID, NonnullRefPtr<StyleValue>> initial_values; if (initial_values.is_empty()) { @@ -219,10 +219,7 @@ RefPtr<StyleValue> property_initial_value(PropertyID property_id) generator.append(R"~~~( } - auto it = initial_values.find(property_id); - if (it == initial_values.end()) - return nullptr; - return it->value; + return *initial_values.find(property_id)->value; } bool property_has_quirk(PropertyID property_id, Quirk quirk) diff --git a/Meta/Lagom/Tools/CodeGenerators/LibWeb/Generate_CSS_PropertyID_h.cpp b/Meta/Lagom/Tools/CodeGenerators/LibWeb/Generate_CSS_PropertyID_h.cpp index 8fb24c945c..6ded891fe5 100644 --- a/Meta/Lagom/Tools/CodeGenerators/LibWeb/Generate_CSS_PropertyID_h.cpp +++ b/Meta/Lagom/Tools/CodeGenerators/LibWeb/Generate_CSS_PropertyID_h.cpp @@ -45,6 +45,7 @@ int main(int argc, char** argv) generator.append(R"~~~( #pragma once +#include <AK/NonnullRefPtr.h> #include <AK/StringView.h> #include <AK/Traits.h> #include <LibWeb/Forward.h> @@ -104,7 +105,7 @@ PropertyID property_id_from_camel_case_string(StringView); PropertyID property_id_from_string(const StringView&); const char* string_from_property_id(PropertyID); bool is_inherited_property(PropertyID); -RefPtr<StyleValue> property_initial_value(PropertyID); +NonnullRefPtr<StyleValue> property_initial_value(PropertyID); bool property_accepts_value(PropertyID, StyleValue&); size_t property_maximum_value_count(PropertyID); diff --git a/Userland/Libraries/LibWeb/CSS/StyleComputer.cpp b/Userland/Libraries/LibWeb/CSS/StyleComputer.cpp index e99b1108cb..c01eeca59e 100644 --- a/Userland/Libraries/LibWeb/CSS/StyleComputer.cpp +++ b/Userland/Libraries/LibWeb/CSS/StyleComputer.cpp @@ -635,18 +635,10 @@ void StyleComputer::compute_cascaded_values(StyleProperties& style, DOM::Element // FIXME: Transition declarations [css-transitions-1] } -static NonnullRefPtr<StyleValue> get_initial_value(CSS::PropertyID property_id) -{ - auto value = property_initial_value(property_id); - if (!value) - return InitialStyleValue::the(); - return value.release_nonnull(); -}; - static NonnullRefPtr<StyleValue> get_inherit_value(CSS::PropertyID property_id, DOM::Element const* element) { if (!element || !element->parent_element() || !element->parent_element()->specified_css_values()) - return get_initial_value(property_id); + return property_initial_value(property_id); auto& map = element->parent_element()->specified_css_values()->properties(); auto it = map.find(property_id); VERIFY(it != map.end()); @@ -662,12 +654,12 @@ void StyleComputer::compute_defaulted_property_value(StyleProperties& style, DOM if (is_inherited_property(property_id)) style.m_property_values.set(property_id, get_inherit_value(property_id, element)); else - style.m_property_values.set(property_id, get_initial_value(property_id)); + style.m_property_values.set(property_id, property_initial_value(property_id)); return; } if (it->value->is_initial()) { - it->value = get_initial_value(property_id); + it->value = property_initial_value(property_id); return; } |