1
0
Fork 0
mirror of https://github.com/LadybirdBrowser/ladybird.git synced 2025-06-10 18:10:56 +09: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
Notes: sideshowbarker 2024-07-18 04:20:18 +09:00
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();

View file

@ -27,6 +27,7 @@ class Client final
C_OBJECT(Client)
public:
Result request_file_read_only_approved(i32 parent_window_id, String const& path);
Result request_file(i32 parent_window_id, String const& path, Core::OpenMode mode);
Result open_file(i32 parent_window_id, String const& window_title = {}, StringView const& path = Core::StandardPaths::home_directory());
Result save_file(i32 parent_window_id, String const& name, String const ext);