diff options
Diffstat (limited to 'Source/WebCore/fileapi/FileReader.h')
-rw-r--r-- | Source/WebCore/fileapi/FileReader.h | 82 |
1 files changed, 28 insertions, 54 deletions
diff --git a/Source/WebCore/fileapi/FileReader.h b/Source/WebCore/fileapi/FileReader.h index 789701635..c13a5929b 100644 --- a/Source/WebCore/fileapi/FileReader.h +++ b/Source/WebCore/fileapi/FileReader.h @@ -28,20 +28,15 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#ifndef FileReader_h -#define FileReader_h - -#if ENABLE(BLOB) +#pragma once #include "ActiveDOMObject.h" #include "EventTarget.h" +#include "ExceptionOr.h" #include "FileError.h" #include "FileReaderLoader.h" #include "FileReaderLoaderClient.h" #include <chrono> -#include <wtf/Forward.h> -#include <wtf/RefCounted.h> -#include <wtf/text/WTFString.h> namespace JSC { class ArrayBuffer; @@ -50,13 +45,10 @@ class ArrayBuffer; namespace WebCore { class Blob; -class ScriptExecutionContext; - -typedef int ExceptionCode; -class FileReader final : public RefCounted<FileReader>, public ActiveDOMObject, public EventTargetWithInlineData, public FileReaderLoaderClient { +class FileReader final : public RefCounted<FileReader>, public ActiveDOMObject, public EventTargetWithInlineData, private FileReaderLoaderClient { public: - static PassRefPtr<FileReader> create(ScriptExecutionContext&); + static Ref<FileReader> create(ScriptExecutionContext&); virtual ~FileReader(); @@ -66,61 +58,47 @@ public: DONE = 2 }; - void readAsArrayBuffer(Blob*, ExceptionCode&); - void readAsBinaryString(Blob*, ExceptionCode&); - void readAsText(Blob*, const String& encoding, ExceptionCode&); - void readAsText(Blob*, ExceptionCode&); - void readAsDataURL(Blob*, ExceptionCode&); + ExceptionOr<void> readAsArrayBuffer(Blob*); + ExceptionOr<void> readAsBinaryString(Blob*); + ExceptionOr<void> readAsText(Blob*, const String& encoding); + ExceptionOr<void> readAsDataURL(Blob*); void abort(); void doAbort(); ReadyState readyState() const { return m_state; } - PassRefPtr<FileError> error() { return m_error; } + RefPtr<FileError> error() { return m_error; } FileReaderLoader::ReadType readType() const { return m_readType; } - PassRefPtr<JSC::ArrayBuffer> arrayBufferResult() const; - String stringResult(); - - // EventTarget - virtual EventTargetInterface eventTargetInterface() const override { return FileReaderEventTargetInterfaceType; } - virtual ScriptExecutionContext* scriptExecutionContext() const override { return ActiveDOMObject::scriptExecutionContext(); } - - // FileReaderLoaderClient - virtual void didStartLoading() override; - virtual void didReceiveData() override; - virtual void didFinishLoading() override; - virtual void didFail(int errorCode) override; + std::optional<Variant<String, RefPtr<JSC::ArrayBuffer>>> result() const; - using RefCounted<FileReader>::ref; - using RefCounted<FileReader>::deref; - - DEFINE_ATTRIBUTE_EVENT_LISTENER(loadstart); - DEFINE_ATTRIBUTE_EVENT_LISTENER(progress); - DEFINE_ATTRIBUTE_EVENT_LISTENER(load); - DEFINE_ATTRIBUTE_EVENT_LISTENER(abort); - DEFINE_ATTRIBUTE_EVENT_LISTENER(error); - DEFINE_ATTRIBUTE_EVENT_LISTENER(loadend); + using RefCounted::ref; + using RefCounted::deref; private: explicit FileReader(ScriptExecutionContext&); - // ActiveDOMObject - virtual bool canSuspend() const override; - virtual void stop() override; + const char* activeDOMObjectName() const final; + bool canSuspendForDocumentSuspension() const final; + void stop() final; + + EventTargetInterface eventTargetInterface() const final { return FileReaderEventTargetInterfaceType; } + ScriptExecutionContext* scriptExecutionContext() const final { return ActiveDOMObject::scriptExecutionContext(); } + void refEventTarget() final { ref(); } + void derefEventTarget() final { deref(); } - // EventTarget - virtual void refEventTarget() override { ref(); } - virtual void derefEventTarget() override { deref(); } + void didStartLoading() final; + void didReceiveData() final; + void didFinishLoading() final; + void didFail(int errorCode) final; - void terminate(); - void readInternal(Blob*, FileReaderLoader::ReadType, ExceptionCode&); + ExceptionOr<void> readInternal(Blob&, FileReaderLoader::ReadType); void fireErrorEvent(int httpStatusCode); void fireEvent(const AtomicString& type); - ReadyState m_state; - bool m_aborting; + ReadyState m_state { EMPTY }; + bool m_aborting { false }; RefPtr<Blob> m_blob; - FileReaderLoader::ReadType m_readType; + FileReaderLoader::ReadType m_readType { FileReaderLoader::ReadAsBinaryString }; String m_encoding; std::unique_ptr<FileReaderLoader> m_loader; RefPtr<FileError> m_error; @@ -128,7 +106,3 @@ private: }; } // namespace WebCore - -#endif // ENABLE(BLOB) - -#endif // FileReader_h |