ladybird/Libraries/LibWeb/HTML/SelectedFile.h
Timothy Flynn f0d7e28f55 LibWeb+LibWebView+UI: Move SelectedFile factory to LibWebView
This factory is only used by the UI. An upcoming commit will make it
depend on LibFileSystem. LibWeb currently does not link LibFileSystem,
and doing so would push LibWeb in the wrong direction (we should be
doing less file IO in LibWeb, not more).
2026-05-20 21:09:22 +02:00

47 lines
933 B
C++

/*
* Copyright (c) 2024, Tim Flynn <trflynn89@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <AK/ByteBuffer.h>
#include <AK/ByteString.h>
#include <AK/Variant.h>
#include <LibIPC/File.h>
#include <LibIPC/Forward.h>
#include <LibWeb/Export.h>
namespace Web::HTML {
enum class AllowMultipleFiles {
No,
Yes,
};
class WEB_API SelectedFile {
public:
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<IPC::File, ByteBuffer> m_file_or_contents;
};
}
namespace IPC {
template<>
WEB_API ErrorOr<void> encode(Encoder&, Web::HTML::SelectedFile const&);
template<>
WEB_API ErrorOr<Web::HTML::SelectedFile> decode(Decoder&);
}