OLD | NEW |
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 Loading... |
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, DOMFileSystemBase* fileSystem) |
58 : m_errorCallback(errorCallback) | 57 : m_errorCallback(errorCallback) |
59 , m_blockUntilCompletion(false) | 58 , m_fileSystem(fileSystem) |
60 { | 59 { |
| 60 if (m_fileSystem) |
| 61 m_fileSystem->addPendingCallbacks(); |
61 } | 62 } |
62 | 63 |
63 FileSystemCallbacksBase::~FileSystemCallbacksBase() | 64 FileSystemCallbacksBase::~FileSystemCallbacksBase() |
64 { | 65 { |
| 66 if (m_fileSystem) |
| 67 m_fileSystem->removePendingCallbacks(); |
65 } | 68 } |
66 | 69 |
67 void FileSystemCallbacksBase::didFail(int code) | 70 void FileSystemCallbacksBase::didFail(int code) |
68 { | 71 { |
69 if (m_errorCallback) { | 72 if (m_errorCallback) { |
70 m_errorCallback->handleEvent(FileError::create(static_cast<FileError::Er
rorCode>(code)).get()); | 73 m_errorCallback->handleEvent(FileError::create(static_cast<FileError::Er
rorCode>(code)).get()); |
71 m_errorCallback.clear(); | 74 m_errorCallback.clear(); |
72 } | 75 } |
73 } | 76 } |
74 | 77 |
75 // EntryCallbacks ------------------------------------------------------------- | 78 // EntryCallbacks ------------------------------------------------------------- |
76 | 79 |
77 PassOwnPtr<EntryCallbacks> EntryCallbacks::create(PassRefPtr<EntryCallback> succ
essCallback, PassRefPtr<ErrorCallback> errorCallback, PassRefPtr<DOMFileSystemBa
se> fileSystem, const String& expectedPath, bool isDirectory) | 80 PassOwnPtr<AsyncFileSystemCallbacks> EntryCallbacks::create(PassRefPtr<EntryCall
back> successCallback, PassRefPtr<ErrorCallback> errorCallback, PassRefPtr<DOMFi
leSystemBase> fileSystem, const String& expectedPath, bool isDirectory) |
78 { | 81 { |
79 return adoptPtr(new EntryCallbacks(successCallback, errorCallback, fileSyste
m, expectedPath, isDirectory)); | 82 return adoptPtr(static_cast<AsyncFileSystemCallbacks*>(new EntryCallbacks(su
ccessCallback, errorCallback, fileSystem, expectedPath, isDirectory))); |
80 } | 83 } |
81 | 84 |
82 EntryCallbacks::EntryCallbacks(PassRefPtr<EntryCallback> successCallback, PassRe
fPtr<ErrorCallback> errorCallback, PassRefPtr<DOMFileSystemBase> fileSystem, con
st String& expectedPath, bool isDirectory) | 85 EntryCallbacks::EntryCallbacks(PassRefPtr<EntryCallback> successCallback, PassRe
fPtr<ErrorCallback> errorCallback, PassRefPtr<DOMFileSystemBase> fileSystem, con
st String& expectedPath, bool isDirectory) |
83 : FileSystemCallbacksBase(errorCallback) | 86 : FileSystemCallbacksBase(errorCallback, fileSystem.get()) |
84 , m_successCallback(successCallback) | 87 , m_successCallback(successCallback) |
85 , m_fileSystem(fileSystem) | |
86 , m_expectedPath(expectedPath) | 88 , m_expectedPath(expectedPath) |
87 , m_isDirectory(isDirectory) | 89 , m_isDirectory(isDirectory) |
88 { | 90 { |
89 } | 91 } |
90 | 92 |
91 void EntryCallbacks::didSucceed() | 93 void EntryCallbacks::didSucceed() |
92 { | 94 { |
93 if (m_successCallback) { | 95 if (m_successCallback) { |
94 if (m_isDirectory) | 96 if (m_isDirectory) |
95 m_successCallback->handleEvent(DirectoryEntry::create(m_fileSystem,
m_expectedPath).get()); | 97 m_successCallback->handleEvent(DirectoryEntry::create(m_fileSystem,
m_expectedPath).get()); |
96 else | 98 else |
97 m_successCallback->handleEvent(FileEntry::create(m_fileSystem, m_exp
ectedPath).get()); | 99 m_successCallback->handleEvent(FileEntry::create(m_fileSystem, m_exp
ectedPath).get()); |
98 } | 100 } |
99 m_successCallback.clear(); | 101 m_successCallback.clear(); |
100 } | 102 } |
101 | 103 |
102 // EntriesCallbacks ----------------------------------------------------------- | 104 // EntriesCallbacks ----------------------------------------------------------- |
103 | 105 |
104 PassOwnPtr<EntriesCallbacks> EntriesCallbacks::create(PassRefPtr<EntriesCallback
> successCallback, PassRefPtr<ErrorCallback> errorCallback, PassRefPtr<Directory
ReaderBase> directoryReader, const String& basePath) | 106 PassOwnPtr<AsyncFileSystemCallbacks> EntriesCallbacks::create(PassRefPtr<Entries
Callback> successCallback, PassRefPtr<ErrorCallback> errorCallback, PassRefPtr<D
irectoryReaderBase> directoryReader, const String& basePath) |
105 { | 107 { |
106 return adoptPtr(new EntriesCallbacks(successCallback, errorCallback, directo
ryReader, basePath)); | 108 return adoptPtr(static_cast<AsyncFileSystemCallbacks*>(new EntriesCallbacks(
successCallback, errorCallback, directoryReader, basePath))); |
107 } | 109 } |
108 | 110 |
109 EntriesCallbacks::EntriesCallbacks(PassRefPtr<EntriesCallback> successCallback,
PassRefPtr<ErrorCallback> errorCallback, PassRefPtr<DirectoryReaderBase> directo
ryReader, const String& basePath) | 111 EntriesCallbacks::EntriesCallbacks(PassRefPtr<EntriesCallback> successCallback,
PassRefPtr<ErrorCallback> errorCallback, PassRefPtr<DirectoryReaderBase> directo
ryReader, const String& basePath) |
110 : FileSystemCallbacksBase(errorCallback) | 112 : FileSystemCallbacksBase(errorCallback, directoryReader->filesystem()) |
111 , m_successCallback(successCallback) | 113 , m_successCallback(successCallback) |
112 , m_directoryReader(directoryReader) | 114 , m_directoryReader(directoryReader) |
113 , m_basePath(basePath) | 115 , m_basePath(basePath) |
114 { | 116 { |
115 ASSERT(m_directoryReader); | 117 ASSERT(m_directoryReader); |
116 } | 118 } |
117 | 119 |
118 void EntriesCallbacks::didReadDirectoryEntry(const String& name, bool isDirector
y) | 120 void EntriesCallbacks::didReadDirectoryEntry(const String& name, bool isDirector
y) |
119 { | 121 { |
120 if (isDirectory) | 122 if (isDirectory) |
121 m_entries.append(DirectoryEntry::create(m_directoryReader->filesystem(),
DOMFilePath::append(m_basePath, name))); | 123 m_entries.append(DirectoryEntry::create(m_directoryReader->filesystem(),
DOMFilePath::append(m_basePath, name))); |
122 else | 124 else |
123 m_entries.append(FileEntry::create(m_directoryReader->filesystem(), DOMF
ilePath::append(m_basePath, name))); | 125 m_entries.append(FileEntry::create(m_directoryReader->filesystem(), DOMF
ilePath::append(m_basePath, name))); |
124 } | 126 } |
125 | 127 |
126 void EntriesCallbacks::didReadDirectoryEntries(bool hasMore) | 128 void EntriesCallbacks::didReadDirectoryEntries(bool hasMore) |
127 { | 129 { |
128 m_directoryReader->setHasMoreEntries(hasMore); | 130 m_directoryReader->setHasMoreEntries(hasMore); |
129 if (m_successCallback) | 131 if (m_successCallback) |
130 m_successCallback->handleEvent(m_entries); | 132 m_successCallback->handleEvent(m_entries); |
131 } | 133 } |
132 | 134 |
133 // FileSystemCallbacks -------------------------------------------------------- | 135 // FileSystemCallbacks -------------------------------------------------------- |
134 | 136 |
135 PassOwnPtr<FileSystemCallbacks> FileSystemCallbacks::create(PassRefPtr<FileSyste
mCallback> successCallback, PassRefPtr<ErrorCallback> errorCallback, ScriptExecu
tionContext* scriptExecutionContext, FileSystemType type) | 137 PassOwnPtr<AsyncFileSystemCallbacks> FileSystemCallbacks::create(PassRefPtr<File
SystemCallback> successCallback, PassRefPtr<ErrorCallback> errorCallback, Script
ExecutionContext* scriptExecutionContext, FileSystemType type) |
136 { | 138 { |
137 return adoptPtr(new FileSystemCallbacks(successCallback, errorCallback, scri
ptExecutionContext, type)); | 139 return adoptPtr(static_cast<AsyncFileSystemCallbacks*>(new FileSystemCallbac
ks(successCallback, errorCallback, scriptExecutionContext, type))); |
138 } | 140 } |
139 | 141 |
140 FileSystemCallbacks::FileSystemCallbacks(PassRefPtr<FileSystemCallback> successC
allback, PassRefPtr<ErrorCallback> errorCallback, ScriptExecutionContext* contex
t, FileSystemType type) | 142 FileSystemCallbacks::FileSystemCallbacks(PassRefPtr<FileSystemCallback> successC
allback, PassRefPtr<ErrorCallback> errorCallback, ScriptExecutionContext* contex
t, FileSystemType type) |
141 : FileSystemCallbacksBase(errorCallback) | 143 : FileSystemCallbacksBase(errorCallback, 0) |
142 , m_successCallback(successCallback) | 144 , m_successCallback(successCallback) |
143 , m_scriptExecutionContext(context) | 145 , m_scriptExecutionContext(context) |
144 , m_type(type) | 146 , m_type(type) |
145 { | 147 { |
146 } | 148 } |
147 | 149 |
148 void FileSystemCallbacks::didOpenFileSystem(const String& name, const KURL& root
URL, PassOwnPtr<AsyncFileSystem> asyncFileSystem) | 150 void FileSystemCallbacks::didOpenFileSystem(const String& name, const KURL& root
URL) |
149 { | 151 { |
150 if (m_successCallback) { | 152 if (m_successCallback) { |
151 ASSERT(asyncFileSystem); | 153 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()); | 154 m_successCallback->handleEvent(fileSystem.get()); |
154 m_scriptExecutionContext.clear(); | 155 m_scriptExecutionContext.clear(); |
155 } | 156 } |
156 m_successCallback.clear(); | 157 m_successCallback.clear(); |
157 } | 158 } |
158 | 159 |
159 // ResolveURICallbacks -------------------------------------------------------- | 160 // ResolveURICallbacks -------------------------------------------------------- |
160 | 161 |
161 namespace { | 162 namespace { |
162 | 163 |
(...skipping 25 matching lines...) Expand all Loading... |
188 } | 189 } |
189 | 190 |
190 RefPtr<EntryCallback> m_successCallback; | 191 RefPtr<EntryCallback> m_successCallback; |
191 RefPtr<ErrorCallback> m_errorCallback; | 192 RefPtr<ErrorCallback> m_errorCallback; |
192 RefPtr<DirectoryEntry> m_root; | 193 RefPtr<DirectoryEntry> m_root; |
193 String m_filePath; | 194 String m_filePath; |
194 }; | 195 }; |
195 | 196 |
196 } // namespace | 197 } // namespace |
197 | 198 |
198 PassOwnPtr<ResolveURICallbacks> ResolveURICallbacks::create(PassRefPtr<EntryCall
back> successCallback, PassRefPtr<ErrorCallback> errorCallback, ScriptExecutionC
ontext* scriptExecutionContext, FileSystemType type, const String& filePath) | 199 PassOwnPtr<AsyncFileSystemCallbacks> ResolveURICallbacks::create(PassRefPtr<Entr
yCallback> successCallback, PassRefPtr<ErrorCallback> errorCallback, ScriptExecu
tionContext* scriptExecutionContext, FileSystemType type, const String& filePath
) |
199 { | 200 { |
200 return adoptPtr(new ResolveURICallbacks(successCallback, errorCallback, scri
ptExecutionContext, type, filePath)); | 201 return adoptPtr(static_cast<AsyncFileSystemCallbacks*>(new ResolveURICallbac
ks(successCallback, errorCallback, scriptExecutionContext, type, filePath))); |
201 } | 202 } |
202 | 203 |
203 ResolveURICallbacks::ResolveURICallbacks(PassRefPtr<EntryCallback> successCallba
ck, PassRefPtr<ErrorCallback> errorCallback, ScriptExecutionContext* context, Fi
leSystemType type, const String& filePath) | 204 ResolveURICallbacks::ResolveURICallbacks(PassRefPtr<EntryCallback> successCallba
ck, PassRefPtr<ErrorCallback> errorCallback, ScriptExecutionContext* context, Fi
leSystemType type, const String& filePath) |
204 : FileSystemCallbacksBase(errorCallback) | 205 : FileSystemCallbacksBase(errorCallback, 0) |
205 , m_successCallback(successCallback) | 206 , m_successCallback(successCallback) |
206 , m_scriptExecutionContext(context) | 207 , m_scriptExecutionContext(context) |
207 , m_type(type) | 208 , m_type(type) |
208 , m_filePath(filePath) | 209 , m_filePath(filePath) |
209 { | 210 { |
210 } | 211 } |
211 | 212 |
212 void ResolveURICallbacks::didOpenFileSystem(const String& name, const KURL& root
URL, PassOwnPtr<AsyncFileSystem> asyncFileSystem) | 213 void ResolveURICallbacks::didOpenFileSystem(const String& name, const KURL& root
URL) |
213 { | 214 { |
214 ASSERT(asyncFileSystem); | 215 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)); | 216 root->getDirectory(m_filePath, Dictionary(), m_successCallback, ErrorCallbac
kWrapper::create(m_successCallback, m_errorCallback, root, m_filePath)); |
217 } | 217 } |
218 | 218 |
219 // MetadataCallbacks ---------------------------------------------------------- | 219 // MetadataCallbacks ---------------------------------------------------------- |
220 | 220 |
221 PassOwnPtr<MetadataCallbacks> MetadataCallbacks::create(PassRefPtr<MetadataCallb
ack> successCallback, PassRefPtr<ErrorCallback> errorCallback) | 221 PassOwnPtr<AsyncFileSystemCallbacks> MetadataCallbacks::create(PassRefPtr<Metada
taCallback> successCallback, PassRefPtr<ErrorCallback> errorCallback, DOMFileSys
temBase* fileSystem) |
222 { | 222 { |
223 return adoptPtr(new MetadataCallbacks(successCallback, errorCallback)); | 223 return adoptPtr(static_cast<AsyncFileSystemCallbacks*>(new MetadataCallbacks
(successCallback, errorCallback, fileSystem))); |
224 } | 224 } |
225 | 225 |
226 MetadataCallbacks::MetadataCallbacks(PassRefPtr<MetadataCallback> successCallbac
k, PassRefPtr<ErrorCallback> errorCallback) | 226 MetadataCallbacks::MetadataCallbacks(PassRefPtr<MetadataCallback> successCallbac
k, PassRefPtr<ErrorCallback> errorCallback, DOMFileSystemBase* fileSystem) |
227 : FileSystemCallbacksBase(errorCallback) | 227 : FileSystemCallbacksBase(errorCallback, fileSystem) |
228 , m_successCallback(successCallback) | 228 , m_successCallback(successCallback) |
229 { | 229 { |
230 } | 230 } |
231 | 231 |
232 void MetadataCallbacks::didReadMetadata(const FileMetadata& metadata) | 232 void MetadataCallbacks::didReadMetadata(const FileMetadata& metadata) |
233 { | 233 { |
234 if (m_successCallback) | 234 if (m_successCallback) |
235 m_successCallback->handleEvent(Metadata::create(metadata).get()); | 235 m_successCallback->handleEvent(Metadata::create(metadata).get()); |
236 m_successCallback.clear(); | 236 m_successCallback.clear(); |
237 } | 237 } |
238 | 238 |
239 // FileWriterBaseCallbacks -----------------------------------------------------
----- | 239 // FileWriterBaseCallbacks -----------------------------------------------------
----- |
240 | 240 |
241 PassOwnPtr<FileWriterBaseCallbacks> FileWriterBaseCallbacks::create(PassRefPtr<F
ileWriterBase> fileWriter, PassRefPtr<FileWriterBaseCallback> successCallback, P
assRefPtr<ErrorCallback> errorCallback) | 241 PassOwnPtr<AsyncFileSystemCallbacks> FileWriterBaseCallbacks::create(PassRefPtr<
FileWriterBase> fileWriter, PassRefPtr<FileWriterBaseCallback> successCallback,
PassRefPtr<ErrorCallback> errorCallback) |
242 { | 242 { |
243 return adoptPtr(new FileWriterBaseCallbacks(fileWriter, successCallback, err
orCallback)); | 243 return adoptPtr(static_cast<AsyncFileSystemCallbacks*>(new FileWriterBaseCal
lbacks(fileWriter, successCallback, errorCallback))); |
244 } | 244 } |
245 | 245 |
246 FileWriterBaseCallbacks::FileWriterBaseCallbacks(PassRefPtr<FileWriterBase> file
Writer, PassRefPtr<FileWriterBaseCallback> successCallback, PassRefPtr<ErrorCall
back> errorCallback) | 246 FileWriterBaseCallbacks::FileWriterBaseCallbacks(PassRefPtr<FileWriterBase> file
Writer, PassRefPtr<FileWriterBaseCallback> successCallback, PassRefPtr<ErrorCall
back> errorCallback) |
247 : FileSystemCallbacksBase(errorCallback) | 247 : FileSystemCallbacksBase(errorCallback, 0) |
248 , m_fileWriter(fileWriter) | 248 , m_fileWriter(fileWriter) |
249 , m_successCallback(successCallback) | 249 , m_successCallback(successCallback) |
250 { | 250 { |
251 } | 251 } |
252 | 252 |
253 void FileWriterBaseCallbacks::didCreateFileWriter(PassOwnPtr<WebKit::WebFileWrit
er> fileWriter, long long length) | 253 void FileWriterBaseCallbacks::didCreateFileWriter(PassOwnPtr<WebKit::WebFileWrit
er> fileWriter, long long length) |
254 { | 254 { |
255 m_fileWriter->initialize(fileWriter, length); | 255 m_fileWriter->initialize(fileWriter, length); |
256 if (m_successCallback) | 256 if (m_successCallback) |
257 m_successCallback->handleEvent(m_fileWriter.release().get()); | 257 m_successCallback->handleEvent(m_fileWriter.release().get()); |
258 m_successCallback.clear(); | 258 m_successCallback.clear(); |
259 } | 259 } |
260 | 260 |
261 // VoidCallbacks -------------------------------------------------------------- | 261 // VoidCallbacks -------------------------------------------------------------- |
262 | 262 |
263 PassOwnPtr<VoidCallbacks> VoidCallbacks::create(PassRefPtr<VoidCallback> success
Callback, PassRefPtr<ErrorCallback> errorCallback) | 263 PassOwnPtr<AsyncFileSystemCallbacks> VoidCallbacks::create(PassRefPtr<VoidCallba
ck> successCallback, PassRefPtr<ErrorCallback> errorCallback, DOMFileSystemBase*
fileSystem) |
264 { | 264 { |
265 return adoptPtr(new VoidCallbacks(successCallback, errorCallback)); | 265 return adoptPtr(static_cast<AsyncFileSystemCallbacks*>(new VoidCallbacks(suc
cessCallback, errorCallback, fileSystem))); |
266 } | 266 } |
267 | 267 |
268 VoidCallbacks::VoidCallbacks(PassRefPtr<VoidCallback> successCallback, PassRefPt
r<ErrorCallback> errorCallback) | 268 VoidCallbacks::VoidCallbacks(PassRefPtr<VoidCallback> successCallback, PassRefPt
r<ErrorCallback> errorCallback, DOMFileSystemBase* fileSystem) |
269 : FileSystemCallbacksBase(errorCallback) | 269 : FileSystemCallbacksBase(errorCallback, fileSystem) |
270 , m_successCallback(successCallback) | 270 , m_successCallback(successCallback) |
271 { | 271 { |
272 } | 272 } |
273 | 273 |
274 void VoidCallbacks::didSucceed() | 274 void VoidCallbacks::didSucceed() |
275 { | 275 { |
276 if (m_successCallback) | 276 if (m_successCallback) |
277 m_successCallback->handleEvent(); | 277 m_successCallback->handleEvent(); |
278 m_successCallback.clear(); | 278 m_successCallback.clear(); |
279 } | 279 } |
280 | 280 |
281 } // namespace | 281 } // namespace |
OLD | NEW |