1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 06:07:44 +00:00

LibWeb+WebContent: Plumb ability for WebContent process to hold N pages

In order for same-origin NavigableContainers (iframe, frame, embed, ...)
and window.open() WindowProxies to have the proper JS access to their
embedder/opener, we need to host multiple top level traversables in the
same WebContent process. As a first step, make WebContent::PageHost hold
a HashMap of PageClient objects, each holding their own Web::Page that
represents a TraversableNavigable's API surface with the UI process.
This commit is contained in:
Andrew Kaster 2023-11-29 09:34:38 -07:00 committed by Andreas Kling
parent 34ae39478a
commit fbfb70f81a
13 changed files with 769 additions and 660 deletions

View file

@ -33,8 +33,8 @@ public:
virtual void die() override;
void initialize_js_console(Badge<PageHost>, Web::DOM::Document& document);
void destroy_js_console(Badge<PageHost>, Web::DOM::Document& document);
void initialize_js_console(Badge<PageClient>, Web::DOM::Document& document);
void destroy_js_console(Badge<PageClient>, Web::DOM::Document& document);
void request_file(Web::FileRequest);
@ -46,8 +46,8 @@ public:
private:
explicit ConnectionFromClient(NonnullOwnPtr<Core::LocalSocket>);
Web::Page& page();
Web::Page const& page() const;
PageClient& page(u64 index = 0);
PageClient const& page(u64 index = 0) const;
virtual Messages::WebContentServer::GetWindowHandleResponse get_window_handle() override;
virtual void set_window_handle(String const& handle) override;