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); |