diff --git a/Userland/Libraries/LibWeb/DOM/Document.cpp b/Userland/Libraries/LibWeb/DOM/Document.cpp index 940a91954f..d5be71a55d 100644 --- a/Userland/Libraries/LibWeb/DOM/Document.cpp +++ b/Userland/Libraries/LibWeb/DOM/Document.cpp @@ -777,7 +777,10 @@ JS::GCPtr Document::first_base_element_with_href_in_tree_ AK::URL Document::fallback_base_url() const { // FIXME: 1. If document is an iframe srcdoc document, then return the document base URL of document's browsing context's container document. - // FIXME: 2. If document's URL is about:blank, and document's browsing context's creator base URL is non-null, then return that creator base URL. + + // 2. If document's URL is about:blank, and document's browsing context's creator base URL is non-null, then return that creator base URL. + if (m_url == "about:blank"sv && browsing_context() && browsing_context()->creator_url().has_value()) + return browsing_context()->creator_url().value(); // 3. Return document's URL. return m_url; diff --git a/Userland/Libraries/LibWeb/HTML/BrowsingContext.h b/Userland/Libraries/LibWeb/HTML/BrowsingContext.h index 8332cdc5e6..a8faa334de 100644 --- a/Userland/Libraries/LibWeb/HTML/BrowsingContext.h +++ b/Userland/Libraries/LibWeb/HTML/BrowsingContext.h @@ -265,6 +265,8 @@ public: // https://html.spec.whatwg.org/multipage/window-object.html#close-a-browsing-context void close(); + Optional const& creator_url() const { return m_creator_url; } + private: explicit BrowsingContext(Page&, HTML::BrowsingContextContainer*);