mirror of
https://github.com/LadybirdBrowser/ladybird
synced 2026-05-05 06:32:30 +02: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:
committed by
Ali Mohammad Pur
parent
b37211a615
commit
2a968e92f0
Notes:
sideshowbarker
2024-07-18 04:20:18 +09:00
Author: https://github.com/mustafaquraish Commit: https://github.com/SerenityOS/serenity/commit/2a968e92f07 Pull-request: https://github.com/SerenityOS/serenity/pull/9854 Reviewed-by: https://github.com/IdanHo Reviewed-by: https://github.com/alimpfard
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user