| 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 40f2a28fd52f21b96ba504b902bbc5f2e6914b6e..39a6f5e74504d94be2d6e1e63993cd50e3538b22 100644
|
| --- a/chrome/browser/browsing_data/cookies_tree_model.cc
|
| +++ b/chrome/browser/browsing_data/cookies_tree_model.cc
|
| @@ -153,6 +153,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:
|
| @@ -272,6 +274,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);
|
| @@ -564,6 +574,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_);
|
| + }
|
| +}
|
| +
|
| +CookieTreeNode::DetailedInfo CookieTreeCacheStorageNode::GetDetailedInfo()
|
| + const {
|
| + return DetailedInfo().InitCacheStorage(&*cache_storage_info_);
|
| +}
|
| +
|
| +///////////////////////////////////////////////////////////////////////////////
|
| // CookieTreeRootNode, public:
|
|
|
| CookieTreeRootNode::CookieTreeRootNode(CookiesTreeModel* model)
|
| @@ -713,6 +748,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);
|
| @@ -879,6 +923,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)
|
| @@ -998,6 +1055,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;
|
| }
|
| @@ -1044,6 +1103,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)
|
| @@ -1128,6 +1188,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());
|
| @@ -1361,6 +1428,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,
|
|
|