X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=WebCore%2Ffileapi%2FFileReader.h;h=04513f3340fcb4b1266c93ab6e027c2c7ae0cf85;hb=e14391e94c850b8bd03680c23b38978db68687a8;hp=f914dada2326f429893218ff449b4b17ae9370eb;hpb=1bd705833a68f07850cf7e204b26f8d328d16951;p=android-x86%2Fexternal-webkit.git diff --git a/WebCore/fileapi/FileReader.h b/WebCore/fileapi/FileReader.h index f914dada2..04513f334 100644 --- a/WebCore/fileapi/FileReader.h +++ b/WebCore/fileapi/FileReader.h @@ -36,24 +36,19 @@ #include "ActiveDOMObject.h" #include "EventTarget.h" #include "FileError.h" -#include "KURL.h" -#include "TextEncoding.h" -#include "ThreadableLoaderClient.h" -#include +#include "FileReaderLoader.h" +#include "FileReaderLoaderClient.h" +#include #include -#include -#include -#include #include namespace WebCore { +class ArrayBuffer; class Blob; class ScriptExecutionContext; -class TextResourceDecoder; -class ThreadableLoader; -class FileReader : public RefCounted, public ActiveDOMObject, public EventTarget, public ThreadableLoaderClient { +class FileReader : public RefCounted, public ActiveDOMObject, public EventTarget, public FileReaderLoaderClient { public: static PassRefPtr create(ScriptExecutionContext* context) { @@ -68,20 +63,20 @@ public: DONE = 2 }; + void readAsArrayBuffer(Blob*); void readAsBinaryString(Blob*); void readAsText(Blob*, const String& encoding = ""); void readAsDataURL(Blob*); void abort(); void start(); + void doAbort(); ReadyState readyState() const; PassRefPtr error() { return m_error; } - String result(); - - // Helper methods, also used by FileReaderSync. - static ExceptionCode httpStatusCodeToExceptionCode(int httpStatusCode); - static void convertToDataURL(const Vector& rawData, const String& fileType, StringBuilder&); + FileReaderLoader::ReadType readType() const { return m_readType; } + PassRefPtr arrayBufferResult() const; + String stringResult(); // ActiveDOMObject virtual bool canSuspend() const; @@ -92,11 +87,11 @@ public: virtual FileReader* toFileReader() { return this; } virtual ScriptExecutionContext* scriptExecutionContext() const { return ActiveDOMObject::scriptExecutionContext(); } - // ThreadableLoaderClient - virtual void didReceiveResponse(const ResourceResponse&); - virtual void didReceiveData(const char*, int); - virtual void didFinishLoading(unsigned long identifier); - virtual void didFail(const ResourceError&); + // FileReaderLoaderClient + virtual void didStartLoading(); + virtual void didReceiveData(); + virtual void didFinishLoading(); + virtual void didFail(int errorCode); using RefCounted::ref; using RefCounted::deref; @@ -109,16 +104,12 @@ public: DEFINE_ATTRIBUTE_EVENT_LISTENER(loadend); private: - enum ReadType { - ReadFileAsBinaryString, - ReadFileAsText, - ReadFileAsDataURL - }; enum InternalState { None, Starting, Opening, Reading, + Aborting, Completed }; @@ -131,38 +122,19 @@ private: virtual EventTargetData* ensureEventTargetData() { return &m_eventTargetData; } void terminate(); - void cleanup(); - void readInternal(Blob*, ReadType); - void failed(int httpStatusCode); + void readInternal(Blob*, FileReaderLoader::ReadType); void fireErrorEvent(int httpStatusCode); void fireEvent(const AtomicString& type); - void convertToText(); - void convertToDataURL(); InternalState m_state; EventTargetData m_eventTargetData; RefPtr m_blob; - KURL m_urlForReading; - ReadType m_readType; - TextEncoding m_encoding; - - StringBuilder m_builder; - - // The raw data. We have to keep track of all the raw data for it to be converted to text or data URL data. - Vector m_rawData; - bool m_isRawDataConverted; - - // The decoder used to decode the text data. - RefPtr m_decoder; - - // Needed to create data URL. - String m_fileType; + FileReaderLoader::ReadType m_readType; + String m_encoding; - RefPtr m_loader; + OwnPtr m_loader; RefPtr m_error; - long long m_bytesLoaded; - long long m_totalBytes; double m_lastProgressNotificationTimeMS; };