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

Unified Diff: chrome/browser/cookies_tree_model.cc

Issue 7676002: When deleting storage through the cookies tree model, also update its cache (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 9 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/cookies_tree_model.cc
diff --git a/chrome/browser/cookies_tree_model.cc b/chrome/browser/cookies_tree_model.cc
index d198fa2c02f019eb949a3b598a9aeae3b023c21d..ef2b6e419fe783b71707280e136dc2a6683a0e26 100644
--- a/chrome/browser/cookies_tree_model.cc
+++ b/chrome/browser/cookies_tree_model.cc
@@ -49,7 +49,7 @@ CookiesTreeModel* CookieTreeNode::GetModel() const {
// CookieTreeCookieNode, public:
CookieTreeCookieNode::CookieTreeCookieNode(
- net::CookieMonster::CanonicalCookie* cookie)
+ std::list<net::CookieMonster::CanonicalCookie>::iterator cookie)
: CookieTreeNode(UTF8ToUTF16(cookie->Name())),
cookie_(cookie) {
}
@@ -65,12 +65,13 @@ void CookieTreeCookieNode::DeleteStoredObjects() {
// invalidate our pointers), and the fact that it contains semi out-of-date
// data is not problematic as we don't re-build the model based on that.
Bernhard Bauer 2011/08/17 13:34:36 Is this comment still up to date?
GetModel()->cookie_helper_->DeleteCookie(*cookie_);
+ GetModel()->cookie_list_.erase(cookie_);
}
CookieTreeNode::DetailedInfo CookieTreeCookieNode::GetDetailedInfo() const {
return DetailedInfo(parent()->parent()->GetTitle(),
DetailedInfo::TYPE_COOKIE,
- cookie_, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+ &*cookie_, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
}
namespace {
@@ -136,8 +137,10 @@ class OriginNodeComparator {
// CookieTreeAppCacheNode, public:
CookieTreeAppCacheNode::CookieTreeAppCacheNode(
- const appcache::AppCacheInfo* appcache_info)
+ const GURL& origin_url,
+ std::list<appcache::AppCacheInfo>::iterator appcache_info)
: CookieTreeNode(UTF8ToUTF16(appcache_info->manifest_url.spec())),
+ origin_url_(origin_url),
appcache_info_(appcache_info) {
}
@@ -145,19 +148,21 @@ void CookieTreeAppCacheNode::DeleteStoredObjects() {
DCHECK(GetModel()->appcache_helper_);
GetModel()->appcache_helper_->DeleteAppCacheGroup(
appcache_info_->manifest_url);
+ GetModel()->appcache_info_[origin_url_].erase(appcache_info_);
}
CookieTreeNode::DetailedInfo CookieTreeAppCacheNode::GetDetailedInfo() const {
return DetailedInfo(parent()->parent()->GetTitle(),
DetailedInfo::TYPE_APPCACHE,
- NULL, NULL, NULL, NULL, appcache_info_, NULL, NULL, NULL);
+ NULL, NULL, NULL, NULL, &*appcache_info_,
+ NULL, NULL, NULL);
}
///////////////////////////////////////////////////////////////////////////////
// CookieTreeDatabaseNode, public:
CookieTreeDatabaseNode::CookieTreeDatabaseNode(
- BrowsingDataDatabaseHelper::DatabaseInfo* database_info)
+ std::list<BrowsingDataDatabaseHelper::DatabaseInfo>::iterator database_info)
: CookieTreeNode(database_info->database_name.empty() ?
l10n_util::GetStringUTF16(IDS_COOKIES_WEB_DATABASE_UNNAMED_NAME) :
UTF8ToUTF16(database_info->database_name)),
@@ -169,19 +174,22 @@ CookieTreeDatabaseNode::~CookieTreeDatabaseNode() {}
void CookieTreeDatabaseNode::DeleteStoredObjects() {
GetModel()->database_helper_->DeleteDatabase(
database_info_->origin_identifier, database_info_->database_name);
+ GetModel()->database_info_list_.erase(database_info_);
}
CookieTreeNode::DetailedInfo CookieTreeDatabaseNode::GetDetailedInfo() const {
return DetailedInfo(parent()->parent()->GetTitle(),
DetailedInfo::TYPE_DATABASE,
- NULL, database_info_, NULL, NULL, NULL, NULL, NULL, NULL);
+ NULL, &*database_info_,
+ NULL, NULL, NULL, NULL, NULL, NULL);
}
///////////////////////////////////////////////////////////////////////////////
// CookieTreeLocalStorageNode, public:
CookieTreeLocalStorageNode::CookieTreeLocalStorageNode(
- BrowsingDataLocalStorageHelper::LocalStorageInfo* local_storage_info)
+ std::list<BrowsingDataLocalStorageHelper::LocalStorageInfo>::iterator
+ local_storage_info)
: CookieTreeNode(UTF8ToUTF16(
local_storage_info->origin.empty() ?
local_storage_info->database_identifier :
@@ -194,13 +202,14 @@ CookieTreeLocalStorageNode::~CookieTreeLocalStorageNode() {}
void CookieTreeLocalStorageNode::DeleteStoredObjects() {
GetModel()->local_storage_helper_->DeleteLocalStorageFile(
local_storage_info_->file_path);
+ GetModel()->local_storage_info_list_.erase(local_storage_info_);
}
CookieTreeNode::DetailedInfo
CookieTreeLocalStorageNode::GetDetailedInfo() const {
return DetailedInfo(parent()->parent()->GetTitle(),
DetailedInfo::TYPE_LOCAL_STORAGE,
- NULL, NULL, local_storage_info_, NULL, NULL, NULL, NULL,
+ NULL, NULL, &*local_storage_info_, NULL, NULL, NULL, NULL,
NULL);
}
@@ -208,7 +217,8 @@ CookieTreeLocalStorageNode::GetDetailedInfo() const {
// CookieTreeSessionStorageNode, public:
CookieTreeSessionStorageNode::CookieTreeSessionStorageNode(
- BrowsingDataLocalStorageHelper::LocalStorageInfo* session_storage_info)
+ std::list<BrowsingDataLocalStorageHelper::LocalStorageInfo>::iterator
+ session_storage_info)
: CookieTreeNode(UTF8ToUTF16(
session_storage_info->origin.empty() ?
session_storage_info->database_identifier :
@@ -218,11 +228,15 @@ CookieTreeSessionStorageNode::CookieTreeSessionStorageNode(
CookieTreeSessionStorageNode::~CookieTreeSessionStorageNode() {}
+void CookieTreeSessionStorageNode::DeleteStoredObjects() {
+ GetModel()->session_storage_info_list_.erase(session_storage_info_);
+}
+
CookieTreeNode::DetailedInfo
CookieTreeSessionStorageNode::GetDetailedInfo() const {
return DetailedInfo(parent()->parent()->GetTitle(),
DetailedInfo::TYPE_SESSION_STORAGE,
- NULL, NULL, NULL, session_storage_info_, NULL, NULL,
+ NULL, NULL, NULL, &*session_storage_info_, NULL, NULL,
NULL, NULL);
}
@@ -230,7 +244,8 @@ CookieTreeSessionStorageNode::GetDetailedInfo() const {
// CookieTreeIndexedDBNode, public:
CookieTreeIndexedDBNode::CookieTreeIndexedDBNode(
- BrowsingDataIndexedDBHelper::IndexedDBInfo* indexed_db_info)
+ std::list<BrowsingDataIndexedDBHelper::IndexedDBInfo>::iterator
+ indexed_db_info)
: CookieTreeNode(UTF8ToUTF16(
indexed_db_info->origin.empty() ?
indexed_db_info->database_identifier :
@@ -243,12 +258,13 @@ CookieTreeIndexedDBNode::~CookieTreeIndexedDBNode() {}
void CookieTreeIndexedDBNode::DeleteStoredObjects() {
GetModel()->indexed_db_helper_->DeleteIndexedDBFile(
indexed_db_info_->file_path);
+ GetModel()->indexed_db_info_list_.erase(indexed_db_info_);
}
CookieTreeNode::DetailedInfo CookieTreeIndexedDBNode::GetDetailedInfo() const {
return DetailedInfo(parent()->parent()->GetTitle(),
DetailedInfo::TYPE_INDEXED_DB,
- NULL, NULL, NULL, NULL, NULL, indexed_db_info_, NULL,
+ NULL, NULL, NULL, NULL, NULL, &*indexed_db_info_, NULL,
NULL);
}
@@ -256,7 +272,8 @@ CookieTreeNode::DetailedInfo CookieTreeIndexedDBNode::GetDetailedInfo() const {
// CookieTreeFileSystemNode, public:
CookieTreeFileSystemNode::CookieTreeFileSystemNode(
- BrowsingDataFileSystemHelper::FileSystemInfo* file_system_info)
+ std::list<BrowsingDataFileSystemHelper::FileSystemInfo>::iterator
+ file_system_info)
: CookieTreeNode(UTF8ToUTF16(
file_system_info->origin.spec())),
file_system_info_(file_system_info) {
@@ -267,12 +284,13 @@ CookieTreeFileSystemNode::~CookieTreeFileSystemNode() {}
void CookieTreeFileSystemNode::DeleteStoredObjects() {
GetModel()->file_system_helper_->DeleteFileSystemOrigin(
file_system_info_->origin);
+ GetModel()->file_system_info_list_.erase(file_system_info_);
}
CookieTreeNode::DetailedInfo CookieTreeFileSystemNode::GetDetailedInfo() const {
return DetailedInfo(parent()->parent()->GetTitle(),
DetailedInfo::TYPE_FILE_SYSTEM,
- NULL, NULL, NULL, NULL, NULL, NULL, file_system_info_,
+ NULL, NULL, NULL, NULL, NULL, NULL, &*file_system_info_,
NULL);
}
@@ -280,7 +298,7 @@ CookieTreeNode::DetailedInfo CookieTreeFileSystemNode::GetDetailedInfo() const {
// CookieTreeQuotaNode, public:
CookieTreeQuotaNode::CookieTreeQuotaNode(
- BrowsingDataQuotaHelper::QuotaInfo* quota_info)
+ std::list<BrowsingDataQuotaHelper::QuotaInfo>::iterator quota_info)
: CookieTreeNode(UTF8ToUTF16(quota_info->host)),
quota_info_(quota_info) {
}
@@ -289,12 +307,13 @@ CookieTreeQuotaNode::~CookieTreeQuotaNode() {}
void CookieTreeQuotaNode::DeleteStoredObjects() {
GetModel()->quota_helper_->DeleteQuotaHost(quota_info_->host);
+ GetModel()->quota_info_list_.erase(quota_info_);
}
CookieTreeNode::DetailedInfo CookieTreeQuotaNode::GetDetailedInfo() const {
return DetailedInfo(parent()->parent()->GetTitle(),
DetailedInfo::TYPE_QUOTA,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, quota_info_);
+ NULL, NULL, NULL, NULL, NULL, NULL, NULL, &*quota_info_);
}
///////////////////////////////////////////////////////////////////////////////
@@ -427,7 +446,7 @@ CookieTreeFileSystemsNode* CookieTreeOriginNode::GetOrCreateFileSystemsNode() {
}
CookieTreeQuotaNode* CookieTreeOriginNode::UpdateOrCreateQuotaNode(
- BrowsingDataQuotaHelper::QuotaInfo* quota_info) {
+ std::list<BrowsingDataQuotaHelper::QuotaInfo>::iterator quota_info) {
if (quota_child_)
return quota_child_;
quota_child_ = new CookieTreeQuotaNode(quota_info);
@@ -759,24 +778,39 @@ void CookiesTreeModel::RemoveCookiesTreeObserver(Observer* observer) {
}
void CookiesTreeModel::OnAppCacheModelInfoLoaded() {
- appcache_info_ = appcache_helper_->info_collection();
+ using appcache::AppCacheInfo;
+ using appcache::AppCacheInfoCollection;
+ using appcache::AppCacheInfoVector;
+ typedef std::map<GURL, AppCacheInfoVector> InfoByOrigin;
+
+ scoped_refptr<AppCacheInfoCollection> appcache_info =
+ appcache_helper_->info_collection();
+ if (!appcache_info || appcache_info->infos_by_origin.empty())
+ return;
+
+ for (InfoByOrigin::const_iterator origin =
+ appcache_info->infos_by_origin.begin();
+ origin != appcache_info->infos_by_origin.end(); ++origin) {
+ std::list<AppCacheInfo>& info_list = appcache_info_[origin->first];
+ info_list.insert(
+ info_list.begin(), origin->second.begin(), origin->second.end());
+ }
+
PopulateAppCacheInfoWithFilter(std::wstring());
}
void CookiesTreeModel::PopulateAppCacheInfoWithFilter(
const std::wstring& filter) {
using appcache::AppCacheInfo;
- using appcache::AppCacheInfoVector;
- typedef std::map<GURL, AppCacheInfoVector> InfoByOrigin;
+ typedef std::map<GURL, std::list<AppCacheInfo> > InfoByOrigin;
- if (!appcache_info_ || appcache_info_->infos_by_origin.empty())
+ if (appcache_info_.empty())
return;
CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot());
NotifyObserverBeginBatch();
- for (InfoByOrigin::const_iterator origin =
- appcache_info_->infos_by_origin.begin();
- origin != appcache_info_->infos_by_origin.end(); ++origin) {
+ for (InfoByOrigin::iterator origin = appcache_info_.begin();
+ origin != appcache_info_.end(); ++origin) {
std::wstring origin_node_name = UTF8ToWide(origin->first.host());
if (filter.empty() ||
(origin_node_name.find(filter) != std::wstring::npos)) {
@@ -785,10 +819,10 @@ void CookiesTreeModel::PopulateAppCacheInfoWithFilter(
CookieTreeAppCachesNode* appcaches_node =
origin_node->GetOrCreateAppCachesNode();
- for (AppCacheInfoVector::const_iterator info = origin->second.begin();
+ for (std::list<AppCacheInfo>::iterator info = origin->second.begin();
info != origin->second.end(); ++info) {
appcaches_node->AddAppCacheNode(
- new CookieTreeAppCacheNode(&(*info)));
+ new CookieTreeAppCacheNode(origin->first, info));
}
}
}
@@ -797,8 +831,10 @@ void CookiesTreeModel::PopulateAppCacheInfoWithFilter(
}
void CookiesTreeModel::OnCookiesModelInfoLoaded(
- const CookieList& cookie_list) {
- cookie_list_ = cookie_list;
+ const net::CookieList& cookie_list) {
+ cookie_list_.insert(cookie_list_.begin(),
+ cookie_list.begin(),
+ cookie_list.end());
PopulateCookieInfoWithFilter(std::wstring());
}
@@ -828,7 +864,7 @@ void CookiesTreeModel::PopulateCookieInfoWithFilter(
root->GetOrCreateOriginNode(source);
CookieTreeCookiesNode* cookies_node =
origin_node->GetOrCreateCookiesNode();
- CookieTreeCookieNode* new_cookie = new CookieTreeCookieNode(&*it);
+ CookieTreeCookieNode* new_cookie = new CookieTreeCookieNode(it);
cookies_node->AddCookieNode(new_cookie);
}
}
@@ -859,7 +895,7 @@ void CookiesTreeModel::PopulateDatabaseInfoWithFilter(
CookieTreeDatabasesNode* databases_node =
origin_node->GetOrCreateDatabasesNode();
databases_node->AddDatabaseNode(
- new CookieTreeDatabaseNode(&(*database_info)));
+ new CookieTreeDatabaseNode(database_info));
}
}
NotifyObserverTreeNodeChanged(root);
@@ -892,7 +928,7 @@ void CookiesTreeModel::PopulateLocalStorageInfoWithFilter(
CookieTreeLocalStoragesNode* local_storages_node =
origin_node->GetOrCreateLocalStoragesNode();
local_storages_node->AddLocalStorageNode(
- new CookieTreeLocalStorageNode(&(*local_storage_info)));
+ new CookieTreeLocalStorageNode(local_storage_info));
}
}
NotifyObserverTreeNodeChanged(root);
@@ -925,7 +961,7 @@ void CookiesTreeModel::PopulateSessionStorageInfoWithFilter(
CookieTreeSessionStoragesNode* session_storages_node =
origin_node->GetOrCreateSessionStoragesNode();
session_storages_node->AddSessionStorageNode(
- new CookieTreeSessionStorageNode(&(*session_storage_info)));
+ new CookieTreeSessionStorageNode(session_storage_info));
}
}
NotifyObserverTreeNodeChanged(root);
@@ -958,7 +994,7 @@ void CookiesTreeModel::PopulateIndexedDBInfoWithFilter(
CookieTreeIndexedDBsNode* indexed_dbs_node =
origin_node->GetOrCreateIndexedDBsNode();
indexed_dbs_node->AddIndexedDBNode(
- new CookieTreeIndexedDBNode(&(*indexed_db_info)));
+ new CookieTreeIndexedDBNode(indexed_db_info));
}
}
NotifyObserverTreeNodeChanged(root);
@@ -991,7 +1027,7 @@ void CookiesTreeModel::PopulateFileSystemInfoWithFilter(
CookieTreeFileSystemsNode* file_systems_node =
origin_node->GetOrCreateFileSystemsNode();
file_systems_node->AddFileSystemNode(
- new CookieTreeFileSystemNode(&(*file_system_info)));
+ new CookieTreeFileSystemNode(file_system_info));
}
}
NotifyObserverTreeNodeChanged(root);
@@ -1017,7 +1053,7 @@ void CookiesTreeModel::PopulateQuotaInfoWithFilter(
(UTF8ToWide(quota_info->host).find(filter) != std::wstring::npos)) {
CookieTreeOriginNode* origin_node =
root->GetOrCreateOriginNode(GURL("http://" + quota_info->host));
- origin_node->UpdateOrCreateQuotaNode(&*quota_info);
+ origin_node->UpdateOrCreateQuotaNode(quota_info);
}
}
NotifyObserverTreeNodeChanged(root);

Powered by Google App Engine
This is Rietveld 408576698