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)