summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibFileSystemAccessClient
AgeCommit message (Collapse)Author
2023-05-29FileSystemAccessServer: Don't transmit unused dataBen Wiederhake
The server cannot use these values anywhere, because this method always sets 'prompt = ShouldPrompt::No'. This saves a bunch of roundtrips for all clients that use FSAS to read abritrary files.
2023-05-19LibFileSystemAccessClient: Improve error propagationthankyouverycool
Previously FSAC displayed some but not all errors and always rejected directories and devices. This has led most apps to ignore response errors in open/save actions or show redundant messages. Now FSAC displays all errors including fd failures and has the ability to silence messages for directories, devices and ENOENT, which some apps handle differently. Silenced directory and device errors now return files on success. A request's access mode is now stored in RequestData to format more accurate error messages from the user's perspective. Resolved promises don't require callback propagation so they're voided
2023-05-05FileSystemAccessServer: Use `ECANCELED` instead of -1Lucas CHOLLET
-1 was used when the user cancel the dialog, `ECANCELED` is a bit more explicit about what it is.
2023-03-24Libraries: Convert `DeprecatedFile` usages to `LibFileSystem`Cameron Youell
2023-03-22FileSystemAccessServer: Implement FileTypeFilter to open_file()huttongrabiel
This is the same functionality as in FilePicker. It allows the specification of what file types are allowed.
2023-03-22LibFileSystemAccessClient: Don't make illegal operation on filesLucas CHOLLET
`handle_prompt_end` is calling `is_device` and `is_directory` on the path chosen by the user. However, this path is not necessarily unveiled. Meaning that it the both functions results in an illegal operation. This is a regression introduced with the usage of LibFileSystem in 1d24f394. This patch, revert the behavior at its previous state, i.e. calling both functions with the fd provided by the FSAS.
2023-03-21Everywhere: Use `LibFileSystem` where trivialCameron Youell
2023-03-13LibCore+Userland: Make Promise's on_resolve falliblekleines Filmröllchen
This will be primarily necessary for BackgroundAction integration, but it already allows us to add proper error handling in LibIMAP :^)
2023-03-13LibCore+Userland: Allow canceling promiseskleines Filmröllchen
To make EventLoop cancel its managed Promises, we need the ability to cancel them in the first place.
2023-02-16LibFileSystemAccessClient: Remove the deprecated APILucas CHOLLET
Concerned functions are: - try_request_file_read_only_approved_deprecated - try_request_file_deprecated - try_open_file_deprecated - try_save_file_deprecated It also allows some simplifications in the implementation of the client.
2023-02-13LibCore: Move Stream-based file into the `Core` namespaceTim Schumacher
2023-02-13LibCore: Move Stream-based sockets into the `Core` namespaceTim Schumacher
2023-02-13LibCore: Rename `File` to `DeprecatedFile`Tim Schumacher
As usual, this removes many unused includes and moves used includes further down the chain.
2023-01-07LibFileSystemAccessClient: Add functions returning FSAC::FileKarol Kosek
This patch reimplements the now deprecated try_open_file(), try_request_file() and try_request_file_read_only_approved() functions, with the difference that the new ones return a FSAC::File object (currently a wrapper with a Core::Stream and a filename) instead of a Core::File. Implemented in a similar manner to 6dd716adf2.
2023-01-07LibFileSystemAccessClient+CrashReporter: Introduce FSAC::File and use itKarol Kosek
The new result returned just a file stream, which wasn't sufficient enough for most applications because it didn't provide a filename. This patch will make a new File object that has both a file stream and a filename.
2023-01-07LibFileSystemAccessClient: Rename try_* functions to try_*_deprecatedKarol Kosek
These functions return the deprecated `Core::File` class, so let's mark it as such to avoid possible confusion between future non try_* functions which will use Core::Stream family classes and to possibly grab someone's attention. :^)
2023-01-06FileSystemAccessServer: Use `Core::Stream`Lucas CHOLLET
This patch also updates corresponding functions from `LibFileSystemAccessServerClient`. From the FileSystemAccessClient point of view, it only makes the server take `Core::Stream::OpenMode` instead of `Core::OpenMode`. So, `enum` conversions only happen within deprecated functions and not in the new `Core::Stream` friendly API. On the server side, it just removes two usages of `Core::File::open()`.
2022-12-14LibFileSystemAccessClient: Add `save_file()`Lucas CHOLLET
This method replaces `try_save_file_deprecated()`, as it has the same behavior but returns a `Core::Stream::File` instead.
2022-12-14LibFileSystemAccessClient: Rename `try_save_file` =>Lucas CHOLLET
`try_save_file_deprecated` This precedes the addition of a new api using `Core::Stream`
2022-12-14LibFileSystemAccessClient: Rename `Result` => `DeprecatedResult`Lucas CHOLLET
This precedes the addition of a new `Result`, using `Core::Stream::File` instead `Core::File`.
2022-12-06AK+Everywhere: Rename String to DeprecatedStringLinus Groh
We have a new, improved string type coming up in AK (OOM aware, no null state), and while it's going to use UTF-8, the name UTF8String is a mouthful - so let's free up the String name by renaming the existing class. Making the old one have an annoying name will hopefully also help with quick adoption :^)
2022-11-15Userland: Remove workarounds for LibIPC include order sensitivityTimothy Flynn
2022-11-01Everywhere: Mark dependencies of most targets as PRIVATETim Schumacher
Otherwise, we end up propagating those dependencies into targets that link against that library, which creates unnecessary link-time dependencies. Also included are changes to readd now missing dependencies to tools that actually need them.
2022-10-03SystemServer+LoginServer+Userland: Switch to sid-based socketsPeter Elliott
This commit does three things atomically: - switch over Core::Account+SystemServer+LoginServer to sid based socket names. - change socket names with %uid to %sid. - add/update necessary pledges and unveils. Userland: Switch over servers to sid based sockets Userland: Properly pledge and unveil for sid based sockets
2022-08-14Base: Launch FileSystemAccessServer at session start-upLucas CHOLLET
2022-08-14LibCore+LibIPC: Recognise %uid in pathLucas CHOLLET
This patch allows to insert "%uid" in `IPC_CLIENT_CONNECTION` declaration and in SystemServer's ini files. This pattern is replaced then replaced by the UID of the owner of the service. It opens a path for seamlessly managed, per-user portal.
2022-07-12Everywhere: Split Error::from_string_literal and Error::from_string_viewsin-ack
Error::from_string_literal now takes direct char const*s, while Error::from_string_view does what Error::from_string_literal used to do: taking StringViews. This change will remove the need to insert `sv` after error strings when returning string literal errors once StringView(char const*) is removed. No functional changes.
2022-06-30FileSystemAccessServer: Call window stealing functions syncMacDue
These functions were changed to synchronous in #13870 but the async_ versions were still being called. This led to frequent crashes when loading local files in Browser.
2022-06-27LibFileSystemAccessClient: Return an errno instead of a string literalLucas CHOLLET
Returning an errno to ease error transmission over IPC.
2022-06-27FileSystemAccessServer: Manage concurrent file requestsLucas CHOLLET
Before this patch, when you called FileSystemAccessServer::Client::try_* twice, the second call used the same variable to store the promise. This "race condition" is now solved using a HashMap, to store multiple parallel requests.
2022-02-25Userland: Rename WindowServerConnection=>ConnectionToWindowServerItamar
This was done with CLion's automatic rename feature.
2022-02-25Userland: Rename IPC::ServerConnection=>IPC::ConnectionToServerItamar
This was done with CLion's automatic rename feature.
2022-01-20FileSystemAccessClient: Remove old API returning file descriptors :^)Mustafa Quraish
Since all users of the old API are now removed, this commit removes all the methods that returned raw file descriptors, in favor of returning `ErrorOr<NonnullRefPtr<Core::File>`.
2022-01-20FileSystemAccessClient: Add `try_*` variants returning `Core::File`Mustafa Quraish
The current implementation is a bit of a hack since we also want to keep around the previous variants for now, but will be cleaned up later once all applications have been ported to the new API.
2022-01-15LibCore+LibIPC+Everywhere: Return Stream::LocalSocket from LocalServersin-ack
This change unfortunately cannot be atomically made without a single commit changing everything. Most of the important changes are in LibIPC/Connection.cpp, LibIPC/ServerConnection.cpp and LibCore/LocalServer.cpp. The notable changes are: - IPCCompiler now generates the decode and decode_message functions such that they take a Core::Stream::LocalSocket instead of the socket fd. - IPC::Decoder now uses the receive_fd method of LocalSocket instead of doing system calls directly on the fd. - IPC::ConnectionBase and related classes now use the Stream API functions. - IPC::ServerConnection no longer constructs the socket itself; instead, a convenience macro, IPC_CLIENT_CONNECTION, is used in place of C_OBJECT and will generate a static try_create factory function for the ServerConnection subclass. The subclass is now responsible for passing the socket constructed in this function to its ServerConnection base; the socket is passed as the first argument to the constructor (as a NonnullOwnPtr<Core::Stream::LocalServer>) before any other arguments. - The functionality regarding taking over sockets from SystemServer has been moved to LibIPC/SystemServerTakeover.cpp. The Core::LocalSocket implementation of this functionality hasn't been deleted due to my intention of removing this class in the near future and to reduce noise on this (already quite noisy) PR.
2021-12-23LibFileSystemAccessClient: Allow custom access rights for open/saveArne Elster
There can be cases when one wants to open a file not just for reading but also for writing. It was already possible to have a custom open mode for request_file, now it is also possible through the open/save dialogs.
2021-11-11Everywhere: Pass AK::StringView by valueAndreas Kling
2021-09-10LibFileSystemAccessClient: Convert request paths to absolute if neededMustafa Quraish
FileSystemAccessServer requires all paths to be absolute, and will just crash if this is not the case. Instead of expecting the user to always provide an absolute path, the client just checks to see if the path provided was absolute, and if not makes a request with the absolute path instead.
2021-09-10FileSystemAccessServer: Allow read-only access without promptingMustafa Quraish
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.
2021-08-07FileSystemAccessServer: Add window title as parameter for opening fileTimothy
2021-07-18LibFileSystemAccessClient: Use WindowServer window stealing interfaceTimothy
2021-07-18FileSystemAccessServer+TextEditor: Implement cross-process modal promptsTimothy
This transitions from synchronous IPC calls to asynchronous IPC calls provided through a synchronous interface in LibFileSystemAccessClient which allows the parent Application to stay responsive. It achieves this with Promise which is pumping the Application event loop while waiting for the Dialog to respond with the user's action. LibFileSystemAccessClient provides a lazy singleton which also ensures that FileSystemAccessServer is running in the event of a crash. This also transitions TextEditor into using LibFileSystemAccessClient.