OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 } |
OLD | NEW |