summaryrefslogtreecommitdiffstats
path: root/WebCore/fileapi/DOMFileSystem.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'WebCore/fileapi/DOMFileSystem.cpp')
-rw-r--r--WebCore/fileapi/DOMFileSystem.cpp27
1 files changed, 26 insertions, 1 deletions
diff --git a/WebCore/fileapi/DOMFileSystem.cpp b/WebCore/fileapi/DOMFileSystem.cpp
index f38acaa..f4ebe7c 100644
--- a/WebCore/fileapi/DOMFileSystem.cpp
+++ b/WebCore/fileapi/DOMFileSystem.cpp
@@ -41,6 +41,7 @@
#include "FileEntry.h"
#include "FileSystemCallbacks.h"
#include "FileWriter.h"
+#include "FileWriterBaseCallback.h"
#include "FileWriterCallback.h"
#include "MetadataCallback.h"
#include "ScriptExecutionContext.h"
@@ -75,6 +76,29 @@ void DOMFileSystem::contextDestroyed()
ActiveDOMObject::contextDestroyed();
}
+namespace {
+
+class ConvertToFileWriterCallback : public FileWriterBaseCallback {
+public:
+ static PassRefPtr<ConvertToFileWriterCallback> create(PassRefPtr<FileWriterCallback> callback)
+ {
+ return adoptRef(new ConvertToFileWriterCallback(callback));
+ }
+
+ bool handleEvent(FileWriterBase* fileWriterBase)
+ {
+ return m_callback->handleEvent(static_cast<FileWriter*>(fileWriterBase));
+ }
+private:
+ ConvertToFileWriterCallback(PassRefPtr<FileWriterCallback> callback)
+ : m_callback(callback)
+ {
+ }
+ RefPtr<FileWriterCallback> m_callback;
+};
+
+}
+
void DOMFileSystem::createWriter(const FileEntry* fileEntry, PassRefPtr<FileWriterCallback> successCallback, PassRefPtr<ErrorCallback> errorCallback)
{
ASSERT(fileEntry);
@@ -82,7 +106,8 @@ void DOMFileSystem::createWriter(const FileEntry* fileEntry, PassRefPtr<FileWrit
String platformPath = m_asyncFileSystem->virtualToPlatformPath(fileEntry->fullPath());
RefPtr<FileWriter> fileWriter = FileWriter::create(scriptExecutionContext());
- OwnPtr<FileWriterCallbacks> callbacks = FileWriterCallbacks::create(fileWriter, successCallback, errorCallback);
+ RefPtr<FileWriterBaseCallback> conversionCallback = ConvertToFileWriterCallback::create(successCallback);
+ OwnPtr<FileWriterBaseCallbacks> callbacks = FileWriterBaseCallbacks::create(fileWriter, conversionCallback, errorCallback);
m_asyncFileSystem->createWriter(fileWriter.get(), platformPath, callbacks.release());
}