From 5913efbb45d607710f6ab0d5b8b27b060a181024 Mon Sep 17 00:00:00 2001 From: Timothy Flynn Date: Wed, 29 Nov 2023 15:31:10 -0500 Subject: [PATCH] LibWeb: Add a visit_edges() override to AbstractBrowsingContext AbstractBrowsingContext has a subclass RemoteBrowsingContext without a visit_edges() override (and it doesn't really need one). But currently, we rely on subclasses visiting AbstractBrowsingContext's opener BC. This adds a visit_edges() to AbstractBrowsingContext to explicitly visit the opener BC itself. --- .../Userland/Libraries/LibWeb/HTML/BUILD.gn | 1 + Userland/Libraries/LibWeb/CMakeLists.txt | 1 + .../LibWeb/HTML/AbstractBrowsingContext.cpp | 18 ++++++++++++++++++ .../LibWeb/HTML/AbstractBrowsingContext.h | 2 ++ .../Libraries/LibWeb/HTML/BrowsingContext.cpp | 1 - 5 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 Userland/Libraries/LibWeb/HTML/AbstractBrowsingContext.cpp diff --git a/Meta/gn/secondary/Userland/Libraries/LibWeb/HTML/BUILD.gn b/Meta/gn/secondary/Userland/Libraries/LibWeb/HTML/BUILD.gn index 94d51a3f54..37fce57faa 100644 --- a/Meta/gn/secondary/Userland/Libraries/LibWeb/HTML/BUILD.gn +++ b/Meta/gn/secondary/Userland/Libraries/LibWeb/HTML/BUILD.gn @@ -11,6 +11,7 @@ source_set("HTML") { "//Userland/Libraries/LibWeb:all_generated", ] sources = [ + "AbstractBrowsingContext.cpp", "AnimatedBitmapDecodedImageData.cpp", "AttributeNames.cpp", "AudioTrack.cpp", diff --git a/Userland/Libraries/LibWeb/CMakeLists.txt b/Userland/Libraries/LibWeb/CMakeLists.txt index c0e155a5e8..ce18accb53 100644 --- a/Userland/Libraries/LibWeb/CMakeLists.txt +++ b/Userland/Libraries/LibWeb/CMakeLists.txt @@ -226,6 +226,7 @@ set(SOURCES Geometry/DOMRect.cpp Geometry/DOMRectList.cpp Geometry/DOMRectReadOnly.cpp + HTML/AbstractBrowsingContext.cpp HTML/AnimatedBitmapDecodedImageData.cpp HTML/AttributeNames.cpp HTML/AudioTrack.cpp diff --git a/Userland/Libraries/LibWeb/HTML/AbstractBrowsingContext.cpp b/Userland/Libraries/LibWeb/HTML/AbstractBrowsingContext.cpp new file mode 100644 index 0000000000..09bfa10592 --- /dev/null +++ b/Userland/Libraries/LibWeb/HTML/AbstractBrowsingContext.cpp @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2023, Tim Flynn + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#include +#include + +namespace Web::HTML { + +void AbstractBrowsingContext::visit_edges(JS::Cell::Visitor& visitor) +{ + Base::visit_edges(visitor); + visitor.visit(m_opener_browsing_context); +} + +} diff --git a/Userland/Libraries/LibWeb/HTML/AbstractBrowsingContext.h b/Userland/Libraries/LibWeb/HTML/AbstractBrowsingContext.h index dba0fd9725..29b9f3ccfa 100644 --- a/Userland/Libraries/LibWeb/HTML/AbstractBrowsingContext.h +++ b/Userland/Libraries/LibWeb/HTML/AbstractBrowsingContext.h @@ -34,6 +34,8 @@ public: virtual void set_window_handle(String handle) = 0; protected: + virtual void visit_edges(JS::Cell::Visitor&) override; + String m_name; // https://html.spec.whatwg.org/multipage/browsers.html#is-popup diff --git a/Userland/Libraries/LibWeb/HTML/BrowsingContext.cpp b/Userland/Libraries/LibWeb/HTML/BrowsingContext.cpp index 3d075fe0ea..6a1baf8d5e 100644 --- a/Userland/Libraries/LibWeb/HTML/BrowsingContext.cpp +++ b/Userland/Libraries/LibWeb/HTML/BrowsingContext.cpp @@ -289,7 +289,6 @@ void BrowsingContext::visit_edges(Cell::Visitor& visitor) visitor.visit(m_container); visitor.visit(m_cursor_position); visitor.visit(m_window_proxy); - visitor.visit(m_opener_browsing_context); visitor.visit(m_group); visitor.visit(m_parent); visitor.visit(m_first_child);