mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2026-06-18 07:43:37 +00:00
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).
47 lines
933 B
C++
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&);
|
|
|
|
}
|