LibWeb: Implement Document::make_active()
Implementation of "make active" algorithm from the spec for Document. Co-authored-by: Andreas Kling <kling@serenityos.org>
This commit is contained in:
parent
32e2207b55
commit
3225c39191
Notes:
sideshowbarker
2024-07-17 07:19:27 +09:00
Author: https://github.com/kalenikaliaksandr Commit: https://github.com/SerenityOS/serenity/commit/3225c39191 Pull-request: https://github.com/SerenityOS/serenity/pull/18478
4 changed files with 25 additions and 3 deletions
|
@ -58,11 +58,13 @@
|
|||
#include <LibWeb/HTML/HTMLTitleElement.h>
|
||||
#include <LibWeb/HTML/Location.h>
|
||||
#include <LibWeb/HTML/MessageEvent.h>
|
||||
#include <LibWeb/HTML/Navigable.h>
|
||||
#include <LibWeb/HTML/NavigationParams.h>
|
||||
#include <LibWeb/HTML/Origin.h>
|
||||
#include <LibWeb/HTML/Parser/HTMLParser.h>
|
||||
#include <LibWeb/HTML/Scripting/ExceptionReporter.h>
|
||||
#include <LibWeb/HTML/Scripting/WindowEnvironmentSettingsObject.h>
|
||||
#include <LibWeb/HTML/TraversableNavigable.h>
|
||||
#include <LibWeb/HTML/Window.h>
|
||||
#include <LibWeb/HTML/WindowProxy.h>
|
||||
#include <LibWeb/HighResolutionTime/TimeOrigin.h>
|
||||
|
@ -2514,4 +2516,22 @@ WebIDL::ExceptionOr<JS::NonnullGCPtr<Attr>> Document::create_attribute_ns(Deprec
|
|||
return Attr::create(*this, extracted_qualified_name);
|
||||
}
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/browsing-the-web.html#make-active
|
||||
void Document::make_active()
|
||||
{
|
||||
// 1. Let window be document's relevant global object.
|
||||
auto& window = verify_cast<HTML::Window>(HTML::relevant_global_object(*this));
|
||||
|
||||
// 2. Set document's browsing context's WindowProxy's [[Window]] internal slot value to window.
|
||||
m_browsing_context->window_proxy()->set_window(window);
|
||||
|
||||
// 3. Set document's visibility state to document's node navigable's traversable navigable's system visibility state.
|
||||
if (navigable()) {
|
||||
m_visibility_state = navigable()->traversable_navigable()->system_visibility_state();
|
||||
}
|
||||
|
||||
// 4. Set window's relevant settings object's execution ready flag.
|
||||
HTML::relevant_settings_object(window).execution_ready = true;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -468,6 +468,8 @@ public:
|
|||
|
||||
DeprecatedString dump_accessibility_tree_as_json();
|
||||
|
||||
void make_active();
|
||||
|
||||
protected:
|
||||
virtual JS::ThrowCompletionOr<void> initialize(JS::Realm&) override;
|
||||
virtual void visit_edges(Cell::Visitor&) override;
|
||||
|
|
|
@ -256,9 +256,9 @@ void WindowProxy::visit_edges(JS::Cell::Visitor& visitor)
|
|||
visitor.visit(m_window.ptr());
|
||||
}
|
||||
|
||||
void WindowProxy::set_window(Badge<BrowsingContext>, JS::NonnullGCPtr<Window> window)
|
||||
void WindowProxy::set_window(JS::NonnullGCPtr<Window> window)
|
||||
{
|
||||
m_window = window;
|
||||
m_window = move(window);
|
||||
}
|
||||
|
||||
JS::NonnullGCPtr<BrowsingContext> WindowProxy::associated_browsing_context() const
|
||||
|
|
|
@ -32,7 +32,7 @@ public:
|
|||
virtual JS::ThrowCompletionOr<JS::MarkedVector<JS::Value>> internal_own_property_keys() const override;
|
||||
|
||||
JS::GCPtr<Window> window() const { return m_window; }
|
||||
void set_window(Badge<BrowsingContext>, JS::NonnullGCPtr<Window>);
|
||||
void set_window(JS::NonnullGCPtr<Window>);
|
||||
|
||||
JS::NonnullGCPtr<BrowsingContext> associated_browsing_context() const;
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue