OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 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 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
65 std::unique_ptr<AsyncFileSystemCallbacks> release() { | 65 std::unique_ptr<AsyncFileSystemCallbacks> release() { |
66 return std::move(m_callbacks); | 66 return std::move(m_callbacks); |
67 } | 67 } |
68 | 68 |
69 DEFINE_INLINE_TRACE() {} | 69 DEFINE_INLINE_TRACE() {} |
70 | 70 |
71 private: | 71 private: |
72 std::unique_ptr<AsyncFileSystemCallbacks> m_callbacks; | 72 std::unique_ptr<AsyncFileSystemCallbacks> m_callbacks; |
73 }; | 73 }; |
74 | 74 |
75 LocalFileSystem* LocalFileSystem::create( | |
76 std::unique_ptr<FileSystemClient> client) { | |
77 return new LocalFileSystem(std::move(client)); | |
78 } | |
79 | |
80 LocalFileSystem::~LocalFileSystem() {} | 75 LocalFileSystem::~LocalFileSystem() {} |
81 | 76 |
82 void LocalFileSystem::resolveURL( | 77 void LocalFileSystem::resolveURL( |
83 ExecutionContext* context, | 78 ExecutionContext* context, |
84 const KURL& fileSystemURL, | 79 const KURL& fileSystemURL, |
85 std::unique_ptr<AsyncFileSystemCallbacks> callbacks) { | 80 std::unique_ptr<AsyncFileSystemCallbacks> callbacks) { |
86 CallbackWrapper* wrapper = new CallbackWrapper(std::move(callbacks)); | 81 CallbackWrapper* wrapper = new CallbackWrapper(std::move(callbacks)); |
87 requestFileSystemAccessInternal( | 82 requestFileSystemAccessInternal( |
88 context, | 83 context, |
89 WTF::bind(&LocalFileSystem::resolveURLInternal, | 84 WTF::bind(&LocalFileSystem::resolveURLInternal, |
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
207 fileSystemNotAvailable(context, callbacks); | 202 fileSystemNotAvailable(context, callbacks); |
208 return; | 203 return; |
209 } | 204 } |
210 KURL storagePartition = | 205 KURL storagePartition = |
211 KURL(KURL(), context->getSecurityOrigin()->toString()); | 206 KURL(KURL(), context->getSecurityOrigin()->toString()); |
212 fileSystem->deleteFileSystem(storagePartition, | 207 fileSystem->deleteFileSystem(storagePartition, |
213 static_cast<WebFileSystemType>(type), | 208 static_cast<WebFileSystemType>(type), |
214 callbacks->release()); | 209 callbacks->release()); |
215 } | 210 } |
216 | 211 |
217 LocalFileSystem::LocalFileSystem(std::unique_ptr<FileSystemClient> client) | 212 LocalFileSystem::LocalFileSystem(LocalFrame& frame, |
218 : m_client(std::move(client)) {} | 213 std::unique_ptr<FileSystemClient> client) |
| 214 : Supplement<LocalFrame>(frame), m_client(std::move(client)) {} |
| 215 |
| 216 LocalFileSystem::LocalFileSystem(WorkerClients& workerClients, |
| 217 std::unique_ptr<FileSystemClient> client) |
| 218 : Supplement<WorkerClients>(workerClients), m_client(std::move(client)) {} |
219 | 219 |
220 DEFINE_TRACE(LocalFileSystem) { | 220 DEFINE_TRACE(LocalFileSystem) { |
221 Supplement<LocalFrame>::trace(visitor); | 221 Supplement<LocalFrame>::trace(visitor); |
222 Supplement<WorkerClients>::trace(visitor); | 222 Supplement<WorkerClients>::trace(visitor); |
223 } | 223 } |
224 | 224 |
225 const char* LocalFileSystem::supplementName() { | 225 const char* LocalFileSystem::supplementName() { |
226 return "LocalFileSystem"; | 226 return "LocalFileSystem"; |
227 } | 227 } |
228 | 228 |
229 LocalFileSystem* LocalFileSystem::from(ExecutionContext& context) { | 229 LocalFileSystem* LocalFileSystem::from(ExecutionContext& context) { |
230 if (context.isDocument()) | 230 if (context.isDocument()) { |
231 return static_cast<LocalFileSystem*>(Supplement<LocalFrame>::from( | 231 LocalFileSystem* fileSystem = |
232 toDocument(context).frame(), supplementName())); | 232 static_cast<LocalFileSystem*>(Supplement<LocalFrame>::from( |
| 233 toDocument(context).frame(), supplementName())); |
| 234 DCHECK(fileSystem); |
| 235 return fileSystem; |
| 236 } |
233 | 237 |
234 WorkerClients* clients = toWorkerGlobalScope(context).clients(); | 238 WorkerClients* clients = toWorkerGlobalScope(context).clients(); |
235 ASSERT(clients); | 239 ASSERT(clients); |
236 return static_cast<LocalFileSystem*>( | 240 LocalFileSystem* fileSystem = static_cast<LocalFileSystem*>( |
237 Supplement<WorkerClients>::from(clients, supplementName())); | 241 Supplement<WorkerClients>::from(clients, supplementName())); |
| 242 DCHECK(fileSystem); |
| 243 return fileSystem; |
238 } | 244 } |
239 | 245 |
240 void provideLocalFileSystemTo(LocalFrame& frame, | 246 void provideLocalFileSystemTo(LocalFrame& frame, |
241 std::unique_ptr<FileSystemClient> client) { | 247 std::unique_ptr<FileSystemClient> client) { |
242 frame.provideSupplement(LocalFileSystem::supplementName(), | 248 frame.provideSupplement(LocalFileSystem::supplementName(), |
243 LocalFileSystem::create(std::move(client))); | 249 new LocalFileSystem(frame, std::move(client))); |
244 } | 250 } |
245 | 251 |
246 void provideLocalFileSystemToWorker(WorkerClients* clients, | 252 void provideLocalFileSystemToWorker(WorkerClients* workerClients, |
247 std::unique_ptr<FileSystemClient> client) { | 253 std::unique_ptr<FileSystemClient> client) { |
248 clients->provideSupplement(LocalFileSystem::supplementName(), | 254 Supplement<WorkerClients>::provideTo( |
249 LocalFileSystem::create(std::move(client))); | 255 *workerClients, LocalFileSystem::supplementName(), |
| 256 new LocalFileSystem(*workerClients, std::move(client))); |
250 } | 257 } |
251 | 258 |
252 } // namespace blink | 259 } // namespace blink |
OLD | NEW |