/* * Copyright (c) 2024, Tim Flynn * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include #include namespace Web::HTML { enum class AllowMultipleFiles { No, Yes, }; class SelectedFile { public: static ErrorOr from_file_path(ByteString const& file_path); SelectedFile(ByteString name, ByteBuffer contents); SelectedFile(ByteString name, IPC::File file); ByteString const& name() const { return m_name; } auto const& file_or_contents() const { return m_file_or_contents; } ByteBuffer take_contents(); private: ByteString m_name; Variant m_file_or_contents; }; } namespace IPC { template<> ErrorOr encode(Encoder&, Web::HTML::SelectedFile const&); template<> ErrorOr decode(Decoder&); }