| 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/browser/fileapi/sandbox_file_system_backend.h" | 5 #include "webkit/browser/fileapi/sandbox_file_system_backend.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
| 9 #include "base/file_util.h" | 9 #include "base/file_util.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 436 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 447 | 447 |
| 448 void SandboxFileSystemBackend::StickyInvalidateUsageCache( | 448 void SandboxFileSystemBackend::StickyInvalidateUsageCache( |
| 449 const GURL& origin, | 449 const GURL& origin, |
| 450 fileapi::FileSystemType type) { | 450 fileapi::FileSystemType type) { |
| 451 DCHECK(CanHandleType(type)); | 451 DCHECK(CanHandleType(type)); |
| 452 sticky_dirty_origins_.insert(std::make_pair(origin, type)); | 452 sticky_dirty_origins_.insert(std::make_pair(origin, type)); |
| 453 sandbox_context_->quota_observer()->SetUsageCacheEnabled(origin, type, false); | 453 sandbox_context_->quota_observer()->SetUsageCacheEnabled(origin, type, false); |
| 454 InvalidateUsageCache(origin, type); | 454 InvalidateUsageCache(origin, type); |
| 455 } | 455 } |
| 456 | 456 |
| 457 void SandboxFileSystemBackend::AddFileUpdateObserver( |
| 458 FileSystemType type, |
| 459 FileUpdateObserver* observer, |
| 460 base::SequencedTaskRunner* task_runner) { |
| 461 DCHECK(CanHandleType(type)); |
| 462 UpdateObserverList* list = &update_observers_; |
| 463 if (type == kFileSystemTypeSyncable) |
| 464 list = &syncable_update_observers_; |
| 465 UpdateObserverList::Source observer_source = list->source(); |
| 466 observer_source.AddObserver(observer, task_runner); |
| 467 *list = UpdateObserverList(observer_source); |
| 468 } |
| 469 |
| 470 void SandboxFileSystemBackend::AddFileChangeObserver( |
| 471 FileSystemType type, |
| 472 FileChangeObserver* observer, |
| 473 base::SequencedTaskRunner* task_runner) { |
| 474 DCHECK(CanHandleType(type)); |
| 475 ChangeObserverList* list = &change_observers_; |
| 476 if (type == kFileSystemTypeSyncable) |
| 477 list = &syncable_change_observers_; |
| 478 ChangeObserverList::Source observer_source = list->source(); |
| 479 observer_source.AddObserver(observer, task_runner); |
| 480 *list = ChangeObserverList(observer_source); |
| 481 } |
| 482 |
| 483 void SandboxFileSystemBackend::AddFileAccessObserver( |
| 484 FileSystemType type, |
| 485 FileAccessObserver* observer, |
| 486 base::SequencedTaskRunner* task_runner) { |
| 487 DCHECK(CanHandleType(type)); |
| 488 AccessObserverList* list = &access_observers_; |
| 489 AccessObserverList::Source observer_source = list->source(); |
| 490 observer_source.AddObserver(observer, task_runner); |
| 491 *list = AccessObserverList(observer_source); |
| 492 } |
| 493 |
| 494 const UpdateObserverList* SandboxFileSystemBackend::GetUpdateObservers( |
| 495 FileSystemType type) const { |
| 496 DCHECK(CanHandleType(type)); |
| 497 if (type == kFileSystemTypeSyncable) |
| 498 return &syncable_update_observers_; |
| 499 return &update_observers_; |
| 500 } |
| 501 |
| 502 const ChangeObserverList* SandboxFileSystemBackend::GetChangeObservers( |
| 503 FileSystemType type) const { |
| 504 DCHECK(CanHandleType(type)); |
| 505 if (type == kFileSystemTypeSyncable) |
| 506 return &syncable_change_observers_; |
| 507 return &change_observers_; |
| 508 } |
| 509 |
| 510 const AccessObserverList* SandboxFileSystemBackend::GetAccessObservers( |
| 511 FileSystemType type) const { |
| 512 DCHECK(CanHandleType(type)); |
| 513 return &access_observers_; |
| 514 } |
| 515 |
| 457 void SandboxFileSystemBackend::CollectOpenFileSystemMetrics( | 516 void SandboxFileSystemBackend::CollectOpenFileSystemMetrics( |
| 458 base::PlatformFileError error_code) { | 517 base::PlatformFileError error_code) { |
| 459 base::Time now = base::Time::Now(); | 518 base::Time now = base::Time::Now(); |
| 460 bool throttled = now < next_release_time_for_open_filesystem_stat_; | 519 bool throttled = now < next_release_time_for_open_filesystem_stat_; |
| 461 if (!throttled) { | 520 if (!throttled) { |
| 462 next_release_time_for_open_filesystem_stat_ = | 521 next_release_time_for_open_filesystem_stat_ = |
| 463 now + base::TimeDelta::FromHours(kMinimumStatsCollectionIntervalHours); | 522 now + base::TimeDelta::FromHours(kMinimumStatsCollectionIntervalHours); |
| 464 } | 523 } |
| 465 | 524 |
| 466 #define REPORT(report_value) \ | 525 #define REPORT(report_value) \ |
| (...skipping 17 matching lines...) Expand all Loading... |
| 484 REPORT(kNotFound); | 543 REPORT(kNotFound); |
| 485 break; | 544 break; |
| 486 case base::PLATFORM_FILE_ERROR_FAILED: | 545 case base::PLATFORM_FILE_ERROR_FAILED: |
| 487 default: | 546 default: |
| 488 REPORT(kUnknownError); | 547 REPORT(kUnknownError); |
| 489 break; | 548 break; |
| 490 } | 549 } |
| 491 #undef REPORT | 550 #undef REPORT |
| 492 } | 551 } |
| 493 | 552 |
| 494 const UpdateObserverList* SandboxFileSystemBackend::GetUpdateObservers( | |
| 495 FileSystemType type) const { | |
| 496 DCHECK(CanHandleType(type)); | |
| 497 if (type == kFileSystemTypeSyncable) | |
| 498 return &syncable_update_observers_; | |
| 499 return &update_observers_; | |
| 500 } | |
| 501 | |
| 502 const AccessObserverList* SandboxFileSystemBackend::GetAccessObservers( | |
| 503 FileSystemType type) const { | |
| 504 DCHECK(CanHandleType(type)); | |
| 505 return &access_observers_; | |
| 506 } | |
| 507 | |
| 508 void SandboxFileSystemBackend::AddFileUpdateObserver( | |
| 509 FileSystemType type, | |
| 510 FileUpdateObserver* observer, | |
| 511 base::SequencedTaskRunner* task_runner) { | |
| 512 DCHECK(CanHandleType(type)); | |
| 513 UpdateObserverList* list = &update_observers_; | |
| 514 if (type == kFileSystemTypeSyncable) | |
| 515 list = &syncable_update_observers_; | |
| 516 UpdateObserverList::Source observer_source = list->source(); | |
| 517 observer_source.AddObserver(observer, task_runner); | |
| 518 *list = UpdateObserverList(observer_source); | |
| 519 } | |
| 520 | |
| 521 void SandboxFileSystemBackend::AddFileChangeObserver( | |
| 522 FileSystemType type, | |
| 523 FileChangeObserver* observer, | |
| 524 base::SequencedTaskRunner* task_runner) { | |
| 525 ChangeObserverList* list = &change_observers_; | |
| 526 if (type == kFileSystemTypeSyncable) | |
| 527 list = &syncable_change_observers_; | |
| 528 ChangeObserverList::Source observer_source = list->source(); | |
| 529 observer_source.AddObserver(observer, task_runner); | |
| 530 *list = ChangeObserverList(observer_source); | |
| 531 } | |
| 532 | |
| 533 bool SandboxFileSystemBackend::IsAccessValid( | 553 bool SandboxFileSystemBackend::IsAccessValid( |
| 534 const FileSystemURL& url) const { | 554 const FileSystemURL& url) const { |
| 535 if (!IsAllowedScheme(url.origin())) | 555 if (!IsAllowedScheme(url.origin())) |
| 536 return false; | 556 return false; |
| 537 | 557 |
| 538 if (!CanHandleType(url.type())) | 558 if (!CanHandleType(url.type())) |
| 539 return false; | 559 return false; |
| 540 | 560 |
| 541 if (url.path().ReferencesParent()) | 561 if (url.path().ReferencesParent()) |
| 542 return false; | 562 return false; |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 647 | 667 |
| 648 while (!(file_path_each = enumerator->Next()).empty()) { | 668 while (!(file_path_each = enumerator->Next()).empty()) { |
| 649 usage += enumerator->Size(); | 669 usage += enumerator->Size(); |
| 650 usage += ObfuscatedFileUtil::ComputeFilePathCost(file_path_each); | 670 usage += ObfuscatedFileUtil::ComputeFilePathCost(file_path_each); |
| 651 } | 671 } |
| 652 | 672 |
| 653 return usage; | 673 return usage; |
| 654 } | 674 } |
| 655 | 675 |
| 656 } // namespace fileapi | 676 } // namespace fileapi |
| OLD | NEW |