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

Side by Side Diff: storage/browser/fileapi/plugin_private_file_system_backend.cc

Issue 442383002: Move storage-related files from webkit/ to new top-level directory storage/ (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 6 years, 4 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 // 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 "storage/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 "storage/browser/blob/file_stream_reader.h"
14 #include "webkit/browser/fileapi/async_file_util_adapter.h" 14 #include "storage/browser/fileapi/async_file_util_adapter.h"
15 #include "webkit/browser/fileapi/file_stream_writer.h" 15 #include "storage/browser/fileapi/file_stream_writer.h"
16 #include "webkit/browser/fileapi/file_system_context.h" 16 #include "storage/browser/fileapi/file_system_context.h"
17 #include "webkit/browser/fileapi/file_system_operation.h" 17 #include "storage/browser/fileapi/file_system_operation.h"
18 #include "webkit/browser/fileapi/file_system_operation_context.h" 18 #include "storage/browser/fileapi/file_system_operation_context.h"
19 #include "webkit/browser/fileapi/file_system_options.h" 19 #include "storage/browser/fileapi/file_system_options.h"
20 #include "webkit/browser/fileapi/isolated_context.h" 20 #include "storage/browser/fileapi/isolated_context.h"
21 #include "webkit/browser/fileapi/obfuscated_file_util.h" 21 #include "storage/browser/fileapi/obfuscated_file_util.h"
22 #include "webkit/browser/fileapi/quota/quota_reservation.h" 22 #include "storage/browser/fileapi/quota/quota_reservation.h"
23 #include "webkit/common/fileapi/file_system_util.h" 23 #include "storage/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 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
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 quota::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(new AsyncFileUtilAdapter(new ObfuscatedFileUtil(
99 new AsyncFileUtilAdapter(new ObfuscatedFileUtil( 99 special_storage_policy,
100 special_storage_policy, 100 base_path_,
101 base_path_, file_system_options.env_override(), 101 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>(),
106 NULL))); 106 NULL)));
107 } 107 }
108 108
109 PluginPrivateFileSystemBackend::~PluginPrivateFileSystemBackend() { 109 PluginPrivateFileSystemBackend::~PluginPrivateFileSystemBackend() {
110 if (!file_task_runner_->RunsTasksOnCurrentThread()) { 110 if (!file_task_runner_->RunsTasksOnCurrentThread()) {
111 AsyncFileUtil* file_util = file_util_.release(); 111 AsyncFileUtil* file_util = file_util_.release();
112 if (!file_task_runner_->DeleteSoon(FROM_HERE, file_util)) 112 if (!file_task_runner_->DeleteSoon(FROM_HERE, file_util))
113 delete file_util; 113 delete file_util;
114 } 114 }
115 } 115 }
116 116
117 void PluginPrivateFileSystemBackend::OpenPrivateFileSystem( 117 void PluginPrivateFileSystemBackend::OpenPrivateFileSystem(
118 const GURL& origin_url, 118 const GURL& origin_url,
119 FileSystemType type, 119 FileSystemType type,
120 const std::string& filesystem_id, 120 const std::string& filesystem_id,
121 const std::string& plugin_id, 121 const std::string& plugin_id,
122 OpenFileSystemMode mode, 122 OpenFileSystemMode mode,
123 const StatusCallback& callback) { 123 const StatusCallback& callback) {
124 if (!CanHandleType(type) || file_system_options_.is_incognito()) { 124 if (!CanHandleType(type) || file_system_options_.is_incognito()) {
125 base::MessageLoopProxy::current()->PostTask( 125 base::MessageLoopProxy::current()->PostTask(
126 FROM_HERE, base::Bind(callback, base::File::FILE_ERROR_SECURITY)); 126 FROM_HERE, base::Bind(callback, base::File::FILE_ERROR_SECURITY));
127 return; 127 return;
128 } 128 }
129 129
130 PostTaskAndReplyWithResult( 130 PostTaskAndReplyWithResult(file_task_runner_.get(),
131 file_task_runner_.get(), 131 FROM_HERE,
132 FROM_HERE, 132 base::Bind(&OpenFileSystemOnFileTaskRunner,
133 base::Bind(&OpenFileSystemOnFileTaskRunner, 133 obfuscated_file_util(),
134 obfuscated_file_util(), plugin_map_, 134 plugin_map_,
135 origin_url, filesystem_id, plugin_id, mode), 135 origin_url,
136 callback); 136 filesystem_id,
137 plugin_id,
138 mode),
139 callback);
137 } 140 }
138 141
139 bool PluginPrivateFileSystemBackend::CanHandleType(FileSystemType type) const { 142 bool PluginPrivateFileSystemBackend::CanHandleType(FileSystemType type) const {
140 return type == kFileSystemTypePluginPrivate; 143 return type == kFileSystemTypePluginPrivate;
141 } 144 }
142 145
143 void PluginPrivateFileSystemBackend::Initialize(FileSystemContext* context) { 146 void PluginPrivateFileSystemBackend::Initialize(FileSystemContext* context) {
144 } 147 }
145 148
146 void PluginPrivateFileSystemBackend::ResolveURL( 149 void PluginPrivateFileSystemBackend::ResolveURL(
147 const FileSystemURL& url, 150 const FileSystemURL& url,
148 OpenFileSystemMode mode, 151 OpenFileSystemMode mode,
149 const OpenFileSystemCallback& callback) { 152 const OpenFileSystemCallback& callback) {
150 // We never allow opening a new plugin-private filesystem via usual 153 // We never allow opening a new plugin-private filesystem via usual
151 // ResolveURL. 154 // ResolveURL.
152 base::MessageLoopProxy::current()->PostTask( 155 base::MessageLoopProxy::current()->PostTask(
153 FROM_HERE, 156 FROM_HERE,
154 base::Bind(callback, GURL(), std::string(), 157 base::Bind(
155 base::File::FILE_ERROR_SECURITY)); 158 callback, GURL(), std::string(), base::File::FILE_ERROR_SECURITY));
156 } 159 }
157 160
158 AsyncFileUtil* 161 AsyncFileUtil* PluginPrivateFileSystemBackend::GetAsyncFileUtil(
159 PluginPrivateFileSystemBackend::GetAsyncFileUtil(FileSystemType type) { 162 FileSystemType type) {
160 return file_util_.get(); 163 return file_util_.get();
161 } 164 }
162 165
163 CopyOrMoveFileValidatorFactory* 166 CopyOrMoveFileValidatorFactory*
164 PluginPrivateFileSystemBackend::GetCopyOrMoveFileValidatorFactory( 167 PluginPrivateFileSystemBackend::GetCopyOrMoveFileValidatorFactory(
165 FileSystemType type, 168 FileSystemType type,
166 base::File::Error* error_code) { 169 base::File::Error* error_code) {
167 DCHECK(error_code); 170 DCHECK(error_code);
168 *error_code = base::File::FILE_OK; 171 *error_code = base::File::FILE_OK;
169 return NULL; 172 return NULL;
170 } 173 }
171 174
172 FileSystemOperation* PluginPrivateFileSystemBackend::CreateFileSystemOperation( 175 FileSystemOperation* PluginPrivateFileSystemBackend::CreateFileSystemOperation(
173 const FileSystemURL& url, 176 const FileSystemURL& url,
174 FileSystemContext* context, 177 FileSystemContext* context,
175 base::File::Error* error_code) const { 178 base::File::Error* error_code) const {
176 scoped_ptr<FileSystemOperationContext> operation_context( 179 scoped_ptr<FileSystemOperationContext> operation_context(
177 new FileSystemOperationContext(context)); 180 new FileSystemOperationContext(context));
178 return FileSystemOperation::Create(url, context, operation_context.Pass()); 181 return FileSystemOperation::Create(url, context, operation_context.Pass());
179 } 182 }
180 183
181 bool PluginPrivateFileSystemBackend::SupportsStreaming( 184 bool PluginPrivateFileSystemBackend::SupportsStreaming(
182 const fileapi::FileSystemURL& url) const { 185 const storage::FileSystemURL& url) const {
183 return false; 186 return false;
184 } 187 }
185 188
186 scoped_ptr<webkit_blob::FileStreamReader> 189 scoped_ptr<storage::FileStreamReader>
187 PluginPrivateFileSystemBackend::CreateFileStreamReader( 190 PluginPrivateFileSystemBackend::CreateFileStreamReader(
188 const FileSystemURL& url, 191 const FileSystemURL& url,
189 int64 offset, 192 int64 offset,
190 const base::Time& expected_modification_time, 193 const base::Time& expected_modification_time,
191 FileSystemContext* context) const { 194 FileSystemContext* context) const {
192 return scoped_ptr<webkit_blob::FileStreamReader>(); 195 return scoped_ptr<storage::FileStreamReader>();
193 } 196 }
194 197
195 scoped_ptr<FileStreamWriter> 198 scoped_ptr<FileStreamWriter>
196 PluginPrivateFileSystemBackend::CreateFileStreamWriter( 199 PluginPrivateFileSystemBackend::CreateFileStreamWriter(
197 const FileSystemURL& url, 200 const FileSystemURL& url,
198 int64 offset, 201 int64 offset,
199 FileSystemContext* context) const { 202 FileSystemContext* context) const {
200 return scoped_ptr<FileStreamWriter>(); 203 return scoped_ptr<FileStreamWriter>();
201 } 204 }
202 205
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
259 const GURL& origin_url, 262 const GURL& origin_url,
260 FileSystemType type) { 263 FileSystemType type) {
261 // We don't track usage on this filesystem. 264 // We don't track usage on this filesystem.
262 NOTREACHED(); 265 NOTREACHED();
263 return scoped_refptr<QuotaReservation>(); 266 return scoped_refptr<QuotaReservation>();
264 } 267 }
265 268
266 void PluginPrivateFileSystemBackend::AddFileUpdateObserver( 269 void PluginPrivateFileSystemBackend::AddFileUpdateObserver(
267 FileSystemType type, 270 FileSystemType type,
268 FileUpdateObserver* observer, 271 FileUpdateObserver* observer,
269 base::SequencedTaskRunner* task_runner) {} 272 base::SequencedTaskRunner* task_runner) {
273 }
270 274
271 void PluginPrivateFileSystemBackend::AddFileChangeObserver( 275 void PluginPrivateFileSystemBackend::AddFileChangeObserver(
272 FileSystemType type, 276 FileSystemType type,
273 FileChangeObserver* observer, 277 FileChangeObserver* observer,
274 base::SequencedTaskRunner* task_runner) {} 278 base::SequencedTaskRunner* task_runner) {
279 }
275 280
276 void PluginPrivateFileSystemBackend::AddFileAccessObserver( 281 void PluginPrivateFileSystemBackend::AddFileAccessObserver(
277 FileSystemType type, 282 FileSystemType type,
278 FileAccessObserver* observer, 283 FileAccessObserver* observer,
279 base::SequencedTaskRunner* task_runner) {} 284 base::SequencedTaskRunner* task_runner) {
285 }
280 286
281 const UpdateObserverList* PluginPrivateFileSystemBackend::GetUpdateObservers( 287 const UpdateObserverList* PluginPrivateFileSystemBackend::GetUpdateObservers(
282 FileSystemType type) const { 288 FileSystemType type) const {
283 return NULL; 289 return NULL;
284 } 290 }
285 291
286 const ChangeObserverList* PluginPrivateFileSystemBackend::GetChangeObservers( 292 const ChangeObserverList* PluginPrivateFileSystemBackend::GetChangeObservers(
287 FileSystemType type) const { 293 FileSystemType type) const {
288 return NULL; 294 return NULL;
289 } 295 }
290 296
291 const AccessObserverList* PluginPrivateFileSystemBackend::GetAccessObservers( 297 const AccessObserverList* PluginPrivateFileSystemBackend::GetAccessObservers(
292 FileSystemType type) const { 298 FileSystemType type) const {
293 return NULL; 299 return NULL;
294 } 300 }
295 301
296 ObfuscatedFileUtil* PluginPrivateFileSystemBackend::obfuscated_file_util() { 302 ObfuscatedFileUtil* PluginPrivateFileSystemBackend::obfuscated_file_util() {
297 return static_cast<ObfuscatedFileUtil*>( 303 return static_cast<ObfuscatedFileUtil*>(
298 static_cast<AsyncFileUtilAdapter*>(file_util_.get())->sync_file_util()); 304 static_cast<AsyncFileUtilAdapter*>(file_util_.get())->sync_file_util());
299 } 305 }
300 306
301 } // namespace fileapi 307 } // namespace storage
OLDNEW
« no previous file with comments | « storage/browser/fileapi/plugin_private_file_system_backend.h ('k') | storage/browser/fileapi/quota/open_file_handle.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698