Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(883)

Unified Diff: chrome/browser/browsing_data/cookies_tree_model.cc

Issue 1297093002: Cache Storage API: Hook up to chrome://settings/cookies (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: OSX and GN build fixes Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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(), &notifier, filter);
PopulateChannelIDInfoWithFilter(data_container(), &notifier, filter);
PopulateServiceWorkerUsageInfoWithFilter(data_container(), &notifier, filter);
+ PopulateCacheStorageUsageInfoWithFilter(data_container(), &notifier, filter);
}
#if defined(ENABLE_EXTENSIONS)
@@ -1113,6 +1173,13 @@ void CookiesTreeModel::PopulateServiceWorkerUsageInfo(
container, &notifier, base::string16());
}
+void CookiesTreeModel::PopulateCacheStorageUsageInfo(
+ LocalDataContainer* container) {
+ ScopedBatchUpdateNotifier notifier(this, GetRoot());
+ PopulateCacheStorageUsageInfoWithFilter(container, &notifier,
+ 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,

Powered by Google App Engine
This is Rietveld 408576698