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

Side by Side Diff: webkit/tools/test_shell/simple_file_system.cc

Issue 9016020: Cleanup FileSystemOperation for preparing for adding FSO-factory method (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebased Created 8 years, 11 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "webkit/tools/test_shell/simple_file_system.h" 5 #include "webkit/tools/test_shell/simple_file_system.h"
6 6
7 #include "base/file_path.h" 7 #include "base/file_path.h"
8 #include "base/message_loop.h" 8 #include "base/message_loop.h"
9 #include "base/message_loop_proxy.h" 9 #include "base/message_loop_proxy.h"
10 #include "base/time.h" 10 #include "base/time.h"
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 42
43 using fileapi::FileSystemCallbackDispatcher; 43 using fileapi::FileSystemCallbackDispatcher;
44 using fileapi::FileSystemContext; 44 using fileapi::FileSystemContext;
45 using fileapi::FileSystemOperation; 45 using fileapi::FileSystemOperation;
46 46
47 namespace { 47 namespace {
48 48
49 class SimpleFileSystemCallbackDispatcher 49 class SimpleFileSystemCallbackDispatcher
50 : public FileSystemCallbackDispatcher { 50 : public FileSystemCallbackDispatcher {
51 public: 51 public:
52 SimpleFileSystemCallbackDispatcher( 52 // An instance of this class must be created by Create()
53 // (so that we do not leak ownerships).
54 static scoped_ptr<FileSystemCallbackDispatcher> Create(
53 const WeakPtr<SimpleFileSystem>& file_system, 55 const WeakPtr<SimpleFileSystem>& file_system,
54 WebFileSystemCallbacks* callbacks) 56 WebFileSystemCallbacks* callbacks) {
55 : file_system_(file_system), 57 return scoped_ptr<FileSystemCallbackDispatcher>(
56 callbacks_(callbacks) { 58 new SimpleFileSystemCallbackDispatcher(file_system, callbacks));
57 } 59 }
58 60
59 ~SimpleFileSystemCallbackDispatcher() { 61 ~SimpleFileSystemCallbackDispatcher() {
60 } 62 }
61 63
62 virtual void DidSucceed() { 64 virtual void DidSucceed() {
63 DCHECK(file_system_); 65 DCHECK(file_system_);
64 callbacks_->didSucceed(); 66 callbacks_->didSucceed();
65 } 67 }
66 68
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
107 DCHECK(file_system_); 109 DCHECK(file_system_);
108 callbacks_->didFail( 110 callbacks_->didFail(
109 webkit_glue::PlatformFileErrorToWebFileError(error_code)); 111 webkit_glue::PlatformFileErrorToWebFileError(error_code));
110 } 112 }
111 113
112 virtual void DidWrite(int64, bool) { 114 virtual void DidWrite(int64, bool) {
113 NOTREACHED(); 115 NOTREACHED();
114 } 116 }
115 117
116 private: 118 private:
119 SimpleFileSystemCallbackDispatcher(
120 const WeakPtr<SimpleFileSystem>& file_system,
121 WebFileSystemCallbacks* callbacks)
122 : file_system_(file_system),
123 callbacks_(callbacks) {
124 }
125
117 WeakPtr<SimpleFileSystem> file_system_; 126 WeakPtr<SimpleFileSystem> file_system_;
118 WebFileSystemCallbacks* callbacks_; 127 WebFileSystemCallbacks* callbacks_;
119 }; 128 };
120 129
121 } // namespace 130 } // namespace
122 131
123 SimpleFileSystem::SimpleFileSystem() { 132 SimpleFileSystem::SimpleFileSystem() {
124 if (file_system_dir_.CreateUniqueTempDir()) { 133 if (file_system_dir_.CreateUniqueTempDir()) {
125 file_system_context_ = new FileSystemContext( 134 file_system_context_ = new FileSystemContext(
126 base::MessageLoopProxy::current(), 135 base::MessageLoopProxy::current(),
(...skipping 28 matching lines...) Expand all
155 type = fileapi::kFileSystemTypePersistent; 164 type = fileapi::kFileSystemTypePersistent;
156 else if (web_filesystem_type == WebFileSystem::TypeExternal) 165 else if (web_filesystem_type == WebFileSystem::TypeExternal)
157 type = fileapi::kFileSystemTypeExternal; 166 type = fileapi::kFileSystemTypeExternal;
158 else { 167 else {
159 // Unknown type filesystem is requested. 168 // Unknown type filesystem is requested.
160 callbacks->didFail(WebKit::WebFileErrorSecurity); 169 callbacks->didFail(WebKit::WebFileErrorSecurity);
161 return; 170 return;
162 } 171 }
163 172
164 GURL origin_url(frame->document().securityOrigin().toString()); 173 GURL origin_url(frame->document().securityOrigin().toString());
165 GetNewOperation(callbacks)->OpenFileSystem(origin_url, type, create); 174 file_system_context_->OpenFileSystem(
175 origin_url, type, create,
176 SimpleFileSystemCallbackDispatcher::Create(AsWeakPtr(), callbacks));
166 } 177 }
167 178
168 void SimpleFileSystem::move( 179 void SimpleFileSystem::move(
169 const WebURL& src_path, 180 const WebURL& src_path,
170 const WebURL& dest_path, WebFileSystemCallbacks* callbacks) { 181 const WebURL& dest_path, WebFileSystemCallbacks* callbacks) {
171 GetNewOperation(callbacks)->Move(GURL(src_path), GURL(dest_path)); 182 GetNewOperation(callbacks)->Move(GURL(src_path), GURL(dest_path));
172 } 183 }
173 184
174 void SimpleFileSystem::copy( 185 void SimpleFileSystem::copy(
175 const WebURL& src_path, const WebURL& dest_path, 186 const WebURL& src_path, const WebURL& dest_path,
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
217 GetNewOperation(callbacks)->ReadDirectory(path); 228 GetNewOperation(callbacks)->ReadDirectory(path);
218 } 229 }
219 230
220 WebFileWriter* SimpleFileSystem::createFileWriter( 231 WebFileWriter* SimpleFileSystem::createFileWriter(
221 const WebURL& path, WebFileWriterClient* client) { 232 const WebURL& path, WebFileWriterClient* client) {
222 return new SimpleFileWriter(path, client, file_system_context_.get()); 233 return new SimpleFileWriter(path, client, file_system_context_.get());
223 } 234 }
224 235
225 FileSystemOperation* SimpleFileSystem::GetNewOperation( 236 FileSystemOperation* SimpleFileSystem::GetNewOperation(
226 WebFileSystemCallbacks* callbacks) { 237 WebFileSystemCallbacks* callbacks) {
227 SimpleFileSystemCallbackDispatcher* dispatcher =
228 new SimpleFileSystemCallbackDispatcher(AsWeakPtr(), callbacks);
229 FileSystemOperation* operation = new FileSystemOperation( 238 FileSystemOperation* operation = new FileSystemOperation(
230 dispatcher, base::MessageLoopProxy::current(), 239 SimpleFileSystemCallbackDispatcher::Create(AsWeakPtr(), callbacks),
240 base::MessageLoopProxy::current(),
231 file_system_context_.get()); 241 file_system_context_.get());
232 return operation; 242 return operation;
233 } 243 }
OLDNEW
« no previous file with comments | « webkit/fileapi/sandbox_mount_point_provider_unittest.cc ('k') | webkit/tools/test_shell/simple_file_writer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698