diff --git a/Tests/LibWeb/Ref/reference/svg-use-defined-earlier.html b/Tests/LibWeb/Ref/reference/svg-use-defined-earlier.html new file mode 100644 index 0000000000..32d0bd79a1 --- /dev/null +++ b/Tests/LibWeb/Ref/reference/svg-use-defined-earlier.html @@ -0,0 +1,11 @@ + + + + + + +
+ + + +
diff --git a/Tests/LibWeb/Ref/svg-use-defined-later.html b/Tests/LibWeb/Ref/svg-use-defined-later.html new file mode 100644 index 0000000000..bb8bf3ac2b --- /dev/null +++ b/Tests/LibWeb/Ref/svg-use-defined-later.html @@ -0,0 +1,12 @@ + + +
+ + + +
+ + + + + diff --git a/Userland/Libraries/LibWeb/DOM/Document.cpp b/Userland/Libraries/LibWeb/DOM/Document.cpp index 4fb59d68bd..c86a53780e 100644 --- a/Userland/Libraries/LibWeb/DOM/Document.cpp +++ b/Userland/Libraries/LibWeb/DOM/Document.cpp @@ -1974,6 +1974,14 @@ void Document::completely_finish_loading() if (!navigable()) return; + ScopeGuard notify_observers = [this] { + auto observers_to_notify = m_document_observers.values(); + for (auto& document_observer : observers_to_notify) { + if (document_observer->document_completely_loaded()) + document_observer->document_completely_loaded()->function()(); + } + }; + // 1. Assert: document's browsing context is non-null. VERIFY(browsing_context()); @@ -2002,12 +2010,6 @@ void Document::completely_finish_loading() container->dispatch_event(DOM::Event::create(container->realm(), HTML::EventNames::load)); }); } - - auto observers_to_notify = m_document_observers.values(); - for (auto& document_observer : observers_to_notify) { - if (document_observer->document_completely_loaded()) - document_observer->document_completely_loaded()->function()(); - } } String Document::cookie(Cookie::Source source)