Index: webkit/chromeos/fileapi/cros_mount_point_provider.cc |
diff --git a/webkit/chromeos/fileapi/cros_mount_point_provider.cc b/webkit/chromeos/fileapi/cros_mount_point_provider.cc |
index d0b57827b615d6622e0fe690aab81652d27f13a7..9a6bcb751acd9a7eff159d0be0b353111c79f71c 100644 |
--- a/webkit/chromeos/fileapi/cros_mount_point_provider.cc |
+++ b/webkit/chromeos/fileapi/cros_mount_point_provider.cc |
@@ -20,6 +20,7 @@ |
#include "webkit/fileapi/file_system_file_stream_reader.h" |
#include "webkit/fileapi/file_system_operation.h" |
#include "webkit/fileapi/file_system_util.h" |
+#include "webkit/fileapi/local_file_stream_writer.h" |
#include "webkit/glue/webkit_glue.h" |
namespace { |
@@ -268,10 +269,19 @@ fileapi::FileStreamWriter* CrosMountPointProvider::CreateFileStreamWriter( |
const GURL& url, |
int64 offset, |
fileapi::FileSystemContext* context) const { |
- // TODO(kinaba,kinuko,benchan,satorux): return a writer for remote or local |
- // file system depending on the mount point location. |
- NOTIMPLEMENTED(); |
- return NULL; |
+ FilePath virtual_path; |
+ if (!fileapi::CrackFileSystemURL(url, NULL, NULL, &virtual_path)) |
+ return NULL; |
+ const MountPoint* mount_point = GetMountPoint(virtual_path); |
+ if (!mount_point) |
+ return NULL; |
+ if (mount_point->location == REMOTE) { |
+ // TODO(kinaba): return a gdata writer for remote file system. |
+ return NULL; |
+ } |
+ FilePath root_path = mount_point->local_root_path; |
+ return new fileapi::LocalFileStreamWriter( |
+ root_path.Append(virtual_path), offset); |
} |
bool CrosMountPointProvider::GetVirtualPath(const FilePath& filesystem_path, |