LibWeb: Fix always hanging Navigable::reload()

See spec issue https://github.com/whatwg/html/issues/9869

Previous attempt on fixing reload had to be reverted because it broke
Soundcloud and GitHub, but this change does not seem to introduce new
crashes.
This commit is contained in:
Aliaksandr Kalenik
2024-04-12 20:13:54 +02:00
committed by Alexander Kalenik
parent f7e57881ad
commit 91377f3ab9
10 changed files with 162 additions and 11 deletions

View File

@@ -16,6 +16,24 @@ DocumentState::DocumentState() = default;
DocumentState::~DocumentState() = default;
JS::NonnullGCPtr<DocumentState> DocumentState::clone() const
{
JS::NonnullGCPtr<DocumentState> cloned = *heap().allocate_without_realm<DocumentState>();
cloned->m_document = m_document;
cloned->m_history_policy_container = m_history_policy_container;
cloned->m_request_referrer = m_request_referrer;
cloned->m_request_referrer_policy = m_request_referrer_policy;
cloned->m_initiator_origin = m_initiator_origin;
cloned->m_origin = m_origin;
cloned->m_about_base_url = m_about_base_url;
cloned->m_nested_histories = m_nested_histories;
cloned->m_resource = m_resource;
cloned->m_reload_pending = m_reload_pending;
cloned->m_ever_populated = m_ever_populated;
cloned->m_navigable_target_name = m_navigable_target_name;
return cloned;
}
void DocumentState::visit_edges(Cell::Visitor& visitor)
{
Base::visit_edges(visitor);