1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-19 17:05:06 +00:00

FileSystemAccessServer: Allow read-only access without prompting

This commit adds a new request to the FileSystemAccessServer
endpoint, allowing the clients to get read-only access to a file
without getting a Dialog-box prompting the user for access.

This is only meant to be used in cases where the user has asked
specifically to open a file through the command-line arguments.
In those cases, I believe it makes sense for the read-only access
to be implicit. Always prompting the user gets a bit annoying,
especially if you just quickly want to open a file through the CLI.

The new request name has been made extremely specific to make sure
that it's only used when appropriate.
This commit is contained in:
Mustafa Quraish 2021-09-06 00:51:32 -04:00 committed by Ali Mohammad Pur
parent b37211a615
commit 2a968e92f0
5 changed files with 43 additions and 4 deletions

View file

@ -22,6 +22,23 @@ Client& Client::the()
return *s_the;
}
Result Client::request_file_read_only_approved(i32 parent_window_id, String const& path)
{
m_promise = Core::Promise<Result>::construct();
auto parent_window_server_client_id = GUI::WindowServerConnection::the().expose_client_id();
auto child_window_server_client_id = expose_window_server_client_id();
GUI::WindowServerConnection::the().async_add_window_stealing_for_client(child_window_server_client_id, parent_window_id);
ScopeGuard guard([parent_window_id, child_window_server_client_id] {
GUI::WindowServerConnection::the().async_remove_window_stealing_for_client(child_window_server_client_id, parent_window_id);
});
async_request_file_read_only_approved(parent_window_server_client_id, parent_window_id, path);
return m_promise->await();
}
Result Client::request_file(i32 parent_window_id, String const& path, Core::OpenMode mode)
{
m_promise = Core::Promise<Result>::construct();