AsyncFileWriterBlackBerry.h [plain text]
#ifndef AsyncFileWriterBlackBerry_h
#define AsyncFileWriterBlackBerry_h
#if ENABLE(FILE_SYSTEM)
#include "AsyncFileWriter.h"
#include "PlatformFileWriterClient.h"
#include <BlackBerryPlatformWebFileSystemFileWriter.h>
#include <wtf/Assertions.h>
#include <wtf/OwnPtr.h>
#include <wtf/PassOwnPtr.h>
#include <wtf/RefPtr.h>
namespace WTF {
template <> inline void deleteOwnedPtr<BlackBerry::Platform::WebFileWriter>(BlackBerry::Platform::WebFileWriter* ptr)
{
BlackBerry::Platform::deleteGuardedObject(ptr);
}
}
namespace WebCore {
class AsyncFileWriterBlackBerry: public AsyncFileWriter {
public:
static PassOwnPtr<AsyncFileWriterBlackBerry> create(PassOwnPtr<BlackBerry::Platform::WebFileWriter> platformWriter, AsyncFileWriterClient* client)
{
return adoptPtr(new AsyncFileWriterBlackBerry(platformWriter, client));
}
virtual void write(long long position, Blob*);
virtual void truncate(long long length)
{
beginWriteOrTruncate();
m_platformWriter->truncate(length);
}
virtual void abort()
{
beginAbort();
m_platformWriter->abort();
}
virtual bool waitForOperationToComplete()
{
return m_platformWriter->waitForOperationToComplete();
}
bool isAborting() const
{
return m_isAborting;
}
bool isOperationInProgress() const
{
return m_isOperationInProgress;
}
void finishOperation()
{
m_isOperationInProgress = false;
}
virtual PlatformFileWriterClient* platformWriterClient()
{
if (!m_platformWriterClient)
m_platformWriterClient = PlatformFileWriterClient::create(m_client, this);
return m_platformWriterClient.get();
}
protected:
AsyncFileWriterBlackBerry(PassOwnPtr<BlackBerry::Platform::WebFileWriter> platformWriter, AsyncFileWriterClient* client)
: m_platformWriter(platformWriter)
, m_client(client)
, m_isAborting(false)
, m_isOperationInProgress(false)
{
}
void beginWriteOrTruncate()
{
m_isAborting = false;
m_isOperationInProgress = true;
}
void beginAbort()
{
m_isAborting = true;
m_isOperationInProgress = true;
}
OwnPtr<BlackBerry::Platform::WebFileWriter> m_platformWriter;
OwnPtr<PlatformFileWriterClient> m_platformWriterClient;
AsyncFileWriterClient* m_client;
bool m_isAborting;
bool m_isOperationInProgress;
};
} #endif
#endif