/* * Copyright (c) 2025, Tim Ledbetter * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include namespace Web::FileAPI { // https://w3c.github.io/FileAPI/#FileReaderSync class FileReaderSync : public Bindings::PlatformObject { WEB_PLATFORM_OBJECT(FileReaderSync, Bindings::PlatformObject); GC_DECLARE_ALLOCATOR(FileReaderSync); public: virtual ~FileReaderSync() override; [[nodiscard]] static GC::Ref create(JS::Realm&); static GC::Ref construct_impl(JS::Realm&); WebIDL::ExceptionOr> read_as_array_buffer(Blob&); WebIDL::ExceptionOr read_as_binary_string(Blob&); WebIDL::ExceptionOr read_as_text(Blob&, Optional const& encoding = {}); WebIDL::ExceptionOr read_as_data_url(Blob&); private: explicit FileReaderSync(JS::Realm&); template WebIDL::ExceptionOr read_as(Blob&, FileReader::Type, Optional const& encoding = {}); virtual void initialize(JS::Realm&) override; }; }