diff options
Diffstat (limited to 'Source/WebCore/fileapi/FileReaderSync.cpp')
-rw-r--r-- | Source/WebCore/fileapi/FileReaderSync.cpp | 65 |
1 files changed, 24 insertions, 41 deletions
diff --git a/Source/WebCore/fileapi/FileReaderSync.cpp b/Source/WebCore/fileapi/FileReaderSync.cpp index 2d53afd1b..da475d504 100644 --- a/Source/WebCore/fileapi/FileReaderSync.cpp +++ b/Source/WebCore/fileapi/FileReaderSync.cpp @@ -30,8 +30,6 @@ #include "config.h" -#if ENABLE(BLOB) - #include "FileReaderSync.h" #include "Blob.h" @@ -39,7 +37,6 @@ #include "FileException.h" #include "FileReaderLoader.h" #include <runtime/ArrayBuffer.h> -#include <wtf/PassRefPtr.h> namespace WebCore { @@ -47,63 +44,49 @@ FileReaderSync::FileReaderSync() { } -PassRefPtr<ArrayBuffer> FileReaderSync::readAsArrayBuffer(ScriptExecutionContext* scriptExecutionContext, Blob* blob, ExceptionCode& ec) +ExceptionOr<RefPtr<ArrayBuffer>> FileReaderSync::readAsArrayBuffer(ScriptExecutionContext& scriptExecutionContext, Blob& blob) { - if (!blob) { - ec = NOT_FOUND_ERR; - return 0; - } - FileReaderLoader loader(FileReaderLoader::ReadAsArrayBuffer, 0); - startLoading(scriptExecutionContext, loader, blob, ec); - + auto result = startLoading(scriptExecutionContext, loader, blob); + if (result.hasException()) + return result.releaseException(); return loader.arrayBufferResult(); } -String FileReaderSync::readAsBinaryString(ScriptExecutionContext* scriptExecutionContext, Blob* blob, ExceptionCode& ec) +ExceptionOr<String> FileReaderSync::readAsBinaryString(ScriptExecutionContext& scriptExecutionContext, Blob& blob) { - if (!blob) { - ec = NOT_FOUND_ERR; - return String(); - } - FileReaderLoader loader(FileReaderLoader::ReadAsBinaryString, 0); - startLoading(scriptExecutionContext, loader, blob, ec); - return loader.stringResult(); + return startLoadingString(scriptExecutionContext, loader, blob); } -String FileReaderSync::readAsText(ScriptExecutionContext* scriptExecutionContext, Blob* blob, const String& encoding, ExceptionCode& ec) +ExceptionOr<String> FileReaderSync::readAsText(ScriptExecutionContext& scriptExecutionContext, Blob& blob, const String& encoding) { - if (!blob) { - ec = NOT_FOUND_ERR; - return String(); - } - FileReaderLoader loader(FileReaderLoader::ReadAsText, 0); loader.setEncoding(encoding); - startLoading(scriptExecutionContext, loader, blob, ec); - return loader.stringResult(); + return startLoadingString(scriptExecutionContext, loader, blob); } -String FileReaderSync::readAsDataURL(ScriptExecutionContext* scriptExecutionContext, Blob* blob, ExceptionCode& ec) +ExceptionOr<String> FileReaderSync::readAsDataURL(ScriptExecutionContext& scriptExecutionContext, Blob& blob) { - if (!blob) { - ec = NOT_FOUND_ERR; - return String(); - } - FileReaderLoader loader(FileReaderLoader::ReadAsDataURL, 0); - loader.setDataType(blob->type()); - startLoading(scriptExecutionContext, loader, blob, ec); - return loader.stringResult(); + loader.setDataType(blob.type()); + return startLoadingString(scriptExecutionContext, loader, blob); +} + +ExceptionOr<void> FileReaderSync::startLoading(ScriptExecutionContext& scriptExecutionContext, FileReaderLoader& loader, Blob& blob) +{ + loader.start(&scriptExecutionContext, blob); + if (ExceptionCode code = FileException::ErrorCodeToExceptionCode(loader.errorCode())) + return Exception { code }; + return { }; } -void FileReaderSync::startLoading(ScriptExecutionContext* scriptExecutionContext, FileReaderLoader& loader, Blob* blob, ExceptionCode& ec) +ExceptionOr<String> FileReaderSync::startLoadingString(ScriptExecutionContext& scriptExecutionContext, FileReaderLoader& loader, Blob& blob) { - loader.start(scriptExecutionContext, blob); - ec = FileException::ErrorCodeToExceptionCode(loader.errorCode()); + auto result = startLoading(scriptExecutionContext, loader, blob); + if (result.hasException()) + return result.releaseException(); + return loader.stringResult(); } } // namespace WebCore - -#endif // ENABLE(BLOB) |