From 3eca8cb24353604431a1d8bfbb968f5ef218cda3 Mon Sep 17 00:00:00 2001 From: Luke Wilde Date: Sat, 11 Sep 2021 23:28:41 +0100 Subject: [PATCH] LibWeb: Add Document::is_fully_active This is used in a bunch of places in the HTML spec. The current use case for this is History. --- Userland/Libraries/LibWeb/DOM/Document.cpp | 8 ++++++++ Userland/Libraries/LibWeb/DOM/Document.h | 2 ++ 2 files changed, 10 insertions(+) diff --git a/Userland/Libraries/LibWeb/DOM/Document.cpp b/Userland/Libraries/LibWeb/DOM/Document.cpp index 5d6fac43de..4cdc41a2a6 100644 --- a/Userland/Libraries/LibWeb/DOM/Document.cpp +++ b/Userland/Libraries/LibWeb/DOM/Document.cpp @@ -970,4 +970,12 @@ String Document::referrer() const return ""; } +// https://html.spec.whatwg.org/multipage/browsers.html#fully-active +bool Document::is_fully_active() const +{ + // A Document d is said to be fully active when d's browsing context is non-null, d's browsing context's active document is d, + // and either d's browsing context is a top-level browsing context, or d's browsing context's container document is fully active. + return browsing_context() && browsing_context()->active_document() == this && (browsing_context()->is_top_level() || browsing_context()->container_document()->is_fully_active()); +} + } diff --git a/Userland/Libraries/LibWeb/DOM/Document.h b/Userland/Libraries/LibWeb/DOM/Document.h index b9dc5ca93f..ad39329e95 100644 --- a/Userland/Libraries/LibWeb/DOM/Document.h +++ b/Userland/Libraries/LibWeb/DOM/Document.h @@ -274,6 +274,8 @@ public: bool has_a_style_sheet_that_is_blocking_scripts() const; + bool is_fully_active() const; + private: explicit Document(const URL&);