OSDN Git Service

Merge WebKit at r73109: Initial merge by git.
[android-x86/external-webkit.git] / WebCore / fileapi / FileWriter.h
index 4bb91ef..89289a9 100644 (file)
 #if ENABLE(FILE_SYSTEM)
 
 #include "ActiveDOMObject.h"
-#include "AsyncFileWriterClient.h"
 #include "EventTarget.h"
-#include <wtf/OwnPtr.h>
-#include <wtf/PassOwnPtr.h>
+#include "FileWriterBase.h"
 #include <wtf/PassRefPtr.h>
-#include <wtf/RefCounted.h>
 #include <wtf/RefPtr.h>
 
 namespace WebCore {
 
-class AsyncFileWriter;
-class Blob;
-class FileError;
 class ScriptExecutionContext;
 
-class FileWriter : public RefCounted<FileWriter>, public ActiveDOMObject, public EventTarget, public AsyncFileWriterClient {
+class FileWriter : public FileWriterBase, public ActiveDOMObject, public EventTarget, public AsyncFileWriterClient {
 public:
     static PassRefPtr<FileWriter> create(ScriptExecutionContext* context)
     {
         return adoptRef(new FileWriter(context));
     }
 
-    void initialize(PassOwnPtr<AsyncFileWriter> writer, long long length);
-
     enum ReadyState {
         INIT = 0,
         WRITING = 1,
         DONE = 2
     };
 
-    void write(Blob* data, ExceptionCode& ec);
-    void seek(long long position, ExceptionCode& ec);
-    void truncate(long long length, ExceptionCode& ec);
-    void abort(ExceptionCode& ec);
-
+    void write(Blob*, ExceptionCode&);
+    void seek(long long position, ExceptionCode&);
+    void truncate(long long length, ExceptionCode&);
+    void abort(ExceptionCode&);
     ReadyState readyState() const { return m_readyState; }
     FileError* error() const { return m_error.get(); }
-    long long position() const { return m_position; }
-    long long length() const { return m_length; }
 
     // AsyncFileWriterClient
     void didWrite(long long bytes, bool complete);
     void didTruncate();
-    void didFail(ExceptionCode ec);
+    void didFail(FileError::ErrorCode);
 
     // ActiveDOMObject
     virtual bool canSuspend() const;
@@ -88,8 +77,8 @@ public:
     virtual FileWriter* toFileWriter() { return this; }
     virtual ScriptExecutionContext* scriptExecutionContext() const { return ActiveDOMObject::scriptExecutionContext(); }
 
-    using RefCounted<FileWriter>::ref;
-    using RefCounted<FileWriter>::deref;
+    using RefCounted<FileWriterBase>::ref;
+    using RefCounted<FileWriterBase>::deref;
 
     DEFINE_ATTRIBUTE_EVENT_LISTENER(writestart);
     DEFINE_ATTRIBUTE_EVENT_LISTENER(progress);
@@ -97,14 +86,12 @@ public:
     DEFINE_ATTRIBUTE_EVENT_LISTENER(abort);
     DEFINE_ATTRIBUTE_EVENT_LISTENER(error);
     DEFINE_ATTRIBUTE_EVENT_LISTENER(writeend);
-    
+
 private:
     FileWriter(ScriptExecutionContext*);
 
     virtual ~FileWriter();
 
-    friend class WTF::RefCounted<FileWriter>;
-
     // EventTarget
     virtual void refEventTarget() { ref(); }
     virtual void derefEventTarget() { deref(); }
@@ -113,15 +100,16 @@ private:
 
     void fireEvent(const AtomicString& type);
 
+    void setError(FileError::ErrorCode, ExceptionCode&);
+
     RefPtr<FileError> m_error;
     EventTargetData m_eventTargetData;
-    OwnPtr<AsyncFileWriter> m_writer;
     ReadyState m_readyState;
-    long long m_position;
-    long long m_length;
+    bool m_startedWriting;
     long long m_bytesWritten;
     long long m_bytesToWrite;
     long long m_truncateLength;
+    RefPtr<Blob> m_blobBeingWritten;
 };
 
 } // namespace WebCore