OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/browser/fileapi/plugin_private_file_system_backend.h" | 5 #include "webkit/browser/fileapi/plugin_private_file_system_backend.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 | 8 |
9 #include "base/stl_util.h" | 9 #include "base/stl_util.h" |
10 #include "base/synchronization/lock.h" | 10 #include "base/synchronization/lock.h" |
11 #include "base/task_runner_util.h" | 11 #include "base/task_runner_util.h" |
12 #include "net/base/net_util.h" | 12 #include "net/base/net_util.h" |
13 #include "webkit/browser/blob/file_stream_reader.h" | 13 #include "webkit/browser/blob/file_stream_reader.h" |
14 #include "webkit/browser/fileapi/async_file_util_adapter.h" | 14 #include "webkit/browser/fileapi/async_file_util_adapter.h" |
15 #include "webkit/browser/fileapi/file_stream_writer.h" | 15 #include "webkit/browser/fileapi/file_stream_writer.h" |
16 #include "webkit/browser/fileapi/file_system_context.h" | 16 #include "webkit/browser/fileapi/file_system_context.h" |
17 #include "webkit/browser/fileapi/file_system_operation.h" | 17 #include "webkit/browser/fileapi/file_system_operation.h" |
18 #include "webkit/browser/fileapi/file_system_operation_context.h" | 18 #include "webkit/browser/fileapi/file_system_operation_context.h" |
19 #include "webkit/browser/fileapi/file_system_options.h" | 19 #include "webkit/browser/fileapi/file_system_options.h" |
20 #include "webkit/browser/fileapi/isolated_context.h" | 20 #include "webkit/browser/fileapi/isolated_context.h" |
21 #include "webkit/browser/fileapi/obfuscated_file_util.h" | 21 #include "webkit/browser/fileapi/obfuscated_file_util.h" |
22 #include "webkit/browser/fileapi/quota/quota_reservation.h" | 22 #include "webkit/browser/fileapi/quota/quota_reservation.h" |
23 #include "webkit/common/fileapi/file_system_util.h" | 23 #include "webkit/common/fileapi/file_system_util.h" |
24 | 24 |
25 namespace fileapi { | 25 namespace storage { |
26 | 26 |
27 class PluginPrivateFileSystemBackend::FileSystemIDToPluginMap { | 27 class PluginPrivateFileSystemBackend::FileSystemIDToPluginMap { |
28 public: | 28 public: |
29 explicit FileSystemIDToPluginMap(base::SequencedTaskRunner* task_runner) | 29 explicit FileSystemIDToPluginMap(base::SequencedTaskRunner* task_runner) |
30 : task_runner_(task_runner) {} | 30 : task_runner_(task_runner) {} |
31 ~FileSystemIDToPluginMap() {} | 31 ~FileSystemIDToPluginMap() {} |
32 | 32 |
33 std::string GetPluginIDForURL(const FileSystemURL& url) { | 33 std::string GetPluginIDForURL(const FileSystemURL& url) { |
34 DCHECK(task_runner_->RunsTasksOnCurrentThread()); | 34 DCHECK(task_runner_->RunsTasksOnCurrentThread()); |
35 Map::iterator found = map_.find(url.filesystem_id()); | 35 Map::iterator found = map_.find(url.filesystem_id()); |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
80 if (error == base::File::FILE_OK) | 80 if (error == base::File::FILE_OK) |
81 plugin_map->RegisterFileSystem(filesystem_id, plugin_id); | 81 plugin_map->RegisterFileSystem(filesystem_id, plugin_id); |
82 return error; | 82 return error; |
83 } | 83 } |
84 | 84 |
85 } // namespace | 85 } // namespace |
86 | 86 |
87 PluginPrivateFileSystemBackend::PluginPrivateFileSystemBackend( | 87 PluginPrivateFileSystemBackend::PluginPrivateFileSystemBackend( |
88 base::SequencedTaskRunner* file_task_runner, | 88 base::SequencedTaskRunner* file_task_runner, |
89 const base::FilePath& profile_path, | 89 const base::FilePath& profile_path, |
90 quota::SpecialStoragePolicy* special_storage_policy, | 90 storage::SpecialStoragePolicy* special_storage_policy, |
91 const FileSystemOptions& file_system_options) | 91 const FileSystemOptions& file_system_options) |
92 : file_task_runner_(file_task_runner), | 92 : file_task_runner_(file_task_runner), |
93 file_system_options_(file_system_options), | 93 file_system_options_(file_system_options), |
94 base_path_(profile_path.Append( | 94 base_path_(profile_path.Append(kFileSystemDirectory) |
95 kFileSystemDirectory).Append(kPluginPrivateDirectory)), | 95 .Append(kPluginPrivateDirectory)), |
96 plugin_map_(new FileSystemIDToPluginMap(file_task_runner)), | 96 plugin_map_(new FileSystemIDToPluginMap(file_task_runner)), |
97 weak_factory_(this) { | 97 weak_factory_(this) { |
98 file_util_.reset( | 98 file_util_.reset( |
99 new AsyncFileUtilAdapter(new ObfuscatedFileUtil( | 99 new AsyncFileUtilAdapter(new ObfuscatedFileUtil( |
100 special_storage_policy, | 100 special_storage_policy, |
101 base_path_, file_system_options.env_override(), | 101 base_path_, file_system_options.env_override(), |
102 file_task_runner, | 102 file_task_runner, |
103 base::Bind(&FileSystemIDToPluginMap::GetPluginIDForURL, | 103 base::Bind(&FileSystemIDToPluginMap::GetPluginIDForURL, |
104 base::Owned(plugin_map_)), | 104 base::Owned(plugin_map_)), |
105 std::set<std::string>(), | 105 std::set<std::string>(), |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
172 FileSystemOperation* PluginPrivateFileSystemBackend::CreateFileSystemOperation( | 172 FileSystemOperation* PluginPrivateFileSystemBackend::CreateFileSystemOperation( |
173 const FileSystemURL& url, | 173 const FileSystemURL& url, |
174 FileSystemContext* context, | 174 FileSystemContext* context, |
175 base::File::Error* error_code) const { | 175 base::File::Error* error_code) const { |
176 scoped_ptr<FileSystemOperationContext> operation_context( | 176 scoped_ptr<FileSystemOperationContext> operation_context( |
177 new FileSystemOperationContext(context)); | 177 new FileSystemOperationContext(context)); |
178 return FileSystemOperation::Create(url, context, operation_context.Pass()); | 178 return FileSystemOperation::Create(url, context, operation_context.Pass()); |
179 } | 179 } |
180 | 180 |
181 bool PluginPrivateFileSystemBackend::SupportsStreaming( | 181 bool PluginPrivateFileSystemBackend::SupportsStreaming( |
182 const fileapi::FileSystemURL& url) const { | 182 const storage::FileSystemURL& url) const { |
183 return false; | 183 return false; |
184 } | 184 } |
185 | 185 |
186 bool PluginPrivateFileSystemBackend::HasInplaceCopyImplementation( | 186 bool PluginPrivateFileSystemBackend::HasInplaceCopyImplementation( |
187 fileapi::FileSystemType type) const { | 187 storage::FileSystemType type) const { |
188 return false; | 188 return false; |
189 } | 189 } |
190 | 190 |
191 scoped_ptr<webkit_blob::FileStreamReader> | 191 scoped_ptr<storage::FileStreamReader> |
192 PluginPrivateFileSystemBackend::CreateFileStreamReader( | 192 PluginPrivateFileSystemBackend::CreateFileStreamReader( |
193 const FileSystemURL& url, | 193 const FileSystemURL& url, |
194 int64 offset, | 194 int64 offset, |
195 const base::Time& expected_modification_time, | 195 const base::Time& expected_modification_time, |
196 FileSystemContext* context) const { | 196 FileSystemContext* context) const { |
197 return scoped_ptr<webkit_blob::FileStreamReader>(); | 197 return scoped_ptr<storage::FileStreamReader>(); |
198 } | 198 } |
199 | 199 |
200 scoped_ptr<FileStreamWriter> | 200 scoped_ptr<FileStreamWriter> |
201 PluginPrivateFileSystemBackend::CreateFileStreamWriter( | 201 PluginPrivateFileSystemBackend::CreateFileStreamWriter( |
202 const FileSystemURL& url, | 202 const FileSystemURL& url, |
203 int64 offset, | 203 int64 offset, |
204 FileSystemContext* context) const { | 204 FileSystemContext* context) const { |
205 return scoped_ptr<FileStreamWriter>(); | 205 return scoped_ptr<FileStreamWriter>(); |
206 } | 206 } |
207 | 207 |
208 FileSystemQuotaUtil* PluginPrivateFileSystemBackend::GetQuotaUtil() { | 208 FileSystemQuotaUtil* PluginPrivateFileSystemBackend::GetQuotaUtil() { |
209 return this; | 209 return this; |
210 } | 210 } |
211 | 211 |
212 base::File::Error | 212 base::File::Error |
213 PluginPrivateFileSystemBackend::DeleteOriginDataOnFileTaskRunner( | 213 PluginPrivateFileSystemBackend::DeleteOriginDataOnFileTaskRunner( |
214 FileSystemContext* context, | 214 FileSystemContext* context, |
215 quota::QuotaManagerProxy* proxy, | 215 storage::QuotaManagerProxy* proxy, |
216 const GURL& origin_url, | 216 const GURL& origin_url, |
217 FileSystemType type) { | 217 FileSystemType type) { |
218 if (!CanHandleType(type)) | 218 if (!CanHandleType(type)) |
219 return base::File::FILE_ERROR_SECURITY; | 219 return base::File::FILE_ERROR_SECURITY; |
220 bool result = obfuscated_file_util()->DeleteDirectoryForOriginAndType( | 220 bool result = obfuscated_file_util()->DeleteDirectoryForOriginAndType( |
221 origin_url, std::string()); | 221 origin_url, std::string()); |
222 if (result) | 222 if (result) |
223 return base::File::FILE_OK; | 223 return base::File::FILE_OK; |
224 return base::File::FILE_ERROR_FAILED; | 224 return base::File::FILE_ERROR_FAILED; |
225 } | 225 } |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
296 const AccessObserverList* PluginPrivateFileSystemBackend::GetAccessObservers( | 296 const AccessObserverList* PluginPrivateFileSystemBackend::GetAccessObservers( |
297 FileSystemType type) const { | 297 FileSystemType type) const { |
298 return NULL; | 298 return NULL; |
299 } | 299 } |
300 | 300 |
301 ObfuscatedFileUtil* PluginPrivateFileSystemBackend::obfuscated_file_util() { | 301 ObfuscatedFileUtil* PluginPrivateFileSystemBackend::obfuscated_file_util() { |
302 return static_cast<ObfuscatedFileUtil*>( | 302 return static_cast<ObfuscatedFileUtil*>( |
303 static_cast<AsyncFileUtilAdapter*>(file_util_.get())->sync_file_util()); | 303 static_cast<AsyncFileUtilAdapter*>(file_util_.get())->sync_file_util()); |
304 } | 304 } |
305 | 305 |
306 } // namespace fileapi | 306 } // namespace storage |
OLD | NEW |