#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;
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);
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(); }
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