| 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 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 76 { | 76 { |
| 77 return new LocalFileSystem(std::move(client)); | 77 return new LocalFileSystem(std::move(client)); |
| 78 } | 78 } |
| 79 | 79 |
| 80 LocalFileSystem::~LocalFileSystem() | 80 LocalFileSystem::~LocalFileSystem() |
| 81 { | 81 { |
| 82 } | 82 } |
| 83 | 83 |
| 84 void LocalFileSystem::resolveURL(ExecutionContext* context, const KURL& fileSyst
emURL, PassOwnPtr<AsyncFileSystemCallbacks> callbacks) | 84 void LocalFileSystem::resolveURL(ExecutionContext* context, const KURL& fileSyst
emURL, PassOwnPtr<AsyncFileSystemCallbacks> callbacks) |
| 85 { | 85 { |
| 86 ExecutionContext* contextPtr(context); | |
| 87 CallbackWrapper* wrapper = new CallbackWrapper(std::move(callbacks)); | 86 CallbackWrapper* wrapper = new CallbackWrapper(std::move(callbacks)); |
| 88 requestFileSystemAccessInternal(context, | 87 requestFileSystemAccessInternal(context, |
| 89 bind(&LocalFileSystem::resolveURLInternal, this, contextPtr, fileSystemU
RL, wrapper), | 88 bind(&LocalFileSystem::resolveURLInternal, this, context, fileSystemURL,
wrapper), |
| 90 bind(&LocalFileSystem::fileSystemNotAllowedInternal, this, contextPtr, w
rapper)); | 89 bind(&LocalFileSystem::fileSystemNotAllowedInternal, this, context, wrap
per)); |
| 91 } | 90 } |
| 92 | 91 |
| 93 void LocalFileSystem::requestFileSystem(ExecutionContext* context, FileSystemTyp
e type, long long size, PassOwnPtr<AsyncFileSystemCallbacks> callbacks) | 92 void LocalFileSystem::requestFileSystem(ExecutionContext* context, FileSystemTyp
e type, long long size, PassOwnPtr<AsyncFileSystemCallbacks> callbacks) |
| 94 { | 93 { |
| 95 ExecutionContext* contextPtr(context); | |
| 96 CallbackWrapper* wrapper = new CallbackWrapper(std::move(callbacks)); | 94 CallbackWrapper* wrapper = new CallbackWrapper(std::move(callbacks)); |
| 97 requestFileSystemAccessInternal(context, | 95 requestFileSystemAccessInternal(context, |
| 98 bind(&LocalFileSystem::fileSystemAllowedInternal, this, contextPtr, type
, wrapper), | 96 bind(&LocalFileSystem::fileSystemAllowedInternal, this, context, type, w
rapper), |
| 99 bind(&LocalFileSystem::fileSystemNotAllowedInternal, this, contextPtr, w
rapper)); | 97 bind(&LocalFileSystem::fileSystemNotAllowedInternal, this, context, wrap
per)); |
| 100 } | 98 } |
| 101 | 99 |
| 102 void LocalFileSystem::deleteFileSystem(ExecutionContext* context, FileSystemType
type, PassOwnPtr<AsyncFileSystemCallbacks> callbacks) | 100 void LocalFileSystem::deleteFileSystem(ExecutionContext* context, FileSystemType
type, PassOwnPtr<AsyncFileSystemCallbacks> callbacks) |
| 103 { | 101 { |
| 104 ExecutionContext* contextPtr(context); | |
| 105 ASSERT(context); | 102 ASSERT(context); |
| 106 ASSERT_WITH_SECURITY_IMPLICATION(context->isDocument()); | 103 ASSERT_WITH_SECURITY_IMPLICATION(context->isDocument()); |
| 107 | 104 |
| 108 CallbackWrapper* wrapper = new CallbackWrapper(std::move(callbacks)); | 105 CallbackWrapper* wrapper = new CallbackWrapper(std::move(callbacks)); |
| 109 requestFileSystemAccessInternal(context, | 106 requestFileSystemAccessInternal(context, |
| 110 bind(&LocalFileSystem::deleteFileSystemInternal, this, contextPtr, type,
wrapper), | 107 bind(&LocalFileSystem::deleteFileSystemInternal, this, context, type, wr
apper), |
| 111 bind(&LocalFileSystem::fileSystemNotAllowedInternal, this, contextPtr, w
rapper)); | 108 bind(&LocalFileSystem::fileSystemNotAllowedInternal, this, context, wrap
per)); |
| 112 } | 109 } |
| 113 | 110 |
| 114 WebFileSystem* LocalFileSystem::fileSystem() const | 111 WebFileSystem* LocalFileSystem::getFileSystem() const |
| 115 { | 112 { |
| 116 Platform* platform = Platform::current(); | 113 Platform* platform = Platform::current(); |
| 117 if (!platform) | 114 if (!platform) |
| 118 return nullptr; | 115 return nullptr; |
| 119 return Platform::current()->fileSystem(); | 116 |
| 117 return platform->fileSystem(); |
| 120 } | 118 } |
| 121 | 119 |
| 122 void LocalFileSystem::requestFileSystemAccessInternal(ExecutionContext* context,
std::unique_ptr<SameThreadClosure> allowed, std::unique_ptr<SameThreadClosure>
denied) | 120 void LocalFileSystem::requestFileSystemAccessInternal(ExecutionContext* context,
std::unique_ptr<SameThreadClosure> allowed, std::unique_ptr<SameThreadClosure>
denied) |
| 123 { | 121 { |
| 124 if (!client()) { | 122 if (!client()) { |
| 125 (*denied)(); | 123 (*denied)(); |
| 126 return; | 124 return; |
| 127 } | 125 } |
| 128 if (!context->isDocument()) { | 126 if (!context->isDocument()) { |
| 129 if (!client()->requestFileSystemAccessSync(context)) { | 127 if (!client()->requestFileSystemAccessSync(context)) { |
| (...skipping 18 matching lines...) Expand all Loading... |
| 148 CallbackWrapper* callbacks) | 146 CallbackWrapper* callbacks) |
| 149 { | 147 { |
| 150 context->postTask(BLINK_FROM_HERE, createSameThreadTask(&reportFailure, pass
ed(callbacks->release()), FileError::ABORT_ERR)); | 148 context->postTask(BLINK_FROM_HERE, createSameThreadTask(&reportFailure, pass
ed(callbacks->release()), FileError::ABORT_ERR)); |
| 151 } | 149 } |
| 152 | 150 |
| 153 void LocalFileSystem::fileSystemAllowedInternal( | 151 void LocalFileSystem::fileSystemAllowedInternal( |
| 154 ExecutionContext* context, | 152 ExecutionContext* context, |
| 155 FileSystemType type, | 153 FileSystemType type, |
| 156 CallbackWrapper* callbacks) | 154 CallbackWrapper* callbacks) |
| 157 { | 155 { |
| 158 if (!fileSystem()) { | 156 WebFileSystem* fileSystem = getFileSystem(); |
| 157 if (!fileSystem) { |
| 159 fileSystemNotAvailable(context, callbacks); | 158 fileSystemNotAvailable(context, callbacks); |
| 160 return; | 159 return; |
| 161 } | 160 } |
| 162 | |
| 163 KURL storagePartition = KURL(KURL(), context->getSecurityOrigin()->toString(
)); | 161 KURL storagePartition = KURL(KURL(), context->getSecurityOrigin()->toString(
)); |
| 164 fileSystem()->openFileSystem(storagePartition, static_cast<WebFileSystemType
>(type), callbacks->release()); | 162 fileSystem->openFileSystem(storagePartition, static_cast<WebFileSystemType>(
type), callbacks->release()); |
| 165 } | 163 } |
| 166 | 164 |
| 167 void LocalFileSystem::resolveURLInternal( | 165 void LocalFileSystem::resolveURLInternal( |
| 168 ExecutionContext* context, | 166 ExecutionContext* context, |
| 169 const KURL& fileSystemURL, | 167 const KURL& fileSystemURL, |
| 170 CallbackWrapper* callbacks) | 168 CallbackWrapper* callbacks) |
| 171 { | 169 { |
| 172 if (!fileSystem()) { | 170 WebFileSystem* fileSystem = getFileSystem(); |
| 171 if (!fileSystem) { |
| 173 fileSystemNotAvailable(context, callbacks); | 172 fileSystemNotAvailable(context, callbacks); |
| 174 return; | 173 return; |
| 175 } | 174 } |
| 176 fileSystem()->resolveURL(fileSystemURL, callbacks->release()); | 175 fileSystem->resolveURL(fileSystemURL, callbacks->release()); |
| 177 } | 176 } |
| 178 | 177 |
| 179 void LocalFileSystem::deleteFileSystemInternal( | 178 void LocalFileSystem::deleteFileSystemInternal( |
| 180 ExecutionContext* context, | 179 ExecutionContext* context, |
| 181 FileSystemType type, | 180 FileSystemType type, |
| 182 CallbackWrapper* callbacks) | 181 CallbackWrapper* callbacks) |
| 183 { | 182 { |
| 184 if (!fileSystem()) { | 183 WebFileSystem* fileSystem = getFileSystem(); |
| 184 if (!fileSystem) { |
| 185 fileSystemNotAvailable(context, callbacks); | 185 fileSystemNotAvailable(context, callbacks); |
| 186 return; | 186 return; |
| 187 } | 187 } |
| 188 KURL storagePartition = KURL(KURL(), context->getSecurityOrigin()->toString(
)); | 188 KURL storagePartition = KURL(KURL(), context->getSecurityOrigin()->toString(
)); |
| 189 fileSystem()->deleteFileSystem(storagePartition, static_cast<WebFileSystemTy
pe>(type), callbacks->release()); | 189 fileSystem->deleteFileSystem(storagePartition, static_cast<WebFileSystemType
>(type), callbacks->release()); |
| 190 } | 190 } |
| 191 | 191 |
| 192 LocalFileSystem::LocalFileSystem(PassOwnPtr<FileSystemClient> client) | 192 LocalFileSystem::LocalFileSystem(PassOwnPtr<FileSystemClient> client) |
| 193 : m_client(std::move(client)) | 193 : m_client(std::move(client)) |
| 194 { | 194 { |
| 195 } | 195 } |
| 196 | 196 |
| 197 const char* LocalFileSystem::supplementName() | 197 const char* LocalFileSystem::supplementName() |
| 198 { | 198 { |
| 199 return "LocalFileSystem"; | 199 return "LocalFileSystem"; |
| (...skipping 13 matching lines...) Expand all Loading... |
| 213 { | 213 { |
| 214 frame.provideSupplement(LocalFileSystem::supplementName(), LocalFileSystem::
create(std::move(client))); | 214 frame.provideSupplement(LocalFileSystem::supplementName(), LocalFileSystem::
create(std::move(client))); |
| 215 } | 215 } |
| 216 | 216 |
| 217 void provideLocalFileSystemToWorker(WorkerClients* clients, PassOwnPtr<FileSyste
mClient> client) | 217 void provideLocalFileSystemToWorker(WorkerClients* clients, PassOwnPtr<FileSyste
mClient> client) |
| 218 { | 218 { |
| 219 clients->provideSupplement(LocalFileSystem::supplementName(), LocalFileSyste
m::create(std::move(client))); | 219 clients->provideSupplement(LocalFileSystem::supplementName(), LocalFileSyste
m::create(std::move(client))); |
| 220 } | 220 } |
| 221 | 221 |
| 222 } // namespace blink | 222 } // namespace blink |
| OLD | NEW |