| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/fileapi/local_file_system_operation.h" | 5 #include "webkit/fileapi/local_file_system_operation.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/time.h" | 9 #include "base/time.h" |
| 10 #include "base/utf_string_conversions.h" | 10 #include "base/utf_string_conversions.h" |
| (...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 167 DCHECK(SetPendingOperationType(kOperationDirectoryExists)); | 167 DCHECK(SetPendingOperationType(kOperationDirectoryExists)); |
| 168 | 168 |
| 169 base::PlatformFileError result = SetUp(url, &src_util_, SETUP_FOR_READ); | 169 base::PlatformFileError result = SetUp(url, &src_util_, SETUP_FOR_READ); |
| 170 if (result != base::PLATFORM_FILE_OK) { | 170 if (result != base::PLATFORM_FILE_OK) { |
| 171 callback.Run(result); | 171 callback.Run(result); |
| 172 delete this; | 172 delete this; |
| 173 return; | 173 return; |
| 174 } | 174 } |
| 175 | 175 |
| 176 FileSystemFileUtilProxy::GetFileInfo( | 176 FileSystemFileUtilProxy::GetFileInfo( |
| 177 &operation_context_, src_util_, url, | 177 operation_context_.get(), src_util_, url, |
| 178 base::Bind(&LocalFileSystemOperation::DidDirectoryExists, | 178 base::Bind(&LocalFileSystemOperation::DidDirectoryExists, |
| 179 base::Owned(this), callback)); | 179 base::Owned(this), callback)); |
| 180 } | 180 } |
| 181 | 181 |
| 182 void LocalFileSystemOperation::FileExists(const FileSystemURL& url, | 182 void LocalFileSystemOperation::FileExists(const FileSystemURL& url, |
| 183 const StatusCallback& callback) { | 183 const StatusCallback& callback) { |
| 184 DCHECK(SetPendingOperationType(kOperationFileExists)); | 184 DCHECK(SetPendingOperationType(kOperationFileExists)); |
| 185 | 185 |
| 186 base::PlatformFileError result = SetUp(url, &src_util_, SETUP_FOR_READ); | 186 base::PlatformFileError result = SetUp(url, &src_util_, SETUP_FOR_READ); |
| 187 if (result != base::PLATFORM_FILE_OK) { | 187 if (result != base::PLATFORM_FILE_OK) { |
| 188 callback.Run(result); | 188 callback.Run(result); |
| 189 delete this; | 189 delete this; |
| 190 return; | 190 return; |
| 191 } | 191 } |
| 192 | 192 |
| 193 FileSystemFileUtilProxy::GetFileInfo( | 193 FileSystemFileUtilProxy::GetFileInfo( |
| 194 &operation_context_, src_util_, url, | 194 operation_context_.get(), src_util_, url, |
| 195 base::Bind(&LocalFileSystemOperation::DidFileExists, | 195 base::Bind(&LocalFileSystemOperation::DidFileExists, |
| 196 base::Owned(this), callback)); | 196 base::Owned(this), callback)); |
| 197 } | 197 } |
| 198 | 198 |
| 199 void LocalFileSystemOperation::GetMetadata( | 199 void LocalFileSystemOperation::GetMetadata( |
| 200 const FileSystemURL& url, const GetMetadataCallback& callback) { | 200 const FileSystemURL& url, const GetMetadataCallback& callback) { |
| 201 DCHECK(SetPendingOperationType(kOperationGetMetadata)); | 201 DCHECK(SetPendingOperationType(kOperationGetMetadata)); |
| 202 | 202 |
| 203 base::PlatformFileError result = SetUp(url, &src_util_, SETUP_FOR_READ); | 203 base::PlatformFileError result = SetUp(url, &src_util_, SETUP_FOR_READ); |
| 204 if (result != base::PLATFORM_FILE_OK) { | 204 if (result != base::PLATFORM_FILE_OK) { |
| 205 callback.Run(result, base::PlatformFileInfo(), FilePath()); | 205 callback.Run(result, base::PlatformFileInfo(), FilePath()); |
| 206 delete this; | 206 delete this; |
| 207 return; | 207 return; |
| 208 } | 208 } |
| 209 | 209 |
| 210 FileSystemFileUtilProxy::GetFileInfo( | 210 FileSystemFileUtilProxy::GetFileInfo( |
| 211 &operation_context_, src_util_, url, | 211 operation_context_.get(), src_util_, url, |
| 212 base::Bind(&LocalFileSystemOperation::DidGetMetadata, | 212 base::Bind(&LocalFileSystemOperation::DidGetMetadata, |
| 213 base::Owned(this), callback)); | 213 base::Owned(this), callback)); |
| 214 } | 214 } |
| 215 | 215 |
| 216 void LocalFileSystemOperation::ReadDirectory( | 216 void LocalFileSystemOperation::ReadDirectory( |
| 217 const FileSystemURL& url, const ReadDirectoryCallback& callback) { | 217 const FileSystemURL& url, const ReadDirectoryCallback& callback) { |
| 218 DCHECK(SetPendingOperationType(kOperationReadDirectory)); | 218 DCHECK(SetPendingOperationType(kOperationReadDirectory)); |
| 219 | 219 |
| 220 base::PlatformFileError result = SetUp(url, &src_util_, SETUP_FOR_READ); | 220 base::PlatformFileError result = SetUp(url, &src_util_, SETUP_FOR_READ); |
| 221 if (result != base::PLATFORM_FILE_OK) { | 221 if (result != base::PLATFORM_FILE_OK) { |
| 222 callback.Run(result, std::vector<base::FileUtilProxy::Entry>(), false); | 222 callback.Run(result, std::vector<base::FileUtilProxy::Entry>(), false); |
| 223 delete this; | 223 delete this; |
| 224 return; | 224 return; |
| 225 } | 225 } |
| 226 | 226 |
| 227 FileSystemFileUtilProxy::ReadDirectory( | 227 FileSystemFileUtilProxy::ReadDirectory( |
| 228 &operation_context_, src_util_, url, | 228 operation_context_.get(), src_util_, url, |
| 229 base::Bind(&LocalFileSystemOperation::DidReadDirectory, | 229 base::Bind(&LocalFileSystemOperation::DidReadDirectory, |
| 230 base::Owned(this), callback)); | 230 base::Owned(this), callback)); |
| 231 } | 231 } |
| 232 | 232 |
| 233 void LocalFileSystemOperation::Remove(const FileSystemURL& url, | 233 void LocalFileSystemOperation::Remove(const FileSystemURL& url, |
| 234 bool recursive, | 234 bool recursive, |
| 235 const StatusCallback& callback) { | 235 const StatusCallback& callback) { |
| 236 DCHECK(SetPendingOperationType(kOperationRemove)); | 236 DCHECK(SetPendingOperationType(kOperationRemove)); |
| 237 | 237 |
| 238 base::PlatformFileError result = SetUp(url, &src_util_, SETUP_FOR_WRITE); | 238 base::PlatformFileError result = SetUp(url, &src_util_, SETUP_FOR_WRITE); |
| 239 if (result != base::PLATFORM_FILE_OK) { | 239 if (result != base::PLATFORM_FILE_OK) { |
| 240 callback.Run(result); | 240 callback.Run(result); |
| 241 delete this; | 241 delete this; |
| 242 return; | 242 return; |
| 243 } | 243 } |
| 244 | 244 |
| 245 scoped_quota_notifier_.reset(new ScopedQuotaNotifier( | 245 scoped_quota_notifier_.reset(new ScopedQuotaNotifier( |
| 246 file_system_context(), url.origin(), url.type())); | 246 file_system_context(), url.origin(), url.type())); |
| 247 | 247 |
| 248 FileSystemFileUtilProxy::Delete( | 248 FileSystemFileUtilProxy::Delete( |
| 249 &operation_context_, src_util_, url, recursive, | 249 operation_context_.get(), src_util_, url, recursive, |
| 250 base::Bind(&LocalFileSystemOperation::DidFinishFileOperation, | 250 base::Bind(&LocalFileSystemOperation::DidFinishFileOperation, |
| 251 base::Owned(this), callback)); | 251 base::Owned(this), callback)); |
| 252 } | 252 } |
| 253 | 253 |
| 254 void LocalFileSystemOperation::Write( | 254 void LocalFileSystemOperation::Write( |
| 255 const net::URLRequestContext* url_request_context, | 255 const net::URLRequestContext* url_request_context, |
| 256 const FileSystemURL& url, | 256 const FileSystemURL& url, |
| 257 const GURL& blob_url, | 257 const GURL& blob_url, |
| 258 int64 offset, | 258 int64 offset, |
| 259 const WriteCallback& callback) { | 259 const WriteCallback& callback) { |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 318 DCHECK(SetPendingOperationType(kOperationTouchFile)); | 318 DCHECK(SetPendingOperationType(kOperationTouchFile)); |
| 319 | 319 |
| 320 base::PlatformFileError result = SetUp(url, &src_util_, SETUP_FOR_WRITE); | 320 base::PlatformFileError result = SetUp(url, &src_util_, SETUP_FOR_WRITE); |
| 321 if (result != base::PLATFORM_FILE_OK) { | 321 if (result != base::PLATFORM_FILE_OK) { |
| 322 callback.Run(result); | 322 callback.Run(result); |
| 323 delete this; | 323 delete this; |
| 324 return; | 324 return; |
| 325 } | 325 } |
| 326 | 326 |
| 327 FileSystemFileUtilProxy::Touch( | 327 FileSystemFileUtilProxy::Touch( |
| 328 &operation_context_, src_util_, url, | 328 operation_context_.get(), src_util_, url, |
| 329 last_access_time, last_modified_time, | 329 last_access_time, last_modified_time, |
| 330 base::Bind(&LocalFileSystemOperation::DidTouchFile, | 330 base::Bind(&LocalFileSystemOperation::DidTouchFile, |
| 331 base::Owned(this), callback)); | 331 base::Owned(this), callback)); |
| 332 } | 332 } |
| 333 | 333 |
| 334 void LocalFileSystemOperation::OpenFile(const FileSystemURL& url, | 334 void LocalFileSystemOperation::OpenFile(const FileSystemURL& url, |
| 335 int file_flags, | 335 int file_flags, |
| 336 base::ProcessHandle peer_handle, | 336 base::ProcessHandle peer_handle, |
| 337 const OpenFileCallback& callback) { | 337 const OpenFileCallback& callback) { |
| 338 DCHECK(SetPendingOperationType(kOperationOpenFile)); | 338 DCHECK(SetPendingOperationType(kOperationOpenFile)); |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 422 void LocalFileSystemOperation::SyncGetPlatformPath(const FileSystemURL& url, | 422 void LocalFileSystemOperation::SyncGetPlatformPath(const FileSystemURL& url, |
| 423 FilePath* platform_path) { | 423 FilePath* platform_path) { |
| 424 DCHECK(SetPendingOperationType(kOperationGetLocalPath)); | 424 DCHECK(SetPendingOperationType(kOperationGetLocalPath)); |
| 425 | 425 |
| 426 base::PlatformFileError result = SetUp(url, &src_util_, SETUP_FOR_READ); | 426 base::PlatformFileError result = SetUp(url, &src_util_, SETUP_FOR_READ); |
| 427 if (result != base::PLATFORM_FILE_OK) { | 427 if (result != base::PLATFORM_FILE_OK) { |
| 428 delete this; | 428 delete this; |
| 429 return; | 429 return; |
| 430 } | 430 } |
| 431 | 431 |
| 432 src_util_->GetLocalFilePath(&operation_context_, url, platform_path); | 432 src_util_->GetLocalFilePath(operation_context_.get(), url, platform_path); |
| 433 | 433 |
| 434 delete this; | 434 delete this; |
| 435 } | 435 } |
| 436 | 436 |
| 437 void LocalFileSystemOperation::CreateSnapshotFile( | 437 void LocalFileSystemOperation::CreateSnapshotFile( |
| 438 const FileSystemURL& url, | 438 const FileSystemURL& url, |
| 439 const SnapshotFileCallback& callback) { | 439 const SnapshotFileCallback& callback) { |
| 440 DCHECK(SetPendingOperationType(kOperationCreateSnapshotFile)); | 440 DCHECK(SetPendingOperationType(kOperationCreateSnapshotFile)); |
| 441 | 441 |
| 442 base::PlatformFileError result = SetUp(url, &src_util_, SETUP_FOR_READ); | 442 base::PlatformFileError result = SetUp(url, &src_util_, SETUP_FOR_READ); |
| 443 if (result != base::PLATFORM_FILE_OK) { | 443 if (result != base::PLATFORM_FILE_OK) { |
| 444 callback.Run(result, base::PlatformFileInfo(), FilePath(), NULL); | 444 callback.Run(result, base::PlatformFileInfo(), FilePath(), NULL); |
| 445 delete this; | 445 delete this; |
| 446 return; | 446 return; |
| 447 } | 447 } |
| 448 | 448 |
| 449 FileSystemFileUtilProxy::CreateSnapshotFile( | 449 FileSystemFileUtilProxy::CreateSnapshotFile( |
| 450 &operation_context_, src_util_, url, | 450 operation_context_.get(), src_util_, url, |
| 451 base::Bind(&LocalFileSystemOperation::DidCreateSnapshotFile, | 451 base::Bind(&LocalFileSystemOperation::DidCreateSnapshotFile, |
| 452 base::Owned(this), callback)); | 452 base::Owned(this), callback)); |
| 453 } | 453 } |
| 454 | 454 |
| 455 LocalFileSystemOperation::LocalFileSystemOperation( | 455 LocalFileSystemOperation::LocalFileSystemOperation( |
| 456 FileSystemContext* file_system_context) | 456 FileSystemContext* file_system_context, |
| 457 : operation_context_(file_system_context), | 457 scoped_ptr<FileSystemOperationContext> operation_context) |
| 458 : operation_context_(operation_context.Pass()), |
| 458 src_util_(NULL), | 459 src_util_(NULL), |
| 459 dest_util_(NULL), | 460 dest_util_(NULL), |
| 460 peer_handle_(base::kNullProcessHandle), | 461 peer_handle_(base::kNullProcessHandle), |
| 461 pending_operation_(kOperationNone), | 462 pending_operation_(kOperationNone), |
| 462 weak_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) { | 463 weak_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) { |
| 464 DCHECK(operation_context_.get()); |
| 463 } | 465 } |
| 464 | 466 |
| 465 void LocalFileSystemOperation::GetUsageAndQuotaThenRunTask( | 467 void LocalFileSystemOperation::GetUsageAndQuotaThenRunTask( |
| 466 const FileSystemURL& url, | 468 const FileSystemURL& url, |
| 467 const base::Closure& task, | 469 const base::Closure& task, |
| 468 const base::Closure& error_callback) { | 470 const base::Closure& error_callback) { |
| 469 quota::QuotaManagerProxy* quota_manager_proxy = | 471 quota::QuotaManagerProxy* quota_manager_proxy = |
| 470 file_system_context()->quota_manager_proxy(); | 472 file_system_context()->quota_manager_proxy(); |
| 471 if (!quota_manager_proxy || | 473 if (!quota_manager_proxy || |
| 472 !file_system_context()->GetQuotaUtil(url.type())) { | 474 !file_system_context()->GetQuotaUtil(url.type())) { |
| 473 // If we don't have the quota manager or the requested filesystem type | 475 // If we don't have the quota manager or the requested filesystem type |
| 474 // does not support quota, we should be able to let it go. | 476 // does not support quota, we should be able to let it go. |
| 475 operation_context_.set_allowed_bytes_growth(kint64max); | 477 operation_context_->set_allowed_bytes_growth(kint64max); |
| 476 task.Run(); | 478 task.Run(); |
| 477 return; | 479 return; |
| 478 } | 480 } |
| 479 | 481 |
| 480 TaskParamsForDidGetQuota params; | 482 TaskParamsForDidGetQuota params; |
| 481 params.url = url; | 483 params.url = url; |
| 482 params.task = task; | 484 params.task = task; |
| 483 params.error_callback = error_callback; | 485 params.error_callback = error_callback; |
| 484 | 486 |
| 485 DCHECK(quota_manager_proxy); | 487 DCHECK(quota_manager_proxy); |
| 486 DCHECK(quota_manager_proxy->quota_manager()); | 488 DCHECK(quota_manager_proxy->quota_manager()); |
| 487 quota_manager_proxy->quota_manager()->GetUsageAndQuota( | 489 quota_manager_proxy->quota_manager()->GetUsageAndQuota( |
| 488 url.origin(), | 490 url.origin(), |
| 489 FileSystemTypeToQuotaStorageType(url.type()), | 491 FileSystemTypeToQuotaStorageType(url.type()), |
| 490 base::Bind(&LocalFileSystemOperation::DidGetUsageAndQuotaAndRunTask, | 492 base::Bind(&LocalFileSystemOperation::DidGetUsageAndQuotaAndRunTask, |
| 491 weak_factory_.GetWeakPtr(), params)); | 493 weak_factory_.GetWeakPtr(), params)); |
| 492 } | 494 } |
| 493 | 495 |
| 494 void LocalFileSystemOperation::DidGetUsageAndQuotaAndRunTask( | 496 void LocalFileSystemOperation::DidGetUsageAndQuotaAndRunTask( |
| 495 const TaskParamsForDidGetQuota& params, | 497 const TaskParamsForDidGetQuota& params, |
| 496 quota::QuotaStatusCode status, | 498 quota::QuotaStatusCode status, |
| 497 int64 usage, int64 quota) { | 499 int64 usage, int64 quota) { |
| 498 if (status != quota::kQuotaStatusOk) { | 500 if (status != quota::kQuotaStatusOk) { |
| 499 LOG(WARNING) << "Got unexpected quota error : " << status; | 501 LOG(WARNING) << "Got unexpected quota error : " << status; |
| 500 params.error_callback.Run(); | 502 params.error_callback.Run(); |
| 501 return; | 503 return; |
| 502 } | 504 } |
| 503 | 505 |
| 504 operation_context_.set_allowed_bytes_growth(quota - usage); | 506 operation_context_->set_allowed_bytes_growth(quota - usage); |
| 505 scoped_quota_notifier_.reset(new ScopedQuotaNotifier( | 507 scoped_quota_notifier_.reset(new ScopedQuotaNotifier( |
| 506 file_system_context(), params.url.origin(), params.url.type())); | 508 file_system_context(), params.url.origin(), params.url.type())); |
| 507 | 509 |
| 508 params.task.Run(); | 510 params.task.Run(); |
| 509 } | 511 } |
| 510 | 512 |
| 511 void LocalFileSystemOperation::DoCreateFile( | 513 void LocalFileSystemOperation::DoCreateFile( |
| 512 const FileSystemURL& url, | 514 const FileSystemURL& url, |
| 513 const StatusCallback& callback, | 515 const StatusCallback& callback, |
| 514 bool exclusive) { | 516 bool exclusive) { |
| 515 FileSystemFileUtilProxy::EnsureFileExists( | 517 FileSystemFileUtilProxy::EnsureFileExists( |
| 516 &operation_context_, | 518 operation_context_.get(), |
| 517 src_util_, url, | 519 src_util_, url, |
| 518 base::Bind( | 520 base::Bind( |
| 519 exclusive ? | 521 exclusive ? |
| 520 &LocalFileSystemOperation::DidEnsureFileExistsExclusive : | 522 &LocalFileSystemOperation::DidEnsureFileExistsExclusive : |
| 521 &LocalFileSystemOperation::DidEnsureFileExistsNonExclusive, | 523 &LocalFileSystemOperation::DidEnsureFileExistsNonExclusive, |
| 522 base::Owned(this), callback)); | 524 base::Owned(this), callback)); |
| 523 } | 525 } |
| 524 | 526 |
| 525 void LocalFileSystemOperation::DoCreateDirectory( | 527 void LocalFileSystemOperation::DoCreateDirectory( |
| 526 const FileSystemURL& url, | 528 const FileSystemURL& url, |
| 527 const StatusCallback& callback, | 529 const StatusCallback& callback, |
| 528 bool exclusive, bool recursive) { | 530 bool exclusive, bool recursive) { |
| 529 FileSystemFileUtilProxy::CreateDirectory( | 531 FileSystemFileUtilProxy::CreateDirectory( |
| 530 &operation_context_, | 532 operation_context_.get(), |
| 531 src_util_, url, exclusive, recursive, | 533 src_util_, url, exclusive, recursive, |
| 532 base::Bind(&LocalFileSystemOperation::DidFinishFileOperation, | 534 base::Bind(&LocalFileSystemOperation::DidFinishFileOperation, |
| 533 base::Owned(this), callback)); | 535 base::Owned(this), callback)); |
| 534 } | 536 } |
| 535 | 537 |
| 536 void LocalFileSystemOperation::DoCopy(const FileSystemURL& src_url, | 538 void LocalFileSystemOperation::DoCopy(const FileSystemURL& src_url, |
| 537 const FileSystemURL& dest_url, | 539 const FileSystemURL& dest_url, |
| 538 const StatusCallback& callback) { | 540 const StatusCallback& callback) { |
| 539 FileSystemFileUtilProxy::Copy( | 541 FileSystemFileUtilProxy::Copy( |
| 540 &operation_context_, | 542 operation_context_.get(), |
| 541 src_util_, dest_util_, | 543 src_util_, dest_util_, |
| 542 src_url, dest_url, | 544 src_url, dest_url, |
| 543 base::Bind(&LocalFileSystemOperation::DidFinishFileOperation, | 545 base::Bind(&LocalFileSystemOperation::DidFinishFileOperation, |
| 544 base::Owned(this), callback)); | 546 base::Owned(this), callback)); |
| 545 } | 547 } |
| 546 | 548 |
| 547 void LocalFileSystemOperation::DoMove(const FileSystemURL& src_url, | 549 void LocalFileSystemOperation::DoMove(const FileSystemURL& src_url, |
| 548 const FileSystemURL& dest_url, | 550 const FileSystemURL& dest_url, |
| 549 const StatusCallback& callback) { | 551 const StatusCallback& callback) { |
| 550 FileSystemFileUtilProxy::Move( | 552 FileSystemFileUtilProxy::Move( |
| 551 &operation_context_, | 553 operation_context_.get(), |
| 552 src_util_, dest_util_, | 554 src_util_, dest_util_, |
| 553 src_url, dest_url, | 555 src_url, dest_url, |
| 554 base::Bind(&LocalFileSystemOperation::DidFinishFileOperation, | 556 base::Bind(&LocalFileSystemOperation::DidFinishFileOperation, |
| 555 base::Owned(this), callback)); | 557 base::Owned(this), callback)); |
| 556 } | 558 } |
| 557 | 559 |
| 558 void LocalFileSystemOperation::DoTruncate(const FileSystemURL& url, | 560 void LocalFileSystemOperation::DoTruncate(const FileSystemURL& url, |
| 559 const StatusCallback& callback, | 561 const StatusCallback& callback, |
| 560 int64 length) { | 562 int64 length) { |
| 561 FileSystemFileUtilProxy::Truncate( | 563 FileSystemFileUtilProxy::Truncate( |
| 562 &operation_context_, src_util_, url, length, | 564 operation_context_.get(), src_util_, url, length, |
| 563 base::Bind(&LocalFileSystemOperation::DidFinishFileOperation, | 565 base::Bind(&LocalFileSystemOperation::DidFinishFileOperation, |
| 564 base::Owned(this), callback)); | 566 base::Owned(this), callback)); |
| 565 } | 567 } |
| 566 | 568 |
| 567 void LocalFileSystemOperation::DoOpenFile(const FileSystemURL& url, | 569 void LocalFileSystemOperation::DoOpenFile(const FileSystemURL& url, |
| 568 const OpenFileCallback& callback, | 570 const OpenFileCallback& callback, |
| 569 int file_flags) { | 571 int file_flags) { |
| 570 FileSystemFileUtilProxy::CreateOrOpen( | 572 FileSystemFileUtilProxy::CreateOrOpen( |
| 571 &operation_context_, src_util_, url, file_flags, | 573 operation_context_.get(), src_util_, url, file_flags, |
| 572 base::Bind(&LocalFileSystemOperation::DidOpenFile, | 574 base::Bind(&LocalFileSystemOperation::DidOpenFile, |
| 573 base::Owned(this), callback)); | 575 base::Owned(this), callback)); |
| 574 } | 576 } |
| 575 | 577 |
| 576 void LocalFileSystemOperation::DidEnsureFileExistsExclusive( | 578 void LocalFileSystemOperation::DidEnsureFileExistsExclusive( |
| 577 const StatusCallback& callback, | 579 const StatusCallback& callback, |
| 578 base::PlatformFileError rv, bool created) { | 580 base::PlatformFileError rv, bool created) { |
| 579 if (rv == base::PLATFORM_FILE_OK && !created) { | 581 if (rv == base::PLATFORM_FILE_OK && !created) { |
| 580 callback.Run(base::PLATFORM_FILE_ERROR_EXISTS); | 582 callback.Run(base::PLATFORM_FILE_ERROR_EXISTS); |
| 581 } else { | 583 } else { |
| (...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 730 } | 732 } |
| 731 | 733 |
| 732 bool LocalFileSystemOperation::SetPendingOperationType(OperationType type) { | 734 bool LocalFileSystemOperation::SetPendingOperationType(OperationType type) { |
| 733 if (pending_operation_ != kOperationNone) | 735 if (pending_operation_ != kOperationNone) |
| 734 return false; | 736 return false; |
| 735 pending_operation_ = type; | 737 pending_operation_ = type; |
| 736 return true; | 738 return true; |
| 737 } | 739 } |
| 738 | 740 |
| 739 } // namespace fileapi | 741 } // namespace fileapi |
| OLD | NEW |