#ifndef FileReader_h
#define FileReader_h
-#include "bindings/v8/ScriptWrappable.h"
#include "core/dom/ActiveDOMObject.h"
#include "core/events/EventTarget.h"
#include "core/fileapi/FileError.h"
#include "core/fileapi/FileReaderLoader.h"
#include "core/fileapi/FileReaderLoaderClient.h"
+#include "platform/heap/Handle.h"
#include "wtf/Forward.h"
#include "wtf/RefCounted.h"
-#include "wtf/ThreadSpecific.h"
#include "wtf/text/WTFString.h"
-namespace WebCore {
+namespace blink {
class Blob;
class ExceptionState;
class ExecutionContext;
-class FileReader FINAL : public RefCounted<FileReader>, public ScriptWrappable, public ActiveDOMObject, public EventTargetWithInlineData, public FileReaderLoaderClient {
+class FileReader FINAL : public RefCountedWillBeGarbageCollectedFinalized<FileReader>, public ActiveDOMObject, public FileReaderLoaderClient, public EventTargetWithInlineData {
+ DEFINE_WRAPPERTYPEINFO();
REFCOUNTED_EVENT_TARGET(FileReader);
+ WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(FileReader);
public:
- static PassRefPtr<FileReader> create(ExecutionContext*);
+ static PassRefPtrWillBeRawPtr<FileReader> create(ExecutionContext*);
virtual ~FileReader();
void doAbort();
ReadyState readyState() const { return m_state; }
- PassRefPtr<FileError> error() { return m_error; }
+ PassRefPtrWillBeRawPtr<FileError> error() { return m_error; }
FileReaderLoader::ReadType readType() const { return m_readType; }
PassRefPtr<ArrayBuffer> arrayBufferResult() const;
String stringResult();
// ActiveDOMObject
virtual void stop() OVERRIDE;
+ virtual bool hasPendingActivity() const OVERRIDE;
// EventTarget
virtual const AtomicString& interfaceName() const OVERRIDE;
DEFINE_ATTRIBUTE_EVENT_LISTENER(error);
DEFINE_ATTRIBUTE_EVENT_LISTENER(loadend);
+ virtual void trace(Visitor*) OVERRIDE;
+
private:
- class ThrottlingController;
+ explicit FileReader(ExecutionContext*);
- FileReader(ExecutionContext*);
+ class ThrottlingController;
void terminate();
void readInternal(Blob*, FileReaderLoader::ReadType, ExceptionState&);
- void fireErrorEvent(int httpStatusCode);
void fireEvent(const AtomicString& type);
- static ThreadSpecific<ThrottlingController>& throttlingController();
void executePendingRead();
ReadyState m_state;
};
LoadingState m_loadingState;
- RefPtr<Blob> m_blob;
+ String m_blobType;
+ RefPtr<BlobDataHandle> m_blobDataHandle;
FileReaderLoader::ReadType m_readType;
String m_encoding;
OwnPtr<FileReaderLoader> m_loader;
- RefPtr<FileError> m_error;
+ RefPtrWillBeMember<FileError> m_error;
double m_lastProgressNotificationTimeMS;
+ int m_asyncOperationId;
};
-} // namespace WebCore
+} // namespace blink
#endif // FileReader_h