Skip to content

Commit

Permalink
WebContent: Limit the Console client to the top-level navigable client
Browse files Browse the repository at this point in the history
We don't want to set the intrinsic Console object's client to non-top-
level clients, created for e.g. SVG elements or subframes. We also want
to make sure the Console client is updated if the top-level document has
changed.
  • Loading branch information
trflynn89 authored and awesomekling committed Jul 23, 2024
1 parent 64d45af commit 758f488
Showing 1 changed file with 5 additions and 1 deletion.
6 changes: 5 additions & 1 deletion Userland/Services/WebContent/PageClient.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -342,8 +342,13 @@ void PageClient::page_did_create_new_document(Web::DOM::Document& document)

void PageClient::page_did_change_active_document_in_top_level_browsing_context(Web::DOM::Document& document)
{
auto& realm = document.realm();

VERIFY(m_console_clients.contains(document));
m_top_level_document_console_client = *m_console_clients.get(document).value();

auto console_object = realm.intrinsics().console_object();
console_object->console().set_client(*m_top_level_document_console_client);
}

void PageClient::page_did_destroy_document(Web::DOM::Document& document)
Expand Down Expand Up @@ -666,7 +671,6 @@ void PageClient::initialize_js_console(Web::DOM::Document& document)
auto& realm = document.realm();
auto console_object = realm.intrinsics().console_object();
auto console_client = heap().allocate_without_realm<WebContentConsoleClient>(console_object->console(), document.realm(), *this);
console_object->console().set_client(*console_client);

m_console_clients.set(document, console_client);
}
Expand Down

0 comments on commit 758f488

Please sign in to comment.