WorkerAsyncFileWriterBlackBerry.cpp [plain text]
#include "config.h"
#if ENABLE(FILE_SYSTEM) && ENABLE(WORKERS)
#include "WorkerAsyncFileWriterBlackBerry.h"
#include "CrossThreadCopier.h"
#include "CrossThreadTask.h"
#include "PlatformBlob.h"
#include "WorkerPlatformAsyncFileSystemCallbacks.h"
#include "WorkerPlatformFileWriterClient.h"
#include "WorkerThread.h"
#include <wtf/OwnPtr.h>
#include <wtf/PassOwnPtr.h>
#include <wtf/RefPtr.h>
#include <wtf/text/CString.h>
namespace WebCore {
void WorkerAsyncFileWriterBlackBerry::writeOnMainThread(ScriptExecutionContext*, BlackBerry::Platform::WebFileWriter* platformWriter, long long position, Blob* blob)
{
platformWriter->write(position, new PlatformBlob(blob));
}
void WorkerAsyncFileWriterBlackBerry::truncateOnMainThread(ScriptExecutionContext*, BlackBerry::Platform::WebFileWriter* platformWriter, long long length)
{
platformWriter->truncate(length);
}
void WorkerAsyncFileWriterBlackBerry::abortOnMainThread(ScriptExecutionContext*, BlackBerry::Platform::WebFileWriter* platformWriter)
{
platformWriter->abort();
}
void WorkerAsyncFileWriterBlackBerry::write(long long position, Blob* blob)
{
beginWriteOrTruncate();
postTaskToMainThread(createCallbackTask(&WorkerAsyncFileWriterBlackBerry::writeOnMainThread, m_platformWriter.get(), position, blob));
}
void WorkerAsyncFileWriterBlackBerry::truncate(long long length)
{
beginWriteOrTruncate();
postTaskToMainThread(createCallbackTask(&WorkerAsyncFileWriterBlackBerry::truncateOnMainThread, m_platformWriter.get(), length));
}
void WorkerAsyncFileWriterBlackBerry::abort()
{
beginAbort();
postTaskToMainThread(createCallbackTask(&WorkerAsyncFileWriterBlackBerry::abortOnMainThread, m_platformWriter.get()));
}
bool WorkerAsyncFileWriterBlackBerry::waitForOperationToComplete()
{
while (m_isOperationInProgress) {
if (m_context->thread()->runLoop().runInMode(m_context, m_mode) == MessageQueueTerminated)
return false;
}
return true;
}
PlatformFileWriterClient* WorkerAsyncFileWriterBlackBerry::platformWriterClient()
{
if (!m_platformWriterClient)
m_platformWriterClient = WorkerPlatformFileWriterClient::create(m_context, m_mode, m_client, this);
return m_platformWriterClient.get();
}
} #endif