/* * Copyright (c) 2021, timmot * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include #include #include #include namespace FileSystemAccessServer { class ConnectionFromClient final : public IPC::ConnectionFromClient { C_OBJECT(ConnectionFromClient); public: ~ConnectionFromClient() override = default; virtual void die() override; private: explicit ConnectionFromClient(NonnullOwnPtr); virtual void request_file_read_only_approved(i32, ByteString const&) override; virtual void request_file(i32, i32, i32, ByteString const&, Core::File::OpenMode) override; virtual void prompt_open_file(i32, i32, i32, ByteString const&, ByteString const&, Core::File::OpenMode, Optional> const&) override; virtual void prompt_save_file(i32, i32, i32, ByteString const&, ByteString const&, ByteString const&, Core::File::OpenMode) override; void prompt_helper(i32, Optional const&, Core::File::OpenMode); enum class ShouldPrompt { No, Yes }; void request_file_handler(i32, i32, i32, ByteString const&, Core::File::OpenMode, ShouldPrompt); virtual Messages::FileSystemAccessServer::ExposeWindowServerClientIdResponse expose_window_server_client_id() override; HashMap m_approved_files; }; }