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

Side by Side Diff: Source/modules/filesystem/FileSystemCallbacks.cpp

Issue 23704004: Make WebFileSystemCallbacks not self-destruct, deprecate AsyncFileSystem (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years, 3 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 /* 1 /*
2 * Copyright (C) 2010 Google Inc. All rights reserved. 2 * Copyright (C) 2010 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 16 matching lines...) Expand all
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 */ 29 */
30 30
31 #include "config.h" 31 #include "config.h"
32 #include "modules/filesystem/FileSystemCallbacks.h" 32 #include "modules/filesystem/FileSystemCallbacks.h"
33 33
34 #include "core/dom/ScriptExecutionContext.h" 34 #include "core/dom/ScriptExecutionContext.h"
35 #include "core/fileapi/FileError.h" 35 #include "core/fileapi/FileError.h"
36 #include "core/html/VoidCallback.h" 36 #include "core/html/VoidCallback.h"
37 #include "core/platform/AsyncFileSystem.h"
38 #include "core/platform/FileMetadata.h" 37 #include "core/platform/FileMetadata.h"
39 #include "modules/filesystem/DOMFilePath.h" 38 #include "modules/filesystem/DOMFilePath.h"
40 #include "modules/filesystem/DOMFileSystemBase.h" 39 #include "modules/filesystem/DOMFileSystemBase.h"
41 #include "modules/filesystem/DirectoryEntry.h" 40 #include "modules/filesystem/DirectoryEntry.h"
42 #include "modules/filesystem/DirectoryReader.h" 41 #include "modules/filesystem/DirectoryReader.h"
43 #include "modules/filesystem/EntriesCallback.h" 42 #include "modules/filesystem/EntriesCallback.h"
44 #include "modules/filesystem/Entry.h" 43 #include "modules/filesystem/Entry.h"
45 #include "modules/filesystem/EntryCallback.h" 44 #include "modules/filesystem/EntryCallback.h"
46 #include "modules/filesystem/ErrorCallback.h" 45 #include "modules/filesystem/ErrorCallback.h"
47 #include "modules/filesystem/FileEntry.h" 46 #include "modules/filesystem/FileEntry.h"
48 #include "modules/filesystem/FileSystemCallback.h" 47 #include "modules/filesystem/FileSystemCallback.h"
49 #include "modules/filesystem/FileWriterBase.h" 48 #include "modules/filesystem/FileWriterBase.h"
50 #include "modules/filesystem/FileWriterBaseCallback.h" 49 #include "modules/filesystem/FileWriterBaseCallback.h"
51 #include "modules/filesystem/Metadata.h" 50 #include "modules/filesystem/Metadata.h"
52 #include "modules/filesystem/MetadataCallback.h" 51 #include "modules/filesystem/MetadataCallback.h"
53 #include "public/platform/WebFileWriter.h" 52 #include "public/platform/WebFileWriter.h"
54 53
55 namespace WebCore { 54 namespace WebCore {
56 55
57 FileSystemCallbacksBase::FileSystemCallbacksBase(PassRefPtr<ErrorCallback> error Callback) 56 FileSystemCallbacksBase::FileSystemCallbacksBase(PassRefPtr<ErrorCallback> error Callback)
58 : m_errorCallback(errorCallback) 57 : m_errorCallback(errorCallback)
59 , m_blockUntilCompletion(false)
60 { 58 {
61 } 59 }
62 60
63 FileSystemCallbacksBase::~FileSystemCallbacksBase() 61 FileSystemCallbacksBase::~FileSystemCallbacksBase()
64 { 62 {
65 } 63 }
66 64
67 void FileSystemCallbacksBase::didFail(int code) 65 void FileSystemCallbacksBase::didFail(int code)
68 { 66 {
69 if (m_errorCallback) { 67 if (m_errorCallback) {
70 m_errorCallback->handleEvent(FileError::create(static_cast<FileError::Er rorCode>(code)).get()); 68 m_errorCallback->handleEvent(FileError::create(static_cast<FileError::Er rorCode>(code)).get());
71 m_errorCallback.clear(); 69 m_errorCallback.clear();
72 } 70 }
73 } 71 }
74 72
75 // EntryCallbacks ------------------------------------------------------------- 73 // EntryCallbacks -------------------------------------------------------------
76 74
77 PassOwnPtr<EntryCallbacks> EntryCallbacks::create(PassRefPtr<EntryCallback> succ essCallback, PassRefPtr<ErrorCallback> errorCallback, PassRefPtr<DOMFileSystemBa se> fileSystem, const String& expectedPath, bool isDirectory) 75 PassOwnPtr<AsyncFileSystemCallbacks> EntryCallbacks::create(PassRefPtr<EntryCall back> successCallback, PassRefPtr<ErrorCallback> errorCallback, PassRefPtr<DOMFi leSystemBase> fileSystem, const String& expectedPath, bool isDirectory)
78 { 76 {
79 return adoptPtr(new EntryCallbacks(successCallback, errorCallback, fileSyste m, expectedPath, isDirectory)); 77 return adoptPtr(static_cast<AsyncFileSystemCallbacks*>(new EntryCallbacks(su ccessCallback, errorCallback, fileSystem, expectedPath, isDirectory)));
80 } 78 }
81 79
82 EntryCallbacks::EntryCallbacks(PassRefPtr<EntryCallback> successCallback, PassRe fPtr<ErrorCallback> errorCallback, PassRefPtr<DOMFileSystemBase> fileSystem, con st String& expectedPath, bool isDirectory) 80 EntryCallbacks::EntryCallbacks(PassRefPtr<EntryCallback> successCallback, PassRe fPtr<ErrorCallback> errorCallback, PassRefPtr<DOMFileSystemBase> fileSystem, con st String& expectedPath, bool isDirectory)
83 : FileSystemCallbacksBase(errorCallback) 81 : FileSystemCallbacksBase(errorCallback)
84 , m_successCallback(successCallback) 82 , m_successCallback(successCallback)
85 , m_fileSystem(fileSystem) 83 , m_fileSystem(fileSystem)
86 , m_expectedPath(expectedPath) 84 , m_expectedPath(expectedPath)
87 , m_isDirectory(isDirectory) 85 , m_isDirectory(isDirectory)
88 { 86 {
89 } 87 }
90 88
91 void EntryCallbacks::didSucceed() 89 void EntryCallbacks::didSucceed()
92 { 90 {
93 if (m_successCallback) { 91 if (m_successCallback) {
94 if (m_isDirectory) 92 if (m_isDirectory)
95 m_successCallback->handleEvent(DirectoryEntry::create(m_fileSystem, m_expectedPath).get()); 93 m_successCallback->handleEvent(DirectoryEntry::create(m_fileSystem, m_expectedPath).get());
96 else 94 else
97 m_successCallback->handleEvent(FileEntry::create(m_fileSystem, m_exp ectedPath).get()); 95 m_successCallback->handleEvent(FileEntry::create(m_fileSystem, m_exp ectedPath).get());
98 } 96 }
99 m_successCallback.clear(); 97 m_successCallback.clear();
100 } 98 }
101 99
102 // EntriesCallbacks ----------------------------------------------------------- 100 // EntriesCallbacks -----------------------------------------------------------
103 101
104 PassOwnPtr<EntriesCallbacks> EntriesCallbacks::create(PassRefPtr<EntriesCallback > successCallback, PassRefPtr<ErrorCallback> errorCallback, PassRefPtr<Directory ReaderBase> directoryReader, const String& basePath) 102 PassOwnPtr<AsyncFileSystemCallbacks> EntriesCallbacks::create(PassRefPtr<Entries Callback> successCallback, PassRefPtr<ErrorCallback> errorCallback, PassRefPtr<D irectoryReaderBase> directoryReader, const String& basePath)
105 { 103 {
106 return adoptPtr(new EntriesCallbacks(successCallback, errorCallback, directo ryReader, basePath)); 104 return adoptPtr(static_cast<AsyncFileSystemCallbacks*>(new EntriesCallbacks( successCallback, errorCallback, directoryReader, basePath)));
107 } 105 }
108 106
109 EntriesCallbacks::EntriesCallbacks(PassRefPtr<EntriesCallback> successCallback, PassRefPtr<ErrorCallback> errorCallback, PassRefPtr<DirectoryReaderBase> directo ryReader, const String& basePath) 107 EntriesCallbacks::EntriesCallbacks(PassRefPtr<EntriesCallback> successCallback, PassRefPtr<ErrorCallback> errorCallback, PassRefPtr<DirectoryReaderBase> directo ryReader, const String& basePath)
110 : FileSystemCallbacksBase(errorCallback) 108 : FileSystemCallbacksBase(errorCallback)
111 , m_successCallback(successCallback) 109 , m_successCallback(successCallback)
112 , m_directoryReader(directoryReader) 110 , m_directoryReader(directoryReader)
113 , m_basePath(basePath) 111 , m_basePath(basePath)
114 { 112 {
115 ASSERT(m_directoryReader); 113 ASSERT(m_directoryReader);
116 } 114 }
117 115
118 void EntriesCallbacks::didReadDirectoryEntry(const String& name, bool isDirector y) 116 void EntriesCallbacks::didReadDirectoryEntry(const String& name, bool isDirector y)
119 { 117 {
120 if (isDirectory) 118 if (isDirectory)
121 m_entries.append(DirectoryEntry::create(m_directoryReader->filesystem(), DOMFilePath::append(m_basePath, name))); 119 m_entries.append(DirectoryEntry::create(m_directoryReader->filesystem(), DOMFilePath::append(m_basePath, name)));
122 else 120 else
123 m_entries.append(FileEntry::create(m_directoryReader->filesystem(), DOMF ilePath::append(m_basePath, name))); 121 m_entries.append(FileEntry::create(m_directoryReader->filesystem(), DOMF ilePath::append(m_basePath, name)));
124 } 122 }
125 123
126 void EntriesCallbacks::didReadDirectoryEntries(bool hasMore) 124 void EntriesCallbacks::didReadDirectoryEntries(bool hasMore)
127 { 125 {
128 m_directoryReader->setHasMoreEntries(hasMore); 126 m_directoryReader->setHasMoreEntries(hasMore);
129 if (m_successCallback) 127 if (m_successCallback)
130 m_successCallback->handleEvent(m_entries); 128 m_successCallback->handleEvent(m_entries);
131 } 129 }
132 130
133 // FileSystemCallbacks -------------------------------------------------------- 131 // FileSystemCallbacks --------------------------------------------------------
134 132
135 PassOwnPtr<FileSystemCallbacks> FileSystemCallbacks::create(PassRefPtr<FileSyste mCallback> successCallback, PassRefPtr<ErrorCallback> errorCallback, ScriptExecu tionContext* scriptExecutionContext, FileSystemType type) 133 PassOwnPtr<AsyncFileSystemCallbacks> FileSystemCallbacks::create(PassRefPtr<File SystemCallback> successCallback, PassRefPtr<ErrorCallback> errorCallback, Script ExecutionContext* scriptExecutionContext, FileSystemType type)
136 { 134 {
137 return adoptPtr(new FileSystemCallbacks(successCallback, errorCallback, scri ptExecutionContext, type)); 135 return adoptPtr(static_cast<AsyncFileSystemCallbacks*>(new FileSystemCallbac ks(successCallback, errorCallback, scriptExecutionContext, type)));
138 } 136 }
139 137
140 FileSystemCallbacks::FileSystemCallbacks(PassRefPtr<FileSystemCallback> successC allback, PassRefPtr<ErrorCallback> errorCallback, ScriptExecutionContext* contex t, FileSystemType type) 138 FileSystemCallbacks::FileSystemCallbacks(PassRefPtr<FileSystemCallback> successC allback, PassRefPtr<ErrorCallback> errorCallback, ScriptExecutionContext* contex t, FileSystemType type)
141 : FileSystemCallbacksBase(errorCallback) 139 : FileSystemCallbacksBase(errorCallback)
142 , m_successCallback(successCallback) 140 , m_successCallback(successCallback)
143 , m_scriptExecutionContext(context) 141 , m_scriptExecutionContext(context)
144 , m_type(type) 142 , m_type(type)
145 { 143 {
146 } 144 }
147 145
148 void FileSystemCallbacks::didOpenFileSystem(const String& name, const KURL& root URL, PassOwnPtr<AsyncFileSystem> asyncFileSystem) 146 void FileSystemCallbacks::didOpenFileSystem(const String& name, const KURL& root URL)
149 { 147 {
150 if (m_successCallback) { 148 if (m_successCallback) {
151 ASSERT(asyncFileSystem); 149 RefPtr<DOMFileSystem> fileSystem = DOMFileSystem::create(m_scriptExecuti onContext.get(), name, m_type, rootURL);
152 RefPtr<DOMFileSystem> fileSystem = DOMFileSystem::create(m_scriptExecuti onContext.get(), name, m_type, rootURL, asyncFileSystem);
153 m_successCallback->handleEvent(fileSystem.get()); 150 m_successCallback->handleEvent(fileSystem.get());
154 m_scriptExecutionContext.clear(); 151 m_scriptExecutionContext.clear();
155 } 152 }
156 m_successCallback.clear(); 153 m_successCallback.clear();
157 } 154 }
158 155
159 // ResolveURICallbacks -------------------------------------------------------- 156 // ResolveURICallbacks --------------------------------------------------------
160 157
161 namespace { 158 namespace {
162 159
(...skipping 25 matching lines...) Expand all
188 } 185 }
189 186
190 RefPtr<EntryCallback> m_successCallback; 187 RefPtr<EntryCallback> m_successCallback;
191 RefPtr<ErrorCallback> m_errorCallback; 188 RefPtr<ErrorCallback> m_errorCallback;
192 RefPtr<DirectoryEntry> m_root; 189 RefPtr<DirectoryEntry> m_root;
193 String m_filePath; 190 String m_filePath;
194 }; 191 };
195 192
196 } // namespace 193 } // namespace
197 194
198 PassOwnPtr<ResolveURICallbacks> ResolveURICallbacks::create(PassRefPtr<EntryCall back> successCallback, PassRefPtr<ErrorCallback> errorCallback, ScriptExecutionC ontext* scriptExecutionContext, FileSystemType type, const String& filePath) 195 PassOwnPtr<AsyncFileSystemCallbacks> ResolveURICallbacks::create(PassRefPtr<Entr yCallback> successCallback, PassRefPtr<ErrorCallback> errorCallback, ScriptExecu tionContext* scriptExecutionContext, FileSystemType type, const String& filePath )
199 { 196 {
200 return adoptPtr(new ResolveURICallbacks(successCallback, errorCallback, scri ptExecutionContext, type, filePath)); 197 return adoptPtr(static_cast<AsyncFileSystemCallbacks*>(new ResolveURICallbac ks(successCallback, errorCallback, scriptExecutionContext, type, filePath)));
201 } 198 }
202 199
203 ResolveURICallbacks::ResolveURICallbacks(PassRefPtr<EntryCallback> successCallba ck, PassRefPtr<ErrorCallback> errorCallback, ScriptExecutionContext* context, Fi leSystemType type, const String& filePath) 200 ResolveURICallbacks::ResolveURICallbacks(PassRefPtr<EntryCallback> successCallba ck, PassRefPtr<ErrorCallback> errorCallback, ScriptExecutionContext* context, Fi leSystemType type, const String& filePath)
204 : FileSystemCallbacksBase(errorCallback) 201 : FileSystemCallbacksBase(errorCallback)
205 , m_successCallback(successCallback) 202 , m_successCallback(successCallback)
206 , m_scriptExecutionContext(context) 203 , m_scriptExecutionContext(context)
207 , m_type(type) 204 , m_type(type)
208 , m_filePath(filePath) 205 , m_filePath(filePath)
209 { 206 {
210 } 207 }
211 208
212 void ResolveURICallbacks::didOpenFileSystem(const String& name, const KURL& root URL, PassOwnPtr<AsyncFileSystem> asyncFileSystem) 209 void ResolveURICallbacks::didOpenFileSystem(const String& name, const KURL& root URL)
213 { 210 {
214 ASSERT(asyncFileSystem); 211 RefPtr<DirectoryEntry> root = DOMFileSystem::create(m_scriptExecutionContext .get(), name, m_type, rootURL)->root();
215 RefPtr<DirectoryEntry> root = DOMFileSystem::create(m_scriptExecutionContext .get(), name, m_type, rootURL, asyncFileSystem)->root();
216 root->getDirectory(m_filePath, Dictionary(), m_successCallback, ErrorCallbac kWrapper::create(m_successCallback, m_errorCallback, root, m_filePath)); 212 root->getDirectory(m_filePath, Dictionary(), m_successCallback, ErrorCallbac kWrapper::create(m_successCallback, m_errorCallback, root, m_filePath));
217 } 213 }
218 214
219 // MetadataCallbacks ---------------------------------------------------------- 215 // MetadataCallbacks ----------------------------------------------------------
220 216
221 PassOwnPtr<MetadataCallbacks> MetadataCallbacks::create(PassRefPtr<MetadataCallb ack> successCallback, PassRefPtr<ErrorCallback> errorCallback) 217 PassOwnPtr<AsyncFileSystemCallbacks> MetadataCallbacks::create(PassRefPtr<Metada taCallback> successCallback, PassRefPtr<ErrorCallback> errorCallback)
222 { 218 {
223 return adoptPtr(new MetadataCallbacks(successCallback, errorCallback)); 219 return adoptPtr(static_cast<AsyncFileSystemCallbacks*>(new MetadataCallbacks (successCallback, errorCallback)));
224 } 220 }
225 221
226 MetadataCallbacks::MetadataCallbacks(PassRefPtr<MetadataCallback> successCallbac k, PassRefPtr<ErrorCallback> errorCallback) 222 MetadataCallbacks::MetadataCallbacks(PassRefPtr<MetadataCallback> successCallbac k, PassRefPtr<ErrorCallback> errorCallback)
227 : FileSystemCallbacksBase(errorCallback) 223 : FileSystemCallbacksBase(errorCallback)
228 , m_successCallback(successCallback) 224 , m_successCallback(successCallback)
229 { 225 {
230 } 226 }
231 227
232 void MetadataCallbacks::didReadMetadata(const FileMetadata& metadata) 228 void MetadataCallbacks::didReadMetadata(const FileMetadata& metadata)
233 { 229 {
234 if (m_successCallback) 230 if (m_successCallback)
235 m_successCallback->handleEvent(Metadata::create(metadata).get()); 231 m_successCallback->handleEvent(Metadata::create(metadata).get());
236 m_successCallback.clear(); 232 m_successCallback.clear();
237 } 233 }
238 234
239 // FileWriterBaseCallbacks ----------------------------------------------------- ----- 235 // FileWriterBaseCallbacks ----------------------------------------------------- -----
240 236
241 PassOwnPtr<FileWriterBaseCallbacks> FileWriterBaseCallbacks::create(PassRefPtr<F ileWriterBase> fileWriter, PassRefPtr<FileWriterBaseCallback> successCallback, P assRefPtr<ErrorCallback> errorCallback) 237 PassOwnPtr<AsyncFileSystemCallbacks> FileWriterBaseCallbacks::create(PassRefPtr< FileWriterBase> fileWriter, PassRefPtr<FileWriterBaseCallback> successCallback, PassRefPtr<ErrorCallback> errorCallback)
242 { 238 {
243 return adoptPtr(new FileWriterBaseCallbacks(fileWriter, successCallback, err orCallback)); 239 return adoptPtr(static_cast<AsyncFileSystemCallbacks*>(new FileWriterBaseCal lbacks(fileWriter, successCallback, errorCallback)));
244 } 240 }
245 241
246 FileWriterBaseCallbacks::FileWriterBaseCallbacks(PassRefPtr<FileWriterBase> file Writer, PassRefPtr<FileWriterBaseCallback> successCallback, PassRefPtr<ErrorCall back> errorCallback) 242 FileWriterBaseCallbacks::FileWriterBaseCallbacks(PassRefPtr<FileWriterBase> file Writer, PassRefPtr<FileWriterBaseCallback> successCallback, PassRefPtr<ErrorCall back> errorCallback)
247 : FileSystemCallbacksBase(errorCallback) 243 : FileSystemCallbacksBase(errorCallback)
248 , m_fileWriter(fileWriter) 244 , m_fileWriter(fileWriter)
249 , m_successCallback(successCallback) 245 , m_successCallback(successCallback)
250 { 246 {
251 } 247 }
252 248
253 void FileWriterBaseCallbacks::didCreateFileWriter(PassOwnPtr<WebKit::WebFileWrit er> fileWriter, long long length) 249 void FileWriterBaseCallbacks::didCreateFileWriter(PassOwnPtr<WebKit::WebFileWrit er> fileWriter, long long length)
254 { 250 {
255 m_fileWriter->initialize(fileWriter, length); 251 m_fileWriter->initialize(fileWriter, length);
256 if (m_successCallback) 252 if (m_successCallback)
257 m_successCallback->handleEvent(m_fileWriter.release().get()); 253 m_successCallback->handleEvent(m_fileWriter.release().get());
258 m_successCallback.clear(); 254 m_successCallback.clear();
259 } 255 }
260 256
261 // VoidCallbacks -------------------------------------------------------------- 257 // VoidCallbacks --------------------------------------------------------------
262 258
263 PassOwnPtr<VoidCallbacks> VoidCallbacks::create(PassRefPtr<VoidCallback> success Callback, PassRefPtr<ErrorCallback> errorCallback) 259 PassOwnPtr<AsyncFileSystemCallbacks> VoidCallbacks::create(PassRefPtr<VoidCallba ck> successCallback, PassRefPtr<ErrorCallback> errorCallback)
264 { 260 {
265 return adoptPtr(new VoidCallbacks(successCallback, errorCallback)); 261 return adoptPtr(static_cast<AsyncFileSystemCallbacks*>(new VoidCallbacks(suc cessCallback, errorCallback)));
266 } 262 }
267 263
268 VoidCallbacks::VoidCallbacks(PassRefPtr<VoidCallback> successCallback, PassRefPt r<ErrorCallback> errorCallback) 264 VoidCallbacks::VoidCallbacks(PassRefPtr<VoidCallback> successCallback, PassRefPt r<ErrorCallback> errorCallback)
269 : FileSystemCallbacksBase(errorCallback) 265 : FileSystemCallbacksBase(errorCallback)
270 , m_successCallback(successCallback) 266 , m_successCallback(successCallback)
271 { 267 {
272 } 268 }
273 269
274 void VoidCallbacks::didSucceed() 270 void VoidCallbacks::didSucceed()
275 { 271 {
276 if (m_successCallback) 272 if (m_successCallback)
277 m_successCallback->handleEvent(); 273 m_successCallback->handleEvent();
278 m_successCallback.clear(); 274 m_successCallback.clear();
279 } 275 }
280 276
281 } // namespace 277 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698