diff --git a/Libraries/LibHTML/Layout/LayoutNode.cpp b/Libraries/LibHTML/Layout/LayoutNode.cpp
index b2f460a31f..dea0a68cb8 100644
--- a/Libraries/LibHTML/Layout/LayoutNode.cpp
+++ b/Libraries/LibHTML/Layout/LayoutNode.cpp
@@ -55,3 +55,10 @@ HitTestResult LayoutNode::hit_test(const Point& position) const
});
return result;
}
+
+const Document& LayoutNode::document() const
+{
+ if (is_anonymous())
+ return parent()->document();
+ return node()->document();
+}
diff --git a/Libraries/LibHTML/Layout/LayoutNode.h b/Libraries/LibHTML/Layout/LayoutNode.h
index 8663408df8..04e0205be2 100644
--- a/Libraries/LibHTML/Layout/LayoutNode.h
+++ b/Libraries/LibHTML/Layout/LayoutNode.h
@@ -8,10 +8,11 @@
#include
#include
-class Node;
+class Document;
class Element;
class LayoutBlock;
class LayoutNode;
+class Node;
struct HitTestResult {
RefPtr layout_node;
@@ -33,6 +34,8 @@ public:
bool is_anonymous() const { return !m_node; }
const Node* node() const { return m_node; }
+ const Document& document() const;
+
template
inline void for_each_child(Callback callback) const
{