mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2026-04-18 09:50:27 +00:00
Remove includes from Node.h that are only needed for forward declarations (AccessibilityTreeNode.h, XMLSerializer.h, JsonObjectSerializer.h). Extract StyleInvalidationReason and FragmentSerializationMode enums into standalone lightweight headers so downstream headers (CSSStyleSheet.h, CSSStyleProperties.h, HTMLParser.h) can include just the enum they need instead of all of Node.h. Replace Node.h with forward declarations in headers that only use Node by pointer/reference. This breaks the circular dependency between Node.h and AccessibilityTreeNode.h, reducing AccessibilityTreeNode.h's recompilation footprint from ~1399 to ~25 files.
51 lines
1.3 KiB
C++
51 lines
1.3 KiB
C++
/*
|
|
* Copyright (c) 2021, Luke Wilde <lukew@serenityos.org>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#include <LibGC/Heap.h>
|
|
#include <LibJS/Runtime/Error.h>
|
|
#include <LibWeb/DOM/Node.h>
|
|
#include <LibWeb/DOM/StaticNodeList.h>
|
|
|
|
namespace Web::DOM {
|
|
|
|
GC_DEFINE_ALLOCATOR(StaticNodeList);
|
|
|
|
GC::Ref<NodeList> StaticNodeList::create(JS::Realm& realm, Vector<GC::Root<Node>> static_nodes)
|
|
{
|
|
return realm.create<StaticNodeList>(realm, move(static_nodes));
|
|
}
|
|
|
|
StaticNodeList::StaticNodeList(JS::Realm& realm, Vector<GC::Root<Node>> static_nodes)
|
|
: NodeList(realm)
|
|
{
|
|
for (auto& node : static_nodes)
|
|
m_static_nodes.append(*node);
|
|
}
|
|
|
|
StaticNodeList::~StaticNodeList() = default;
|
|
|
|
void StaticNodeList::visit_edges(Cell::Visitor& visitor)
|
|
{
|
|
Base::visit_edges(visitor);
|
|
visitor.visit(m_static_nodes);
|
|
}
|
|
|
|
// https://dom.spec.whatwg.org/#dom-nodelist-length
|
|
u32 StaticNodeList::length() const
|
|
{
|
|
return m_static_nodes.size();
|
|
}
|
|
|
|
// https://dom.spec.whatwg.org/#dom-nodelist-item
|
|
Node const* StaticNodeList::item(u32 index) const
|
|
{
|
|
// The item(index) method must return the indexth node in the collection. If there is no indexth node in the collection, then the method must return null.
|
|
if (index >= m_static_nodes.size())
|
|
return nullptr;
|
|
return m_static_nodes[index];
|
|
}
|
|
|
|
}
|