Coverage Report

Created: 2026-09-14 07:15

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/serenity/Userland/Libraries/LibWeb/FileAPI/File.h
Line
Count
Source
1
/*
2
 * Copyright (c) 2022-2024, Kenneth Myhra <kennethmyhra@serenityos.org>
3
 *
4
 * SPDX-License-Identifier: BSD-2-Clause
5
 */
6
7
#pragma once
8
9
#include <LibWeb/FileAPI/Blob.h>
10
11
namespace Web::FileAPI {
12
13
struct FilePropertyBag : BlobPropertyBag {
14
    Optional<i64> last_modified;
15
};
16
17
class File : public Blob {
18
    WEB_PLATFORM_OBJECT(File, Blob);
19
    JS_DECLARE_ALLOCATOR(File);
20
21
public:
22
    static JS::NonnullGCPtr<File> create(JS::Realm& realm);
23
    static WebIDL::ExceptionOr<JS::NonnullGCPtr<File>> create(JS::Realm&, Vector<BlobPart> const& file_bits, String const& file_name, Optional<FilePropertyBag> const& options = {});
24
    static WebIDL::ExceptionOr<JS::NonnullGCPtr<File>> construct_impl(JS::Realm&, Vector<BlobPart> const& file_bits, String const& file_name, Optional<FilePropertyBag> const& options = {});
25
26
    virtual ~File() override;
27
28
    // https://w3c.github.io/FileAPI/#dfn-name
29
0
    String const& name() const { return m_name; }
30
    // https://w3c.github.io/FileAPI/#dfn-lastModified
31
0
    i64 last_modified() const { return m_last_modified; }
32
33
0
    virtual StringView interface_name() const override { return "File"sv; }
34
35
    virtual WebIDL::ExceptionOr<void> serialization_steps(HTML::SerializationRecord& record, bool for_storage, HTML::SerializationMemory&) override;
36
    virtual WebIDL::ExceptionOr<void> deserialization_steps(ReadonlySpan<u32> const&, size_t& position, HTML::DeserializationMemory&) override;
37
38
private:
39
    File(JS::Realm&, ByteBuffer, String file_name, String type, i64 last_modified);
40
    explicit File(JS::Realm&);
41
42
    virtual void initialize(JS::Realm&) override;
43
44
    String m_name;
45
    i64 m_last_modified { 0 };
46
};
47
48
}