Chromium Code Reviews| Index: chrome/browser/browsing_data/cookies_tree_model.cc |
| diff --git a/chrome/browser/browsing_data/cookies_tree_model.cc b/chrome/browser/browsing_data/cookies_tree_model.cc |
| index 4263dc9f81a6686849c8bd831f159d730bc52eeb..ecf3820056e340d3016b3161546914f9d54fda2c 100644 |
| --- a/chrome/browser/browsing_data/cookies_tree_model.cc |
| +++ b/chrome/browser/browsing_data/cookies_tree_model.cc |
| @@ -138,6 +138,8 @@ bool TypeIsProtected(CookieTreeNode::DetailedInfo::NodeType type) { |
| return false; |
| case CookieTreeNode::DetailedInfo::TYPE_SERVICE_WORKER: |
| return true; |
| + case CookieTreeNode::DetailedInfo::TYPE_CACHE_STORAGE: |
| + return true; |
| case CookieTreeNode::DetailedInfo::TYPE_FLASH_LSO: |
| return false; |
| default: |
| @@ -257,6 +259,14 @@ CookieTreeNode::DetailedInfo& CookieTreeNode::DetailedInfo::InitServiceWorker( |
| return *this; |
| } |
| +CookieTreeNode::DetailedInfo& CookieTreeNode::DetailedInfo::InitCacheStorage( |
| + const content::CacheStorageUsageInfo* cache_storage_info) { |
| + Init(TYPE_CACHE_STORAGE); |
| + this->cache_storage_info = cache_storage_info; |
| + this->origin = cache_storage_info->origin; |
| + return *this; |
| +} |
| + |
| CookieTreeNode::DetailedInfo& CookieTreeNode::DetailedInfo::InitFlashLSO( |
| const std::string& flash_lso_domain) { |
| Init(TYPE_FLASH_LSO); |
| @@ -549,6 +559,31 @@ CookieTreeNode::DetailedInfo CookieTreeServiceWorkerNode::GetDetailedInfo() |
| } |
| /////////////////////////////////////////////////////////////////////////////// |
| +// CookieTreeCacheStorageNode, public: |
| + |
| +CookieTreeCacheStorageNode::CookieTreeCacheStorageNode( |
| + std::list<content::CacheStorageUsageInfo>::iterator cache_storage_info) |
| + : CookieTreeNode(base::UTF8ToUTF16(cache_storage_info->origin.spec())), |
| + cache_storage_info_(cache_storage_info) {} |
| + |
| +CookieTreeCacheStorageNode::~CookieTreeCacheStorageNode() {} |
| + |
| +void CookieTreeCacheStorageNode::DeleteStoredObjects() { |
| + LocalDataContainer* container = GetLocalDataContainerForNode(this); |
| + |
| + if (container) { |
| + container->cache_storage_helper_->DeleteCacheStorage( |
| + cache_storage_info_->origin); |
| + container->cache_storage_info_list_.erase(cache_storage_info_); |
|
michaeln
2015/08/18 22:25:51
does this invalidate our cache_storage_info_ data
jsbell
2015/08/19 01:06:19
Yes, but this is called just before this node itse
|
| + } |
| +} |
| + |
| +CookieTreeNode::DetailedInfo CookieTreeCacheStorageNode::GetDetailedInfo() |
| + const { |
| + return DetailedInfo().InitCacheStorage(&*cache_storage_info_); |
| +} |
| + |
| +/////////////////////////////////////////////////////////////////////////////// |
| // CookieTreeRootNode, public: |
| CookieTreeRootNode::CookieTreeRootNode(CookiesTreeModel* model) |
| @@ -698,6 +733,15 @@ CookieTreeHostNode::GetOrCreateServiceWorkersNode() { |
| return service_workers_child_; |
| } |
| +CookieTreeCacheStoragesNode* |
| +CookieTreeHostNode::GetOrCreateCacheStoragesNode() { |
| + if (cache_storages_child_) |
| + return cache_storages_child_; |
| + cache_storages_child_ = new CookieTreeCacheStoragesNode; |
| + AddChildSortedByTitle(cache_storages_child_); |
| + return cache_storages_child_; |
| +} |
| + |
| CookieTreeFlashLSONode* CookieTreeHostNode::GetOrCreateFlashLSONode( |
| const std::string& domain) { |
| DCHECK_EQ(GetHost(), domain); |
| @@ -864,6 +908,19 @@ CookieTreeNode::DetailedInfo CookieTreeServiceWorkersNode::GetDetailedInfo() |
| } |
| /////////////////////////////////////////////////////////////////////////////// |
| +// CookieTreeCacheStoragesNode, public: |
| + |
| +CookieTreeCacheStoragesNode::CookieTreeCacheStoragesNode() |
| + : CookieTreeNode(l10n_util::GetStringUTF16(IDS_COOKIES_CACHE_STORAGE)) {} |
| + |
| +CookieTreeCacheStoragesNode::~CookieTreeCacheStoragesNode() {} |
| + |
| +CookieTreeNode::DetailedInfo CookieTreeCacheStoragesNode::GetDetailedInfo() |
| + const { |
| + return DetailedInfo().Init(DetailedInfo::TYPE_CACHE_STORAGES); |
| +} |
| + |
| +/////////////////////////////////////////////////////////////////////////////// |
| // CookieTreeFlashLSONode |
| CookieTreeFlashLSONode::CookieTreeFlashLSONode( |
| const std::string& domain) |
| @@ -983,6 +1040,8 @@ int CookiesTreeModel::GetIconIndex(ui::TreeModelNode* node) { |
| return COOKIE; // It's kinda like a cookie? |
| case CookieTreeNode::DetailedInfo::TYPE_SERVICE_WORKER: |
| return DATABASE; // Just like appcache |
| + case CookieTreeNode::DetailedInfo::TYPE_CACHE_STORAGE: |
| + return DATABASE; // ditto |
| default: |
| break; |
| } |
| @@ -1029,6 +1088,7 @@ void CookiesTreeModel::UpdateSearchResults(const base::string16& filter) { |
| PopulateQuotaInfoWithFilter(data_container(), ¬ifier, filter); |
| PopulateChannelIDInfoWithFilter(data_container(), ¬ifier, filter); |
| PopulateServiceWorkerUsageInfoWithFilter(data_container(), ¬ifier, filter); |
| + PopulateCacheStorageUsageInfoWithFilter(data_container(), ¬ifier, filter); |
| } |
| #if defined(ENABLE_EXTENSIONS) |
| @@ -1113,6 +1173,13 @@ void CookiesTreeModel::PopulateServiceWorkerUsageInfo( |
| container, ¬ifier, base::string16()); |
| } |
| +void CookiesTreeModel::PopulateCacheStorageUsageInfo( |
| + LocalDataContainer* container) { |
| + ScopedBatchUpdateNotifier notifier(this, GetRoot()); |
| + PopulateCacheStorageUsageInfoWithFilter(container, ¬ifier, |
| + base::string16()); |
| +} |
| + |
| void CookiesTreeModel::PopulateFlashLSOInfo( |
| LocalDataContainer* container) { |
| ScopedBatchUpdateNotifier notifier(this, GetRoot()); |
| @@ -1347,6 +1414,33 @@ void CookiesTreeModel::PopulateServiceWorkerUsageInfoWithFilter( |
| } |
| } |
| +void CookiesTreeModel::PopulateCacheStorageUsageInfoWithFilter( |
| + LocalDataContainer* container, |
| + ScopedBatchUpdateNotifier* notifier, |
| + const base::string16& filter) { |
| + CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot()); |
| + |
| + if (container->cache_storage_info_list_.empty()) |
| + return; |
| + |
| + notifier->StartBatchUpdate(); |
| + for (CacheStorageUsageInfoList::iterator cache_storage_info = |
| + container->cache_storage_info_list_.begin(); |
| + cache_storage_info != container->cache_storage_info_list_.end(); |
| + ++cache_storage_info) { |
| + const GURL& origin = cache_storage_info->origin; |
| + |
| + if (filter.empty() || (CookieTreeHostNode::TitleForUrl(origin) |
| + .find(filter) != base::string16::npos)) { |
| + CookieTreeHostNode* host_node = root->GetOrCreateHostNode(origin); |
| + CookieTreeCacheStoragesNode* cache_storages_node = |
| + host_node->GetOrCreateCacheStoragesNode(); |
| + cache_storages_node->AddCacheStorageNode( |
| + new CookieTreeCacheStorageNode(cache_storage_info)); |
| + } |
| + } |
| +} |
| + |
| void CookiesTreeModel::PopulateFileSystemInfoWithFilter( |
| LocalDataContainer* container, |
| ScopedBatchUpdateNotifier* notifier, |