Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(613)

Side by Side Diff: chrome/common/file_system/webfilesystem_impl.cc

Issue 3394003: Add Worker support for FileSystem API. (Closed)
Patch Set: '' Created 10 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/common/file_system/webfilesystem_impl.h" 5 #include "chrome/common/file_system/webfilesystem_impl.h"
6 6
7 #include "chrome/common/file_system/file_system_dispatcher.h" 7 #include "chrome/common/file_system/file_system_dispatcher.h"
8 #include "chrome/common/file_system/webfilesystem_callback_dispatcher.h"
8 #include "chrome/common/child_thread.h" 9 #include "chrome/common/child_thread.h"
9 #include "third_party/WebKit/WebKit/chromium/public/WebFileInfo.h" 10 #include "third_party/WebKit/WebKit/chromium/public/WebFileInfo.h"
10 #include "third_party/WebKit/WebKit/chromium/public/WebFileSystemCallbacks.h" 11 #include "third_party/WebKit/WebKit/chromium/public/WebFileSystemCallbacks.h"
11 #include "third_party/WebKit/WebKit/chromium/public/WebString.h" 12 #include "third_party/WebKit/WebKit/chromium/public/WebString.h"
12 #include "webkit/glue/webkit_glue.h" 13 #include "webkit/glue/webkit_glue.h"
13 14
14 using WebKit::WebFileInfo; 15 using WebKit::WebFileInfo;
15 using WebKit::WebFileSystemCallbacks; 16 using WebKit::WebFileSystemCallbacks;
16 using WebKit::WebFileSystemEntry; 17 using WebKit::WebFileSystemEntry;
17 using WebKit::WebString; 18 using WebKit::WebString;
18 using WebKit::WebVector; 19 using WebKit::WebVector;
19 20
20 namespace {
21
22 WebKit::WebFileError PlatformFileErrorToWebFileError(
23 base::PlatformFileError error_code) {
24 switch (error_code) {
25 case base::PLATFORM_FILE_ERROR_NOT_FOUND:
26 return WebKit::WebFileErrorNotFound;
27 case base::PLATFORM_FILE_ERROR_INVALID_OPERATION:
28 case base::PLATFORM_FILE_ERROR_EXISTS:
29 case base::PLATFORM_FILE_ERROR_NOT_A_DIRECTORY:
30 return WebKit::WebFileErrorInvalidModification;
31 case base::PLATFORM_FILE_ERROR_ACCESS_DENIED:
32 return WebKit::WebFileErrorNoModificationAllowed;
33 case base::PLATFORM_FILE_ERROR_FAILED:
34 return WebKit::WebFileErrorInvalidState;
35 case base::PLATFORM_FILE_ERROR_ABORT:
36 return WebKit::WebFileErrorAbort;
37 default:
38 return WebKit::WebFileErrorInvalidModification;
39 }
40 }
41
42 class WebFileSystemCallbackDispatcherImpl
43 : public fileapi::FileSystemCallbackDispatcher {
44 public:
45 explicit WebFileSystemCallbackDispatcherImpl(
46 WebFileSystemCallbacks* callbacks)
47 : callbacks_(callbacks) {
48 DCHECK(callbacks_);
49 }
50
51 virtual ~WebFileSystemCallbackDispatcherImpl() {
52 }
53
54 // FileSystemCallbackDispatcher implementation
55 virtual void DidSucceed() {
56 callbacks_->didSucceed();
57 }
58
59 virtual void DidReadMetadata(const base::PlatformFileInfo& file_info) {
60 WebFileInfo web_file_info;
61 web_file_info.modificationTime = file_info.last_modified.ToDoubleT();
62 callbacks_->didReadMetadata(web_file_info);
63 }
64
65 virtual void DidReadDirectory(
66 const std::vector<base::file_util_proxy::Entry>& entries, bool has_more) {
67 WebVector<WebFileSystemEntry> file_system_entries(entries.size());
68 for (size_t i = 0; i < entries.size(); i++) {
69 file_system_entries[i].name =
70 webkit_glue::FilePathStringToWebString(entries[i].name);
71 file_system_entries[i].isDirectory = entries[i].is_directory;
72 }
73 callbacks_->didReadDirectory(file_system_entries, has_more);
74 }
75
76 virtual void DidOpenFileSystem(const string16&, const FilePath&) {
77 NOTREACHED();
78 }
79
80 virtual void DidFail(base::PlatformFileError error_code) {
81 callbacks_->didFail(PlatformFileErrorToWebFileError(error_code));
82 }
83
84 private:
85 WebFileSystemCallbacks* callbacks_;
86 };
87
88 } // namespace
89
90 WebFileSystemImpl::WebFileSystemImpl() { 21 WebFileSystemImpl::WebFileSystemImpl() {
91 } 22 }
92 23
93 void WebFileSystemImpl::move(const WebString& src_path, 24 void WebFileSystemImpl::move(const WebString& src_path,
94 const WebString& dest_path, 25 const WebString& dest_path,
95 WebFileSystemCallbacks* callbacks) { 26 WebFileSystemCallbacks* callbacks) {
96 FileSystemDispatcher* dispatcher = 27 FileSystemDispatcher* dispatcher =
97 ChildThread::current()->file_system_dispatcher(); 28 ChildThread::current()->file_system_dispatcher();
98 dispatcher->Move(webkit_glue::WebStringToFilePath(src_path), 29 dispatcher->Move(webkit_glue::WebStringToFilePath(src_path),
99 webkit_glue::WebStringToFilePath(dest_path), 30 webkit_glue::WebStringToFilePath(dest_path),
100 new WebFileSystemCallbackDispatcherImpl(callbacks)); 31 new WebFileSystemCallbackDispatcher(callbacks));
101 } 32 }
102 33
103 void WebFileSystemImpl::copy(const WebString& src_path, 34 void WebFileSystemImpl::copy(const WebString& src_path,
104 const WebString& dest_path, 35 const WebString& dest_path,
105 WebFileSystemCallbacks* callbacks) { 36 WebFileSystemCallbacks* callbacks) {
106 FileSystemDispatcher* dispatcher = 37 FileSystemDispatcher* dispatcher =
107 ChildThread::current()->file_system_dispatcher(); 38 ChildThread::current()->file_system_dispatcher();
108 dispatcher->Copy(webkit_glue::WebStringToFilePath(src_path), 39 dispatcher->Copy(webkit_glue::WebStringToFilePath(src_path),
109 webkit_glue::WebStringToFilePath(dest_path), 40 webkit_glue::WebStringToFilePath(dest_path),
110 new WebFileSystemCallbackDispatcherImpl(callbacks)); 41 new WebFileSystemCallbackDispatcher(callbacks));
111 } 42 }
112 43
113 void WebFileSystemImpl::remove(const WebString& path, 44 void WebFileSystemImpl::remove(const WebString& path,
114 WebFileSystemCallbacks* callbacks) { 45 WebFileSystemCallbacks* callbacks) {
115 FileSystemDispatcher* dispatcher = 46 FileSystemDispatcher* dispatcher =
116 ChildThread::current()->file_system_dispatcher(); 47 ChildThread::current()->file_system_dispatcher();
117 dispatcher->Remove(webkit_glue::WebStringToFilePath(path), 48 dispatcher->Remove(webkit_glue::WebStringToFilePath(path),
118 new WebFileSystemCallbackDispatcherImpl(callbacks)); 49 new WebFileSystemCallbackDispatcher(callbacks));
119 } 50 }
120 51
121 void WebFileSystemImpl::readMetadata(const WebString& path, 52 void WebFileSystemImpl::readMetadata(const WebString& path,
122 WebFileSystemCallbacks* callbacks) { 53 WebFileSystemCallbacks* callbacks) {
123 FileSystemDispatcher* dispatcher = 54 FileSystemDispatcher* dispatcher =
124 ChildThread::current()->file_system_dispatcher(); 55 ChildThread::current()->file_system_dispatcher();
125 dispatcher->ReadMetadata(webkit_glue::WebStringToFilePath(path), 56 dispatcher->ReadMetadata(webkit_glue::WebStringToFilePath(path),
126 new WebFileSystemCallbackDispatcherImpl(callbacks)); 57 new WebFileSystemCallbackDispatcher(callbacks));
127 } 58 }
128 59
129 void WebFileSystemImpl::createFile(const WebString& path, 60 void WebFileSystemImpl::createFile(const WebString& path,
130 bool exclusive, 61 bool exclusive,
131 WebFileSystemCallbacks* callbacks) { 62 WebFileSystemCallbacks* callbacks) {
132 FileSystemDispatcher* dispatcher = 63 FileSystemDispatcher* dispatcher =
133 ChildThread::current()->file_system_dispatcher(); 64 ChildThread::current()->file_system_dispatcher();
134 dispatcher->Create(webkit_glue::WebStringToFilePath(path), exclusive, false, 65 dispatcher->Create(webkit_glue::WebStringToFilePath(path), exclusive, false,
135 false, new WebFileSystemCallbackDispatcherImpl(callbacks)); 66 false, new WebFileSystemCallbackDispatcher(callbacks));
136 } 67 }
137 68
138 void WebFileSystemImpl::createDirectory(const WebString& path, 69 void WebFileSystemImpl::createDirectory(const WebString& path,
139 bool exclusive, 70 bool exclusive,
140 WebFileSystemCallbacks* callbacks) { 71 WebFileSystemCallbacks* callbacks) {
141 FileSystemDispatcher* dispatcher = 72 FileSystemDispatcher* dispatcher =
142 ChildThread::current()->file_system_dispatcher(); 73 ChildThread::current()->file_system_dispatcher();
143 dispatcher->Create(webkit_glue::WebStringToFilePath(path), exclusive, true, 74 dispatcher->Create(webkit_glue::WebStringToFilePath(path), exclusive, true,
144 false, new WebFileSystemCallbackDispatcherImpl(callbacks)); 75 false, new WebFileSystemCallbackDispatcher(callbacks));
145 } 76 }
146 77
147 void WebFileSystemImpl::fileExists(const WebString& path, 78 void WebFileSystemImpl::fileExists(const WebString& path,
148 WebFileSystemCallbacks* callbacks) { 79 WebFileSystemCallbacks* callbacks) {
149 FileSystemDispatcher* dispatcher = 80 FileSystemDispatcher* dispatcher =
150 ChildThread::current()->file_system_dispatcher(); 81 ChildThread::current()->file_system_dispatcher();
151 dispatcher->Exists(webkit_glue::WebStringToFilePath(path), false, 82 dispatcher->Exists(webkit_glue::WebStringToFilePath(path), false,
152 new WebFileSystemCallbackDispatcherImpl(callbacks)); 83 new WebFileSystemCallbackDispatcher(callbacks));
153 } 84 }
154 85
155 void WebFileSystemImpl::directoryExists(const WebString& path, 86 void WebFileSystemImpl::directoryExists(const WebString& path,
156 WebFileSystemCallbacks* callbacks) { 87 WebFileSystemCallbacks* callbacks) {
157 FileSystemDispatcher* dispatcher = 88 FileSystemDispatcher* dispatcher =
158 ChildThread::current()->file_system_dispatcher(); 89 ChildThread::current()->file_system_dispatcher();
159 dispatcher->Exists(webkit_glue::WebStringToFilePath(path), true, 90 dispatcher->Exists(webkit_glue::WebStringToFilePath(path), true,
160 new WebFileSystemCallbackDispatcherImpl(callbacks)); 91 new WebFileSystemCallbackDispatcher(callbacks));
161 } 92 }
162 93
163 void WebFileSystemImpl::readDirectory(const WebString& path, 94 void WebFileSystemImpl::readDirectory(const WebString& path,
164 WebFileSystemCallbacks* callbacks) { 95 WebFileSystemCallbacks* callbacks) {
165 FileSystemDispatcher* dispatcher = 96 FileSystemDispatcher* dispatcher =
166 ChildThread::current()->file_system_dispatcher(); 97 ChildThread::current()->file_system_dispatcher();
167 dispatcher->ReadDirectory(webkit_glue::WebStringToFilePath(path), 98 dispatcher->ReadDirectory(webkit_glue::WebStringToFilePath(path),
168 new WebFileSystemCallbackDispatcherImpl(callbacks)); 99 new WebFileSystemCallbackDispatcher(callbacks));
169 } 100 }
OLDNEW
« no previous file with comments | « chrome/common/file_system/webfilesystem_callback_dispatcher.cc ('k') | chrome/common/render_messages.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698