Kaynağa Gözat

LibWeb: Add a flag to track when a browsing context has been discarded

Timothy Flynn 2 yıl önce
ebeveyn
işleme
2d5381fd91

+ 2 - 0
Userland/Libraries/LibWeb/HTML/BrowsingContext.cpp

@@ -1329,6 +1329,8 @@ void BrowsingContext::set_system_visibility_state(VisibilityState visibility_sta
 // https://html.spec.whatwg.org/multipage/window-object.html#a-browsing-context-is-discarded
 void BrowsingContext::discard()
 {
+    m_has_been_discarded = true;
+
     // 1. Discard all Document objects for all the entries in browsingContext's session history.
     for (auto& entry : m_session_history) {
         if (entry.document)

+ 3 - 0
Userland/Libraries/LibWeb/HTML/BrowsingContext.h

@@ -243,6 +243,7 @@ public:
 
     // https://html.spec.whatwg.org/multipage/window-object.html#a-browsing-context-is-discarded
     void discard();
+    bool has_been_discarded() const { return m_has_been_discarded; }
 
     // https://html.spec.whatwg.org/multipage/window-object.html#close-a-browsing-context
     void close();
@@ -305,6 +306,8 @@ private:
     JS::GCPtr<BrowsingContext> m_last_child;
     JS::GCPtr<BrowsingContext> m_next_sibling;
     JS::GCPtr<BrowsingContext> m_previous_sibling;
+
+    bool m_has_been_discarded { false };
 };
 
 HTML::Origin determine_the_origin(BrowsingContext const& browsing_context, Optional<AK::URL> url, SandboxingFlagSet sandbox_flags, Optional<HTML::Origin> invocation_origin);