ladybird/Userland/Libraries/LibWeb/HTML/SelectedFile.h
Timothy Flynn 108521a566 LibWeb+LibWebView+WebContent: Implement more <input type=file> behavior
We had previous implemented some plumbing for file input elements in
commit 636602a54e.

This implements the return path for chromes to inform WebContent of the
file(s) the user selected. This patch includes a dummy implementation
for headless-browser to enable testing.
2024-02-26 14:18:49 +01:00

49 lines
961 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>
namespace Web::HTML {
enum class AllowMultipleFiles {
No,
Yes,
};
class SelectedFile {
public:
static ErrorOr<SelectedFile> 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<IPC::File, ByteBuffer> m_file_or_contents;
};
}
namespace IPC {
template<>
ErrorOr<void> encode(Encoder&, Web::HTML::SelectedFile const&);
template<>
ErrorOr<Web::HTML::SelectedFile> decode(Decoder&);
}