Chromium Code Reviews| Index: content/browser/cache_storage/cache_storage_manager.cc |
| diff --git a/content/browser/cache_storage/cache_storage_manager.cc b/content/browser/cache_storage/cache_storage_manager.cc |
| index 6c0a1a74b9c9fca65d06c6fa5938af0f419fa214..d9749a18bb8a3f17fd5421cde1b53f0b466f68f5 100644 |
| --- a/content/browser/cache_storage/cache_storage_manager.cc |
| +++ b/content/browser/cache_storage/cache_storage_manager.cc |
| @@ -14,6 +14,7 @@ |
| #include "base/sha1.h" |
| #include "base/strings/string_number_conversions.h" |
| #include "base/strings/string_util.h" |
| +#include "base/time/time.h" |
| #include "content/browser/cache_storage/cache_storage.h" |
| #include "content/browser/cache_storage/cache_storage.pb.h" |
| #include "content/browser/cache_storage/cache_storage_quota_client.h" |
| @@ -41,9 +42,9 @@ void DeleteOriginDidDeleteDir( |
| callback.Run(rv ? storage::kQuotaStatusOk : storage::kQuotaErrorAbort); |
| } |
| -std::set<GURL> ListOriginsOnDisk(base::FilePath root_path_) { |
| +std::set<GURL> ListOriginsOnDisk(base::FilePath root_path) { |
| std::set<GURL> origins; |
| - base::FileEnumerator file_enum(root_path_, false /* recursive */, |
| + base::FileEnumerator file_enum(root_path, false /* recursive */, |
| base::FileEnumerator::DIRECTORIES); |
| base::FilePath path; |
| @@ -74,6 +75,8 @@ void GetOriginsForHostDidListOrigins( |
| callback.Run(out_origins); |
| } |
| +void EmptyQuotaStatusCallback(storage::QuotaStatusCode code) {} |
| + |
| } // namespace |
| // static |
| @@ -184,6 +187,50 @@ void CacheStorageManager::SetBlobParametersForCache( |
| blob_context_ = blob_storage_context; |
| } |
| +void CacheStorageManager::GetAllOriginsUsage( |
| + const CacheStorageContext::GetUsageInfoCallback& callback) { |
| + DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| + |
| + if (IsMemoryBacked()) { |
| + std::vector<CacheStorageUsageInfo> entries; |
| + entries.reserve(cache_storage_map_.size()); |
| + for (const auto& origin_details : cache_storage_map_) { |
| + entries.push_back(CacheStorageUsageInfo( |
| + origin_details.first, origin_details.second->MemoryBackedSize(), |
| + base::Time())); |
| + } |
| + BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, |
| + base::Bind(callback, entries)); |
| + return; |
| + } |
| + |
| + PostTaskAndReplyWithResult( |
| + cache_task_runner_.get(), FROM_HERE, |
| + base::Bind(&CacheStorageManager::GetAllOriginsUsageOnTaskRunner, |
| + root_path_), |
| + base::Bind(callback)); |
| +} |
| + |
| +// static |
| +std::vector<CacheStorageUsageInfo> |
| +CacheStorageManager::GetAllOriginsUsageOnTaskRunner( |
| + const base::FilePath root_path) { |
| + std::vector<CacheStorageUsageInfo> entries; |
| + const std::set<GURL> origins = ListOriginsOnDisk(root_path); |
| + entries.reserve(origins.size()); |
| + for (const GURL& origin : origins) { |
| + base::FilePath path = |
| + CacheStorageManager::ConstructOriginPath(root_path, origin); |
| + int64 size = base::ComputeDirectorySize(path); |
| + base::File::Info file_info; |
| + base::Time last_modified; |
| + if (base::GetFileInfo(path, &file_info)) |
| + last_modified = file_info.last_modified; |
| + entries.push_back(CacheStorageUsageInfo(origin, size, last_modified)); |
| + } |
| + return entries; |
| +} |
| + |
| void CacheStorageManager::GetOriginUsage( |
| const GURL& origin_url, |
| const storage::QuotaClient::GetUsageCallback& callback) { |
| @@ -191,6 +238,7 @@ void CacheStorageManager::GetOriginUsage( |
| if (IsMemoryBacked()) { |
| int64 sum = 0; |
| + // TODO(jsbell): Should this be filtering by origin? |
|
jkarlin
2015/08/18 13:22:35
Eek, yes!
jsbell
2015/08/18 18:42:43
Done, and added unit tests.
|
| for (const auto& key_value : cache_storage_map_) |
| sum += key_value.second->MemoryBackedSize(); |
| callback.Run(sum); |
| @@ -257,6 +305,11 @@ void CacheStorageManager::DeleteOriginData( |
| weak_ptr_factory_.GetWeakPtr())); |
| } |
| +void CacheStorageManager::DeleteOriginData(const GURL& origin) { |
| + DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| + DeleteOriginData(origin, base::Bind(&EmptyQuotaStatusCallback)); |
| +} |
| + |
| // static |
| void CacheStorageManager::DeleteOriginDidClose( |
| const GURL& origin, |