| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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/async_file_util_adapter.h" | 5 #include "webkit/browser/fileapi/async_file_util_adapter.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/sequenced_task_runner.h" | 8 #include "base/sequenced_task_runner.h" |
| 9 #include "base/task_runner_util.h" | 9 #include "base/task_runner_util.h" |
| 10 #include "webkit/browser/fileapi/file_system_context.h" | 10 #include "webkit/browser/fileapi/file_system_context.h" |
| (...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 135 AsyncFileUtilAdapter::AsyncFileUtilAdapter( | 135 AsyncFileUtilAdapter::AsyncFileUtilAdapter( |
| 136 FileSystemFileUtil* sync_file_util) | 136 FileSystemFileUtil* sync_file_util) |
| 137 : sync_file_util_(sync_file_util) { | 137 : sync_file_util_(sync_file_util) { |
| 138 DCHECK(sync_file_util_.get()); | 138 DCHECK(sync_file_util_.get()); |
| 139 } | 139 } |
| 140 | 140 |
| 141 AsyncFileUtilAdapter::~AsyncFileUtilAdapter() { | 141 AsyncFileUtilAdapter::~AsyncFileUtilAdapter() { |
| 142 } | 142 } |
| 143 | 143 |
| 144 bool AsyncFileUtilAdapter::CreateOrOpen( | 144 bool AsyncFileUtilAdapter::CreateOrOpen( |
| 145 FileSystemOperationContext* context, | 145 scoped_ptr<FileSystemOperationContext> context, |
| 146 const FileSystemURL& url, | 146 const FileSystemURL& url, |
| 147 int file_flags, | 147 int file_flags, |
| 148 const CreateOrOpenCallback& callback) { | 148 const CreateOrOpenCallback& callback) { |
| 149 FileSystemOperationContext* context_ptr = context.release(); |
| 149 return base::FileUtilProxy::RelayCreateOrOpen( | 150 return base::FileUtilProxy::RelayCreateOrOpen( |
| 150 context->task_runner(), | 151 context_ptr->task_runner(), |
| 151 Bind(&FileSystemFileUtil::CreateOrOpen, Unretained(sync_file_util_.get()), | 152 Bind(&FileSystemFileUtil::CreateOrOpen, Unretained(sync_file_util_.get()), |
| 152 context, url, file_flags), | 153 context_ptr, url, file_flags), |
| 153 Bind(&FileSystemFileUtil::Close, Unretained(sync_file_util_.get()), | 154 Bind(&FileSystemFileUtil::Close, Unretained(sync_file_util_.get()), |
| 154 context), | 155 base::Owned(context_ptr)), |
| 155 callback); | 156 callback); |
| 156 } | 157 } |
| 157 | 158 |
| 158 bool AsyncFileUtilAdapter::EnsureFileExists( | 159 bool AsyncFileUtilAdapter::EnsureFileExists( |
| 159 FileSystemOperationContext* context, | 160 scoped_ptr<FileSystemOperationContext> context, |
| 160 const FileSystemURL& url, | 161 const FileSystemURL& url, |
| 161 const EnsureFileExistsCallback& callback) { | 162 const EnsureFileExistsCallback& callback) { |
| 162 EnsureFileExistsHelper* helper = new EnsureFileExistsHelper; | 163 EnsureFileExistsHelper* helper = new EnsureFileExistsHelper; |
| 163 return context->task_runner()->PostTaskAndReply( | 164 FileSystemOperationContext* context_ptr = context.release(); |
| 165 return context_ptr->task_runner()->PostTaskAndReply( |
| 164 FROM_HERE, | 166 FROM_HERE, |
| 165 Bind(&EnsureFileExistsHelper::RunWork, Unretained(helper), | 167 Bind(&EnsureFileExistsHelper::RunWork, Unretained(helper), |
| 166 sync_file_util_.get(), context, url), | 168 sync_file_util_.get(), base::Owned(context_ptr), url), |
| 167 Bind(&EnsureFileExistsHelper::Reply, Owned(helper), callback)); | 169 Bind(&EnsureFileExistsHelper::Reply, Owned(helper), callback)); |
| 168 } | 170 } |
| 169 | 171 |
| 170 bool AsyncFileUtilAdapter::CreateDirectory( | 172 bool AsyncFileUtilAdapter::CreateDirectory( |
| 171 FileSystemOperationContext* context, | 173 scoped_ptr<FileSystemOperationContext> context, |
| 172 const FileSystemURL& url, | 174 const FileSystemURL& url, |
| 173 bool exclusive, | 175 bool exclusive, |
| 174 bool recursive, | 176 bool recursive, |
| 175 const StatusCallback& callback) { | 177 const StatusCallback& callback) { |
| 178 FileSystemOperationContext* context_ptr = context.release(); |
| 176 return base::PostTaskAndReplyWithResult( | 179 return base::PostTaskAndReplyWithResult( |
| 177 context->task_runner(), FROM_HERE, | 180 context_ptr->task_runner(), FROM_HERE, |
| 178 Bind(&FileSystemFileUtil::CreateDirectory, | 181 Bind(&FileSystemFileUtil::CreateDirectory, |
| 179 Unretained(sync_file_util_.get()), | 182 Unretained(sync_file_util_.get()), |
| 180 context, url, exclusive, recursive), | 183 base::Owned(context_ptr), url, exclusive, recursive), |
| 181 callback); | 184 callback); |
| 182 } | 185 } |
| 183 | 186 |
| 184 bool AsyncFileUtilAdapter::GetFileInfo( | 187 bool AsyncFileUtilAdapter::GetFileInfo( |
| 185 FileSystemOperationContext* context, | 188 scoped_ptr<FileSystemOperationContext> context, |
| 186 const FileSystemURL& url, | 189 const FileSystemURL& url, |
| 187 const GetFileInfoCallback& callback) { | 190 const GetFileInfoCallback& callback) { |
| 191 FileSystemOperationContext* context_ptr = context.release(); |
| 188 GetFileInfoHelper* helper = new GetFileInfoHelper; | 192 GetFileInfoHelper* helper = new GetFileInfoHelper; |
| 189 return context->task_runner()->PostTaskAndReply( | 193 return context_ptr->task_runner()->PostTaskAndReply( |
| 190 FROM_HERE, | 194 FROM_HERE, |
| 191 Bind(&GetFileInfoHelper::GetFileInfo, Unretained(helper), | 195 Bind(&GetFileInfoHelper::GetFileInfo, Unretained(helper), |
| 192 sync_file_util_.get(), context, url), | 196 sync_file_util_.get(), base::Owned(context_ptr), url), |
| 193 Bind(&GetFileInfoHelper::ReplyFileInfo, Owned(helper), callback)); | 197 Bind(&GetFileInfoHelper::ReplyFileInfo, Owned(helper), callback)); |
| 194 } | 198 } |
| 195 | 199 |
| 196 bool AsyncFileUtilAdapter::ReadDirectory( | 200 bool AsyncFileUtilAdapter::ReadDirectory( |
| 197 FileSystemOperationContext* context, | 201 scoped_ptr<FileSystemOperationContext> context, |
| 198 const FileSystemURL& url, | 202 const FileSystemURL& url, |
| 199 const ReadDirectoryCallback& callback) { | 203 const ReadDirectoryCallback& callback) { |
| 204 FileSystemOperationContext* context_ptr = context.release(); |
| 200 ReadDirectoryHelper* helper = new ReadDirectoryHelper; | 205 ReadDirectoryHelper* helper = new ReadDirectoryHelper; |
| 201 return context->task_runner()->PostTaskAndReply( | 206 return context_ptr->task_runner()->PostTaskAndReply( |
| 202 FROM_HERE, | 207 FROM_HERE, |
| 203 Bind(&ReadDirectoryHelper::RunWork, Unretained(helper), | 208 Bind(&ReadDirectoryHelper::RunWork, Unretained(helper), |
| 204 sync_file_util_.get(), context, url), | 209 sync_file_util_.get(), base::Owned(context_ptr), url), |
| 205 Bind(&ReadDirectoryHelper::Reply, Owned(helper), callback)); | 210 Bind(&ReadDirectoryHelper::Reply, Owned(helper), callback)); |
| 206 } | 211 } |
| 207 | 212 |
| 208 bool AsyncFileUtilAdapter::Touch( | 213 bool AsyncFileUtilAdapter::Touch( |
| 209 FileSystemOperationContext* context, | 214 scoped_ptr<FileSystemOperationContext> context, |
| 210 const FileSystemURL& url, | 215 const FileSystemURL& url, |
| 211 const base::Time& last_access_time, | 216 const base::Time& last_access_time, |
| 212 const base::Time& last_modified_time, | 217 const base::Time& last_modified_time, |
| 213 const StatusCallback& callback) { | 218 const StatusCallback& callback) { |
| 219 FileSystemOperationContext* context_ptr = context.release(); |
| 214 return base::PostTaskAndReplyWithResult( | 220 return base::PostTaskAndReplyWithResult( |
| 215 context->task_runner(), FROM_HERE, | 221 context_ptr->task_runner(), FROM_HERE, |
| 216 Bind(&FileSystemFileUtil::Touch, Unretained(sync_file_util_.get()), | 222 Bind(&FileSystemFileUtil::Touch, Unretained(sync_file_util_.get()), |
| 217 context, url, last_access_time, last_modified_time), | 223 base::Owned(context_ptr), url, |
| 224 last_access_time, last_modified_time), |
| 218 callback); | 225 callback); |
| 219 } | 226 } |
| 220 | 227 |
| 221 bool AsyncFileUtilAdapter::Truncate( | 228 bool AsyncFileUtilAdapter::Truncate( |
| 222 FileSystemOperationContext* context, | 229 scoped_ptr<FileSystemOperationContext> context, |
| 223 const FileSystemURL& url, | 230 const FileSystemURL& url, |
| 224 int64 length, | 231 int64 length, |
| 225 const StatusCallback& callback) { | 232 const StatusCallback& callback) { |
| 233 FileSystemOperationContext* context_ptr = context.release(); |
| 226 return base::PostTaskAndReplyWithResult( | 234 return base::PostTaskAndReplyWithResult( |
| 227 context->task_runner(), FROM_HERE, | 235 context_ptr->task_runner(), FROM_HERE, |
| 228 Bind(&FileSystemFileUtil::Truncate, Unretained(sync_file_util_.get()), | 236 Bind(&FileSystemFileUtil::Truncate, Unretained(sync_file_util_.get()), |
| 229 context, url, length), | 237 base::Owned(context_ptr), url, length), |
| 230 callback); | 238 callback); |
| 231 } | 239 } |
| 232 | 240 |
| 233 bool AsyncFileUtilAdapter::CopyFileLocal( | 241 bool AsyncFileUtilAdapter::CopyFileLocal( |
| 234 FileSystemOperationContext* context, | 242 scoped_ptr<FileSystemOperationContext> context, |
| 235 const FileSystemURL& src_url, | 243 const FileSystemURL& src_url, |
| 236 const FileSystemURL& dest_url, | 244 const FileSystemURL& dest_url, |
| 237 const StatusCallback& callback) { | 245 const StatusCallback& callback) { |
| 246 FileSystemOperationContext* context_ptr = context.release(); |
| 238 return base::PostTaskAndReplyWithResult( | 247 return base::PostTaskAndReplyWithResult( |
| 239 context->task_runner(), FROM_HERE, | 248 context_ptr->task_runner(), FROM_HERE, |
| 240 Bind(&FileSystemFileUtil::CopyOrMoveFile, | 249 Bind(&FileSystemFileUtil::CopyOrMoveFile, |
| 241 Unretained(sync_file_util_.get()), | 250 Unretained(sync_file_util_.get()), |
| 242 context, src_url, dest_url, true /* copy */), | 251 base::Owned(context_ptr), src_url, dest_url, true /* copy */), |
| 243 callback); | 252 callback); |
| 244 } | 253 } |
| 245 | 254 |
| 246 bool AsyncFileUtilAdapter::MoveFileLocal( | 255 bool AsyncFileUtilAdapter::MoveFileLocal( |
| 247 FileSystemOperationContext* context, | 256 scoped_ptr<FileSystemOperationContext> context, |
| 248 const FileSystemURL& src_url, | 257 const FileSystemURL& src_url, |
| 249 const FileSystemURL& dest_url, | 258 const FileSystemURL& dest_url, |
| 250 const StatusCallback& callback) { | 259 const StatusCallback& callback) { |
| 260 FileSystemOperationContext* context_ptr = context.release(); |
| 251 return base::PostTaskAndReplyWithResult( | 261 return base::PostTaskAndReplyWithResult( |
| 252 context->task_runner(), FROM_HERE, | 262 context_ptr->task_runner(), FROM_HERE, |
| 253 Bind(&FileSystemFileUtil::CopyOrMoveFile, | 263 Bind(&FileSystemFileUtil::CopyOrMoveFile, |
| 254 Unretained(sync_file_util_.get()), | 264 Unretained(sync_file_util_.get()), |
| 255 context, src_url, dest_url, false /* copy */), | 265 base::Owned(context_ptr), src_url, dest_url, false /* copy */), |
| 256 callback); | 266 callback); |
| 257 } | 267 } |
| 258 | 268 |
| 259 bool AsyncFileUtilAdapter::CopyInForeignFile( | 269 bool AsyncFileUtilAdapter::CopyInForeignFile( |
| 260 FileSystemOperationContext* context, | 270 scoped_ptr<FileSystemOperationContext> context, |
| 261 const base::FilePath& src_file_path, | 271 const base::FilePath& src_file_path, |
| 262 const FileSystemURL& dest_url, | 272 const FileSystemURL& dest_url, |
| 263 const StatusCallback& callback) { | 273 const StatusCallback& callback) { |
| 274 FileSystemOperationContext* context_ptr = context.release(); |
| 264 return base::PostTaskAndReplyWithResult( | 275 return base::PostTaskAndReplyWithResult( |
| 265 context->task_runner(), FROM_HERE, | 276 context_ptr->task_runner(), FROM_HERE, |
| 266 Bind(&FileSystemFileUtil::CopyInForeignFile, | 277 Bind(&FileSystemFileUtil::CopyInForeignFile, |
| 267 Unretained(sync_file_util_.get()), | 278 Unretained(sync_file_util_.get()), |
| 268 context, src_file_path, dest_url), | 279 base::Owned(context_ptr), src_file_path, dest_url), |
| 269 callback); | 280 callback); |
| 270 } | 281 } |
| 271 | 282 |
| 272 bool AsyncFileUtilAdapter::DeleteFile( | 283 bool AsyncFileUtilAdapter::DeleteFile( |
| 273 FileSystemOperationContext* context, | 284 scoped_ptr<FileSystemOperationContext> context, |
| 274 const FileSystemURL& url, | 285 const FileSystemURL& url, |
| 275 const StatusCallback& callback) { | 286 const StatusCallback& callback) { |
| 287 FileSystemOperationContext* context_ptr = context.release(); |
| 276 return base::PostTaskAndReplyWithResult( | 288 return base::PostTaskAndReplyWithResult( |
| 277 context->task_runner(), FROM_HERE, | 289 context_ptr->task_runner(), FROM_HERE, |
| 278 Bind(&FileSystemFileUtil::DeleteFile, | 290 Bind(&FileSystemFileUtil::DeleteFile, |
| 279 Unretained(sync_file_util_.get()), context, url), | 291 Unretained(sync_file_util_.get()), |
| 292 base::Owned(context_ptr), url), |
| 280 callback); | 293 callback); |
| 281 } | 294 } |
| 282 | 295 |
| 283 bool AsyncFileUtilAdapter::DeleteDirectory( | 296 bool AsyncFileUtilAdapter::DeleteDirectory( |
| 284 FileSystemOperationContext* context, | 297 scoped_ptr<FileSystemOperationContext> context, |
| 285 const FileSystemURL& url, | 298 const FileSystemURL& url, |
| 286 const StatusCallback& callback) { | 299 const StatusCallback& callback) { |
| 300 FileSystemOperationContext* context_ptr = context.release(); |
| 287 return base::PostTaskAndReplyWithResult( | 301 return base::PostTaskAndReplyWithResult( |
| 288 context->task_runner(), FROM_HERE, | 302 context_ptr->task_runner(), FROM_HERE, |
| 289 Bind(&FileSystemFileUtil::DeleteDirectory, | 303 Bind(&FileSystemFileUtil::DeleteDirectory, |
| 290 Unretained(sync_file_util_.get()), | 304 Unretained(sync_file_util_.get()), |
| 291 context, url), | 305 base::Owned(context_ptr), url), |
| 292 callback); | 306 callback); |
| 293 } | 307 } |
| 294 | 308 |
| 295 bool AsyncFileUtilAdapter::CreateSnapshotFile( | 309 bool AsyncFileUtilAdapter::CreateSnapshotFile( |
| 296 FileSystemOperationContext* context, | 310 scoped_ptr<FileSystemOperationContext> context, |
| 297 const FileSystemURL& url, | 311 const FileSystemURL& url, |
| 298 const CreateSnapshotFileCallback& callback) { | 312 const CreateSnapshotFileCallback& callback) { |
| 313 FileSystemOperationContext* context_ptr = context.release(); |
| 299 GetFileInfoHelper* helper = new GetFileInfoHelper; | 314 GetFileInfoHelper* helper = new GetFileInfoHelper; |
| 300 return context->task_runner()->PostTaskAndReply( | 315 return context_ptr->task_runner()->PostTaskAndReply( |
| 301 FROM_HERE, | 316 FROM_HERE, |
| 302 Bind(&GetFileInfoHelper::CreateSnapshotFile, Unretained(helper), | 317 Bind(&GetFileInfoHelper::CreateSnapshotFile, Unretained(helper), |
| 303 sync_file_util_.get(), context, url), | 318 sync_file_util_.get(), base::Owned(context_ptr), url), |
| 304 Bind(&GetFileInfoHelper::ReplySnapshotFile, Owned(helper), callback)); | 319 Bind(&GetFileInfoHelper::ReplySnapshotFile, Owned(helper), callback)); |
| 305 } | 320 } |
| 306 | 321 |
| 307 } // namespace fileapi | 322 } // namespace fileapi |
| OLD | NEW |