diff --git a/Tests/LibWeb/Text/expected/ResizeObserver/disconnect.txt b/Tests/LibWeb/Text/expected/ResizeObserver/disconnect.txt
new file mode 100644
index 0000000000..f704bdf72f
--- /dev/null
+++ b/Tests/LibWeb/Text/expected/ResizeObserver/disconnect.txt
@@ -0,0 +1,2 @@
+ Size changed: 100px x 100px
+Size changed: 200px x 200px
diff --git a/Tests/LibWeb/Text/input/ResizeObserver/disconnect.html b/Tests/LibWeb/Text/input/ResizeObserver/disconnect.html
new file mode 100644
index 0000000000..958b4b7c3a
--- /dev/null
+++ b/Tests/LibWeb/Text/input/ResizeObserver/disconnect.html
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Userland/Libraries/LibWeb/ResizeObserver/ResizeObserver.cpp b/Userland/Libraries/LibWeb/ResizeObserver/ResizeObserver.cpp
index 8330f7eed4..f18548b8d5 100644
--- a/Userland/Libraries/LibWeb/ResizeObserver/ResizeObserver.cpp
+++ b/Userland/Libraries/LibWeb/ResizeObserver/ResizeObserver.cpp
@@ -89,10 +89,14 @@ void ResizeObserver::unobserve(DOM::Element& target)
m_observation_targets.remove(observation.index());
}
-// https://drafts.csswg.org/resize-observer/#dom-resizeobserver-disconnect
+// https://drafts.csswg.org/resize-observer-1/#dom-resizeobserver-disconnect
void ResizeObserver::disconnect()
{
- // FIXME: Implement
+ // 1. Clear the [[observationTargets]] list.
+ m_observation_targets.clear();
+
+ // 2. Clear the [[activeTargets]] list.
+ m_active_targets.clear();
}
void ResizeObserver::invoke_callback(Vector>& entries) const