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:
parent
b37211a615
commit
2a968e92f0
Notes:
sideshowbarker
2024-07-18 04:20:18 +09:00
Author: https://github.com/mustafaquraish
Commit: 2a968e92f0
Pull-request: https://github.com/SerenityOS/serenity/pull/9854
Reviewed-by: https://github.com/IdanHo
Reviewed-by: https://github.com/alimpfard
5 changed files with 43 additions and 4 deletions
|
@ -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);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue