Index: Source/modules/filesystem/FileSystemCallbacks.cpp |
diff --git a/Source/modules/filesystem/FileSystemCallbacks.cpp b/Source/modules/filesystem/FileSystemCallbacks.cpp |
index 01e4536b9427b7648e3064073a6e22002cfc6541..3df343a03b473ead635007118c19366c93a62465 100644 |
--- a/Source/modules/filesystem/FileSystemCallbacks.cpp |
+++ b/Source/modules/filesystem/FileSystemCallbacks.cpp |
@@ -196,24 +196,35 @@ private: |
} // namespace |
-PassOwnPtr<AsyncFileSystemCallbacks> ResolveURICallbacks::create(PassRefPtr<EntryCallback> successCallback, PassRefPtr<ErrorCallback> errorCallback, ScriptExecutionContext* scriptExecutionContext, FileSystemType type, const String& filePath) |
+PassOwnPtr<AsyncFileSystemCallbacks> ResolveURICallbacks::create(PassRefPtr<EntryCallback> successCallback, PassRefPtr<ErrorCallback> errorCallback, ScriptExecutionContext* scriptExecutionContext) |
{ |
- return adoptPtr(static_cast<AsyncFileSystemCallbacks*>(new ResolveURICallbacks(successCallback, errorCallback, scriptExecutionContext, type, filePath))); |
+ return adoptPtr(static_cast<AsyncFileSystemCallbacks*>(new ResolveURICallbacks(successCallback, errorCallback, scriptExecutionContext))); |
} |
-ResolveURICallbacks::ResolveURICallbacks(PassRefPtr<EntryCallback> successCallback, PassRefPtr<ErrorCallback> errorCallback, ScriptExecutionContext* context, FileSystemType type, const String& filePath) |
+ResolveURICallbacks::ResolveURICallbacks(PassRefPtr<EntryCallback> successCallback, PassRefPtr<ErrorCallback> errorCallback, ScriptExecutionContext* context) |
: FileSystemCallbacksBase(errorCallback, 0) |
, m_successCallback(successCallback) |
, m_scriptExecutionContext(context) |
- , m_type(type) |
- , m_filePath(filePath) |
{ |
} |
-void ResolveURICallbacks::didOpenFileSystem(const String& name, const KURL& rootURL) |
+void ResolveURICallbacks::didResolveURL(const String& name, const KURL& rootURL, FileSystemType type, const String& filePath, bool isDirectory) |
{ |
- RefPtr<DirectoryEntry> root = DOMFileSystem::create(m_scriptExecutionContext.get(), name, m_type, rootURL)->root(); |
- root->getDirectory(m_filePath, Dictionary(), m_successCallback, ErrorCallbackWrapper::create(m_successCallback, m_errorCallback, root, m_filePath)); |
+ RefPtr<DOMFileSystem> filesystem = DOMFileSystem::create(m_scriptExecutionContext.get(), name, type, rootURL); |
+ RefPtr<DirectoryEntry> root = filesystem->root(); |
+ |
+ String absolutePath; |
+ if (!DOMFileSystemBase::pathToAbsolutePath(type, root.get(), filePath, absolutePath)) { |
+ m_errorCallback->handleEvent(FileError::create(FileError::INVALID_MODIFICATION_ERR).get()); |
+ m_errorCallback.clear(); |
+ return; |
+ } |
+ |
+ if (isDirectory) |
+ m_successCallback->handleEvent(DirectoryEntry::create(filesystem, absolutePath).get()); |
+ else |
+ m_successCallback->handleEvent(FileEntry::create(filesystem, absolutePath).get()); |
+ m_successCallback.clear(); |
} |
// MetadataCallbacks ---------------------------------------------------------- |