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

Side by Side 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: updates 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/cookies_tree_model.h ('k') | chrome/browser/cookies_tree_model_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/cookies_tree_model.h" 5 #include "chrome/browser/cookies_tree_model.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <functional> 8 #include <functional>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 if (parent()) 42 if (parent())
43 return parent()->GetModel(); 43 return parent()->GetModel();
44 else 44 else
45 return NULL; 45 return NULL;
46 } 46 }
47 47
48 /////////////////////////////////////////////////////////////////////////////// 48 ///////////////////////////////////////////////////////////////////////////////
49 // CookieTreeCookieNode, public: 49 // CookieTreeCookieNode, public:
50 50
51 CookieTreeCookieNode::CookieTreeCookieNode( 51 CookieTreeCookieNode::CookieTreeCookieNode(
52 net::CookieMonster::CanonicalCookie* cookie) 52 std::list<net::CookieMonster::CanonicalCookie>::iterator cookie)
53 : CookieTreeNode(UTF8ToUTF16(cookie->Name())), 53 : CookieTreeNode(UTF8ToUTF16(cookie->Name())),
54 cookie_(cookie) { 54 cookie_(cookie) {
55 } 55 }
56 56
57 CookieTreeCookieNode::~CookieTreeCookieNode() {} 57 CookieTreeCookieNode::~CookieTreeCookieNode() {}
58 58
59 void CookieTreeCookieNode::DeleteStoredObjects() { 59 void CookieTreeCookieNode::DeleteStoredObjects() {
60 // notify CookieMonster that we should delete this cookie 60 // notify CookieMonster that we should delete this cookie
61 // We have stored a copy of all the cookies in the model, and our model is
62 // never re-calculated. Thus, we just need to delete the nodes from our
63 // model, and tell CookieMonster to delete the cookies. We can keep the
64 // vector storing the cookies in-tact and not delete from there (that would
65 // invalidate our pointers), and the fact that it contains semi out-of-date
66 // data is not problematic as we don't re-build the model based on that.
67 GetModel()->cookie_helper_->DeleteCookie(*cookie_); 61 GetModel()->cookie_helper_->DeleteCookie(*cookie_);
62 GetModel()->cookie_list_.erase(cookie_);
68 } 63 }
69 64
70 CookieTreeNode::DetailedInfo CookieTreeCookieNode::GetDetailedInfo() const { 65 CookieTreeNode::DetailedInfo CookieTreeCookieNode::GetDetailedInfo() const {
71 return DetailedInfo(parent()->parent()->GetTitle(), 66 return DetailedInfo(parent()->parent()->GetTitle(),
72 DetailedInfo::TYPE_COOKIE, 67 DetailedInfo::TYPE_COOKIE,
73 cookie_, NULL, NULL, NULL, NULL, NULL, NULL, NULL); 68 &*cookie_, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
74 } 69 }
75 70
76 namespace { 71 namespace {
77 // comparison functor, for use in CookieTreeRootNode 72 // comparison functor, for use in CookieTreeRootNode
78 class OriginNodeComparator { 73 class OriginNodeComparator {
79 public: 74 public:
80 bool operator() (const CookieTreeNode* lhs, 75 bool operator() (const CookieTreeNode* lhs,
81 const CookieTreeNode* rhs) { 76 const CookieTreeNode* rhs) {
82 // We want to order by registry controlled domain, so we would get 77 // We want to order by registry controlled domain, so we would get
83 // google.com, ad.google.com, www.google.com, 78 // google.com, ad.google.com, www.google.com,
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 return retval; 124 return retval;
130 } 125 }
131 }; 126 };
132 127
133 } // namespace 128 } // namespace
134 129
135 /////////////////////////////////////////////////////////////////////////////// 130 ///////////////////////////////////////////////////////////////////////////////
136 // CookieTreeAppCacheNode, public: 131 // CookieTreeAppCacheNode, public:
137 132
138 CookieTreeAppCacheNode::CookieTreeAppCacheNode( 133 CookieTreeAppCacheNode::CookieTreeAppCacheNode(
139 const appcache::AppCacheInfo* appcache_info) 134 const GURL& origin_url,
135 std::list<appcache::AppCacheInfo>::iterator appcache_info)
140 : CookieTreeNode(UTF8ToUTF16(appcache_info->manifest_url.spec())), 136 : CookieTreeNode(UTF8ToUTF16(appcache_info->manifest_url.spec())),
137 origin_url_(origin_url),
141 appcache_info_(appcache_info) { 138 appcache_info_(appcache_info) {
142 } 139 }
143 140
141 CookieTreeAppCacheNode::~CookieTreeAppCacheNode() {
142 }
143
144 void CookieTreeAppCacheNode::DeleteStoredObjects() { 144 void CookieTreeAppCacheNode::DeleteStoredObjects() {
145 DCHECK(GetModel()->appcache_helper_); 145 DCHECK(GetModel()->appcache_helper_);
146 GetModel()->appcache_helper_->DeleteAppCacheGroup( 146 GetModel()->appcache_helper_->DeleteAppCacheGroup(
147 appcache_info_->manifest_url); 147 appcache_info_->manifest_url);
148 GetModel()->appcache_info_[origin_url_].erase(appcache_info_);
148 } 149 }
149 150
150 CookieTreeNode::DetailedInfo CookieTreeAppCacheNode::GetDetailedInfo() const { 151 CookieTreeNode::DetailedInfo CookieTreeAppCacheNode::GetDetailedInfo() const {
151 return DetailedInfo(parent()->parent()->GetTitle(), 152 return DetailedInfo(parent()->parent()->GetTitle(),
152 DetailedInfo::TYPE_APPCACHE, 153 DetailedInfo::TYPE_APPCACHE,
153 NULL, NULL, NULL, NULL, appcache_info_, NULL, NULL, NULL); 154 NULL, NULL, NULL, NULL, &*appcache_info_,
155 NULL, NULL, NULL);
154 } 156 }
155 157
156 /////////////////////////////////////////////////////////////////////////////// 158 ///////////////////////////////////////////////////////////////////////////////
157 // CookieTreeDatabaseNode, public: 159 // CookieTreeDatabaseNode, public:
158 160
159 CookieTreeDatabaseNode::CookieTreeDatabaseNode( 161 CookieTreeDatabaseNode::CookieTreeDatabaseNode(
160 BrowsingDataDatabaseHelper::DatabaseInfo* database_info) 162 std::list<BrowsingDataDatabaseHelper::DatabaseInfo>::iterator database_info)
161 : CookieTreeNode(database_info->database_name.empty() ? 163 : CookieTreeNode(database_info->database_name.empty() ?
162 l10n_util::GetStringUTF16(IDS_COOKIES_WEB_DATABASE_UNNAMED_NAME) : 164 l10n_util::GetStringUTF16(IDS_COOKIES_WEB_DATABASE_UNNAMED_NAME) :
163 UTF8ToUTF16(database_info->database_name)), 165 UTF8ToUTF16(database_info->database_name)),
164 database_info_(database_info) { 166 database_info_(database_info) {
165 } 167 }
166 168
167 CookieTreeDatabaseNode::~CookieTreeDatabaseNode() {} 169 CookieTreeDatabaseNode::~CookieTreeDatabaseNode() {}
168 170
169 void CookieTreeDatabaseNode::DeleteStoredObjects() { 171 void CookieTreeDatabaseNode::DeleteStoredObjects() {
170 GetModel()->database_helper_->DeleteDatabase( 172 GetModel()->database_helper_->DeleteDatabase(
171 database_info_->origin_identifier, database_info_->database_name); 173 database_info_->origin_identifier, database_info_->database_name);
174 GetModel()->database_info_list_.erase(database_info_);
172 } 175 }
173 176
174 CookieTreeNode::DetailedInfo CookieTreeDatabaseNode::GetDetailedInfo() const { 177 CookieTreeNode::DetailedInfo CookieTreeDatabaseNode::GetDetailedInfo() const {
175 return DetailedInfo(parent()->parent()->GetTitle(), 178 return DetailedInfo(parent()->parent()->GetTitle(),
176 DetailedInfo::TYPE_DATABASE, 179 DetailedInfo::TYPE_DATABASE,
177 NULL, database_info_, NULL, NULL, NULL, NULL, NULL, NULL); 180 NULL, &*database_info_,
181 NULL, NULL, NULL, NULL, NULL, NULL);
178 } 182 }
179 183
180 /////////////////////////////////////////////////////////////////////////////// 184 ///////////////////////////////////////////////////////////////////////////////
181 // CookieTreeLocalStorageNode, public: 185 // CookieTreeLocalStorageNode, public:
182 186
183 CookieTreeLocalStorageNode::CookieTreeLocalStorageNode( 187 CookieTreeLocalStorageNode::CookieTreeLocalStorageNode(
184 BrowsingDataLocalStorageHelper::LocalStorageInfo* local_storage_info) 188 std::list<BrowsingDataLocalStorageHelper::LocalStorageInfo>::iterator
189 local_storage_info)
185 : CookieTreeNode(UTF8ToUTF16( 190 : CookieTreeNode(UTF8ToUTF16(
186 local_storage_info->origin.empty() ? 191 local_storage_info->origin.empty() ?
187 local_storage_info->database_identifier : 192 local_storage_info->database_identifier :
188 local_storage_info->origin)), 193 local_storage_info->origin)),
189 local_storage_info_(local_storage_info) { 194 local_storage_info_(local_storage_info) {
190 } 195 }
191 196
192 CookieTreeLocalStorageNode::~CookieTreeLocalStorageNode() {} 197 CookieTreeLocalStorageNode::~CookieTreeLocalStorageNode() {}
193 198
194 void CookieTreeLocalStorageNode::DeleteStoredObjects() { 199 void CookieTreeLocalStorageNode::DeleteStoredObjects() {
195 GetModel()->local_storage_helper_->DeleteLocalStorageFile( 200 GetModel()->local_storage_helper_->DeleteLocalStorageFile(
196 local_storage_info_->file_path); 201 local_storage_info_->file_path);
202 GetModel()->local_storage_info_list_.erase(local_storage_info_);
197 } 203 }
198 204
199 CookieTreeNode::DetailedInfo 205 CookieTreeNode::DetailedInfo
200 CookieTreeLocalStorageNode::GetDetailedInfo() const { 206 CookieTreeLocalStorageNode::GetDetailedInfo() const {
201 return DetailedInfo(parent()->parent()->GetTitle(), 207 return DetailedInfo(parent()->parent()->GetTitle(),
202 DetailedInfo::TYPE_LOCAL_STORAGE, 208 DetailedInfo::TYPE_LOCAL_STORAGE,
203 NULL, NULL, local_storage_info_, NULL, NULL, NULL, NULL, 209 NULL, NULL, &*local_storage_info_, NULL, NULL, NULL, NULL,
204 NULL); 210 NULL);
205 } 211 }
206 212
207 /////////////////////////////////////////////////////////////////////////////// 213 ///////////////////////////////////////////////////////////////////////////////
208 // CookieTreeSessionStorageNode, public: 214 // CookieTreeSessionStorageNode, public:
209 215
210 CookieTreeSessionStorageNode::CookieTreeSessionStorageNode( 216 CookieTreeSessionStorageNode::CookieTreeSessionStorageNode(
211 BrowsingDataLocalStorageHelper::LocalStorageInfo* session_storage_info) 217 std::list<BrowsingDataLocalStorageHelper::LocalStorageInfo>::iterator
218 session_storage_info)
212 : CookieTreeNode(UTF8ToUTF16( 219 : CookieTreeNode(UTF8ToUTF16(
213 session_storage_info->origin.empty() ? 220 session_storage_info->origin.empty() ?
214 session_storage_info->database_identifier : 221 session_storage_info->database_identifier :
215 session_storage_info->origin)), 222 session_storage_info->origin)),
216 session_storage_info_(session_storage_info) { 223 session_storage_info_(session_storage_info) {
217 } 224 }
218 225
219 CookieTreeSessionStorageNode::~CookieTreeSessionStorageNode() {} 226 CookieTreeSessionStorageNode::~CookieTreeSessionStorageNode() {}
220 227
228 void CookieTreeSessionStorageNode::DeleteStoredObjects() {
229 GetModel()->session_storage_info_list_.erase(session_storage_info_);
230 }
231
221 CookieTreeNode::DetailedInfo 232 CookieTreeNode::DetailedInfo
222 CookieTreeSessionStorageNode::GetDetailedInfo() const { 233 CookieTreeSessionStorageNode::GetDetailedInfo() const {
223 return DetailedInfo(parent()->parent()->GetTitle(), 234 return DetailedInfo(parent()->parent()->GetTitle(),
224 DetailedInfo::TYPE_SESSION_STORAGE, 235 DetailedInfo::TYPE_SESSION_STORAGE,
225 NULL, NULL, NULL, session_storage_info_, NULL, NULL, 236 NULL, NULL, NULL, &*session_storage_info_, NULL, NULL,
226 NULL, NULL); 237 NULL, NULL);
227 } 238 }
228 239
229 /////////////////////////////////////////////////////////////////////////////// 240 ///////////////////////////////////////////////////////////////////////////////
230 // CookieTreeIndexedDBNode, public: 241 // CookieTreeIndexedDBNode, public:
231 242
232 CookieTreeIndexedDBNode::CookieTreeIndexedDBNode( 243 CookieTreeIndexedDBNode::CookieTreeIndexedDBNode(
233 BrowsingDataIndexedDBHelper::IndexedDBInfo* indexed_db_info) 244 std::list<BrowsingDataIndexedDBHelper::IndexedDBInfo>::iterator
245 indexed_db_info)
234 : CookieTreeNode(UTF8ToUTF16( 246 : CookieTreeNode(UTF8ToUTF16(
235 indexed_db_info->origin.empty() ? 247 indexed_db_info->origin.empty() ?
236 indexed_db_info->database_identifier : 248 indexed_db_info->database_identifier :
237 indexed_db_info->origin)), 249 indexed_db_info->origin)),
238 indexed_db_info_(indexed_db_info) { 250 indexed_db_info_(indexed_db_info) {
239 } 251 }
240 252
241 CookieTreeIndexedDBNode::~CookieTreeIndexedDBNode() {} 253 CookieTreeIndexedDBNode::~CookieTreeIndexedDBNode() {}
242 254
243 void CookieTreeIndexedDBNode::DeleteStoredObjects() { 255 void CookieTreeIndexedDBNode::DeleteStoredObjects() {
244 GetModel()->indexed_db_helper_->DeleteIndexedDBFile( 256 GetModel()->indexed_db_helper_->DeleteIndexedDBFile(
245 indexed_db_info_->file_path); 257 indexed_db_info_->file_path);
258 GetModel()->indexed_db_info_list_.erase(indexed_db_info_);
246 } 259 }
247 260
248 CookieTreeNode::DetailedInfo CookieTreeIndexedDBNode::GetDetailedInfo() const { 261 CookieTreeNode::DetailedInfo CookieTreeIndexedDBNode::GetDetailedInfo() const {
249 return DetailedInfo(parent()->parent()->GetTitle(), 262 return DetailedInfo(parent()->parent()->GetTitle(),
250 DetailedInfo::TYPE_INDEXED_DB, 263 DetailedInfo::TYPE_INDEXED_DB,
251 NULL, NULL, NULL, NULL, NULL, indexed_db_info_, NULL, 264 NULL, NULL, NULL, NULL, NULL, &*indexed_db_info_, NULL,
252 NULL); 265 NULL);
253 } 266 }
254 267
255 /////////////////////////////////////////////////////////////////////////////// 268 ///////////////////////////////////////////////////////////////////////////////
256 // CookieTreeFileSystemNode, public: 269 // CookieTreeFileSystemNode, public:
257 270
258 CookieTreeFileSystemNode::CookieTreeFileSystemNode( 271 CookieTreeFileSystemNode::CookieTreeFileSystemNode(
259 BrowsingDataFileSystemHelper::FileSystemInfo* file_system_info) 272 std::list<BrowsingDataFileSystemHelper::FileSystemInfo>::iterator
273 file_system_info)
260 : CookieTreeNode(UTF8ToUTF16( 274 : CookieTreeNode(UTF8ToUTF16(
261 file_system_info->origin.spec())), 275 file_system_info->origin.spec())),
262 file_system_info_(file_system_info) { 276 file_system_info_(file_system_info) {
263 } 277 }
264 278
265 CookieTreeFileSystemNode::~CookieTreeFileSystemNode() {} 279 CookieTreeFileSystemNode::~CookieTreeFileSystemNode() {}
266 280
267 void CookieTreeFileSystemNode::DeleteStoredObjects() { 281 void CookieTreeFileSystemNode::DeleteStoredObjects() {
268 GetModel()->file_system_helper_->DeleteFileSystemOrigin( 282 GetModel()->file_system_helper_->DeleteFileSystemOrigin(
269 file_system_info_->origin); 283 file_system_info_->origin);
284 GetModel()->file_system_info_list_.erase(file_system_info_);
270 } 285 }
271 286
272 CookieTreeNode::DetailedInfo CookieTreeFileSystemNode::GetDetailedInfo() const { 287 CookieTreeNode::DetailedInfo CookieTreeFileSystemNode::GetDetailedInfo() const {
273 return DetailedInfo(parent()->parent()->GetTitle(), 288 return DetailedInfo(parent()->parent()->GetTitle(),
274 DetailedInfo::TYPE_FILE_SYSTEM, 289 DetailedInfo::TYPE_FILE_SYSTEM,
275 NULL, NULL, NULL, NULL, NULL, NULL, file_system_info_, 290 NULL, NULL, NULL, NULL, NULL, NULL, &*file_system_info_,
276 NULL); 291 NULL);
277 } 292 }
278 293
279 /////////////////////////////////////////////////////////////////////////////// 294 ///////////////////////////////////////////////////////////////////////////////
280 // CookieTreeQuotaNode, public: 295 // CookieTreeQuotaNode, public:
281 296
282 CookieTreeQuotaNode::CookieTreeQuotaNode( 297 CookieTreeQuotaNode::CookieTreeQuotaNode(
283 BrowsingDataQuotaHelper::QuotaInfo* quota_info) 298 std::list<BrowsingDataQuotaHelper::QuotaInfo>::iterator quota_info)
284 : CookieTreeNode(UTF8ToUTF16(quota_info->host)), 299 : CookieTreeNode(UTF8ToUTF16(quota_info->host)),
285 quota_info_(quota_info) { 300 quota_info_(quota_info) {
286 } 301 }
287 302
288 CookieTreeQuotaNode::~CookieTreeQuotaNode() {} 303 CookieTreeQuotaNode::~CookieTreeQuotaNode() {}
289 304
290 void CookieTreeQuotaNode::DeleteStoredObjects() { 305 void CookieTreeQuotaNode::DeleteStoredObjects() {
291 GetModel()->quota_helper_->DeleteQuotaHost(quota_info_->host); 306 GetModel()->quota_helper_->DeleteQuotaHost(quota_info_->host);
307 GetModel()->quota_info_list_.erase(quota_info_);
292 } 308 }
293 309
294 CookieTreeNode::DetailedInfo CookieTreeQuotaNode::GetDetailedInfo() const { 310 CookieTreeNode::DetailedInfo CookieTreeQuotaNode::GetDetailedInfo() const {
295 return DetailedInfo(parent()->parent()->GetTitle(), 311 return DetailedInfo(parent()->parent()->GetTitle(),
296 DetailedInfo::TYPE_QUOTA, 312 DetailedInfo::TYPE_QUOTA,
297 NULL, NULL, NULL, NULL, NULL, NULL, NULL, quota_info_); 313 NULL, NULL, NULL, NULL, NULL, NULL, NULL, &*quota_info_);
298 } 314 }
299 315
300 /////////////////////////////////////////////////////////////////////////////// 316 ///////////////////////////////////////////////////////////////////////////////
301 // CookieTreeRootNode, public: 317 // CookieTreeRootNode, public:
302 318
303 CookieTreeRootNode::CookieTreeRootNode(CookiesTreeModel* model) 319 CookieTreeRootNode::CookieTreeRootNode(CookiesTreeModel* model)
304 : model_(model) { 320 : model_(model) {
305 } 321 }
306 322
307 CookieTreeRootNode::~CookieTreeRootNode() {} 323 CookieTreeRootNode::~CookieTreeRootNode() {}
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
420 436
421 CookieTreeFileSystemsNode* CookieTreeOriginNode::GetOrCreateFileSystemsNode() { 437 CookieTreeFileSystemsNode* CookieTreeOriginNode::GetOrCreateFileSystemsNode() {
422 if (file_systems_child_) 438 if (file_systems_child_)
423 return file_systems_child_; 439 return file_systems_child_;
424 file_systems_child_ = new CookieTreeFileSystemsNode; 440 file_systems_child_ = new CookieTreeFileSystemsNode;
425 AddChildSortedByTitle(file_systems_child_); 441 AddChildSortedByTitle(file_systems_child_);
426 return file_systems_child_; 442 return file_systems_child_;
427 } 443 }
428 444
429 CookieTreeQuotaNode* CookieTreeOriginNode::UpdateOrCreateQuotaNode( 445 CookieTreeQuotaNode* CookieTreeOriginNode::UpdateOrCreateQuotaNode(
430 BrowsingDataQuotaHelper::QuotaInfo* quota_info) { 446 std::list<BrowsingDataQuotaHelper::QuotaInfo>::iterator quota_info) {
431 if (quota_child_) 447 if (quota_child_)
432 return quota_child_; 448 return quota_child_;
433 quota_child_ = new CookieTreeQuotaNode(quota_info); 449 quota_child_ = new CookieTreeQuotaNode(quota_info);
434 AddChildSortedByTitle(quota_child_); 450 AddChildSortedByTitle(quota_child_);
435 return quota_child_; 451 return quota_child_;
436 } 452 }
437 453
438 void CookieTreeOriginNode::CreateContentException( 454 void CookieTreeOriginNode::CreateContentException(
439 HostContentSettingsMap* content_settings, ContentSetting setting) const { 455 HostContentSettingsMap* content_settings, ContentSetting setting) const {
440 if (CanCreateContentException()) { 456 if (CanCreateContentException()) {
(...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after
752 ui::TreeNodeModel<CookieTreeNode>::AddObserver(observer); 768 ui::TreeNodeModel<CookieTreeNode>::AddObserver(observer);
753 } 769 }
754 770
755 void CookiesTreeModel::RemoveCookiesTreeObserver(Observer* observer) { 771 void CookiesTreeModel::RemoveCookiesTreeObserver(Observer* observer) {
756 cookies_observer_list_.RemoveObserver(observer); 772 cookies_observer_list_.RemoveObserver(observer);
757 // Call super so that TreeNodeModel doesn't have dead pointers. 773 // Call super so that TreeNodeModel doesn't have dead pointers.
758 ui::TreeNodeModel<CookieTreeNode>::RemoveObserver(observer); 774 ui::TreeNodeModel<CookieTreeNode>::RemoveObserver(observer);
759 } 775 }
760 776
761 void CookiesTreeModel::OnAppCacheModelInfoLoaded() { 777 void CookiesTreeModel::OnAppCacheModelInfoLoaded() {
762 appcache_info_ = appcache_helper_->info_collection(); 778 using appcache::AppCacheInfo;
779 using appcache::AppCacheInfoCollection;
780 using appcache::AppCacheInfoVector;
781 typedef std::map<GURL, AppCacheInfoVector> InfoByOrigin;
782
783 scoped_refptr<AppCacheInfoCollection> appcache_info =
784 appcache_helper_->info_collection();
785 if (!appcache_info || appcache_info->infos_by_origin.empty())
786 return;
787
788 for (InfoByOrigin::const_iterator origin =
789 appcache_info->infos_by_origin.begin();
790 origin != appcache_info->infos_by_origin.end(); ++origin) {
791 std::list<AppCacheInfo>& info_list = appcache_info_[origin->first];
792 info_list.insert(
793 info_list.begin(), origin->second.begin(), origin->second.end());
794 }
795
763 PopulateAppCacheInfoWithFilter(std::wstring()); 796 PopulateAppCacheInfoWithFilter(std::wstring());
764 } 797 }
765 798
766 void CookiesTreeModel::PopulateAppCacheInfoWithFilter( 799 void CookiesTreeModel::PopulateAppCacheInfoWithFilter(
767 const std::wstring& filter) { 800 const std::wstring& filter) {
768 using appcache::AppCacheInfo; 801 using appcache::AppCacheInfo;
769 using appcache::AppCacheInfoVector; 802 typedef std::map<GURL, std::list<AppCacheInfo> > InfoByOrigin;
770 typedef std::map<GURL, AppCacheInfoVector> InfoByOrigin;
771 803
772 if (!appcache_info_ || appcache_info_->infos_by_origin.empty()) 804 if (appcache_info_.empty())
773 return; 805 return;
774 806
775 CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot()); 807 CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot());
776 NotifyObserverBeginBatch(); 808 NotifyObserverBeginBatch();
777 for (InfoByOrigin::const_iterator origin = 809 for (InfoByOrigin::iterator origin = appcache_info_.begin();
778 appcache_info_->infos_by_origin.begin(); 810 origin != appcache_info_.end(); ++origin) {
779 origin != appcache_info_->infos_by_origin.end(); ++origin) {
780 std::wstring origin_node_name = UTF8ToWide(origin->first.host()); 811 std::wstring origin_node_name = UTF8ToWide(origin->first.host());
781 if (filter.empty() || 812 if (filter.empty() ||
782 (origin_node_name.find(filter) != std::wstring::npos)) { 813 (origin_node_name.find(filter) != std::wstring::npos)) {
783 CookieTreeOriginNode* origin_node = 814 CookieTreeOriginNode* origin_node =
784 root->GetOrCreateOriginNode(origin->first); 815 root->GetOrCreateOriginNode(origin->first);
785 CookieTreeAppCachesNode* appcaches_node = 816 CookieTreeAppCachesNode* appcaches_node =
786 origin_node->GetOrCreateAppCachesNode(); 817 origin_node->GetOrCreateAppCachesNode();
787 818
788 for (AppCacheInfoVector::const_iterator info = origin->second.begin(); 819 for (std::list<AppCacheInfo>::iterator info = origin->second.begin();
789 info != origin->second.end(); ++info) { 820 info != origin->second.end(); ++info) {
790 appcaches_node->AddAppCacheNode( 821 appcaches_node->AddAppCacheNode(
791 new CookieTreeAppCacheNode(&(*info))); 822 new CookieTreeAppCacheNode(origin->first, info));
792 } 823 }
793 } 824 }
794 } 825 }
795 NotifyObserverTreeNodeChanged(root); 826 NotifyObserverTreeNodeChanged(root);
796 NotifyObserverEndBatch(); 827 NotifyObserverEndBatch();
797 } 828 }
798 829
799 void CookiesTreeModel::OnCookiesModelInfoLoaded( 830 void CookiesTreeModel::OnCookiesModelInfoLoaded(
800 const CookieList& cookie_list) { 831 const net::CookieList& cookie_list) {
801 cookie_list_ = cookie_list; 832 cookie_list_.insert(cookie_list_.begin(),
833 cookie_list.begin(),
834 cookie_list.end());
802 PopulateCookieInfoWithFilter(std::wstring()); 835 PopulateCookieInfoWithFilter(std::wstring());
803 } 836 }
804 837
805 void CookiesTreeModel::PopulateCookieInfoWithFilter( 838 void CookiesTreeModel::PopulateCookieInfoWithFilter(
806 const std::wstring& filter) { 839 const std::wstring& filter) {
807 // mmargh mmargh mmargh! delicious! 840 // mmargh mmargh mmargh! delicious!
808 841
809 CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot()); 842 CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot());
810 for (CookieList::iterator it = cookie_list_.begin(); 843 for (CookieList::iterator it = cookie_list_.begin();
811 it != cookie_list_.end(); ++it) { 844 it != cookie_list_.end(); ++it) {
812 std::string source_string = it->Source(); 845 std::string source_string = it->Source();
813 if (source_string.empty() || !use_cookie_source_) { 846 if (source_string.empty() || !use_cookie_source_) {
814 std::string domain = it->Domain(); 847 std::string domain = it->Domain();
815 if (domain.length() > 1 && domain[0] == '.') 848 if (domain.length() > 1 && domain[0] == '.')
816 domain = domain.substr(1); 849 domain = domain.substr(1);
817 850
818 // We treat secure cookies just the same as normal ones. 851 // We treat secure cookies just the same as normal ones.
819 source_string = std::string(chrome::kHttpScheme) + 852 source_string = std::string(chrome::kHttpScheme) +
820 chrome::kStandardSchemeSeparator + domain + "/"; 853 chrome::kStandardSchemeSeparator + domain + "/";
821 } 854 }
822 855
823 GURL source(source_string); 856 GURL source(source_string);
824 if (!filter.size() || 857 if (!filter.size() ||
825 (CookieTreeOriginNode::TitleForUrl(source).find(filter) != 858 (CookieTreeOriginNode::TitleForUrl(source).find(filter) !=
826 std::string::npos)) { 859 std::string::npos)) {
827 CookieTreeOriginNode* origin_node = 860 CookieTreeOriginNode* origin_node =
828 root->GetOrCreateOriginNode(source); 861 root->GetOrCreateOriginNode(source);
829 CookieTreeCookiesNode* cookies_node = 862 CookieTreeCookiesNode* cookies_node =
830 origin_node->GetOrCreateCookiesNode(); 863 origin_node->GetOrCreateCookiesNode();
831 CookieTreeCookieNode* new_cookie = new CookieTreeCookieNode(&*it); 864 CookieTreeCookieNode* new_cookie = new CookieTreeCookieNode(it);
832 cookies_node->AddCookieNode(new_cookie); 865 cookies_node->AddCookieNode(new_cookie);
833 } 866 }
834 } 867 }
835 } 868 }
836 869
837 void CookiesTreeModel::OnDatabaseModelInfoLoaded( 870 void CookiesTreeModel::OnDatabaseModelInfoLoaded(
838 const DatabaseInfoList& database_info) { 871 const DatabaseInfoList& database_info) {
839 database_info_list_ = database_info; 872 database_info_list_ = database_info;
840 PopulateDatabaseInfoWithFilter(std::wstring()); 873 PopulateDatabaseInfoWithFilter(std::wstring());
841 } 874 }
(...skipping 10 matching lines...) Expand all
852 GURL origin(database_info->origin); 885 GURL origin(database_info->origin);
853 886
854 if (!filter.size() || 887 if (!filter.size() ||
855 (CookieTreeOriginNode::TitleForUrl(origin).find(filter) != 888 (CookieTreeOriginNode::TitleForUrl(origin).find(filter) !=
856 std::wstring::npos)) { 889 std::wstring::npos)) {
857 CookieTreeOriginNode* origin_node = 890 CookieTreeOriginNode* origin_node =
858 root->GetOrCreateOriginNode(origin); 891 root->GetOrCreateOriginNode(origin);
859 CookieTreeDatabasesNode* databases_node = 892 CookieTreeDatabasesNode* databases_node =
860 origin_node->GetOrCreateDatabasesNode(); 893 origin_node->GetOrCreateDatabasesNode();
861 databases_node->AddDatabaseNode( 894 databases_node->AddDatabaseNode(
862 new CookieTreeDatabaseNode(&(*database_info))); 895 new CookieTreeDatabaseNode(database_info));
863 } 896 }
864 } 897 }
865 NotifyObserverTreeNodeChanged(root); 898 NotifyObserverTreeNodeChanged(root);
866 NotifyObserverEndBatch(); 899 NotifyObserverEndBatch();
867 } 900 }
868 901
869 void CookiesTreeModel::OnLocalStorageModelInfoLoaded( 902 void CookiesTreeModel::OnLocalStorageModelInfoLoaded(
870 const LocalStorageInfoList& local_storage_info) { 903 const LocalStorageInfoList& local_storage_info) {
871 local_storage_info_list_ = local_storage_info; 904 local_storage_info_list_ = local_storage_info;
872 PopulateLocalStorageInfoWithFilter(std::wstring()); 905 PopulateLocalStorageInfoWithFilter(std::wstring());
(...skipping 12 matching lines...) Expand all
885 GURL origin(local_storage_info->origin); 918 GURL origin(local_storage_info->origin);
886 919
887 if (!filter.size() || 920 if (!filter.size() ||
888 (CookieTreeOriginNode::TitleForUrl(origin).find(filter) != 921 (CookieTreeOriginNode::TitleForUrl(origin).find(filter) !=
889 std::wstring::npos)) { 922 std::wstring::npos)) {
890 CookieTreeOriginNode* origin_node = 923 CookieTreeOriginNode* origin_node =
891 root->GetOrCreateOriginNode(origin); 924 root->GetOrCreateOriginNode(origin);
892 CookieTreeLocalStoragesNode* local_storages_node = 925 CookieTreeLocalStoragesNode* local_storages_node =
893 origin_node->GetOrCreateLocalStoragesNode(); 926 origin_node->GetOrCreateLocalStoragesNode();
894 local_storages_node->AddLocalStorageNode( 927 local_storages_node->AddLocalStorageNode(
895 new CookieTreeLocalStorageNode(&(*local_storage_info))); 928 new CookieTreeLocalStorageNode(local_storage_info));
896 } 929 }
897 } 930 }
898 NotifyObserverTreeNodeChanged(root); 931 NotifyObserverTreeNodeChanged(root);
899 NotifyObserverEndBatch(); 932 NotifyObserverEndBatch();
900 } 933 }
901 934
902 void CookiesTreeModel::OnSessionStorageModelInfoLoaded( 935 void CookiesTreeModel::OnSessionStorageModelInfoLoaded(
903 const LocalStorageInfoList& session_storage_info) { 936 const LocalStorageInfoList& session_storage_info) {
904 session_storage_info_list_ = session_storage_info; 937 session_storage_info_list_ = session_storage_info;
905 PopulateSessionStorageInfoWithFilter(std::wstring()); 938 PopulateSessionStorageInfoWithFilter(std::wstring());
(...skipping 12 matching lines...) Expand all
918 GURL origin(session_storage_info->origin); 951 GURL origin(session_storage_info->origin);
919 952
920 if (!filter.size() || 953 if (!filter.size() ||
921 (CookieTreeOriginNode::TitleForUrl(origin).find(filter) != 954 (CookieTreeOriginNode::TitleForUrl(origin).find(filter) !=
922 std::wstring::npos)) { 955 std::wstring::npos)) {
923 CookieTreeOriginNode* origin_node = 956 CookieTreeOriginNode* origin_node =
924 root->GetOrCreateOriginNode(origin); 957 root->GetOrCreateOriginNode(origin);
925 CookieTreeSessionStoragesNode* session_storages_node = 958 CookieTreeSessionStoragesNode* session_storages_node =
926 origin_node->GetOrCreateSessionStoragesNode(); 959 origin_node->GetOrCreateSessionStoragesNode();
927 session_storages_node->AddSessionStorageNode( 960 session_storages_node->AddSessionStorageNode(
928 new CookieTreeSessionStorageNode(&(*session_storage_info))); 961 new CookieTreeSessionStorageNode(session_storage_info));
929 } 962 }
930 } 963 }
931 NotifyObserverTreeNodeChanged(root); 964 NotifyObserverTreeNodeChanged(root);
932 NotifyObserverEndBatch(); 965 NotifyObserverEndBatch();
933 } 966 }
934 967
935 void CookiesTreeModel::OnIndexedDBModelInfoLoaded( 968 void CookiesTreeModel::OnIndexedDBModelInfoLoaded(
936 const IndexedDBInfoList& indexed_db_info) { 969 const IndexedDBInfoList& indexed_db_info) {
937 indexed_db_info_list_ = indexed_db_info; 970 indexed_db_info_list_ = indexed_db_info;
938 PopulateIndexedDBInfoWithFilter(std::wstring()); 971 PopulateIndexedDBInfoWithFilter(std::wstring());
(...skipping 12 matching lines...) Expand all
951 GURL origin(indexed_db_info->origin); 984 GURL origin(indexed_db_info->origin);
952 985
953 if (!filter.size() || 986 if (!filter.size() ||
954 (CookieTreeOriginNode::TitleForUrl(origin).find(filter) != 987 (CookieTreeOriginNode::TitleForUrl(origin).find(filter) !=
955 std::wstring::npos)) { 988 std::wstring::npos)) {
956 CookieTreeOriginNode* origin_node = 989 CookieTreeOriginNode* origin_node =
957 root->GetOrCreateOriginNode(origin); 990 root->GetOrCreateOriginNode(origin);
958 CookieTreeIndexedDBsNode* indexed_dbs_node = 991 CookieTreeIndexedDBsNode* indexed_dbs_node =
959 origin_node->GetOrCreateIndexedDBsNode(); 992 origin_node->GetOrCreateIndexedDBsNode();
960 indexed_dbs_node->AddIndexedDBNode( 993 indexed_dbs_node->AddIndexedDBNode(
961 new CookieTreeIndexedDBNode(&(*indexed_db_info))); 994 new CookieTreeIndexedDBNode(indexed_db_info));
962 } 995 }
963 } 996 }
964 NotifyObserverTreeNodeChanged(root); 997 NotifyObserverTreeNodeChanged(root);
965 NotifyObserverEndBatch(); 998 NotifyObserverEndBatch();
966 } 999 }
967 1000
968 void CookiesTreeModel::OnFileSystemModelInfoLoaded( 1001 void CookiesTreeModel::OnFileSystemModelInfoLoaded(
969 const FileSystemInfoList& file_system_info) { 1002 const FileSystemInfoList& file_system_info) {
970 file_system_info_list_ = file_system_info; 1003 file_system_info_list_ = file_system_info;
971 PopulateFileSystemInfoWithFilter(std::wstring()); 1004 PopulateFileSystemInfoWithFilter(std::wstring());
(...skipping 12 matching lines...) Expand all
984 GURL origin(file_system_info->origin); 1017 GURL origin(file_system_info->origin);
985 1018
986 if (!filter.size() || 1019 if (!filter.size() ||
987 (CookieTreeOriginNode::TitleForUrl(origin).find(filter) != 1020 (CookieTreeOriginNode::TitleForUrl(origin).find(filter) !=
988 std::wstring::npos)) { 1021 std::wstring::npos)) {
989 CookieTreeOriginNode* origin_node = 1022 CookieTreeOriginNode* origin_node =
990 root->GetOrCreateOriginNode(origin); 1023 root->GetOrCreateOriginNode(origin);
991 CookieTreeFileSystemsNode* file_systems_node = 1024 CookieTreeFileSystemsNode* file_systems_node =
992 origin_node->GetOrCreateFileSystemsNode(); 1025 origin_node->GetOrCreateFileSystemsNode();
993 file_systems_node->AddFileSystemNode( 1026 file_systems_node->AddFileSystemNode(
994 new CookieTreeFileSystemNode(&(*file_system_info))); 1027 new CookieTreeFileSystemNode(file_system_info));
995 } 1028 }
996 } 1029 }
997 NotifyObserverTreeNodeChanged(root); 1030 NotifyObserverTreeNodeChanged(root);
998 NotifyObserverEndBatch(); 1031 NotifyObserverEndBatch();
999 } 1032 }
1000 1033
1001 void CookiesTreeModel::OnQuotaModelInfoLoaded( 1034 void CookiesTreeModel::OnQuotaModelInfoLoaded(
1002 const QuotaInfoArray& quota_info) { 1035 const QuotaInfoArray& quota_info) {
1003 quota_info_list_ = quota_info; 1036 quota_info_list_ = quota_info;
1004 PopulateQuotaInfoWithFilter(std::wstring()); 1037 PopulateQuotaInfoWithFilter(std::wstring());
1005 } 1038 }
1006 1039
1007 void CookiesTreeModel::PopulateQuotaInfoWithFilter( 1040 void CookiesTreeModel::PopulateQuotaInfoWithFilter(
1008 const std::wstring& filter) { 1041 const std::wstring& filter) {
1009 if (quota_info_list_.empty()) 1042 if (quota_info_list_.empty())
1010 return; 1043 return;
1011 CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot()); 1044 CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot());
1012 NotifyObserverBeginBatch(); 1045 NotifyObserverBeginBatch();
1013 for (QuotaInfoArray::iterator quota_info = quota_info_list_.begin(); 1046 for (QuotaInfoArray::iterator quota_info = quota_info_list_.begin();
1014 quota_info != quota_info_list_.end(); 1047 quota_info != quota_info_list_.end();
1015 ++quota_info) { 1048 ++quota_info) {
1016 if (!filter.size() || 1049 if (!filter.size() ||
1017 (UTF8ToWide(quota_info->host).find(filter) != std::wstring::npos)) { 1050 (UTF8ToWide(quota_info->host).find(filter) != std::wstring::npos)) {
1018 CookieTreeOriginNode* origin_node = 1051 CookieTreeOriginNode* origin_node =
1019 root->GetOrCreateOriginNode(GURL("http://" + quota_info->host)); 1052 root->GetOrCreateOriginNode(GURL("http://" + quota_info->host));
1020 origin_node->UpdateOrCreateQuotaNode(&*quota_info); 1053 origin_node->UpdateOrCreateQuotaNode(quota_info);
1021 } 1054 }
1022 } 1055 }
1023 NotifyObserverTreeNodeChanged(root); 1056 NotifyObserverTreeNodeChanged(root);
1024 NotifyObserverEndBatch(); 1057 NotifyObserverEndBatch();
1025 } 1058 }
1026 1059
1027 void CookiesTreeModel::NotifyObserverBeginBatch() { 1060 void CookiesTreeModel::NotifyObserverBeginBatch() {
1028 // Only notify the model once if we're batching in a nested manner. 1061 // Only notify the model once if we're batching in a nested manner.
1029 if (batch_update_++ == 0) { 1062 if (batch_update_++ == 0) {
1030 FOR_EACH_OBSERVER(Observer, 1063 FOR_EACH_OBSERVER(Observer,
1031 cookies_observer_list_, 1064 cookies_observer_list_,
1032 TreeModelBeginBatch(this)); 1065 TreeModelBeginBatch(this));
1033 } 1066 }
1034 } 1067 }
1035 1068
1036 void CookiesTreeModel::NotifyObserverEndBatch() { 1069 void CookiesTreeModel::NotifyObserverEndBatch() {
1037 // Only notify the observers if this is the outermost call to EndBatch() if 1070 // Only notify the observers if this is the outermost call to EndBatch() if
1038 // called in a nested manner. 1071 // called in a nested manner.
1039 if (--batch_update_ == 0) { 1072 if (--batch_update_ == 0) {
1040 FOR_EACH_OBSERVER(Observer, 1073 FOR_EACH_OBSERVER(Observer,
1041 cookies_observer_list_, 1074 cookies_observer_list_,
1042 TreeModelEndBatch(this)); 1075 TreeModelEndBatch(this));
1043 } 1076 }
1044 } 1077 }
OLDNEW
« no previous file with comments | « chrome/browser/cookies_tree_model.h ('k') | chrome/browser/cookies_tree_model_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698