summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Kling <kling@serenityos.org>2023-02-20 18:56:08 +0100
committerAndreas Kling <kling@serenityos.org>2023-02-21 00:54:04 +0100
commitf11899f885c18390fa17aebe1ef77b733a81fcaf (patch)
treed267dd8f55f9625312a69f1d630b8b70cefb0a0d
parent68b5df6bf17c55af258f44a18d0ddd41c660d38d (diff)
downloadserenity-f11899f885c18390fa17aebe1ef77b733a81fcaf.zip
LibWeb+LibIDL: Fix (or paper over) various const-correctness issues
There's definitely stuff to iterate on here, but this takes care of making the libraries compile with stricter RP and NNRP.
-rw-r--r--Meta/Lagom/Tools/CodeGenerators/LibWeb/BindingsGenerator/IDLGenerators.cpp18
-rw-r--r--Userland/Libraries/LibIDL/IDLParser.cpp22
-rw-r--r--Userland/Libraries/LibIDL/IDLParser.h4
-rw-r--r--Userland/Libraries/LibIDL/Types.h42
-rw-r--r--Userland/Libraries/LibWeb/CSS/CSSStyleDeclaration.cpp4
-rw-r--r--Userland/Libraries/LibWeb/CSS/CSSStyleDeclaration.h6
-rw-r--r--Userland/Libraries/LibWeb/CSS/ComputedValues.h4
-rw-r--r--Userland/Libraries/LibWeb/CSS/MediaList.cpp16
-rw-r--r--Userland/Libraries/LibWeb/CSS/Parser/ComponentValue.h5
-rw-r--r--Userland/Libraries/LibWeb/CSS/ResolvedCSSStyleDeclaration.cpp18
-rw-r--r--Userland/Libraries/LibWeb/CSS/ResolvedCSSStyleDeclaration.h4
-rw-r--r--Userland/Libraries/LibWeb/CSS/StyleComputer.cpp16
-rw-r--r--Userland/Libraries/LibWeb/CSS/StyleProperties.cpp18
-rw-r--r--Userland/Libraries/LibWeb/CSS/StyleProperties.h16
-rw-r--r--Userland/Libraries/LibWeb/CSS/StyleValue.cpp26
-rw-r--r--Userland/Libraries/LibWeb/CSS/StyleValue.h140
-rw-r--r--Userland/Libraries/LibWeb/DOM/Element.h3
-rw-r--r--Userland/Libraries/LibWeb/FontCache.cpp6
-rw-r--r--Userland/Libraries/LibWeb/FontCache.h8
-rw-r--r--Userland/Libraries/LibWeb/Layout/Node.cpp10
-rw-r--r--Userland/Libraries/LibWeb/Layout/Node.h6
-rw-r--r--Userland/Libraries/LibWeb/Painting/PaintableBox.cpp4
22 files changed, 210 insertions, 186 deletions
diff --git a/Meta/Lagom/Tools/CodeGenerators/LibWeb/BindingsGenerator/IDLGenerators.cpp b/Meta/Lagom/Tools/CodeGenerators/LibWeb/BindingsGenerator/IDLGenerators.cpp
index d0aa9a33d5..5141b039ee 100644
--- a/Meta/Lagom/Tools/CodeGenerators/LibWeb/BindingsGenerator/IDLGenerators.cpp
+++ b/Meta/Lagom/Tools/CodeGenerators/LibWeb/BindingsGenerator/IDLGenerators.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020-2021, Andreas Kling <kling@serenityos.org>
+ * Copyright (c) 2020-2023, Andreas Kling <kling@serenityos.org>
* Copyright (c) 2021-2023, Linus Groh <linusg@serenityos.org>
* Copyright (c) 2021, Luke Wilde <lukew@serenityos.org>
* Copyright (c) 2022, Ali Mohammad Pur <mpfard@serenityos.org>
@@ -915,7 +915,7 @@ static void generate_to_cpp(SourceGenerator& generator, ParameterType& parameter
// 3. Let types be the flattened member types of the union type.
auto types = union_type.flattened_member_types();
- RefPtr<Type> dictionary_type;
+ RefPtr<Type const> dictionary_type;
for (auto& dictionary : interface.dictionaries) {
for (auto& type : types) {
if (type.name() == dictionary.key) {
@@ -1077,7 +1077,7 @@ static void generate_to_cpp(SourceGenerator& generator, ParameterType& parameter
// 10. If Type(V) is Object, then:
// 1. If types includes a sequence type, then:
- RefPtr<IDL::ParameterizedType> sequence_type;
+ RefPtr<IDL::ParameterizedType const> sequence_type;
for (auto& type : types) {
if (type.name() == "sequence") {
sequence_type = verify_cast<IDL::ParameterizedType>(type);
@@ -1117,7 +1117,7 @@ static void generate_to_cpp(SourceGenerator& generator, ParameterType& parameter
}
// 4. If types includes a record type, then return the result of converting V to that record type.
- RefPtr<IDL::ParameterizedType> record_type;
+ RefPtr<IDL::ParameterizedType const> record_type;
for (auto& type : types) {
if (type.name() == "record") {
record_type = verify_cast<IDL::ParameterizedType>(type);
@@ -1165,7 +1165,7 @@ static void generate_to_cpp(SourceGenerator& generator, ParameterType& parameter
)~~~");
}
- RefPtr<IDL::Type> numeric_type;
+ RefPtr<IDL::Type const> numeric_type;
for (auto& type : types) {
if (type.is_numeric()) {
numeric_type = type;
@@ -1794,7 +1794,7 @@ static EffectiveOverloadSet compute_the_effective_overload_set(auto const& overl
int argument_count = (int)arguments.size();
// 3. Let types be a type list.
- NonnullRefPtrVector<Type> types;
+ NonnullRefPtrVector<Type const> types;
// 4. Let optionalityValues be an optionality list.
Vector<Optionality> optionality_values;
@@ -1911,7 +1911,7 @@ static DeprecatedString generate_constructor_for_idl_type(Type const& type)
case Type::Kind::Parameterized: {
auto const& parameterized_type = type.as_parameterized();
StringBuilder builder;
- builder.appendff("make_ref_counted<IDL::ParameterizedTypeType>(\"{}\", {}, NonnullRefPtrVector<IDL::Type> {{", type.name(), type.is_nullable());
+ builder.appendff("make_ref_counted<IDL::ParameterizedTypeType>(\"{}\", {}, NonnullRefPtrVector<IDL::Type const> {{", type.name(), type.is_nullable());
append_type_list(builder, parameterized_type.parameters());
builder.append("})"sv);
return builder.to_deprecated_string();
@@ -1919,7 +1919,7 @@ static DeprecatedString generate_constructor_for_idl_type(Type const& type)
case Type::Kind::Union: {
auto const& union_type = type.as_union();
StringBuilder builder;
- builder.appendff("make_ref_counted<IDL::UnionType>(\"{}\", {}, NonnullRefPtrVector<IDL::Type> {{", type.name(), type.is_nullable());
+ builder.appendff("make_ref_counted<IDL::UnionType>(\"{}\", {}, NonnullRefPtrVector<IDL::Type const> {{", type.name(), type.is_nullable());
append_type_list(builder, union_type.member_types());
builder.append("})"sv);
return builder.to_deprecated_string();
@@ -1978,7 +1978,7 @@ JS_DEFINE_NATIVE_FUNCTION(@class_name@::@function.name:snakecase@)
continue;
StringBuilder types_builder;
- types_builder.append("NonnullRefPtrVector<IDL::Type> { "sv);
+ types_builder.append("NonnullRefPtrVector<IDL::Type const> { "sv);
StringBuilder optionality_builder;
optionality_builder.append("Vector<IDL::Optionality> { "sv);
diff --git a/Userland/Libraries/LibIDL/IDLParser.cpp b/Userland/Libraries/LibIDL/IDLParser.cpp
index e3fe59ec57..7f12d0b313 100644
--- a/Userland/Libraries/LibIDL/IDLParser.cpp
+++ b/Userland/Libraries/LibIDL/IDLParser.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020-2021, Andreas Kling <kling@serenityos.org>
+ * Copyright (c) 2020-2023, Andreas Kling <kling@serenityos.org>
* Copyright (c) 2021-2022, Linus Groh <linusg@serenityos.org>
* Copyright (c) 2021, Luke Wilde <lukew@serenityos.org>
* Copyright (c) 2022, Ali Mohammad Pur <mpfard@serenityos.org>
@@ -163,10 +163,10 @@ Optional<Interface&> Parser::resolve_import(auto path)
return result;
}
-NonnullRefPtr<Type> Parser::parse_type()
+NonnullRefPtr<Type const> Parser::parse_type()
{
if (lexer.consume_specific('(')) {
- NonnullRefPtrVector<Type> union_member_types;
+ NonnullRefPtrVector<Type const> union_member_types;
union_member_types.append(parse_type());
consume_whitespace();
assert_string("or"sv);
@@ -203,7 +203,7 @@ NonnullRefPtr<Type> Parser::parse_type()
name = "long long"sv;
}
- NonnullRefPtrVector<Type> parameters;
+ NonnullRefPtrVector<Type const> parameters;
bool is_parameterized_type = false;
if (lexer.consume_specific('<')) {
is_parameterized_type = true;
@@ -820,11 +820,11 @@ void Parser::parse_non_interface_entities(bool allow_interface, Interface& inter
static void resolve_union_typedefs(Interface& interface, UnionType& union_);
-static void resolve_typedef(Interface& interface, NonnullRefPtr<Type>& type, HashMap<DeprecatedString, DeprecatedString>* extended_attributes = {})
+static void resolve_typedef(Interface& interface, NonnullRefPtr<Type const>& type, HashMap<DeprecatedString, DeprecatedString>* extended_attributes = {})
{
if (is<ParameterizedType>(*type)) {
- auto& parameterized_type = type->as_parameterized();
- auto& parameters = static_cast<Vector<NonnullRefPtr<Type>>&>(parameterized_type.parameters());
+ auto& parameterized_type = const_cast<Type&>(*type).as_parameterized();
+ auto& parameters = static_cast<Vector<NonnullRefPtr<Type const>>&>(parameterized_type.parameters());
for (auto& parameter : parameters)
resolve_typedef(interface, parameter);
return;
@@ -832,7 +832,7 @@ static void resolve_typedef(Interface& interface, NonnullRefPtr<Type>& type, Has
// Resolve anonymous union types until we get named types that can be resolved in the next step.
if (is<UnionType>(*type) && type->name().is_empty()) {
- resolve_union_typedefs(interface, type->as_union());
+ resolve_union_typedefs(interface, const_cast<Type&>(*type).as_union());
return;
}
@@ -841,7 +841,7 @@ static void resolve_typedef(Interface& interface, NonnullRefPtr<Type>& type, Has
return;
bool nullable = type->is_nullable();
type = it->value.type;
- type->set_nullable(nullable);
+ const_cast<Type&>(*type).set_nullable(nullable);
if (extended_attributes) {
for (auto& attribute : it->value.extended_attributes)
extended_attributes->set(attribute.key, attribute.value);
@@ -859,12 +859,12 @@ static void resolve_typedef(Interface& interface, NonnullRefPtr<Type>& type, Has
// UnionType(UnionType(A, B), UnionType(C, D))
// Note that flattening unions is handled separately as per the spec.
if (is<UnionType>(*type))
- resolve_union_typedefs(interface, type->as_union());
+ resolve_union_typedefs(interface, const_cast<Type&>(*type).as_union());
}
static void resolve_union_typedefs(Interface& interface, UnionType& union_)
{
- auto& member_types = static_cast<Vector<NonnullRefPtr<Type>>&>(union_.member_types());
+ auto& member_types = static_cast<Vector<NonnullRefPtr<Type const>>&>(union_.member_types());
for (auto& member_type : member_types)
resolve_typedef(interface, member_type);
}
diff --git a/Userland/Libraries/LibIDL/IDLParser.h b/Userland/Libraries/LibIDL/IDLParser.h
index e1239c54f7..69b3b2ec04 100644
--- a/Userland/Libraries/LibIDL/IDLParser.h
+++ b/Userland/Libraries/LibIDL/IDLParser.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020-2021, Andreas Kling <kling@serenityos.org>
+ * Copyright (c) 2020-2023, Andreas Kling <kling@serenityos.org>
* Copyright (c) 2021, Linus Groh <linusg@serenityos.org>
* Copyright (c) 2021, Luke Wilde <lukew@serenityos.org>
* Copyright (c) 2022, Ali Mohammad Pur <mpfard@serenityos.org>
@@ -54,7 +54,7 @@ private:
void parse_iterable(Interface&);
Function parse_function(HashMap<DeprecatedString, DeprecatedString>& extended_attributes, Interface&, IsSpecialOperation is_special_operation = IsSpecialOperation::No);
Vector<Parameter> parse_parameters();
- NonnullRefPtr<Type> parse_type();
+ NonnullRefPtr<Type const> parse_type();
void parse_constant(Interface&);
DeprecatedString import_base_path;
diff --git a/Userland/Libraries/LibIDL/Types.h b/Userland/Libraries/LibIDL/Types.h
index 9f52afa39f..7f1c2dd158 100644
--- a/Userland/Libraries/LibIDL/Types.h
+++ b/Userland/Libraries/LibIDL/Types.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020-2021, Andreas Kling <kling@serenityos.org>
+ * Copyright (c) 2020-2023, Andreas Kling <kling@serenityos.org>
* Copyright (c) 2021, Linus Groh <linusg@serenityos.org>
* Copyright (c) 2021, Luke Wilde <lukew@serenityos.org>
* Copyright (c) 2022, Ali Mohammad Pur <mpfard@serenityos.org>
@@ -143,7 +143,7 @@ private:
};
struct Parameter {
- NonnullRefPtr<Type> type;
+ NonnullRefPtr<Type const> type;
DeprecatedString name;
bool optional { false };
Optional<DeprecatedString> optional_default_value;
@@ -152,7 +152,7 @@ struct Parameter {
};
struct Function {
- NonnullRefPtr<Type> return_type;
+ NonnullRefPtr<Type const> return_type;
DeprecatedString name;
Vector<Parameter> parameters;
HashMap<DeprecatedString, DeprecatedString> extended_attributes;
@@ -170,7 +170,7 @@ struct Constructor {
};
struct Constant {
- NonnullRefPtr<Type> type;
+ NonnullRefPtr<Type const> type;
DeprecatedString name;
DeprecatedString value;
};
@@ -178,7 +178,7 @@ struct Constant {
struct Attribute {
bool inherit { false };
bool readonly { false };
- NonnullRefPtr<Type> type;
+ NonnullRefPtr<Type const> type;
DeprecatedString name;
HashMap<DeprecatedString, DeprecatedString> extended_attributes;
@@ -189,7 +189,7 @@ struct Attribute {
struct DictionaryMember {
bool required { false };
- NonnullRefPtr<Type> type;
+ NonnullRefPtr<Type const> type;
DeprecatedString name;
HashMap<DeprecatedString, DeprecatedString> extended_attributes;
Optional<DeprecatedString> default_value;
@@ -202,7 +202,7 @@ struct Dictionary {
struct Typedef {
HashMap<DeprecatedString, DeprecatedString> extended_attributes;
- NonnullRefPtr<Type> type;
+ NonnullRefPtr<Type const> type;
};
struct Enumeration {
@@ -213,7 +213,7 @@ struct Enumeration {
};
struct CallbackFunction {
- NonnullRefPtr<Type> return_type;
+ NonnullRefPtr<Type const> return_type;
Vector<Parameter> parameters;
bool is_legacy_treat_non_object_as_null { false };
};
@@ -222,7 +222,7 @@ class Interface;
class ParameterizedType : public Type {
public:
- ParameterizedType(DeprecatedString name, bool nullable, NonnullRefPtrVector<Type> parameters)
+ ParameterizedType(DeprecatedString name, bool nullable, NonnullRefPtrVector<Type const> parameters)
: Type(Kind::Parameterized, move(name), nullable)
, m_parameters(move(parameters))
{
@@ -232,11 +232,11 @@ public:
void generate_sequence_from_iterable(SourceGenerator& generator, DeprecatedString const& cpp_name, DeprecatedString const& iterable_cpp_name, DeprecatedString const& iterator_method_cpp_name, IDL::Interface const&, size_t recursion_depth) const;
- NonnullRefPtrVector<Type> const& parameters() const { return m_parameters; }
- NonnullRefPtrVector<Type>& parameters() { return m_parameters; }
+ NonnullRefPtrVector<Type const> const& parameters() const { return m_parameters; }
+ NonnullRefPtrVector<Type const>& parameters() { return m_parameters; }
private:
- NonnullRefPtrVector<Type> m_parameters;
+ NonnullRefPtrVector<Type const> m_parameters;
};
static inline size_t get_shortest_function_length(Vector<Function&> const& overload_set)
@@ -270,8 +270,8 @@ public:
Optional<DeprecatedString> stringifier_attribute;
bool has_unscopable_member { false };
- Optional<NonnullRefPtr<Type>> value_iterator_type;
- Optional<Tuple<NonnullRefPtr<Type>, NonnullRefPtr<Type>>> pair_iterator_types;
+ Optional<NonnullRefPtr<Type const>> value_iterator_type;
+ Optional<Tuple<NonnullRefPtr<Type const>, NonnullRefPtr<Type const>>> pair_iterator_types;
Optional<Function> named_property_getter;
Optional<Function> named_property_setter;
@@ -318,7 +318,7 @@ public:
class UnionType : public Type {
public:
- UnionType(DeprecatedString name, bool nullable, NonnullRefPtrVector<Type> member_types)
+ UnionType(DeprecatedString name, bool nullable, NonnullRefPtrVector<Type const> member_types)
: Type(Kind::Union, move(name), nullable)
, m_member_types(move(member_types))
{
@@ -326,16 +326,16 @@ public:
virtual ~UnionType() override = default;
- NonnullRefPtrVector<Type> const& member_types() const { return m_member_types; }
- NonnullRefPtrVector<Type>& member_types() { return m_member_types; }
+ NonnullRefPtrVector<Type const> const& member_types() const { return m_member_types; }
+ NonnullRefPtrVector<Type const>& member_types() { return m_member_types; }
// https://webidl.spec.whatwg.org/#dfn-flattened-union-member-types
- NonnullRefPtrVector<Type> flattened_member_types() const
+ NonnullRefPtrVector<Type const> flattened_member_types() const
{
// 1. Let T be the union type.
// 2. Initialize S to ∅.
- NonnullRefPtrVector<Type> types;
+ NonnullRefPtrVector<Type const> types;
// 3. For each member type U of T:
for (auto& type : m_member_types) {
@@ -390,7 +390,7 @@ public:
}
private:
- NonnullRefPtrVector<Type> m_member_types;
+ NonnullRefPtrVector<Type const> m_member_types;
};
// https://webidl.spec.whatwg.org/#dfn-optionality-value
@@ -405,7 +405,7 @@ class EffectiveOverloadSet {
public:
struct Item {
int callable_id;
- NonnullRefPtrVector<Type> types;
+ NonnullRefPtrVector<Type const> types;
Vector<Optionality> optionality_values;
};
diff --git a/Userland/Libraries/LibWeb/CSS/CSSStyleDeclaration.cpp b/Userland/Libraries/LibWeb/CSS/CSSStyleDeclaration.cpp
index 2e0fac1430..53c581ef63 100644
--- a/Userland/Libraries/LibWeb/CSS/CSSStyleDeclaration.cpp
+++ b/Userland/Libraries/LibWeb/CSS/CSSStyleDeclaration.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018-2022, Andreas Kling <kling@serenityos.org>
+ * Copyright (c) 2018-2023, Andreas Kling <kling@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
@@ -172,7 +172,7 @@ void ElementInlineCSSStyleDeclaration::update_style_attribute()
}
// https://drafts.csswg.org/cssom/#set-a-css-declaration
-bool PropertyOwningCSSStyleDeclaration::set_a_css_declaration(PropertyID property_id, NonnullRefPtr<StyleValue> value, Important important)
+bool PropertyOwningCSSStyleDeclaration::set_a_css_declaration(PropertyID property_id, NonnullRefPtr<StyleValue const> value, Important important)
{
// FIXME: Handle logical property groups.
diff --git a/Userland/Libraries/LibWeb/CSS/CSSStyleDeclaration.h b/Userland/Libraries/LibWeb/CSS/CSSStyleDeclaration.h
index edafb34220..a04eebd38a 100644
--- a/Userland/Libraries/LibWeb/CSS/CSSStyleDeclaration.h
+++ b/Userland/Libraries/LibWeb/CSS/CSSStyleDeclaration.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018-2022, Andreas Kling <kling@serenityos.org>
+ * Copyright (c) 2018-2023, Andreas Kling <kling@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
@@ -21,7 +21,7 @@ enum class Important {
struct StyleProperty {
Important important { Important::No };
CSS::PropertyID property_id;
- NonnullRefPtr<StyleValue> value;
+ NonnullRefPtr<StyleValue const> value;
DeprecatedString custom_name {};
};
@@ -92,7 +92,7 @@ protected:
void set_the_declarations(Vector<StyleProperty> properties, HashMap<DeprecatedString, StyleProperty> custom_properties);
private:
- bool set_a_css_declaration(PropertyID, NonnullRefPtr<StyleValue>, Important);
+ bool set_a_css_declaration(PropertyID, NonnullRefPtr<StyleValue const>, Important);
Vector<StyleProperty> m_properties;
HashMap<DeprecatedString, StyleProperty> m_custom_properties;
diff --git a/Userland/Libraries/LibWeb/CSS/ComputedValues.h b/Userland/Libraries/LibWeb/CSS/ComputedValues.h
index 930fe8232f..9760a3f4d0 100644
--- a/Userland/Libraries/LibWeb/CSS/ComputedValues.h
+++ b/Userland/Libraries/LibWeb/CSS/ComputedValues.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020-2022, Andreas Kling <kling@serenityos.org>
+ * Copyright (c) 2020-2023, Andreas Kling <kling@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
@@ -77,7 +77,7 @@ public:
};
struct BackgroundLayerData {
- RefPtr<CSS::AbstractImageStyleValue> background_image { nullptr };
+ RefPtr<CSS::AbstractImageStyleValue const> background_image { nullptr };
CSS::BackgroundAttachment attachment { CSS::BackgroundAttachment::Scroll };
CSS::BackgroundBox origin { CSS::BackgroundBox::PaddingBox };
CSS::BackgroundBox clip { CSS::BackgroundBox::BorderBox };
diff --git a/Userland/Libraries/LibWeb/CSS/MediaList.cpp b/Userland/Libraries/LibWeb/CSS/MediaList.cpp
index 3b850a64d1..f9523315f9 100644
--- a/Userland/Libraries/LibWeb/CSS/MediaList.cpp
+++ b/Userland/Libraries/LibWeb/CSS/MediaList.cpp
@@ -1,6 +1,6 @@
/*
* Copyright (c) 2021, Sam Atkins <atkinssj@serenityos.org>
- * Copyright (c) 2022, Andreas Kling <kling@serenityos.org>
+ * Copyright (c) 2022-2023, Andreas Kling <kling@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
@@ -64,11 +64,21 @@ DeprecatedString MediaList::item(u32 index) const
// https://www.w3.org/TR/cssom-1/#dom-medialist-appendmedium
void MediaList::append_medium(DeprecatedString medium)
{
+ // 1. Let m be the result of parsing the given value.
auto m = parse_media_query({}, medium);
+
+ // 2. If m is null, then return.
if (!m)
return;
- if (m_media.contains_slow(*m))
- return;
+
+ // 3. If comparing m with any of the media queries in the collection of media queries returns true, then return.
+ auto serialized = m->to_string().release_value_but_fixme_should_propagate_errors();
+ for (auto& existing_medium : m_media) {
+ if (existing_medium.to_string().release_value_but_fixme_should_propagate_errors() == serialized)
+ return;
+ }
+
+ // 4. Append m to the collection of media queries.
m_media.append(m.release_nonnull());
}
diff --git a/Userland/Libraries/LibWeb/CSS/Parser/ComponentValue.h b/Userland/Libraries/LibWeb/CSS/Parser/ComponentValue.h
index a7f9a75a57..b10dbeb206 100644
--- a/Userland/Libraries/LibWeb/CSS/Parser/ComponentValue.h
+++ b/Userland/Libraries/LibWeb/CSS/Parser/ComponentValue.h
@@ -1,6 +1,7 @@
/*
* Copyright (c) 2020-2021, the SerenityOS developers.
* Copyright (c) 2021-2023, Sam Atkins <atkinssj@serenityos.org>
+ * Copyright (c) 2023, Andreas Kling <kling@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
@@ -23,10 +24,10 @@ public:
~ComponentValue();
bool is_block() const { return m_value.has<NonnullRefPtr<Block>>(); }
- Block const& block() const { return m_value.get<NonnullRefPtr<Block>>(); }
+ Block& block() const { return m_value.get<NonnullRefPtr<Block>>(); }
bool is_function() const { return m_value.has<NonnullRefPtr<Function>>(); }
- Function const& function() const { return m_value.get<NonnullRefPtr<Function>>(); }
+ Function& function() const { return m_value.get<NonnullRefPtr<Function>>(); }
bool is_token() const { return m_value.has<Token>(); }
bool is(Token::Type type) const { return is_token() && token().is(type); }
diff --git a/Userland/Libraries/LibWeb/CSS/ResolvedCSSStyleDeclaration.cpp b/Userland/Libraries/LibWeb/CSS/ResolvedCSSStyleDeclaration.cpp
index 190916e5db..16f1459aa3 100644
--- a/Userland/Libraries/LibWeb/CSS/ResolvedCSSStyleDeclaration.cpp
+++ b/Userland/Libraries/LibWeb/CSS/ResolvedCSSStyleDeclaration.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021-2022, Andreas Kling <kling@serenityos.org>
+ * Copyright (c) 2021-2023, Andreas Kling <kling@serenityos.org>
* Copyright (c) 2021, Tobias Christiansen <tobyase@serenityos.org>
* Copyright (c) 2022, Sam Atkins <atkinssj@serenityos.org>
*
@@ -122,14 +122,14 @@ static RefPtr<StyleValue> style_value_for_display(CSS::Display display)
TODO();
}
-static NonnullRefPtr<StyleValue> value_or_default(Optional<StyleProperty> property, NonnullRefPtr<StyleValue> default_style)
+static NonnullRefPtr<StyleValue const> value_or_default(Optional<StyleProperty> property, NonnullRefPtr<StyleValue> default_style)
{
if (property.has_value())
return property.value().value;
return default_style;
}
-static NonnullRefPtr<StyleValue> style_value_for_length_percentage(LengthPercentage const& length_percentage)
+static NonnullRefPtr<StyleValue const> style_value_for_length_percentage(LengthPercentage const& length_percentage)
{
if (length_percentage.is_percentage())
return PercentageStyleValue::create(length_percentage.percentage());
@@ -138,7 +138,7 @@ static NonnullRefPtr<StyleValue> style_value_for_length_percentage(LengthPercent
return length_percentage.calculated();
}
-static NonnullRefPtr<StyleValue> style_value_for_size(CSS::Size const& size)
+static NonnullRefPtr<StyleValue const> style_value_for_size(CSS::Size const& size)
{
if (size.is_none())
return IdentifierStyleValue::create(ValueID::None);
@@ -156,7 +156,7 @@ static NonnullRefPtr<StyleValue> style_value_for_size(CSS::Size const& size)
TODO();
}
-RefPtr<StyleValue> ResolvedCSSStyleDeclaration::style_value_for_property(Layout::NodeWithStyle const& layout_node, PropertyID property_id) const
+RefPtr<StyleValue const> ResolvedCSSStyleDeclaration::style_value_for_property(Layout::NodeWithStyle const& layout_node, PropertyID property_id) const
{
switch (property_id) {
case CSS::PropertyID::Background: {
@@ -222,7 +222,7 @@ RefPtr<StyleValue> ResolvedCSSStyleDeclaration::style_value_for_property(Layout:
auto maybe_top_right_radius = property(CSS::PropertyID::BorderTopRightRadius);
auto maybe_bottom_left_radius = property(CSS::PropertyID::BorderBottomLeftRadius);
auto maybe_bottom_right_radius = property(CSS::PropertyID::BorderBottomRightRadius);
- RefPtr<BorderRadiusStyleValue> top_left_radius, top_right_radius, bottom_left_radius, bottom_right_radius;
+ RefPtr<BorderRadiusStyleValue const> top_left_radius, top_right_radius, bottom_left_radius, bottom_right_radius;
if (maybe_top_left_radius.has_value()) {
VERIFY(maybe_top_left_radius.value().value->is_border_radius());
top_left_radius = maybe_top_left_radius.value().value->as_border_radius();
@@ -337,7 +337,7 @@ RefPtr<StyleValue> ResolvedCSSStyleDeclaration::style_value_for_property(Layout:
auto maybe_grid_column_start = property(CSS::PropertyID::GridColumnStart);
auto maybe_grid_row_end = property(CSS::PropertyID::GridRowEnd);
auto maybe_grid_column_end = property(CSS::PropertyID::GridColumnEnd);
- RefPtr<GridTrackPlacementStyleValue> grid_row_start, grid_column_start, grid_row_end, grid_column_end;
+ RefPtr<GridTrackPlacementStyleValue const> grid_row_start, grid_column_start, grid_row_end, grid_column_end;
if (maybe_grid_row_start.has_value()) {
VERIFY(maybe_grid_row_start.value().value->is_grid_track_placement());
grid_row_start = maybe_grid_row_start.value().value->as_grid_track_placement();
@@ -363,7 +363,7 @@ RefPtr<StyleValue> ResolvedCSSStyleDeclaration::style_value_for_property(Layout:
case CSS::PropertyID::GridColumn: {
auto maybe_grid_column_end = property(CSS::PropertyID::GridColumnEnd);
auto maybe_grid_column_start = property(CSS::PropertyID::GridColumnStart);
- RefPtr<GridTrackPlacementStyleValue> grid_column_start, grid_column_end;
+ RefPtr<GridTrackPlacementStyleValue const> grid_column_start, grid_column_end;
if (maybe_grid_column_end.has_value()) {
VERIFY(maybe_grid_column_end.value().value->is_grid_track_placement());
grid_column_end = maybe_grid_column_end.value().value->as_grid_track_placement();
@@ -381,7 +381,7 @@ RefPtr<StyleValue> ResolvedCSSStyleDeclaration::style_value_for_property(Layout:
case CSS::PropertyID::GridRow: {
auto maybe_grid_row_end = property(CSS::PropertyID::GridRowEnd);
auto maybe_grid_row_start = property(CSS::PropertyID::GridRowStart);
- RefPtr<GridTrackPlacementStyleValue> grid_row_start, grid_row_end;
+ RefPtr<GridTrackPlacementStyleValue const> grid_row_start, grid_row_end;
if (maybe_grid_row_end.has_value()) {
VERIFY(maybe_grid_row_end.value().value->is_grid_track_placement());
grid_row_end = maybe_grid_row_end.value().value->as_grid_track_placement();
diff --git a/Userland/Libraries/LibWeb/CSS/ResolvedCSSStyleDeclaration.h b/Userland/Libraries/LibWeb/CSS/ResolvedCSSStyleDeclaration.h
index b659be5dda..3fb7686a17 100644
--- a/Userland/Libraries/LibWeb/CSS/ResolvedCSSStyleDeclaration.h
+++ b/Userland/Libraries/LibWeb/CSS/ResolvedCSSStyleDeclaration.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021, Andreas Kling <kling@serenityos.org>
+ * Copyright (c) 2021-2023, Andreas Kling <kling@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
@@ -32,7 +32,7 @@ private:
virtual void visit_edges(Cell::Visitor&) override;
- RefPtr<StyleValue> style_value_for_property(Layout::NodeWithStyle const&, PropertyID) const;
+ RefPtr<StyleValue const> style_value_for_property(Layout::NodeWithStyle const&, PropertyID) const;
JS::NonnullGCPtr<DOM::Element> m_element;
};
diff --git a/Userland/Libraries/LibWeb/CSS/StyleComputer.cpp b/Userland/Libraries/LibWeb/CSS/StyleComputer.cpp
index a1a29bee7f..f76ef83c44 100644
--- a/Userland/Libraries/LibWeb/CSS/StyleComputer.cpp
+++ b/Userland/Libraries/LibWeb/CSS/StyleComputer.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018-2022, Andreas Kling <kling@serenityos.org>
+ * Copyright (c) 2018-2023, Andreas Kling <kling@serenityos.org>
* Copyright (c) 2021, the SerenityOS developers.
* Copyright (c) 2021-2023, Sam Atkins <atkinssj@serenityos.org>
*
@@ -587,7 +587,7 @@ static void set_property_expanding_shorthands(StyleProperties& style, CSS::Prope
style.set_property(property_id, value);
}
-static RefPtr<StyleValue> get_custom_property(DOM::Element const& element, FlyString const& custom_property_name)
+static RefPtr<StyleValue const> get_custom_property(DOM::Element const& element, FlyString const& custom_property_name)
{
for (auto const* current_element = &element; current_element; current_element = current_element->parent_element()) {
if (auto it = current_element->custom_properties().find(custom_property_name.to_string().to_deprecated_string()); it != current_element->custom_properties().end())
@@ -907,7 +907,7 @@ static DOM::Element const* element_to_inherit_style_from(DOM::Element const* ele
return parent_element;
}
-static NonnullRefPtr<StyleValue> get_inherit_value(CSS::PropertyID property_id, DOM::Element const* element, Optional<CSS::Selector::PseudoElement> pseudo_element)
+static NonnullRefPtr<StyleValue const> get_inherit_value(CSS::PropertyID property_id, DOM::Element const* element, Optional<CSS::Selector::PseudoElement> pseudo_element)
{
auto* parent_element = element_to_inherit_style_from(element, pseudo_element);
@@ -1083,7 +1083,7 @@ void StyleComputer::compute_font(StyleProperties& style, DOM::Element const* ele
else
weight = Gfx::FontWeight::Black;
} else if (font_weight->is_calculated()) {
- auto maybe_weight = font_weight->as_calculated().resolve_integer();
+ auto maybe_weight = const_cast<CalculatedStyleValue&>(font_weight->as_calculated()).resolve_integer();
if (maybe_weight.has_value())
weight = maybe_weight.value();
}
@@ -1152,7 +1152,7 @@ void StyleComputer::compute_font(StyleProperties& style, DOM::Element const* ele
maybe_length = font_size->to_length();
} else if (font_size->is_calculated()) {
- maybe_length = Length::make_calculated(font_size->as_calculated());
+ maybe_length = Length::make_calculated(const_cast<CalculatedStyleValue&>(font_size->as_calculated()));
}
if (maybe_length.has_value()) {
// FIXME: Support font-size: calc(...)
@@ -1187,7 +1187,7 @@ void StyleComputer::compute_font(StyleProperties& style, DOM::Element const* ele
FontSelector font_selector;
bool monospace = false;
- auto find_font = [&](String const& family) -> RefPtr<Gfx::Font> {
+ auto find_font = [&](String const& family) -> RefPtr<Gfx::Font const> {
float font_size_in_pt = font_size_in_px * 0.75f;
font_selector = { family, font_size_in_pt, weight, width, slope };
@@ -1206,7 +1206,7 @@ void StyleComputer::compute_font(StyleProperties& style, DOM::Element const* ele
return {};
};
- auto find_generic_font = [&](ValueID font_id) -> RefPtr<Gfx::Font> {
+ auto find_generic_font = [&](ValueID font_id) -> RefPtr<Gfx::Font const> {
Platform::GenericFont generic_font {};
switch (font_id) {
case ValueID::Monospace:
@@ -1241,7 +1241,7 @@ void StyleComputer::compute_font(StyleProperties& style, DOM::Element const* ele
return find_font(String::from_utf8(Platform::FontPlugin::the().generic_font_name(generic_font)).release_value_but_fixme_should_propagate_errors());
};
- RefPtr<Gfx::Font> found_font;
+ RefPtr<Gfx::Font const> found_font;
auto family_value = style.property(PropertyID::FontFamily);
if (family_value->is_value_list()) {
diff --git a/Userland/Libraries/LibWeb/CSS/StyleProperties.cpp b/Userland/Libraries/LibWeb/CSS/StyleProperties.cpp
index a8785b6e1c..0075dccc9f 100644
--- a/Userland/Libraries/LibWeb/CSS/StyleProperties.cpp
+++ b/Userland/Libraries/LibWeb/CSS/StyleProperties.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018-2022, Andreas Kling <kling@serenityos.org>
+ * Copyright (c) 2018-2023, Andreas Kling <kling@serenityos.org>
* Copyright (c) 2021-2022, Sam Atkins <atkinssj@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
@@ -31,12 +31,12 @@ NonnullRefPtr<StyleProperties> StyleProperties::clone() const
return adopt_ref(*new StyleProperties(*this));
}
-void StyleProperties::set_property(CSS::PropertyID id, NonnullRefPtr<StyleValue> value)
+void StyleProperties::set_property(CSS::PropertyID id, NonnullRefPtr<StyleValue const> value)
{
m_property_values[to_underlying(id)] = move(value);
}
-NonnullRefPtr<StyleValue> StyleProperties::property(CSS::PropertyID property_id) const
+NonnullRefPtr<StyleValue const> StyleProperties::property(CSS::PropertyID property_id) const
{
auto value = m_property_values[to_underlying(property_id)];
// By the time we call this method, all properties have values assigned.
@@ -44,7 +44,7 @@ NonnullRefPtr<StyleValue> StyleProperties::property(CSS::PropertyID property_id)
return value.release_nonnull();
}
-RefPtr<StyleValue> StyleProperties::maybe_null_property(CSS::PropertyID property_id) const
+RefPtr<StyleValue const> StyleProperties::maybe_null_property(CSS::PropertyID property_id) const
{
return m_property_values[to_underlying(property_id)];
}
@@ -68,7 +68,7 @@ CSS::Size StyleProperties::size_value(CSS::PropertyID id) const
}
if (value->is_calculated())
- return CSS::Size::make_length(CSS::Length::make_calculated(value->as_calculated()));
+ return CSS::Size::make_length(CSS::Length::make_calculated(const_cast<CalculatedStyleValue&>(value->as_calculated())));
if (value->is_percentage())
return CSS::Size::make_percentage(value->as_percentage().percentage());
@@ -95,7 +95,7 @@ Optional<LengthPercentage> StyleProperties::length_percentage(CSS::PropertyID id
auto value = property(id);
if (value->is_calculated())
- return LengthPercentage { value->as_calculated() };
+ return LengthPercentage { const_cast<CalculatedStyleValue&>(value->as_calculated()) };
if (value->is_percentage())
return value->as_percentage().percentage();
@@ -124,7 +124,7 @@ Color StyleProperties::color_or_fallback(CSS::PropertyID id, Layout::NodeWithSty
return value->to_color(node);
}
-NonnullRefPtr<Gfx::Font> StyleProperties::font_fallback(bool monospace, bool bold)
+NonnullRefPtr<Gfx::Font const> StyleProperties::font_fallback(bool monospace, bool bold)
{
if (monospace && bold)
return Platform::FontPlugin::the().default_fixed_width_font().bold_variant();
@@ -161,7 +161,7 @@ CSSPixels StyleProperties::line_height(Layout::Node const& layout_node) const
}
if (line_height->is_calculated())
- return CSS::Length::make_calculated(line_height->as_calculated()).to_px(layout_node);
+ return CSS::Length::make_calculated(const_cast<CalculatedStyleValue&>(line_height->as_calculated())).to_px(layout_node);
return layout_node.font().pixel_metrics().line_spacing();
}
@@ -193,7 +193,7 @@ float StyleProperties::opacity() const
else
dbgln("Unable to resolve calc() as opacity (percentage): {}", value->to_string());
} else {
- auto maybe_number = value->as_calculated().resolve_number();
+ auto maybe_number = const_cast<CalculatedStyleValue&>(value->as_calculated()).resolve_number();
if (maybe_number.has_value())
unclamped_opacity = maybe_number.value();
else
diff --git a/Userland/Libraries/LibWeb/CSS/StyleProperties.h b/Userland/Libraries/LibWeb/CSS/StyleProperties.h
index 572528a6dc..7c780fe218 100644
--- a/Userland/Libraries/LibWeb/CSS/StyleProperties.h
+++ b/Userland/Libraries/LibWeb/CSS/StyleProperties.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
+ * Copyright (c) 2018-2023, Andreas Kling <kling@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
@@ -38,9 +38,9 @@ public:
auto& properties() { return m_property_values; }
auto const& properties() const { return m_property_values; }
- void set_property(CSS::PropertyID, NonnullRefPtr<StyleValue> value);
- NonnullRefPtr<StyleValue> property(CSS::PropertyID) const;
- RefPtr<StyleValue> maybe_null_property(CSS::PropertyID) const;
+ void set_property(CSS::PropertyID, NonnullRefPtr<StyleValue const> value);
+ NonnullRefPtr<StyleValue const> property(CSS::PropertyID) const;
+ RefPtr<StyleValue const> maybe_null_property(CSS::PropertyID) const;
CSS::Size size_value(CSS::PropertyID) const;
LengthPercentage length_percentage_or_fallback(CSS::PropertyID, LengthPercentage const& fallback) const;
@@ -103,7 +103,7 @@ public:
return *m_font;
}
- void set_computed_font(NonnullRefPtr<Gfx::Font> font)
+ void set_computed_font(NonnullRefPtr<Gfx::Font const> font)
{
m_font = move(font);
}
@@ -115,16 +115,16 @@ public:
Optional<CSS::Position> position() const;
Optional<int> z_index() const;
- static NonnullRefPtr<Gfx::Font> font_fallback(bool monospace, bool bold);
+ static NonnullRefPtr<Gfx::Font const> font_fallback(bool monospace, bool bold);
private:
friend class StyleComputer;
- Array<RefPtr<StyleValue>, to_underlying(CSS::last_property_id) + 1> m_property_values;
+ Array<RefPtr<StyleValue const>, to_underlying(CSS::last_property_id) + 1> m_property_values;
Optional<CSS::Overflow> overflow(CSS::PropertyID) const;
Vector<CSS::ShadowData> shadow(CSS::PropertyID) const;
- mutable RefPtr<Gfx::Font> m_font;
+ mutable RefPtr<Gfx::Font const> m_font;
};
}
diff --git a/Userland/Libraries/LibWeb/CSS/StyleValue.cpp b/Userland/Libraries/LibWeb/CSS/StyleValue.cpp
index 6743d32f6c..770df8b3bd 100644
--- a/Userland/Libraries/LibWeb/CSS/StyleValue.cpp
+++ b/Userland/Libraries/LibWeb/CSS/StyleValue.cpp
@@ -291,14 +291,14 @@ StyleValueList const& StyleValue::as_value_list() const
}
BackgroundStyleValue::BackgroundStyleValue(
- ValueComparingNonnullRefPtr<StyleValue> color,
- ValueComparingNonnullRefPtr<StyleValue> image,
- ValueComparingNonnullRefPtr<StyleValue> position,
- ValueComparingNonnullRefPtr<StyleValue> size,
- ValueComparingNonnullRefPtr<StyleValue> repeat,
- ValueComparingNonnullRefPtr<StyleValue> attachment,
- ValueComparingNonnullRefPtr<StyleValue> origin,
- ValueComparingNonnullRefPtr<StyleValue> clip)
+ ValueComparingNonnullRefPtr<StyleValue const> color,
+ ValueComparingNonnullRefPtr<StyleValue const> image,
+ ValueComparingNonnullRefPtr<StyleValue const> position,
+ ValueComparingNonnullRefPtr<StyleValue const> size,
+ ValueComparingNonnullRefPtr<StyleValue const> repeat,
+ ValueComparingNonnullRefPtr<StyleValue const> attachment,
+ ValueComparingNonnullRefPtr<StyleValue const> origin,
+ ValueComparingNonnullRefPtr<StyleValue const> clip)
: StyleValueWithDefaultOperators(Type::Background)
, m_properties {
.color = move(color),
@@ -335,7 +335,7 @@ ErrorOr<String> BackgroundStyleValue::to_string() const
return String::formatted("{} {} {} {} {} {} {} {}", TRY(m_properties.color->to_string()), TRY(m_properties.image->to_string()), TRY(m_properties.position->to_string()), TRY(m_properties.size->to_string()), TRY(m_properties.repeat->to_string()), TRY(m_properties.attachment->to_string()), TRY(m_properties.origin->to_string()), TRY(m_properties.clip->to_string()));
}
- auto get_layer_value_string = [](ValueComparingNonnullRefPtr<StyleValue> const& style_value, size_t index) {
+ auto get_layer_value_string = [](ValueComparingNonnullRefPtr<StyleValue const> const& style_value, size_t index) {
if (style_value->is_value_list())
return style_value->as_value_list().value_at(index, true)->to_string();
return style_value->to_string();
@@ -2236,19 +2236,19 @@ static Optional<CSS::Length> absolutized_length(CSS::Length const& length, CSSPi
return {};
}
-ValueComparingNonnullRefPtr<StyleValue> StyleValue::absolutized(CSSPixelRect const&, Gfx::FontPixelMetrics const&, CSSPixels, CSSPixels) const
+ValueComparingNonnullRefPtr<StyleValue const> StyleValue::absolutized(CSSPixelRect const&, Gfx::FontPixelMetrics const&, CSSPixels, CSSPixels) const
{
return *this;
}
-ValueComparingNonnullRefPtr<StyleValue> LengthStyleValue::absolutized(CSSPixelRect const& viewport_rect, Gfx::FontPixelMetrics const& font_metrics, CSSPixels font_size, CSSPixels root_font_size) const
+ValueComparingNonnullRefPtr<StyleValue const> LengthStyleValue::absolutized(CSSPixelRect const& viewport_rect, Gfx::FontPixelMetrics const& font_metrics, CSSPixels font_size, CSSPixels root_font_size) const
{
if (auto length = absolutized_length(m_length, viewport_rect, font_metrics, font_size, root_font_size); length.has_value())
return LengthStyleValue::create(length.release_value());
return *this;
}
-ValueComparingNonnullRefPtr<StyleValue> ShadowStyleValue::absolutized(CSSPixelRect const& viewport_rect, Gfx::FontPixelMetrics const& font_metrics, CSSPixels font_size, CSSPixels root_font_size) const
+ValueComparingNonnullRefPtr<StyleValue const> ShadowStyleValue::absolutized(CSSPixelRect const& viewport_rect, Gfx::FontPixelMetrics const& font_metrics, CSSPixels font_size, CSSPixels root_font_size) const
{
auto absolutized_offset_x = absolutized_length(m_properties.offset_x, viewport_rect, font_metrics, font_size, root_font_size).value_or(m_properties.offset_x);
auto absolutized_offset_y = absolutized_length(m_properties.offset_y, viewport_rect, font_metrics, font_size, root_font_size).value_or(m_properties.offset_y);
@@ -2257,7 +2257,7 @@ ValueComparingNonnullRefPtr<StyleValue> ShadowStyleValue::absolutized(CSSPixelRe
return ShadowStyleValue::create(m_properties.color, absolutized_offset_x, absolutized_offset_y, absolutized_blur_radius, absolutized_spread_distance, m_properties.placement);
}
-ValueComparingNonnullRefPtr<StyleValue> BorderRadiusStyleValue::absolutized(CSSPixelRect const& viewport_rect, Gfx::FontPixelMetrics const& font_metrics, CSSPixels font_size, CSSPixels root_font_size) const
+ValueComparingNonnullRefPtr<StyleValue const> BorderRadiusStyleValue::absolutized(CSSPixelRect const& viewport_rect, Gfx::FontPixelMetrics const& font_metrics, CSSPixels font_size, CSSPixels root_font_size) const
{
if (m_properties.horizontal_radius.is_percentage() && m_properties.vertical_radius.is_percentage())
return *this;
diff --git a/Userland/Libraries/LibWeb/CSS/StyleValue.h b/Userland/Libraries/LibWeb/CSS/StyleValue.h
index 4e842922b9..638f2dfe07 100644
--- a/Userland/Libraries/LibWeb/CSS/StyleValue.h
+++ b/Userland/Libraries/LibWeb/CSS/StyleValue.h
@@ -269,7 +269,7 @@ private:
template<typename T>
using ValueComparingNonnullRefPtrVector = AK::NonnullPtrVector<ValueComparingNonnullRefPtr<T>>;
-using StyleValueVector = ValueComparingNonnullRefPtrVector<StyleValue>;
+using StyleValueVector = ValueComparingNonnullRefPtrVector<StyleValue const>;
class StyleValue : public RefCounted<StyleValue> {
public:
@@ -469,7 +469,7 @@ public:
virtual bool has_number() const { return false; }
virtual bool has_integer() const { return false; }
- virtual ValueComparingNonnullRefPtr<StyleValue> absolutized(CSSPixelRect const& viewport_rect, Gfx::FontPixelMetrics const& font_metrics, CSSPixels font_size, CSSPixels root_font_size) const;
+ virtual ValueComparingNonnullRefPtr<StyleValue const> absolutized(CSSPixelRect const& viewport_rect, Gfx::FontPixelMetrics const& font_metrics, CSSPixels font_size, CSSPixels root_font_size) const;
virtual Color to_color(Layout::NodeWithStyle const&) const { return {}; }
virtual EdgeRect to_rect() const { VERIFY_NOT_REACHED(); }
@@ -533,14 +533,14 @@ private:
class BackgroundStyleValue final : public StyleValueWithDefaultOperators<BackgroundStyleValue> {
public:
static ValueComparingNonnullRefPtr<BackgroundStyleValue> create(
- ValueComparingNonnullRefPtr<StyleValue> color,
- ValueComparingNonnullRefPtr<StyleValue> image,
- ValueComparingNonnullRefPtr<StyleValue> position,
- ValueComparingNonnullRefPtr<StyleValue> size,
- ValueComparingNonnullRefPtr<StyleValue> repeat,
- ValueComparingNonnullRefPtr<StyleValue> attachment,
- ValueComparingNonnullRefPtr<StyleValue> origin,
- ValueComparingNonnullRefPtr<StyleValue> clip)
+ ValueComparingNonnullRefPtr<StyleValue const> color,
+ ValueComparingNonnullRefPtr<StyleValue const> image,
+ ValueComparingNonnullRefPtr<StyleValue const> position,
+ ValueComparingNonnullRefPtr<StyleValue const> size,
+ ValueComparingNonnullRefPtr<StyleValue const> repeat,
+ ValueComparingNonnullRefPtr<StyleValue const> attachment,
+ ValueComparingNonnullRefPtr<StyleValue const> origin,
+ ValueComparingNonnullRefPtr<StyleValue const> clip)
{
return adopt_ref(*new BackgroundStyleValue(move(color), move(image), move(position), move(size), move(repeat), move(attachment), move(origin), move(clip)));
}
@@ -548,14 +548,14 @@ public:
size_t layer_count() const { return m_properties.layer_count; }
- ValueComparingNonnullRefPtr<StyleValue> attachment() const { return m_properties.attachment; }
- ValueComparingNonnullRefPtr<StyleValue> clip() const { return m_properties.clip; }
- ValueComparingNonnullRefPtr<StyleValue> color() const { return m_properties.color; }
- ValueComparingNonnullRefPtr<StyleValue> image() const { return m_properties.image; }
- ValueComparingNonnullRefPtr<StyleValue> origin() const { return m_properties.origin; }
- ValueComparingNonnullRefPtr<StyleValue> position() const { return m_properties.position; }
- ValueComparingNonnullRefPtr<StyleValue> repeat() const { return m_properties.repeat; }
- ValueComparingNonnullRefPtr<StyleValue> size() const { return m_properties.size; }
+ auto attachment() const { return m_properties.attachment; }
+ auto clip() const { return m_properties.clip; }
+ auto color() const { return m_properties.color; }
+ auto image() const { return m_properties.image; }
+ auto origin() const { return m_properties.origin; }
+ auto position() const { return m_properties.position; }
+ auto repeat() const { return m_properties.repeat; }
+ auto size() const { return m_properties.size; }
virtual ErrorOr<String> to_string() const override;
@@ -563,24 +563,24 @@ public:
private:
BackgroundStyleValue(
- ValueComparingNonnullRefPtr<StyleValue> color,
- ValueComparingNonnullRefPtr<StyleValue> image,
- ValueComparingNonnullRefPtr<StyleValue> position,
- ValueComparingNonnullRefPtr<StyleValue> size,
- ValueComparingNonnullRefPtr<StyleValue> repeat,
- ValueComparingNonnullRefPtr<StyleValue> attachment,
- ValueComparingNonnullRefPtr<StyleValue> origin,
- ValueComparingNonnullRefPtr<StyleValue> clip);
+ ValueComparingNonnullRefPtr<StyleValue const> color,
+ ValueComparingNonnullRefPtr<StyleValue const> image,
+ ValueComparingNonnullRefPtr<StyleValue const> position,
+ ValueComparingNonnullRefPtr<StyleValue const> size,
+ ValueComparingNonnullRefPtr<StyleValue const> repeat,
+ ValueComparingNonnullRefPtr<StyleValue const> attachment,
+ ValueComparingNonnullRefPtr<StyleValue const> origin,
+ ValueComparingNonnullRefPtr<StyleValue const> clip);
struct Properties {
- ValueComparingNonnullRefPtr<StyleValue> color;
- ValueComparingNonnullRefPtr<StyleValue> image;
- ValueComparingNonnullRefPtr<StyleValue> position;
- ValueComparingNonnullRefPtr<StyleValue> size;
- ValueComparingNonnullRefPtr<StyleValue> repeat;
- ValueComparingNonnullRefPtr<StyleValue> attachment;
- ValueComparingNonnullRefPtr<StyleValue> origin;
- ValueComparingNonnullRefPtr<StyleValue> clip;
+ ValueComparingNonnullRefPtr<StyleValue const> color;
+ ValueComparingNonnullRefPtr<StyleValue const> image;
+ ValueComparingNonnullRefPtr<StyleValue const> position;
+ ValueComparingNonnullRefPtr<StyleValue const> size;
+ ValueComparingNonnullRefPtr<StyleValue const> repeat;
+ ValueComparingNonnullRefPtr<StyleValue const> attachment;
+ ValueComparingNonnullRefPtr<StyleValue const> origin;
+ ValueComparingNonnullRefPtr<StyleValue const> clip;
size_t layer_count;
bool operator==(Properties const&) const = default;
} m_properties;
@@ -705,7 +705,7 @@ private:
{
}
- virtual ValueComparingNonnullRefPtr<StyleValue> absolutized(CSSPixelRect const& viewport_rect, Gfx::FontPixelMetrics const& font_metrics, CSSPixels font_size, CSSPixels root_font_size) const override;
+ virtual ValueComparingNonnullRefPtr<StyleValue const> absolutized(CSSPixelRect const& viewport_rect, Gfx::FontPixelMetrics const& font_metrics, CSSPixels font_size, CSSPixels root_font_size) const override;
struct Properties {
bool is_elliptical;
@@ -717,33 +717,41 @@ private:
class BorderRadiusShorthandStyleValue final : public StyleValueWithDefaultOperators<BorderRadiusShorthandStyleValue> {
public:
- static ValueComparingNonnullRefPtr<BorderRadiusShorthandStyleValue> create(ValueComparingNonnullRefPtr<BorderRadiusStyleValue> top_left, ValueComparingNonnullRefPtr<BorderRadiusStyleValue> top_right, ValueComparingNonnullRefPtr<BorderRadiusStyleValue> bottom_right, ValueComparingNonnullRefPtr<BorderRadiusStyleValue> bottom_left)
+ static ValueComparingNonnullRefPtr<BorderRadiusShorthandStyleValue> create(
+ ValueComparingNonnullRefPtr<BorderRadiusStyleValue const> top_left,
+ ValueComparingNonnullRefPtr<BorderRadiusStyleValue const> top_right,
+ ValueComparingNonnullRefPtr<BorderRadiusStyleValue const> bottom_right,
+ ValueComparingNonnullRefPtr<BorderRadiusStyleValue const> bottom_left)
{
return adopt_ref(*new BorderRadiusShorthandStyleValue(move(top_left), move(top_right), move(bottom_right), move(bottom_left)));
}
virtual ~BorderRadiusShorthandStyleValue() override = default;
- ValueComparingNonnullRefPtr<BorderRadiusStyleValue> top_left() const { return m_properties.top_left; }
- ValueComparingNonnullRefPtr<BorderRadiusStyleValue> top_right() const { return m_properties.top_right; }
- ValueComparingNonnullRefPtr<BorderRadiusStyleValue> bottom_right() const { return m_properties.bottom_right; }
- ValueComparingNonnullRefPtr<BorderRadiusStyleValue> bottom_left() const { return m_properties.bottom_left; }
+ auto top_left() const { return m_properties.top_left; }
+ auto top_right() const { return m_properties.top_right; }
+ auto bottom_right() const { return m_properties.bottom_right; }
+ auto bottom_left() const { return m_properties.bottom_left; }
virtual ErrorOr<String> to_string() const override;
bool properties_equal(BorderRadiusShorthandStyleValue const& other) const { return m_properties == other.m_properties; }
private:
- BorderRadiusShorthandStyleValue(ValueComparingNonnullRefPtr<BorderRadiusStyleValue> top_left, ValueComparingNonnullRefPtr<BorderRadiusStyleValue> top_right, ValueComparingNonnullRefPtr<BorderRadiusStyleValue> bottom_right, ValueComparingNonnullRefPtr<BorderRadiusStyleValue> bottom_left)
+ BorderRadiusShorthandStyleValue(
+ ValueComparingNonnullRefPtr<BorderRadiusStyleValue const> top_left,
+ ValueComparingNonnullRefPtr<BorderRadiusStyleValue const> top_right,
+ ValueComparingNonnullRefPtr<BorderRadiusStyleValue const> bottom_right,
+ ValueComparingNonnullRefPtr<BorderRadiusStyleValue const> bottom_left)
: StyleValueWithDefaultOperators(Type::BorderRadiusShorthand)
, m_properties { .top_left = move(top_left), .top_right = move(top_right), .bottom_right = move(bottom_right), .bottom_left = move(bottom_left) }
{
}
struct Properties {
- ValueComparingNonnullRefPtr<BorderRadiusStyleValue> top_left;
- ValueComparingNonnullRefPtr<BorderRadiusStyleValue> top_right;
- ValueComparingNonnullRefPtr<BorderRadiusStyleValue> bottom_right;
- ValueComparingNonnullRefPtr<BorderRadiusStyleValue> bottom_left;
+ ValueComparingNonnullRefPtr<BorderRadiusStyleValue const> top_left;
+ ValueComparingNonnullRefPtr<BorderRadiusStyleValue const> top_right;
+ ValueComparingNonnullRefPtr<BorderRadiusStyleValue const> bottom_right;
+ ValueComparingNonnullRefPtr<BorderRadiusStyleValue const> bottom_left;
bool operator==(Properties const&) const = default;
} m_properties;
};
@@ -1206,7 +1214,7 @@ private:
class GridTrackPlacementShorthandStyleValue final : public StyleValueWithDefaultOperators<GridTrackPlacementShorthandStyleValue> {
public:
- static ValueComparingNonnullRefPtr<GridTrackPlacementShorthandStyleValue> create(ValueComparingNonnullRefPtr<GridTrackPlacementStyleValue> start, ValueComparingNonnullRefPtr<GridTrackPlacementStyleValue> end)
+ static ValueComparingNonnullRefPtr<GridTrackPlacementShorthandStyleValue> create(ValueComparingNonnullRefPtr<GridTrackPlacementStyleValue const> start, ValueComparingNonnullRefPtr<GridTrackPlacementStyleValue const> end)
{
return adopt_ref(*new GridTrackPlacementShorthandStyleValue(move(start), move(end)));
}
@@ -1216,30 +1224,34 @@ public:
}
virtual ~GridTrackPlacementShorthandStyleValue() override = default;
- ValueComparingNonnullRefPtr<GridTrackPlacementStyleValue> start() const { return m_properties.start; }
- ValueComparingNonnullRefPtr<GridTrackPlacementStyleValue> end() const { return m_properties.end; }
+ auto start() const { return m_properties.start; }
+ auto end() const { return m_properties.end; }
virtual ErrorOr<String> to_string() const override;
bool properties_equal(GridTrackPlacementShorthandStyleValue const& other) const { return m_properties == other.m_properties; };
private:
- GridTrackPlacementShorthandStyleValue(ValueComparingNonnullRefPtr<GridTrackPlacementStyleValue> start, ValueComparingNonnullRefPtr<GridTrackPlacementStyleValue> end)
+ GridTrackPlacementShorthandStyleValue(ValueComparingNonnullRefPtr<GridTrackPlacementStyleValue const> start, ValueComparingNonnullRefPtr<GridTrackPlacementStyleValue const> end)
: StyleValueWithDefaultOperators(Type::GridTrackPlacementShorthand)
, m_properties { .start = move(start), .end = move(end) }
{
}
struct Properties {
- ValueComparingNonnullRefPtr<GridTrackPlacementStyleValue> start;
- ValueComparingNonnullRefPtr<GridTrackPlacementStyleValue> end;
+ ValueComparingNonnullRefPtr<GridTrackPlacementStyleValue const> start;
+ ValueComparingNonnullRefPtr<GridTrackPlacementStyleValue const> end;
bool operator==(Properties const&) const = default;
} m_properties;
};
class GridAreaShorthandStyleValue final : public StyleValueWithDefaultOperators<GridAreaShorthandStyleValue> {
public:
- static ValueComparingNonnullRefPtr<GridAreaShorthandStyleValue> create(ValueComparingNonnullRefPtr<GridTrackPlacementStyleValue> row_start, ValueComparingNonnullRefPtr<GridTrackPlacementStyleValue> column_start, ValueComparingNonnullRefPtr<GridTrackPlacementStyleValue> row_end, ValueComparingNonnullRefPtr<GridTrackPlacementStyleValue> column_end)
+ static ValueComparingNonnullRefPtr<GridAreaShorthandStyleValue> create(
+ ValueComparingNonnullRefPtr<GridTrackPlacementStyleValue const> row_start,
+ ValueComparingNonnullRefPtr<GridTrackPlacementStyleValue const> column_start,
+ ValueComparingNonnullRefPtr<GridTrackPlacementStyleValue const> row_end,
+ ValueComparingNonnullRefPtr<GridTrackPlacementStyleValue const> column_end)
{
return adopt_ref(*new GridAreaShorthandStyleValue(row_start, column_start, row_end, column_end));
}
@@ -1249,27 +1261,27 @@ public:
}
virtual ~GridAreaShorthandStyleValue() override = default;
- ValueComparingNonnullRefPtr<GridTrackPlacementStyleValue> row_start() const { return m_properties.row_start; }
- ValueComparingNonnullRefPtr<GridTrackPlacementStyleValue> column_start() const { return m_properties.column_start; }
- ValueComparingNonnullRefPtr<GridTrackPlacementStyleValue> row_end() const { return m_properties.row_end; }
- ValueComparingNonnullRefPtr<GridTrackPlacementStyleValue> column_end() const { return m_properties.column_end; }
+ auto row_start() const { return m_properties.row_start; }
+ auto column_start() const { return m_properties.column_start; }
+ auto row_end() const { return m_properties.row_end; }
+ auto column_end() const { return m_properties.column_end; }
virtual ErrorOr<String> to_string() const override;
bool properties_equal(GridAreaShorthandStyleValue const& other) const { return m_properties == other.m_properties; }
private:
- GridAreaShorthandStyleValue(ValueComparingNonnullRefPtr<GridTrackPlacementStyleValue> row_start, ValueComparingNonnullRefPtr<GridTrackPlacementStyleValue> column_start, ValueComparingNonnullRefPtr<GridTrackPlacementStyleValue> row_end, ValueComparingNonnullRefPtr<GridTrackPlacementStyleValue> column_end)
+ GridAreaShorthandStyleValue(ValueComparingNonnullRefPtr<GridTrackPlacementStyleValue const> row_start, ValueComparingNonnullRefPtr<GridTrackPlacementStyleValue const> column_start, ValueComparingNonnullRefPtr<GridTrackPlacementStyleValue const> row_end, ValueComparingNonnullRefPtr<GridTrackPlacementStyleValue const> column_end)
: StyleValueWithDefaultOperators(Type::GridAreaShorthand)
, m_properties { .row_start = move(row_start), .column_start = move(column_start), .row_end = move(row_end), .column_end = move(column_end) }
{
}
struct Properties {
- ValueComparingNonnullRefPtr<GridTrackPlacementStyleValue> row_start;
- ValueComparingNonnullRefPtr<GridTrackPlacementStyleValue> column_start;
- ValueComparingNonnullRefPtr<GridTrackPlacementStyleValue> row_end;
- ValueComparingNonnullRefPtr<GridTrackPlacementStyleValue> column_end;
+ ValueComparingNonnullRefPtr<GridTrackPlacementStyleValue const> row_start;
+ ValueComparingNonnullRefPtr<GridTrackPlacementStyleValue const> column_start;
+ ValueComparingNonnullRefPtr<GridTrackPlacementStyleValue const> row_end;
+ ValueComparingNonnullRefPtr<GridTrackPlacementStyleValue const> column_end;
bool operator==(Properties const&) const = default;
} m_properties;
};
@@ -1623,7 +1635,7 @@ public:
virtual ErrorOr<String> to_string() const override { return m_length.to_string(); }
virtual Length to_length() const override { return m_length; }
virtual ValueID to_identifier() const override { return has_auto() ? ValueID::Auto : ValueID::Invalid; }
- virtual ValueComparingNonnullRefPtr<StyleValue> absolutized(CSSPixelRect const& viewport_rect, Gfx::FontPixelMetrics const& font_metrics, CSSPixels font_size, CSSPixels root_font_size) const override;
+ virtual ValueComparingNonnullRefPtr<StyleValue const> absolutized(CSSPixelRect const& viewport_rect, Gfx::FontPixelMetrics const& font_metrics, CSSPixels font_size, CSSPixels root_font_size) const override;
bool properties_equal(LengthStyleValue const& other) const { return m_length == other.m_length; }
@@ -1852,7 +1864,7 @@ private:
{
}
- virtual ValueComparingNonnullRefPtr<StyleValue> absolutized(CSSPixelRect const& viewport_rect, Gfx::FontPixelMetrics const& font_metrics, CSSPixels font_size, CSSPixels root_font_size) const override;
+ virtual ValueComparingNonnullRefPtr<StyleValue const> absolutized(CSSPixelRect const& viewport_rect, Gfx::FontPixelMetrics const& font_metrics, CSSPixels font_size, CSSPixels root_font_size) const override;
struct Properties {
Color color;
@@ -2038,7 +2050,7 @@ public:
size_t size() const { return m_properties.values.size(); }
StyleValueVector const& values() const { return m_properties.values; }
- ValueComparingNonnullRefPtr<StyleValue> value_at(size_t i, bool allow_loop) const
+ ValueComparingNonnullRefPtr<StyleValue const> value_at(size_t i, bool allow_loop) const
{
if (allow_loop)
return m_properties.values[i % size()];
diff --git a/Userland/Libraries/LibWeb/DOM/Element.h b/Userland/Libraries/LibWeb/DOM/Element.h
index 7b1ca4b494..5beb5257bf 100644
--- a/Userland/Libraries/LibWeb/DOM/Element.h
+++ b/Userland/Libraries/LibWeb/DOM/Element.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018-2021, Andreas Kling <kling@serenityos.org>
+ * Copyright (c) 2018-2023, Andreas Kling <kling@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
@@ -122,6 +122,7 @@ public:
DeprecatedString name() const { return attribute(HTML::AttributeNames::name); }
+ CSS::StyleProperties* computed_css_values() { return m_computed_css_values.ptr(); }
CSS::StyleProperties const* computed_css_values() const { return m_computed_css_values.ptr(); }
void set_computed_css_values(RefPtr<CSS::StyleProperties> style) { m_computed_css_values = move(style); }
NonnullRefPtr<CSS::StyleProperties> resolved_css_values();
diff --git a/Userland/Libraries/LibWeb/FontCache.cpp b/Userland/Libraries/LibWeb/FontCache.cpp
index 30b93f641f..b37bf8e553 100644
--- a/Userland/Libraries/LibWeb/FontCache.cpp
+++ b/Userland/Libraries/LibWeb/FontCache.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
+ * Copyright (c) 2018-2023, Andreas Kling <kling@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
@@ -13,7 +13,7 @@ FontCache& FontCache::the()
return cache;
}
-RefPtr<Gfx::Font> FontCache::get(FontSelector const& font_selector) const
+RefPtr<Gfx::Font const> FontCache::get(FontSelector const& font_selector) const
{
auto cached_font = m_fonts.get(font_selector);
if (cached_font.has_value())
@@ -21,7 +21,7 @@ RefPtr<Gfx::Font> FontCache::get(FontSelector const& font_selector) const
return nullptr;
}
-void FontCache::set(FontSelector const& font_selector, NonnullRefPtr<Gfx::Font> font)
+void FontCache::set(FontSelector const& font_selector, NonnullRefPtr<Gfx::Font const> font)
{
m_fonts.set(font_selector, move(font));
}
diff --git a/Userland/Libraries/LibWeb/FontCache.h b/Userland/Libraries/LibWeb/FontCache.h
index ce9cfe7622..daf725305f 100644
--- a/Userland/Libraries/LibWeb/FontCache.h
+++ b/Userland/Libraries/LibWeb/FontCache.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
+ * Copyright (c) 2018-2023, Andreas Kling <kling@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
@@ -34,10 +34,10 @@ struct Traits<FontSelector> : public GenericTraits<FontSelector> {
class FontCache {
public:
static FontCache& the();
- RefPtr<Gfx::Font> get(FontSelector const&) const;
- void set(FontSelector const&, NonnullRefPtr<Gfx::Font>);
+ RefPtr<Gfx::Font const> get(FontSelector const&) const;
+ void set(FontSelector const&, NonnullRefPtr<Gfx::Font const>);
private:
FontCache() = default;
- mutable HashMap<FontSelector, NonnullRefPtr<Gfx::Font>> m_fonts;
+ mutable HashMap<FontSelector, NonnullRefPtr<Gfx::Font const>> m_fonts;
};
diff --git a/Userland/Libraries/LibWeb/Layout/Node.cpp b/Userland/Libraries/LibWeb/Layout/Node.cpp
index 8809e9c832..7bfd886de5 100644
--- a/Userland/Libraries/LibWeb/Layout/Node.cpp
+++ b/Userland/Libraries/LibWeb/Layout/Node.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018-2022, Andreas Kling <kling@serenityos.org>
+ * Copyright (c) 2018-2023, Andreas Kling <kling@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
@@ -277,7 +277,7 @@ void NodeWithStyle::apply_style(const CSS::StyleProperties& computed_style)
return 1;
};
- auto value_for_layer = [](auto& style_value, size_t layer_index) -> RefPtr<CSS::StyleValue> {
+ auto value_for_layer = [](auto& style_value, size_t layer_index) -> RefPtr<CSS::StyleValue const> {
if (style_value->is_value_list())
return style_value->as_value_list().value_at(layer_index, true);
return style_value;
@@ -301,7 +301,7 @@ void NodeWithStyle::apply_style(const CSS::StyleProperties& computed_style)
if (auto image_value = value_for_layer(images, layer_index); image_value) {
if (image_value->is_abstract_image()) {
layer.background_image = image_value->as_abstract_image();
- layer.background_image->load_any_resources(document());
+ const_cast<CSS::AbstractImageStyleValue&>(*layer.background_image).load_any_resources(document());
}
}
@@ -517,7 +517,7 @@ void NodeWithStyle::apply_style(const CSS::StyleProperties& computed_style)
auto list_style_image = computed_style.property(CSS::PropertyID::ListStyleImage);
if (list_style_image->is_abstract_image()) {
m_list_style_image = list_style_image->as_abstract_image();
- m_list_style_image->load_any_resources(document());
+ const_cast<CSS::AbstractImageStyleValue&>(*m_list_style_image).load_any_resources(document());
}
computed_values.set_color(computed_style.color_or_fallback(CSS::PropertyID::Color, *this, CSS::InitialValues::color()));
@@ -574,7 +574,7 @@ void NodeWithStyle::apply_style(const CSS::StyleProperties& computed_style)
auto resolve_border_width = [&]() {
auto value = computed_style.property(width_property);
if (value->is_calculated())
- return CSS::Length::make_calculated(value->as_calculated()).to_px(*this).value();
+ return CSS::Length::make_calculated(const_cast<CSS::CalculatedStyleValue&>(value->as_calculated())).to_px(*this).value();
if (value->has_length())
return value->to_length().to_px(*this).value();
if (value->is_identifier()) {
diff --git a/Userland/Libraries/LibWeb/Layout/Node.h b/Userland/Libraries/LibWeb/Layout/Node.h
index effb811f01..6df5d3495b 100644
--- a/Userland/Libraries/LibWeb/Layout/Node.h
+++ b/Userland/Libraries/LibWeb/Layout/Node.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018-2021, Andreas Kling <kling@serenityos.org>
+ * Copyright (c) 2018-2023, Andreas Kling <kling@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
@@ -195,9 +195,9 @@ protected:
private:
CSS::ComputedValues m_computed_values;
- RefPtr<Gfx::Font> m_font;
+ RefPtr<Gfx::Font const> m_font;
CSSPixels m_line_height { 0 };
- RefPtr<CSS::AbstractImageStyleValue> m_list_style_image;
+ RefPtr<CSS::AbstractImageStyleValue const> m_list_style_image;
};
class NodeWithStyleAndBoxModelMetrics : public NodeWithStyle {
diff --git a/Userland/Libraries/LibWeb/Painting/PaintableBox.cpp b/Userland/Libraries/LibWeb/Painting/PaintableBox.cpp
index bb1c807eeb..e3af41b338 100644
--- a/Userland/Libraries/LibWeb/Painting/PaintableBox.cpp
+++ b/Userland/Libraries/LibWeb/Painting/PaintableBox.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2022, Andreas Kling <kling@serenityos.org>
+ * Copyright (c) 2022-2023, Andreas Kling <kling@serenityos.org>
* Copyright (c) 2022, Sam Atkins <atkinssj@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
@@ -513,7 +513,7 @@ static void paint_text_fragment(PaintContext& context, Layout::TextNode const& t
Utf8View view { text.substring_view(fragment.start(), fragment.length()) };
auto& font = fragment.layout_node().font();
- auto scaled_font = [&]() -> RefPtr<Gfx::Font> {
+ auto scaled_font = [&]() -> RefPtr<Gfx::Font const> {
auto device_font_pt_size = context.enclosing_device_pixels(font.presentation_size());
FontSelector font_selector = { FlyString::from_utf8(font.family()).release_value_but_fixme_should_propagate_errors(), static_cast<float>(device_font_pt_size.value()), font.weight(), font.width(), font.slope() };
if (auto cached_font = FontCache::the().get(font_selector)) {