ladybird/Libraries/LibWeb/SVG/SVGStyleElement.cpp
Shannon Booth 903c8860f8 LibWeb: Add metadata to children update steps invocation
Currently, this metadata is only provided on the insertion steps,
though I believe it would be useful to extend to the other cases
as well. This metadata can aid in making optimizations for these
steps by providing extra context into the type of change which
was made on the child.
2025-01-30 13:55:40 -07:00

65 lines
1.7 KiB
C++

/*
* Copyright (c) 2023, Preston Taylor <PrestonLeeTaylor@proton.me>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#include <LibWeb/Bindings/SVGStyleElementPrototype.h>
#include <LibWeb/SVG/SVGStyleElement.h>
namespace Web::SVG {
GC_DEFINE_ALLOCATOR(SVGStyleElement);
SVGStyleElement::SVGStyleElement(DOM::Document& document, DOM::QualifiedName qualified_name)
: SVGElement(document, move(qualified_name))
{
}
SVGStyleElement::~SVGStyleElement() = default;
void SVGStyleElement::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(SVGStyleElement);
}
void SVGStyleElement::visit_edges(Cell::Visitor& visitor)
{
Base::visit_edges(visitor);
m_style_element_utils.visit_edges(visitor);
}
void SVGStyleElement::children_changed(ChildrenChangedMetadata const* metadata)
{
Base::children_changed(metadata);
m_style_element_utils.update_a_style_block(*this);
}
void SVGStyleElement::inserted()
{
m_style_element_utils.update_a_style_block(*this);
Base::inserted();
}
void SVGStyleElement::removed_from(Node* old_parent, Node& old_root)
{
m_style_element_utils.update_a_style_block(*this);
Base::removed_from(old_parent, old_root);
}
// https://www.w3.org/TR/cssom/#dom-linkstyle-sheet
CSS::CSSStyleSheet* SVGStyleElement::sheet()
{
// The sheet attribute must return the associated CSS style sheet for the node or null if there is no associated CSS style sheet.
return m_style_element_utils.sheet();
}
// https://www.w3.org/TR/cssom/#dom-linkstyle-sheet
CSS::CSSStyleSheet const* SVGStyleElement::sheet() const
{
// The sheet attribute must return the associated CSS style sheet for the node or null if there is no associated CSS style sheet.
return m_style_element_utils.sheet();
}
}