mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-22 07:30:19 +00:00
Base: Launch WebContent at session start-up
This commit is contained in:
parent
266e18e0b6
commit
ac7b0e69e5
Notes:
sideshowbarker
2024-07-17 17:40:13 +09:00
Author: https://github.com/LucasChollet Commit: https://github.com/SerenityOS/serenity/commit/ac7b0e69e5 Pull-request: https://github.com/SerenityOS/serenity/pull/14673 Reviewed-by: https://github.com/linusg
10 changed files with 21 additions and 18 deletions
|
@ -8,15 +8,6 @@ SystemModes=text,graphical
|
|||
MultiInstance=true
|
||||
AcceptSocketConnections=true
|
||||
|
||||
[WebContent]
|
||||
Socket=/tmp/portal/webcontent
|
||||
SocketPermissions=600
|
||||
Lazy=true
|
||||
User=anon
|
||||
SystemModes=graphical
|
||||
MultiInstance=true
|
||||
AcceptSocketConnections=true
|
||||
|
||||
[ImageDecoder]
|
||||
Socket=/tmp/portal/image
|
||||
SocketPermissions=600
|
||||
|
|
|
@ -11,6 +11,14 @@ SystemModes=text,graphical
|
|||
MultiInstance=true
|
||||
AcceptSocketConnections=true
|
||||
|
||||
[WebContent]
|
||||
Socket=/tmp/user/%uid/portal/webcontent
|
||||
SocketPermissions=600
|
||||
Lazy=true
|
||||
SystemModes=graphical
|
||||
MultiInstance=true
|
||||
AcceptSocketConnections=true
|
||||
|
||||
[LaunchServer]
|
||||
Socket=/tmp/user/%uid/portal/launch
|
||||
SocketPermissions=600
|
||||
|
|
|
@ -30,9 +30,13 @@ This process can decode images (PNG, JPEG, BMP, ICO, PBM, etc.) into bitmaps. Ea
|
|||
|
||||
### How processes are spawned
|
||||
|
||||
To get a fresh **WebContent** process, anyone with the suitable file system permissions can spawn one by connecting to the socket at `/tmp/portal/webcontent`. This socket is managed by **SystemServer** and will spawn a new instance of **WebContent** for every connection.
|
||||
To get a fresh **WebContent** process, anyone with the suitable file system permissions can spawn one by connecting to
|
||||
the socket at `/tmp/user/%uid/portal/webcontent`, with `%uid` being the uid of the current user. This socket is managed
|
||||
by **
|
||||
SystemServer** and will spawn a new instance of **WebContent** for every connection.
|
||||
|
||||
The same basic concept applies to **RequestServer** and **ImageDecoder** as well, except that those services are spawned by **WebContent** as needed, not by **Browser**.
|
||||
The same basic concept applies to **RequestServer** and **ImageDecoder** as well, except that those services are spawned
|
||||
by **WebContent** as needed, not by **Browser**.
|
||||
|
||||
## Class overview
|
||||
|
||||
|
|
|
@ -86,7 +86,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
|||
TRY(Core::System::unveil("/etc/timezone", "r"));
|
||||
TRY(Core::System::unveil("/tmp/portal/filesystemaccess", "rw"));
|
||||
TRY(Core::System::unveil("/tmp/portal/image", "rw"));
|
||||
TRY(Core::System::unveil("/tmp/portal/webcontent", "rw"));
|
||||
TRY(Core::System::unveil("/tmp/user/%uid/portal/webcontent", "rw"));
|
||||
TRY(Core::System::unveil("/tmp/user/%uid/portal/request", "rw"));
|
||||
TRY(Core::System::unveil("/bin/BrowserSettings", "x"));
|
||||
TRY(Core::System::unveil(nullptr, nullptr));
|
||||
|
|
|
@ -35,7 +35,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
|||
TRY(Core::System::unveil("/usr/share/man", "r"));
|
||||
TRY(Core::System::unveil("/tmp/portal/filesystemaccess", "rw"));
|
||||
TRY(Core::System::unveil("/tmp/user/%uid/portal/launch", "rw"));
|
||||
TRY(Core::System::unveil("/tmp/portal/webcontent", "rw"));
|
||||
TRY(Core::System::unveil("/tmp/user/%uid/portal/webcontent", "rw"));
|
||||
TRY(Core::System::unveil(nullptr, nullptr));
|
||||
|
||||
String start_page;
|
||||
|
|
|
@ -26,7 +26,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
|||
|
||||
TRY(Core::System::unveil("/res", "r"));
|
||||
TRY(Core::System::unveil("/etc", "r"));
|
||||
TRY(Core::System::unveil("/tmp/portal/webcontent", "rw"));
|
||||
TRY(Core::System::unveil("/tmp/user/%uid/portal/webcontent", "rw"));
|
||||
TRY(Core::System::unveil("/tmp/portal/lookup", "rw"));
|
||||
TRY(Core::System::unveil("/tmp/user/%uid/portal/launch", "rw"));
|
||||
TRY(Core::System::unveil(nullptr, nullptr));
|
||||
|
|
|
@ -44,7 +44,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
|||
}
|
||||
}
|
||||
|
||||
TRY(Core::System::unveil("/tmp/portal/webcontent", "rw"));
|
||||
TRY(Core::System::unveil("/tmp/user/%uid/portal/webcontent", "rw"));
|
||||
// For writing temporary files when exporting.
|
||||
TRY(Core::System::unveil("/tmp", "crw"));
|
||||
TRY(Core::System::unveil("/etc", "r"));
|
||||
|
|
|
@ -33,7 +33,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
|||
|
||||
TRY(Core::System::unveil("/res", "r"));
|
||||
TRY(Core::System::unveil("/tmp/user/%uid/portal/launch", "rw"));
|
||||
TRY(Core::System::unveil("/tmp/portal/webcontent", "rw"));
|
||||
TRY(Core::System::unveil("/tmp/user/%uid/portal/webcontent", "rw"));
|
||||
TRY(Core::System::unveil("/tmp/portal/filesystemaccess", "rw"));
|
||||
TRY(Core::System::unveil(nullptr, nullptr));
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
|||
|
||||
TRY(Core::System::unveil("/res", "r"));
|
||||
TRY(Core::System::unveil("/home", "r"));
|
||||
TRY(Core::System::unveil("/tmp/portal/webcontent", "rw"));
|
||||
TRY(Core::System::unveil("/tmp/user/%uid/portal/webcontent", "rw"));
|
||||
TRY(Core::System::unveil("/bin/Help", "x"));
|
||||
TRY(Core::System::unveil(nullptr, nullptr));
|
||||
auto app_icon = GUI::Icon::default_icon("app-welcome"sv);
|
||||
|
|
|
@ -19,7 +19,7 @@ class OutOfProcessWebView;
|
|||
class WebContentClient final
|
||||
: public IPC::ConnectionToServer<WebContentClientEndpoint, WebContentServerEndpoint>
|
||||
, public WebContentClientEndpoint {
|
||||
IPC_CLIENT_CONNECTION(WebContentClient, "/tmp/portal/webcontent"sv);
|
||||
IPC_CLIENT_CONNECTION(WebContentClient, "/tmp/user/%uid/portal/webcontent"sv);
|
||||
|
||||
public:
|
||||
Function<void()> on_web_content_process_crash;
|
||||
|
|
Loading…
Reference in a new issue