diff --git a/Userland/Libraries/LibWeb/HTML/Navigable.cpp b/Userland/Libraries/LibWeb/HTML/Navigable.cpp
index 9503eb0c3f..705fc9f91f 100644
--- a/Userland/Libraries/LibWeb/HTML/Navigable.cpp
+++ b/Userland/Libraries/LibWeb/HTML/Navigable.cpp
@@ -193,6 +193,19 @@ JS::GCPtr Navigable::container() const
return NavigableContainer::navigable_container_with_content_navigable(const_cast(*this));
}
+// https://html.spec.whatwg.org/multipage/document-sequences.html#nav-container-document
+JS::GCPtr Navigable::container_document() const
+{
+ auto container = this->container();
+
+ // 1. If navigable's container is null, then return null.
+ if (!container)
+ return nullptr;
+
+ // 2. Return navigable's container's node document.
+ return container->document();
+}
+
// https://html.spec.whatwg.org/multipage/document-sequences.html#nav-traversable
JS::GCPtr Navigable::traversable_navigable() const
{
diff --git a/Userland/Libraries/LibWeb/HTML/Navigable.h b/Userland/Libraries/LibWeb/HTML/Navigable.h
index 112d70f1cd..e40ff78494 100644
--- a/Userland/Libraries/LibWeb/HTML/Navigable.h
+++ b/Userland/Libraries/LibWeb/HTML/Navigable.h
@@ -60,6 +60,7 @@ public:
String target_name() const;
JS::GCPtr container() const;
+ JS::GCPtr container_document() const;
JS::GCPtr traversable_navigable() const;
JS::GCPtr top_level_traversable();