diff options
Diffstat (limited to 'WebCore/fileapi/DirectoryEntry.cpp')
-rw-r--r-- | WebCore/fileapi/DirectoryEntry.cpp | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/WebCore/fileapi/DirectoryEntry.cpp b/WebCore/fileapi/DirectoryEntry.cpp index 95c12e4..765fcd5 100644 --- a/WebCore/fileapi/DirectoryEntry.cpp +++ b/WebCore/fileapi/DirectoryEntry.cpp @@ -36,10 +36,12 @@ #include "DirectoryReader.h" #include "EntryCallback.h" #include "ErrorCallback.h" +#include "FileError.h" +#include "VoidCallback.h" namespace WebCore { -DirectoryEntry::DirectoryEntry(DOMFileSystem* fileSystem, const String& fullPath) +DirectoryEntry::DirectoryEntry(DOMFileSystemBase* fileSystem, const String& fullPath) : Entry(fileSystem, fullPath) { } @@ -49,16 +51,27 @@ PassRefPtr<DirectoryReader> DirectoryEntry::createReader() return DirectoryReader::create(m_fileSystem, m_fullPath); } -void DirectoryEntry::getFile(const String& path, PassRefPtr<Flags> flags, PassRefPtr<EntryCallback> successCallback, PassRefPtr<ErrorCallback> errorCallback) +void DirectoryEntry::getFile(const String& path, PassRefPtr<Flags> flags, PassRefPtr<EntryCallback> successCallback, PassRefPtr<ErrorCallback> errorCallbackRef) { - m_fileSystem->getFile(this, path, flags, successCallback, errorCallback); + RefPtr<ErrorCallback> errorCallback(errorCallbackRef); + if (!m_fileSystem->getFile(this, path, flags, successCallback, errorCallback)) + filesystem()->scheduleCallback(errorCallback.release(), FileError::create(INVALID_MODIFICATION_ERR)); } -void DirectoryEntry::getDirectory(const String& path, PassRefPtr<Flags> flags, PassRefPtr<EntryCallback> successCallback, PassRefPtr<ErrorCallback> errorCallback) +void DirectoryEntry::getDirectory(const String& path, PassRefPtr<Flags> flags, PassRefPtr<EntryCallback> successCallback, PassRefPtr<ErrorCallback> errorCallbackRef) { - m_fileSystem->getDirectory(this, path, flags, successCallback, errorCallback); + RefPtr<ErrorCallback> errorCallback(errorCallbackRef); + if (!m_fileSystem->getDirectory(this, path, flags, successCallback, errorCallback)) + filesystem()->scheduleCallback(errorCallback.release(), FileError::create(INVALID_MODIFICATION_ERR)); } -} // namespace +void DirectoryEntry::removeRecursively(PassRefPtr<VoidCallback> successCallback, PassRefPtr<ErrorCallback> errorCallbackRef) const +{ + RefPtr<ErrorCallback> errorCallback(errorCallbackRef); + if (!m_fileSystem->removeRecursively(this, successCallback, errorCallback)) + filesystem()->scheduleCallback(errorCallback.release(), FileError::create(INVALID_MODIFICATION_ERR)); +} + +} #endif // ENABLE(FILE_SYSTEM) |