mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 06:07:34 +00:00
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.
This commit is contained in:
parent
435c2c24d1
commit
108521a566
23 changed files with 307 additions and 5 deletions
48
Userland/Libraries/LibWeb/HTML/SelectedFile.h
Normal file
48
Userland/Libraries/LibWeb/HTML/SelectedFile.h
Normal file
|
@ -0,0 +1,48 @@
|
|||
/*
|
||||
* 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&);
|
||||
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue