OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 20 matching lines...) Expand all Loading... | |
31 /////////////////////////////////////////////////////////////////////////////// | 31 /////////////////////////////////////////////////////////////////////////////// |
32 // CookieTreeNode, public: | 32 // CookieTreeNode, public: |
33 | 33 |
34 void CookieTreeNode::DeleteStoredObjects() { | 34 void CookieTreeNode::DeleteStoredObjects() { |
35 std::for_each(children().begin(), | 35 std::for_each(children().begin(), |
36 children().end(), | 36 children().end(), |
37 std::mem_fun(&CookieTreeNode::DeleteStoredObjects)); | 37 std::mem_fun(&CookieTreeNode::DeleteStoredObjects)); |
38 } | 38 } |
39 | 39 |
40 CookiesTreeModel* CookieTreeNode::GetModel() const { | 40 CookiesTreeModel* CookieTreeNode::GetModel() const { |
41 if (parent()) | 41 if (parent()) { |
42 return parent()->GetModel(); | 42 if (parent()->parent()) { |
43 else | 43 return parent()->parent()->GetModel(); |
44 } else { | |
45 return parent()->GetModel(); | |
46 } | |
47 } else { | |
44 return NULL; | 48 return NULL; |
49 } | |
45 } | 50 } |
46 | 51 |
47 /////////////////////////////////////////////////////////////////////////////// | 52 /////////////////////////////////////////////////////////////////////////////// |
48 // CookieTreeCookieNode, public: | 53 // CookieTreeCookieNode, public: |
49 | 54 |
50 CookieTreeCookieNode::CookieTreeCookieNode( | 55 CookieTreeCookieNode::CookieTreeCookieNode( |
51 std::list<net::CookieMonster::CanonicalCookie>::iterator cookie) | 56 std::list<net::CookieMonster::CanonicalCookie>::iterator cookie) |
52 : CookieTreeNode(UTF8ToUTF16(cookie->Name())), | 57 : CookieTreeNode(UTF8ToUTF16(cookie->Name())), |
53 cookie_(cookie) { | 58 cookie_(cookie) { |
54 } | 59 } |
55 | 60 |
56 CookieTreeCookieNode::~CookieTreeCookieNode() {} | 61 CookieTreeCookieNode::~CookieTreeCookieNode() {} |
57 | 62 |
58 void CookieTreeCookieNode::DeleteStoredObjects() { | 63 void CookieTreeCookieNode::DeleteStoredObjects() { |
59 // notify CookieMonster that we should delete this cookie | 64 // notify CookieMonster that we should delete this cookie |
60 GetModel()->cookie_helper_->DeleteCookie(*cookie_); | 65 CookieTreeAppNode* app = static_cast<CookieTreeAppNode*>( |
61 GetModel()->cookie_list_.erase(cookie_); | 66 parent()->parent()->parent()); |
67 LocalDataContainer* container = GetModel()->GetLocalDataContainer( | |
68 app->app_id()); | |
69 | |
70 if (container) { | |
71 container->cookie_helper_->DeleteCookie(*cookie_); | |
72 container->cookie_list_.erase(cookie_); | |
73 } | |
62 } | 74 } |
63 | 75 |
64 CookieTreeNode::DetailedInfo CookieTreeCookieNode::GetDetailedInfo() const { | 76 CookieTreeNode::DetailedInfo CookieTreeCookieNode::GetDetailedInfo() const { |
65 return DetailedInfo(parent()->parent()->GetTitle()).InitCookie(&*cookie_); | 77 return DetailedInfo(parent()->parent()->GetTitle()).InitCookie(&*cookie_); |
66 } | 78 } |
67 | 79 |
68 namespace { | 80 namespace { |
69 // comparison functor, for use in CookieTreeRootNode | 81 // comparison functor, for use in CookieTreeRootNode |
70 class OriginNodeComparator { | 82 class OriginNodeComparator { |
71 public: | 83 public: |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
132 std::list<appcache::AppCacheInfo>::iterator appcache_info) | 144 std::list<appcache::AppCacheInfo>::iterator appcache_info) |
133 : CookieTreeNode(UTF8ToUTF16(appcache_info->manifest_url.spec())), | 145 : CookieTreeNode(UTF8ToUTF16(appcache_info->manifest_url.spec())), |
134 origin_url_(origin_url), | 146 origin_url_(origin_url), |
135 appcache_info_(appcache_info) { | 147 appcache_info_(appcache_info) { |
136 } | 148 } |
137 | 149 |
138 CookieTreeAppCacheNode::~CookieTreeAppCacheNode() { | 150 CookieTreeAppCacheNode::~CookieTreeAppCacheNode() { |
139 } | 151 } |
140 | 152 |
141 void CookieTreeAppCacheNode::DeleteStoredObjects() { | 153 void CookieTreeAppCacheNode::DeleteStoredObjects() { |
142 DCHECK(GetModel()->appcache_helper_); | 154 ////DCHECK(GetModel()->appcache_helper_); |
143 GetModel()->appcache_helper_->DeleteAppCacheGroup( | 155 |
144 appcache_info_->manifest_url); | 156 CookieTreeAppNode* app = static_cast<CookieTreeAppNode*>( |
145 GetModel()->appcache_info_[origin_url_].erase(appcache_info_); | 157 parent()->parent()->parent()); |
158 LocalDataContainer* container = GetModel()->GetLocalDataContainer( | |
159 app->app_id()); | |
160 | |
161 if (container) { | |
162 container->appcache_helper_->DeleteAppCacheGroup( | |
163 appcache_info_->manifest_url); | |
164 container->appcache_info_[origin_url_].erase(appcache_info_); | |
165 } | |
146 } | 166 } |
147 | 167 |
148 CookieTreeNode::DetailedInfo CookieTreeAppCacheNode::GetDetailedInfo() const { | 168 CookieTreeNode::DetailedInfo CookieTreeAppCacheNode::GetDetailedInfo() const { |
149 return DetailedInfo(parent()->parent()->GetTitle()).InitAppCache( | 169 return DetailedInfo(parent()->parent()->GetTitle()).InitAppCache( |
150 &*appcache_info_); | 170 &*appcache_info_); |
151 } | 171 } |
152 | 172 |
153 /////////////////////////////////////////////////////////////////////////////// | 173 /////////////////////////////////////////////////////////////////////////////// |
154 // CookieTreeDatabaseNode, public: | 174 // CookieTreeDatabaseNode, public: |
155 | 175 |
156 CookieTreeDatabaseNode::CookieTreeDatabaseNode( | 176 CookieTreeDatabaseNode::CookieTreeDatabaseNode( |
157 std::list<BrowsingDataDatabaseHelper::DatabaseInfo>::iterator database_info) | 177 std::list<BrowsingDataDatabaseHelper::DatabaseInfo>::iterator database_info) |
158 : CookieTreeNode(database_info->database_name.empty() ? | 178 : CookieTreeNode(database_info->database_name.empty() ? |
159 l10n_util::GetStringUTF16(IDS_COOKIES_WEB_DATABASE_UNNAMED_NAME) : | 179 l10n_util::GetStringUTF16(IDS_COOKIES_WEB_DATABASE_UNNAMED_NAME) : |
160 UTF8ToUTF16(database_info->database_name)), | 180 UTF8ToUTF16(database_info->database_name)), |
161 database_info_(database_info) { | 181 database_info_(database_info) { |
162 } | 182 } |
163 | 183 |
164 CookieTreeDatabaseNode::~CookieTreeDatabaseNode() {} | 184 CookieTreeDatabaseNode::~CookieTreeDatabaseNode() {} |
165 | 185 |
166 void CookieTreeDatabaseNode::DeleteStoredObjects() { | 186 void CookieTreeDatabaseNode::DeleteStoredObjects() { |
167 GetModel()->database_helper_->DeleteDatabase( | 187 CookieTreeAppNode* app = static_cast<CookieTreeAppNode*>( |
168 database_info_->origin_identifier, database_info_->database_name); | 188 parent()->parent()->parent()); |
169 GetModel()->database_info_list_.erase(database_info_); | 189 LocalDataContainer* container = GetModel()->GetLocalDataContainer( |
190 app->app_id()); | |
191 | |
192 if (container) { | |
193 container->database_helper_->DeleteDatabase( | |
194 database_info_->origin_identifier, database_info_->database_name); | |
195 container->database_info_list_.erase(database_info_); | |
196 } | |
170 } | 197 } |
171 | 198 |
172 CookieTreeNode::DetailedInfo CookieTreeDatabaseNode::GetDetailedInfo() const { | 199 CookieTreeNode::DetailedInfo CookieTreeDatabaseNode::GetDetailedInfo() const { |
173 return DetailedInfo(parent()->parent()->GetTitle()).InitDatabase( | 200 return DetailedInfo(parent()->parent()->GetTitle()).InitDatabase( |
174 &*database_info_); | 201 &*database_info_); |
175 } | 202 } |
176 | 203 |
177 /////////////////////////////////////////////////////////////////////////////// | 204 /////////////////////////////////////////////////////////////////////////////// |
178 // CookieTreeLocalStorageNode, public: | 205 // CookieTreeLocalStorageNode, public: |
179 | 206 |
180 CookieTreeLocalStorageNode::CookieTreeLocalStorageNode( | 207 CookieTreeLocalStorageNode::CookieTreeLocalStorageNode( |
181 std::list<BrowsingDataLocalStorageHelper::LocalStorageInfo>::iterator | 208 std::list<BrowsingDataLocalStorageHelper::LocalStorageInfo>::iterator |
182 local_storage_info) | 209 local_storage_info) |
183 : CookieTreeNode(UTF8ToUTF16( | 210 : CookieTreeNode(UTF8ToUTF16( |
184 local_storage_info->origin.empty() ? | 211 local_storage_info->origin.empty() ? |
185 local_storage_info->database_identifier : | 212 local_storage_info->database_identifier : |
186 local_storage_info->origin)), | 213 local_storage_info->origin)), |
187 local_storage_info_(local_storage_info) { | 214 local_storage_info_(local_storage_info) { |
188 } | 215 } |
189 | 216 |
190 CookieTreeLocalStorageNode::~CookieTreeLocalStorageNode() {} | 217 CookieTreeLocalStorageNode::~CookieTreeLocalStorageNode() {} |
191 | 218 |
192 void CookieTreeLocalStorageNode::DeleteStoredObjects() { | 219 void CookieTreeLocalStorageNode::DeleteStoredObjects() { |
193 GetModel()->local_storage_helper_->DeleteLocalStorageFile( | 220 CookieTreeAppNode* app = static_cast<CookieTreeAppNode*>( |
194 local_storage_info_->file_path); | 221 parent()->parent()->parent()); |
195 GetModel()->local_storage_info_list_.erase(local_storage_info_); | 222 LocalDataContainer* container = GetModel()->GetLocalDataContainer( |
223 app->app_id()); | |
224 | |
225 if (container) { | |
226 container->local_storage_helper_->DeleteLocalStorageFile( | |
227 local_storage_info_->file_path); | |
228 container->local_storage_info_list_.erase(local_storage_info_); | |
229 } | |
196 } | 230 } |
197 | 231 |
198 CookieTreeNode::DetailedInfo | 232 CookieTreeNode::DetailedInfo |
199 CookieTreeLocalStorageNode::GetDetailedInfo() const { | 233 CookieTreeLocalStorageNode::GetDetailedInfo() const { |
200 return DetailedInfo(parent()->parent()->GetTitle()).InitLocalStorage( | 234 return DetailedInfo(parent()->parent()->GetTitle()).InitLocalStorage( |
201 &*local_storage_info_); | 235 &*local_storage_info_); |
202 } | 236 } |
203 | 237 |
204 /////////////////////////////////////////////////////////////////////////////// | 238 /////////////////////////////////////////////////////////////////////////////// |
205 // CookieTreeSessionStorageNode, public: | 239 // CookieTreeSessionStorageNode, public: |
206 | 240 |
207 CookieTreeSessionStorageNode::CookieTreeSessionStorageNode( | 241 CookieTreeSessionStorageNode::CookieTreeSessionStorageNode( |
208 std::list<BrowsingDataLocalStorageHelper::LocalStorageInfo>::iterator | 242 std::list<BrowsingDataLocalStorageHelper::LocalStorageInfo>::iterator |
209 session_storage_info) | 243 session_storage_info) |
210 : CookieTreeNode(UTF8ToUTF16( | 244 : CookieTreeNode(UTF8ToUTF16( |
211 session_storage_info->origin.empty() ? | 245 session_storage_info->origin.empty() ? |
212 session_storage_info->database_identifier : | 246 session_storage_info->database_identifier : |
213 session_storage_info->origin)), | 247 session_storage_info->origin)), |
214 session_storage_info_(session_storage_info) { | 248 session_storage_info_(session_storage_info) { |
215 } | 249 } |
216 | 250 |
217 CookieTreeSessionStorageNode::~CookieTreeSessionStorageNode() {} | 251 CookieTreeSessionStorageNode::~CookieTreeSessionStorageNode() {} |
218 | 252 |
219 void CookieTreeSessionStorageNode::DeleteStoredObjects() { | 253 void CookieTreeSessionStorageNode::DeleteStoredObjects() { |
220 GetModel()->session_storage_info_list_.erase(session_storage_info_); | 254 CookieTreeAppNode* app = static_cast<CookieTreeAppNode*>( |
255 parent()->parent()->parent()); | |
256 LocalDataContainer* container = GetModel()->GetLocalDataContainer( | |
257 app->app_id()); | |
258 | |
259 if (container) { | |
260 container->session_storage_info_list_.erase(session_storage_info_); | |
261 } | |
221 } | 262 } |
222 | 263 |
223 CookieTreeNode::DetailedInfo | 264 CookieTreeNode::DetailedInfo |
224 CookieTreeSessionStorageNode::GetDetailedInfo() const { | 265 CookieTreeSessionStorageNode::GetDetailedInfo() const { |
225 return DetailedInfo(parent()->parent()->GetTitle()).InitSessionStorage( | 266 return DetailedInfo(parent()->parent()->GetTitle()).InitSessionStorage( |
226 &*session_storage_info_); | 267 &*session_storage_info_); |
227 } | 268 } |
228 | 269 |
229 /////////////////////////////////////////////////////////////////////////////// | 270 /////////////////////////////////////////////////////////////////////////////// |
230 // CookieTreeIndexedDBNode, public: | 271 // CookieTreeIndexedDBNode, public: |
231 | 272 |
232 CookieTreeIndexedDBNode::CookieTreeIndexedDBNode( | 273 CookieTreeIndexedDBNode::CookieTreeIndexedDBNode( |
233 std::list<BrowsingDataIndexedDBHelper::IndexedDBInfo>::iterator | 274 std::list<BrowsingDataIndexedDBHelper::IndexedDBInfo>::iterator |
234 indexed_db_info) | 275 indexed_db_info) |
235 : CookieTreeNode(UTF8ToUTF16( | 276 : CookieTreeNode(UTF8ToUTF16( |
236 indexed_db_info->origin.spec())), | 277 indexed_db_info->origin.spec())), |
237 indexed_db_info_(indexed_db_info) { | 278 indexed_db_info_(indexed_db_info) { |
238 } | 279 } |
239 | 280 |
240 CookieTreeIndexedDBNode::~CookieTreeIndexedDBNode() {} | 281 CookieTreeIndexedDBNode::~CookieTreeIndexedDBNode() {} |
241 | 282 |
242 void CookieTreeIndexedDBNode::DeleteStoredObjects() { | 283 void CookieTreeIndexedDBNode::DeleteStoredObjects() { |
243 GetModel()->indexed_db_helper_->DeleteIndexedDB( | 284 CookieTreeAppNode* app = static_cast<CookieTreeAppNode*>( |
244 indexed_db_info_->origin); | 285 parent()->parent()->parent()); |
245 GetModel()->indexed_db_info_list_.erase(indexed_db_info_); | 286 LocalDataContainer* container = GetModel()->GetLocalDataContainer( |
287 app->app_id()); | |
288 | |
289 if (container) { | |
290 container->indexed_db_helper_->DeleteIndexedDB( | |
291 indexed_db_info_->origin); | |
292 container->indexed_db_info_list_.erase(indexed_db_info_); | |
293 } | |
246 } | 294 } |
247 | 295 |
248 CookieTreeNode::DetailedInfo CookieTreeIndexedDBNode::GetDetailedInfo() const { | 296 CookieTreeNode::DetailedInfo CookieTreeIndexedDBNode::GetDetailedInfo() const { |
249 return DetailedInfo(parent()->parent()->GetTitle()).InitIndexedDB( | 297 return DetailedInfo(parent()->parent()->GetTitle()).InitIndexedDB( |
250 &*indexed_db_info_); | 298 &*indexed_db_info_); |
251 } | 299 } |
252 | 300 |
253 /////////////////////////////////////////////////////////////////////////////// | 301 /////////////////////////////////////////////////////////////////////////////// |
254 // CookieTreeFileSystemNode, public: | 302 // CookieTreeFileSystemNode, public: |
255 | 303 |
256 CookieTreeFileSystemNode::CookieTreeFileSystemNode( | 304 CookieTreeFileSystemNode::CookieTreeFileSystemNode( |
257 std::list<BrowsingDataFileSystemHelper::FileSystemInfo>::iterator | 305 std::list<BrowsingDataFileSystemHelper::FileSystemInfo>::iterator |
258 file_system_info) | 306 file_system_info) |
259 : CookieTreeNode(UTF8ToUTF16( | 307 : CookieTreeNode(UTF8ToUTF16( |
260 file_system_info->origin.spec())), | 308 file_system_info->origin.spec())), |
261 file_system_info_(file_system_info) { | 309 file_system_info_(file_system_info) { |
262 } | 310 } |
263 | 311 |
264 CookieTreeFileSystemNode::~CookieTreeFileSystemNode() {} | 312 CookieTreeFileSystemNode::~CookieTreeFileSystemNode() {} |
265 | 313 |
266 void CookieTreeFileSystemNode::DeleteStoredObjects() { | 314 void CookieTreeFileSystemNode::DeleteStoredObjects() { |
267 GetModel()->file_system_helper_->DeleteFileSystemOrigin( | 315 CookieTreeAppNode* app = static_cast<CookieTreeAppNode*>( |
268 file_system_info_->origin); | 316 parent()->parent()->parent()); |
269 GetModel()->file_system_info_list_.erase(file_system_info_); | 317 LocalDataContainer* container = GetModel()->GetLocalDataContainer( |
318 app->app_id()); | |
319 | |
320 if (container) { | |
321 container->file_system_helper_->DeleteFileSystemOrigin( | |
322 file_system_info_->origin); | |
323 container->file_system_info_list_.erase(file_system_info_); | |
324 } | |
270 } | 325 } |
271 | 326 |
272 CookieTreeNode::DetailedInfo CookieTreeFileSystemNode::GetDetailedInfo() const { | 327 CookieTreeNode::DetailedInfo CookieTreeFileSystemNode::GetDetailedInfo() const { |
273 return DetailedInfo(parent()->parent()->GetTitle()).InitFileSystem( | 328 return DetailedInfo(parent()->parent()->GetTitle()).InitFileSystem( |
274 &*file_system_info_); | 329 &*file_system_info_); |
275 } | 330 } |
276 | 331 |
277 /////////////////////////////////////////////////////////////////////////////// | 332 /////////////////////////////////////////////////////////////////////////////// |
278 // CookieTreeQuotaNode, public: | 333 // CookieTreeQuotaNode, public: |
279 | 334 |
280 CookieTreeQuotaNode::CookieTreeQuotaNode( | 335 CookieTreeQuotaNode::CookieTreeQuotaNode( |
281 std::list<BrowsingDataQuotaHelper::QuotaInfo>::iterator quota_info) | 336 std::list<BrowsingDataQuotaHelper::QuotaInfo>::iterator quota_info) |
282 : CookieTreeNode(UTF8ToUTF16(quota_info->host)), | 337 : CookieTreeNode(UTF8ToUTF16(quota_info->host)), |
283 quota_info_(quota_info) { | 338 quota_info_(quota_info) { |
284 } | 339 } |
285 | 340 |
286 CookieTreeQuotaNode::~CookieTreeQuotaNode() {} | 341 CookieTreeQuotaNode::~CookieTreeQuotaNode() {} |
287 | 342 |
288 void CookieTreeQuotaNode::DeleteStoredObjects() { | 343 void CookieTreeQuotaNode::DeleteStoredObjects() { |
289 // Calling this function may cause unexpected over-quota state of origin. | 344 // Calling this function may cause unexpected over-quota state of origin. |
290 // However, it'll caused no problem, just prevent usage growth of the origin. | 345 // However, it'll caused no problem, just prevent usage growth of the origin. |
291 GetModel()->quota_helper_->RevokeHostQuota(quota_info_->host); | 346 CookieTreeAppNode* app = static_cast<CookieTreeAppNode*>( |
292 GetModel()->quota_info_list_.erase(quota_info_); | 347 parent()->parent()); |
348 LocalDataContainer* container = GetModel()->GetLocalDataContainer( | |
349 app->app_id()); | |
350 | |
351 if (container) { | |
352 container->quota_helper_->RevokeHostQuota(quota_info_->host); | |
353 container->quota_info_list_.erase(quota_info_); | |
354 } | |
293 } | 355 } |
294 | 356 |
295 CookieTreeNode::DetailedInfo CookieTreeQuotaNode::GetDetailedInfo() const { | 357 CookieTreeNode::DetailedInfo CookieTreeQuotaNode::GetDetailedInfo() const { |
296 return DetailedInfo(parent()->parent()->GetTitle()).InitQuota( | 358 return DetailedInfo(parent()->parent()->GetTitle()).InitQuota( |
297 &*quota_info_); | 359 &*quota_info_); |
298 } | 360 } |
299 | 361 |
300 /////////////////////////////////////////////////////////////////////////////// | 362 /////////////////////////////////////////////////////////////////////////////// |
301 // CookieTreeServerBoundCertNode, public: | 363 // CookieTreeServerBoundCertNode, public: |
302 | 364 |
303 CookieTreeServerBoundCertNode::CookieTreeServerBoundCertNode( | 365 CookieTreeServerBoundCertNode::CookieTreeServerBoundCertNode( |
304 net::ServerBoundCertStore::ServerBoundCertList::iterator cert) | 366 net::ServerBoundCertStore::ServerBoundCertList::iterator cert) |
305 : CookieTreeNode(ASCIIToUTF16(cert->server_identifier())), | 367 : CookieTreeNode(ASCIIToUTF16(cert->server_identifier())), |
306 server_bound_cert_(cert) { | 368 server_bound_cert_(cert) { |
307 } | 369 } |
308 | 370 |
309 CookieTreeServerBoundCertNode::~CookieTreeServerBoundCertNode() {} | 371 CookieTreeServerBoundCertNode::~CookieTreeServerBoundCertNode() {} |
310 | 372 |
311 void CookieTreeServerBoundCertNode::DeleteStoredObjects() { | 373 void CookieTreeServerBoundCertNode::DeleteStoredObjects() { |
312 GetModel()->server_bound_cert_helper_->DeleteServerBoundCert( | 374 CookieTreeAppNode* app = static_cast<CookieTreeAppNode*>( |
313 server_bound_cert_->server_identifier()); | 375 parent()->parent()->parent()); |
314 GetModel()->server_bound_cert_list_.erase(server_bound_cert_); | 376 LocalDataContainer* container = GetModel()->GetLocalDataContainer( |
377 app->app_id()); | |
378 | |
379 if (container) { | |
380 container->server_bound_cert_helper_->DeleteServerBoundCert( | |
381 server_bound_cert_->server_identifier()); | |
382 container->server_bound_cert_list_.erase(server_bound_cert_); | |
383 } | |
315 } | 384 } |
316 | 385 |
317 CookieTreeNode::DetailedInfo | 386 CookieTreeNode::DetailedInfo |
318 CookieTreeServerBoundCertNode::GetDetailedInfo() const { | 387 CookieTreeServerBoundCertNode::GetDetailedInfo() const { |
319 return DetailedInfo(parent()->parent()->GetTitle()).InitServerBoundCert( | 388 return DetailedInfo(parent()->parent()->GetTitle()).InitServerBoundCert( |
320 &*server_bound_cert_); | 389 &*server_bound_cert_); |
321 } | 390 } |
322 | 391 |
323 /////////////////////////////////////////////////////////////////////////////// | 392 /////////////////////////////////////////////////////////////////////////////// |
324 // CookieTreeRootNode, public: | 393 // CookieTreeRootNode, public: |
325 | 394 |
326 CookieTreeRootNode::CookieTreeRootNode(CookiesTreeModel* model) | 395 CookieTreeRootNode::CookieTreeRootNode(CookiesTreeModel* model) |
327 : model_(model) { | 396 : model_(model) { |
328 } | 397 } |
329 | 398 |
330 CookieTreeRootNode::~CookieTreeRootNode() {} | 399 CookieTreeRootNode::~CookieTreeRootNode() {} |
331 | 400 |
401 /* | |
markusheintz_
2012/06/13 23:40:39
Please remove commented code.
| |
332 CookieTreeOriginNode* CookieTreeRootNode::GetOrCreateOriginNode( | 402 CookieTreeOriginNode* CookieTreeRootNode::GetOrCreateOriginNode( |
333 const GURL& url) { | 403 const GURL& url) { |
334 CookieTreeOriginNode origin_node(url); | 404 CookieTreeOriginNode origin_node(url); |
335 | 405 |
336 // First see if there is an existing match. | 406 // First see if there is an existing match. |
337 std::vector<CookieTreeNode*>::iterator origin_node_iterator = | 407 std::vector<CookieTreeNode*>::iterator origin_node_iterator = |
338 std::lower_bound(children().begin(), | 408 std::lower_bound(children().begin(), |
339 children().end(), | 409 children().end(), |
340 &origin_node, | 410 &origin_node, |
341 OriginNodeComparator()); | 411 OriginNodeComparator()); |
342 | 412 |
343 if (origin_node_iterator != children().end() && | 413 if (origin_node_iterator != children().end() && |
344 WideToUTF16Hack(CookieTreeOriginNode::TitleForUrl(url)) == | 414 WideToUTF16Hack(CookieTreeOriginNode::TitleForUrl(url)) == |
345 (*origin_node_iterator)->GetTitle()) | 415 (*origin_node_iterator)->GetTitle()) |
346 return static_cast<CookieTreeOriginNode*>(*origin_node_iterator); | 416 return static_cast<CookieTreeOriginNode*>(*origin_node_iterator); |
347 // Node doesn't exist, create a new one and insert it into the (ordered) | 417 // Node doesn't exist, create a new one and insert it into the (ordered) |
348 // children. | 418 // children. |
349 CookieTreeOriginNode* retval = new CookieTreeOriginNode(url); | 419 CookieTreeOriginNode* retval = new CookieTreeOriginNode(url); |
350 DCHECK(model_); | 420 DCHECK(model_); |
351 model_->Add(this, retval, (origin_node_iterator - children().begin())); | 421 model_->Add(this, retval, (origin_node_iterator - children().begin())); |
352 return retval; | 422 return retval; |
353 } | 423 } |
424 */ | |
425 CookieTreeAppNode* CookieTreeRootNode::GetOrCreateAppNode( | |
426 const string16& app_name, | |
427 const string16& app_id) { | |
428 CookieTreeAppNode app_node(app_name, app_id); | |
429 | |
430 // First see if there is an existing match. | |
431 std::vector<CookieTreeNode*>::iterator app_node_iterator = | |
432 std::lower_bound(children().begin(), | |
433 children().end(), | |
434 &app_node, | |
435 AppNodeComparator()); | |
436 | |
437 if (app_node_iterator != children().end()) | |
438 return static_cast<CookieTreeAppNode*>(*app_node_iterator); | |
439 | |
440 // Node doesn't exist, create a new one and insert it into the (ordered) | |
441 // children. | |
442 CookieTreeAppNode* retval = new CookieTreeAppNode(app_name, app_id); | |
443 DCHECK(model_); | |
444 model_->Add(this, retval, (app_node_iterator - children().begin())); | |
445 return retval; | |
446 } | |
354 | 447 |
355 CookiesTreeModel* CookieTreeRootNode::GetModel() const { | 448 CookiesTreeModel* CookieTreeRootNode::GetModel() const { |
356 return model_; | 449 return model_; |
357 } | 450 } |
358 | 451 |
359 CookieTreeNode::DetailedInfo CookieTreeRootNode::GetDetailedInfo() const { | 452 CookieTreeNode::DetailedInfo CookieTreeRootNode::GetDetailedInfo() const { |
360 return DetailedInfo(string16()).Init(DetailedInfo::TYPE_ROOT); | 453 return DetailedInfo(string16()).Init(DetailedInfo::TYPE_ROOT); |
361 } | 454 } |
362 | 455 |
363 /////////////////////////////////////////////////////////////////////////////// | 456 /////////////////////////////////////////////////////////////////////////////// |
457 // CookieTreeAppNode, public: | |
458 | |
459 CookieTreeAppNode::CookieTreeAppNode(const string16& app_name, | |
460 const string16& app_id) | |
461 : CookieTreeNode(app_name), | |
462 app_name_(app_name), | |
463 app_id_(app_id) {} | |
464 | |
465 CookieTreeAppNode::~CookieTreeAppNode() {} | |
466 | |
467 CookieTreeOriginNode* CookieTreeAppNode::GetOrCreateOriginNode( | |
468 const GURL& url) { | |
469 CookieTreeOriginNode origin_node(app_id_, url); | |
470 | |
471 // First see if there is an existing match. | |
472 std::vector<CookieTreeNode*>::iterator origin_node_iterator = | |
473 std::lower_bound(children().begin(), | |
474 children().end(), | |
475 &origin_node, | |
476 OriginNodeComparator()); | |
477 | |
478 if (origin_node_iterator != children().end() && | |
479 WideToUTF16Hack(CookieTreeOriginNode::TitleForUrl(url)) == | |
480 (*origin_node_iterator)->GetTitle()) | |
481 return static_cast<CookieTreeOriginNode*>(*origin_node_iterator); | |
482 // Node doesn't exist, create a new one and insert it into the (ordered) | |
483 // children. | |
484 CookieTreeOriginNode* retval = new CookieTreeOriginNode(app_id_, url); | |
485 GetModel()->Add(this, retval, (origin_node_iterator - children().begin())); | |
486 return retval; | |
487 } | |
488 | |
489 CookieTreeNode::DetailedInfo CookieTreeAppNode::GetDetailedInfo() const { | |
490 // TODO(nasko): Fix the proper string to be passed instead of GetTitle if | |
491 // need be. | |
492 return DetailedInfo(GetTitle()).InitApp(app_name_, app_id_); | |
493 } | |
494 | |
495 /////////////////////////////////////////////////////////////////////////////// | |
364 // CookieTreeOriginNode, public: | 496 // CookieTreeOriginNode, public: |
365 | 497 |
366 // static | 498 // static |
367 std::wstring CookieTreeOriginNode::TitleForUrl( | 499 std::wstring CookieTreeOriginNode::TitleForUrl( |
368 const GURL& url) { | 500 const GURL& url) { |
369 return UTF8ToWide(url.SchemeIsFile() ? kFileOriginNodeName : url.host()); | 501 return UTF8ToWide(url.SchemeIsFile() ? kFileOriginNodeName : url.host()); |
370 } | 502 } |
371 | 503 |
372 CookieTreeOriginNode::CookieTreeOriginNode(const GURL& url) | 504 CookieTreeOriginNode::CookieTreeOriginNode(const string16& app, const GURL& url) |
373 : CookieTreeNode(WideToUTF16Hack(TitleForUrl(url))), | 505 : CookieTreeNode(WideToUTF16Hack(TitleForUrl(url))), |
374 cookies_child_(NULL), | 506 cookies_child_(NULL), |
375 databases_child_(NULL), | 507 databases_child_(NULL), |
376 local_storages_child_(NULL), | 508 local_storages_child_(NULL), |
377 session_storages_child_(NULL), | 509 session_storages_child_(NULL), |
378 appcaches_child_(NULL), | 510 appcaches_child_(NULL), |
379 indexed_dbs_child_(NULL), | 511 indexed_dbs_child_(NULL), |
380 file_systems_child_(NULL), | 512 file_systems_child_(NULL), |
381 quota_child_(NULL), | 513 quota_child_(NULL), |
382 server_bound_certs_child_(NULL), | 514 server_bound_certs_child_(NULL), |
383 url_(url) {} | 515 url_(url), |
516 app_id_(app) {} | |
384 | 517 |
385 CookieTreeOriginNode::~CookieTreeOriginNode() {} | 518 CookieTreeOriginNode::~CookieTreeOriginNode() {} |
386 | 519 |
387 CookieTreeNode::DetailedInfo CookieTreeOriginNode::GetDetailedInfo() const { | 520 CookieTreeNode::DetailedInfo CookieTreeOriginNode::GetDetailedInfo() const { |
388 return DetailedInfo(GetTitle()).Init(DetailedInfo::TYPE_ORIGIN); | 521 return DetailedInfo(GetTitle()).Init(DetailedInfo::TYPE_ORIGIN); |
389 } | 522 } |
390 | 523 |
391 CookieTreeCookiesNode* CookieTreeOriginNode::GetOrCreateCookiesNode() { | 524 CookieTreeCookiesNode* CookieTreeOriginNode::GetOrCreateCookiesNode() { |
392 if (cookies_child_) | 525 if (cookies_child_) |
393 return cookies_child_; | 526 return cookies_child_; |
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
605 | 738 |
606 bool CookieTreeNode::NodeTitleComparator::operator() ( | 739 bool CookieTreeNode::NodeTitleComparator::operator() ( |
607 const CookieTreeNode* lhs, const CookieTreeNode* rhs) { | 740 const CookieTreeNode* lhs, const CookieTreeNode* rhs) { |
608 const CookieTreeNode* left = | 741 const CookieTreeNode* left = |
609 static_cast<const CookieTreeNode*>(lhs); | 742 static_cast<const CookieTreeNode*>(lhs); |
610 const CookieTreeNode* right = | 743 const CookieTreeNode* right = |
611 static_cast<const CookieTreeNode*>(rhs); | 744 static_cast<const CookieTreeNode*>(rhs); |
612 return (left->GetTitle() < right->GetTitle()); | 745 return (left->GetTitle() < right->GetTitle()); |
613 } | 746 } |
614 | 747 |
748 bool CookieTreeNode::AppNodeComparator::operator() ( | |
749 const CookieTreeNode* lhs, const CookieTreeNode* rhs) { | |
750 const CookieTreeAppNode* left = | |
751 static_cast<const CookieTreeAppNode*>(lhs); | |
752 const CookieTreeAppNode* right = | |
753 static_cast<const CookieTreeAppNode*>(rhs); | |
754 return (left->app_id() < right->app_id()); | |
755 } | |
756 | |
615 void CookieTreeNode::AddChildSortedByTitle(CookieTreeNode* new_child) { | 757 void CookieTreeNode::AddChildSortedByTitle(CookieTreeNode* new_child) { |
616 DCHECK(new_child); | 758 DCHECK(new_child); |
617 std::vector<CookieTreeNode*>::iterator iter = | 759 std::vector<CookieTreeNode*>::iterator iter = |
618 std::lower_bound(children().begin(), | 760 std::lower_bound(children().begin(), |
619 children().end(), | 761 children().end(), |
620 new_child, | 762 new_child, |
621 NodeTitleComparator()); | 763 NodeTitleComparator()); |
622 GetModel()->Add(this, new_child, iter - children().begin()); | 764 GetModel()->Add(this, new_child, iter - children().begin()); |
623 } | 765 } |
624 | 766 |
625 /////////////////////////////////////////////////////////////////////////////// | 767 /////////////////////////////////////////////////////////////////////////////// |
626 // CookiesTreeModel, public: | 768 // CookiesTreeModel, public: |
627 | 769 CookiesTreeModel::CookiesTreeModel(ContainerMap& apps_map) |
628 CookiesTreeModel::CookiesTreeModel( | |
629 BrowsingDataCookieHelper* cookie_helper, | |
630 BrowsingDataDatabaseHelper* database_helper, | |
631 BrowsingDataLocalStorageHelper* local_storage_helper, | |
632 BrowsingDataLocalStorageHelper* session_storage_helper, | |
633 BrowsingDataAppCacheHelper* appcache_helper, | |
634 BrowsingDataIndexedDBHelper* indexed_db_helper, | |
635 BrowsingDataFileSystemHelper* file_system_helper, | |
636 BrowsingDataQuotaHelper* quota_helper, | |
637 BrowsingDataServerBoundCertHelper* server_bound_cert_helper, | |
638 bool use_cookie_source) | |
639 : ALLOW_THIS_IN_INITIALIZER_LIST(ui::TreeNodeModel<CookieTreeNode>( | 770 : ALLOW_THIS_IN_INITIALIZER_LIST(ui::TreeNodeModel<CookieTreeNode>( |
640 new CookieTreeRootNode(this))), | 771 new CookieTreeRootNode(this))), |
641 appcache_helper_(appcache_helper), | 772 batch_update_(0) { |
642 cookie_helper_(cookie_helper), | 773 for (ContainerMap::iterator it = apps_map.begin(); |
643 database_helper_(database_helper), | 774 it != apps_map.end(); ++it) { |
644 local_storage_helper_(local_storage_helper), | 775 app_data_map_[it->first] = it->second; |
645 session_storage_helper_(session_storage_helper), | 776 it->second->Init(this); |
646 indexed_db_helper_(indexed_db_helper), | |
647 file_system_helper_(file_system_helper), | |
648 quota_helper_(quota_helper), | |
649 server_bound_cert_helper_(server_bound_cert_helper), | |
650 batch_update_(0), | |
651 use_cookie_source_(use_cookie_source), | |
652 ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)) { | |
653 DCHECK(cookie_helper_); | |
654 cookie_helper_->StartFetching( | |
655 base::Bind(&CookiesTreeModel::OnCookiesModelInfoLoaded, | |
656 weak_ptr_factory_.GetWeakPtr())); | |
657 DCHECK(database_helper_); | |
658 database_helper_->StartFetching( | |
659 base::Bind(&CookiesTreeModel::OnDatabaseModelInfoLoaded, | |
660 weak_ptr_factory_.GetWeakPtr())); | |
661 DCHECK(local_storage_helper_); | |
662 local_storage_helper_->StartFetching( | |
663 base::Bind(&CookiesTreeModel::OnLocalStorageModelInfoLoaded, | |
664 weak_ptr_factory_.GetWeakPtr())); | |
665 if (session_storage_helper_) { | |
666 session_storage_helper_->StartFetching( | |
667 base::Bind(&CookiesTreeModel::OnSessionStorageModelInfoLoaded, | |
668 weak_ptr_factory_.GetWeakPtr())); | |
669 } | |
670 | |
671 // TODO(michaeln): When all of the UI implementations have been updated, make | |
672 // this a required parameter. | |
673 if (appcache_helper_) { | |
674 appcache_helper_->StartFetching( | |
675 base::Bind(&CookiesTreeModel::OnAppCacheModelInfoLoaded, | |
676 weak_ptr_factory_.GetWeakPtr())); | |
677 } | |
678 | |
679 if (indexed_db_helper_) { | |
680 indexed_db_helper_->StartFetching( | |
681 base::Bind(&CookiesTreeModel::OnIndexedDBModelInfoLoaded, | |
682 weak_ptr_factory_.GetWeakPtr())); | |
683 } | |
684 | |
685 if (file_system_helper_) { | |
686 file_system_helper_->StartFetching( | |
687 base::Bind(&CookiesTreeModel::OnFileSystemModelInfoLoaded, | |
688 weak_ptr_factory_.GetWeakPtr())); | |
689 } | |
690 | |
691 if (quota_helper_) { | |
692 quota_helper_->StartFetching( | |
693 base::Bind(&CookiesTreeModel::OnQuotaModelInfoLoaded, | |
694 weak_ptr_factory_.GetWeakPtr())); | |
695 } | |
696 | |
697 if (server_bound_cert_helper_) { | |
698 server_bound_cert_helper_->StartFetching( | |
699 base::Bind(&CookiesTreeModel::OnServerBoundCertModelInfoLoaded, | |
700 weak_ptr_factory_.GetWeakPtr())); | |
701 } | 777 } |
702 } | 778 } |
703 | 779 |
704 CookiesTreeModel::~CookiesTreeModel() {} | 780 CookiesTreeModel::~CookiesTreeModel() {} |
705 | 781 |
706 /////////////////////////////////////////////////////////////////////////////// | 782 /////////////////////////////////////////////////////////////////////////////// |
707 // CookiesTreeModel, TreeModel methods (public): | 783 // CookiesTreeModel, TreeModel methods (public): |
708 | 784 |
709 // TreeModel methods: | 785 // TreeModel methods: |
710 // Returns the set of icons for the nodes in the tree. You only need override | 786 // Returns the set of icons for the nodes in the tree. You only need override |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
770 if (parent_node->empty()) | 846 if (parent_node->empty()) |
771 DeleteCookieNode(parent_node); | 847 DeleteCookieNode(parent_node); |
772 } | 848 } |
773 | 849 |
774 void CookiesTreeModel::UpdateSearchResults(const std::wstring& filter) { | 850 void CookiesTreeModel::UpdateSearchResults(const std::wstring& filter) { |
775 CookieTreeNode* root = GetRoot(); | 851 CookieTreeNode* root = GetRoot(); |
776 int num_children = root->child_count(); | 852 int num_children = root->child_count(); |
777 NotifyObserverBeginBatch(); | 853 NotifyObserverBeginBatch(); |
778 for (int i = num_children - 1; i >= 0; --i) | 854 for (int i = num_children - 1; i >= 0; --i) |
779 delete Remove(root, root->GetChild(i)); | 855 delete Remove(root, root->GetChild(i)); |
780 PopulateCookieInfoWithFilter(filter); | 856 PopulateCookieInfoWithFilter(NULL, filter); |
781 PopulateDatabaseInfoWithFilter(filter); | 857 PopulateDatabaseInfoWithFilter(NULL, filter); |
782 PopulateLocalStorageInfoWithFilter(filter); | 858 PopulateLocalStorageInfoWithFilter(NULL, filter); |
783 PopulateSessionStorageInfoWithFilter(filter); | 859 PopulateSessionStorageInfoWithFilter(NULL, filter); |
784 PopulateAppCacheInfoWithFilter(filter); | 860 PopulateAppCacheInfoWithFilter(NULL, filter); |
785 PopulateIndexedDBInfoWithFilter(filter); | 861 PopulateIndexedDBInfoWithFilter(NULL, filter); |
786 PopulateFileSystemInfoWithFilter(filter); | 862 PopulateFileSystemInfoWithFilter(NULL, filter); |
787 PopulateQuotaInfoWithFilter(filter); | 863 PopulateQuotaInfoWithFilter(NULL, filter); |
788 PopulateServerBoundCertInfoWithFilter(filter); | 864 PopulateServerBoundCertInfoWithFilter(NULL, filter); |
789 NotifyObserverTreeNodeChanged(root); | 865 NotifyObserverTreeNodeChanged(root); |
790 NotifyObserverEndBatch(); | 866 NotifyObserverEndBatch(); |
791 } | 867 } |
792 | 868 |
793 void CookiesTreeModel::AddCookiesTreeObserver(Observer* observer) { | 869 void CookiesTreeModel::AddCookiesTreeObserver(Observer* observer) { |
794 cookies_observer_list_.AddObserver(observer); | 870 cookies_observer_list_.AddObserver(observer); |
795 // Call super so that TreeNodeModel can notify, too. | 871 // Call super so that TreeNodeModel can notify, too. |
796 ui::TreeNodeModel<CookieTreeNode>::AddObserver(observer); | 872 ui::TreeNodeModel<CookieTreeNode>::AddObserver(observer); |
797 } | 873 } |
798 | 874 |
799 void CookiesTreeModel::RemoveCookiesTreeObserver(Observer* observer) { | 875 void CookiesTreeModel::RemoveCookiesTreeObserver(Observer* observer) { |
800 cookies_observer_list_.RemoveObserver(observer); | 876 cookies_observer_list_.RemoveObserver(observer); |
801 // Call super so that TreeNodeModel doesn't have dead pointers. | 877 // Call super so that TreeNodeModel doesn't have dead pointers. |
802 ui::TreeNodeModel<CookieTreeNode>::RemoveObserver(observer); | 878 ui::TreeNodeModel<CookieTreeNode>::RemoveObserver(observer); |
803 } | 879 } |
804 | 880 |
805 void CookiesTreeModel::OnAppCacheModelInfoLoaded() { | |
806 using appcache::AppCacheInfo; | |
807 using appcache::AppCacheInfoCollection; | |
808 using appcache::AppCacheInfoVector; | |
809 typedef std::map<GURL, AppCacheInfoVector> InfoByOrigin; | |
810 | |
811 scoped_refptr<AppCacheInfoCollection> appcache_info = | |
812 appcache_helper_->info_collection(); | |
813 if (!appcache_info || appcache_info->infos_by_origin.empty()) | |
814 return; | |
815 | |
816 for (InfoByOrigin::const_iterator origin = | |
817 appcache_info->infos_by_origin.begin(); | |
818 origin != appcache_info->infos_by_origin.end(); ++origin) { | |
819 std::list<AppCacheInfo>& info_list = appcache_info_[origin->first]; | |
820 info_list.insert( | |
821 info_list.begin(), origin->second.begin(), origin->second.end()); | |
822 } | |
823 | |
824 PopulateAppCacheInfoWithFilter(std::wstring()); | |
825 } | |
826 | |
827 void CookiesTreeModel::PopulateAppCacheInfoWithFilter( | 881 void CookiesTreeModel::PopulateAppCacheInfoWithFilter( |
828 const std::wstring& filter) { | 882 string16* app, |
883 const std::wstring& filter) { | |
884 | |
829 using appcache::AppCacheInfo; | 885 using appcache::AppCacheInfo; |
830 typedef std::map<GURL, std::list<AppCacheInfo> > InfoByOrigin; | 886 typedef std::map<GURL, std::list<AppCacheInfo> > InfoByOrigin; |
831 | 887 CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot()); |
832 if (appcache_info_.empty()) | 888 bool begin_batch = false; |
833 return; | 889 |
890 for (ContainerMap::iterator ait = app_data_map_.begin(); | |
891 ait != app_data_map_.end(); ++ait ) { | |
892 LocalDataContainer* container = ait->second; | |
893 | |
894 if (container->appcache_info_.empty()) | |
895 continue; | |
896 | |
897 if (app && *app != container->app_id()) | |
898 continue; | |
899 | |
900 if (!begin_batch) { | |
901 NotifyObserverBeginBatch(); | |
902 begin_batch = true; | |
903 } | |
904 | |
905 CookieTreeAppNode* app_node = | |
906 root->GetOrCreateAppNode(container->app_name(), container->app_id()); | |
907 | |
908 for (InfoByOrigin::iterator origin = container->appcache_info_.begin(); | |
909 origin != container->appcache_info_.end(); ++origin) { | |
910 std::wstring origin_node_name = UTF8ToWide(origin->first.host()); | |
911 if (filter.empty() || | |
912 (origin_node_name.find(filter) != std::wstring::npos)) { | |
913 CookieTreeOriginNode* origin_node = | |
914 app_node->GetOrCreateOriginNode(origin->first); | |
915 CookieTreeAppCachesNode* appcaches_node = | |
916 origin_node->GetOrCreateAppCachesNode(); | |
917 | |
918 for (std::list<AppCacheInfo>::iterator info = origin->second.begin(); | |
919 info != origin->second.end(); ++info) { | |
920 appcaches_node->AddAppCacheNode( | |
921 new CookieTreeAppCacheNode(origin->first, info)); | |
922 } | |
923 } | |
924 } | |
925 } | |
926 | |
927 if (begin_batch) { | |
928 NotifyObserverTreeNodeChanged(root); | |
929 NotifyObserverEndBatch(); | |
930 } | |
931 } | |
932 | |
933 void CookiesTreeModel::PopulateCookieInfoWithFilter( | |
934 string16* app, | |
935 const std::wstring& filter) { | |
936 // mmargh mmargh mmargh! delicious! | |
834 | 937 |
835 CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot()); | 938 CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot()); |
836 NotifyObserverBeginBatch(); | 939 NotifyObserverBeginBatch(); |
837 for (InfoByOrigin::iterator origin = appcache_info_.begin(); | 940 for (ContainerMap::iterator ait = app_data_map_.begin(); |
markusheintz_
2012/06/13 23:40:39
Please replace "ait" with a better name.
| |
838 origin != appcache_info_.end(); ++origin) { | 941 ait != app_data_map_.end(); ++ait ) { |
839 std::wstring origin_node_name = UTF8ToWide(origin->first.host()); | 942 LocalDataContainer* container = ait->second; |
840 if (filter.empty() || | 943 |
841 (origin_node_name.find(filter) != std::wstring::npos)) { | 944 if (app && *app != container->app_id()) |
842 CookieTreeOriginNode* origin_node = | 945 continue; |
843 root->GetOrCreateOriginNode(origin->first); | 946 |
844 CookieTreeAppCachesNode* appcaches_node = | 947 CookieTreeAppNode* app_node = |
845 origin_node->GetOrCreateAppCachesNode(); | 948 root->GetOrCreateAppNode(container->app_name(), container->app_id()); |
846 | 949 |
847 for (std::list<AppCacheInfo>::iterator info = origin->second.begin(); | 950 for (CookieList::iterator it = container->cookie_list_.begin(); |
848 info != origin->second.end(); ++info) { | 951 it != container->cookie_list_.end(); ++it) { |
849 appcaches_node->AddAppCacheNode( | 952 std::string source_string = it->Source(); |
850 new CookieTreeAppCacheNode(origin->first, info)); | 953 if (source_string.empty() || !use_cookie_source_) { |
954 std::string domain = it->Domain(); | |
955 if (domain.length() > 1 && domain[0] == '.') | |
956 domain = domain.substr(1); | |
957 | |
958 // We treat secure cookies just the same as normal ones. | |
959 source_string = std::string(chrome::kHttpScheme) + | |
960 content::kStandardSchemeSeparator + domain + "/"; | |
961 } | |
962 | |
963 GURL source(source_string); | |
964 if (!filter.size() || | |
965 (CookieTreeOriginNode::TitleForUrl(source).find(filter) != | |
966 std::string::npos)) { | |
967 CookieTreeOriginNode* origin_node = | |
968 app_node->GetOrCreateOriginNode(source); | |
969 CookieTreeCookiesNode* cookies_node = | |
970 origin_node->GetOrCreateCookiesNode(); | |
971 CookieTreeCookieNode* new_cookie = new CookieTreeCookieNode(it); | |
972 cookies_node->AddCookieNode(new_cookie); | |
851 } | 973 } |
852 } | 974 } |
853 } | 975 } |
854 NotifyObserverTreeNodeChanged(root); | 976 NotifyObserverTreeNodeChanged(root); |
855 NotifyObserverEndBatch(); | 977 NotifyObserverEndBatch(); |
856 } | 978 } |
857 | 979 |
858 void CookiesTreeModel::OnCookiesModelInfoLoaded( | |
859 const net::CookieList& cookie_list) { | |
860 cookie_list_.insert(cookie_list_.begin(), | |
861 cookie_list.begin(), | |
862 cookie_list.end()); | |
863 PopulateCookieInfoWithFilter(std::wstring()); | |
864 } | |
865 | |
866 void CookiesTreeModel::PopulateCookieInfoWithFilter( | |
867 const std::wstring& filter) { | |
868 // mmargh mmargh mmargh! delicious! | |
869 | |
870 CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot()); | |
871 NotifyObserverBeginBatch(); | |
872 for (CookieList::iterator it = cookie_list_.begin(); | |
873 it != cookie_list_.end(); ++it) { | |
874 std::string source_string = it->Source(); | |
875 if (source_string.empty() || !use_cookie_source_) { | |
876 std::string domain = it->Domain(); | |
877 if (domain.length() > 1 && domain[0] == '.') | |
878 domain = domain.substr(1); | |
879 | |
880 // We treat secure cookies just the same as normal ones. | |
881 source_string = std::string(chrome::kHttpScheme) + | |
882 content::kStandardSchemeSeparator + domain + "/"; | |
883 } | |
884 | |
885 GURL source(source_string); | |
886 if (!filter.size() || | |
887 (CookieTreeOriginNode::TitleForUrl(source).find(filter) != | |
888 std::string::npos)) { | |
889 CookieTreeOriginNode* origin_node = | |
890 root->GetOrCreateOriginNode(source); | |
891 CookieTreeCookiesNode* cookies_node = | |
892 origin_node->GetOrCreateCookiesNode(); | |
893 CookieTreeCookieNode* new_cookie = new CookieTreeCookieNode(it); | |
894 cookies_node->AddCookieNode(new_cookie); | |
895 } | |
896 } | |
897 NotifyObserverTreeNodeChanged(root); | |
898 NotifyObserverEndBatch(); | |
899 } | |
900 | |
901 void CookiesTreeModel::OnDatabaseModelInfoLoaded( | |
902 const DatabaseInfoList& database_info) { | |
903 database_info_list_ = database_info; | |
904 PopulateDatabaseInfoWithFilter(std::wstring()); | |
905 } | |
906 | |
907 void CookiesTreeModel::PopulateDatabaseInfoWithFilter( | 980 void CookiesTreeModel::PopulateDatabaseInfoWithFilter( |
908 const std::wstring& filter) { | 981 string16* app, |
909 if (database_info_list_.empty()) | 982 const std::wstring& filter) { |
910 return; | 983 |
911 CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot()); | 984 CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot()); |
912 NotifyObserverBeginBatch(); | 985 bool begin_batch = false; |
913 for (DatabaseInfoList::iterator database_info = database_info_list_.begin(); | 986 |
914 database_info != database_info_list_.end(); | 987 for (ContainerMap::iterator ait = app_data_map_.begin(); |
915 ++database_info) { | 988 ait != app_data_map_.end(); ++ait ) { |
916 GURL origin(database_info->origin); | 989 LocalDataContainer* container = ait->second; |
917 | 990 |
918 if (!filter.size() || | 991 if (container->database_info_list_.empty()) |
919 (CookieTreeOriginNode::TitleForUrl(origin).find(filter) != | 992 continue; |
920 std::wstring::npos)) { | 993 |
921 CookieTreeOriginNode* origin_node = | 994 if (app && *app != container->app_id()) |
922 root->GetOrCreateOriginNode(origin); | 995 continue; |
923 CookieTreeDatabasesNode* databases_node = | 996 |
924 origin_node->GetOrCreateDatabasesNode(); | 997 if (!begin_batch) { |
925 databases_node->AddDatabaseNode( | 998 NotifyObserverBeginBatch(); |
926 new CookieTreeDatabaseNode(database_info)); | 999 begin_batch = true; |
927 } | 1000 } |
928 } | 1001 |
929 NotifyObserverTreeNodeChanged(root); | 1002 CookieTreeAppNode* app_node = |
930 NotifyObserverEndBatch(); | 1003 root->GetOrCreateAppNode(container->app_name(), container->app_id()); |
931 } | 1004 |
932 | 1005 for (DatabaseInfoList::iterator database_info = |
933 void CookiesTreeModel::OnLocalStorageModelInfoLoaded( | 1006 container->database_info_list_.begin(); |
934 const LocalStorageInfoList& local_storage_info) { | 1007 database_info != container->database_info_list_.end(); |
935 local_storage_info_list_ = local_storage_info; | 1008 ++database_info) { |
936 PopulateLocalStorageInfoWithFilter(std::wstring()); | 1009 GURL origin(database_info->origin); |
1010 | |
1011 if (!filter.size() || | |
1012 (CookieTreeOriginNode::TitleForUrl(origin).find(filter) != | |
1013 std::wstring::npos)) { | |
1014 CookieTreeOriginNode* origin_node = | |
1015 app_node->GetOrCreateOriginNode(origin); | |
1016 CookieTreeDatabasesNode* databases_node = | |
1017 origin_node->GetOrCreateDatabasesNode(); | |
1018 databases_node->AddDatabaseNode( | |
1019 new CookieTreeDatabaseNode(database_info)); | |
1020 } | |
1021 } | |
1022 } | |
1023 | |
1024 if (begin_batch) { | |
1025 NotifyObserverTreeNodeChanged(root); | |
1026 NotifyObserverEndBatch(); | |
1027 } | |
937 } | 1028 } |
938 | 1029 |
939 void CookiesTreeModel::PopulateLocalStorageInfoWithFilter( | 1030 void CookiesTreeModel::PopulateLocalStorageInfoWithFilter( |
940 const std::wstring& filter) { | 1031 string16* app, |
941 if (local_storage_info_list_.empty()) | 1032 const std::wstring& filter) { |
942 return; | 1033 |
943 CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot()); | 1034 CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot()); |
944 NotifyObserverBeginBatch(); | 1035 bool begin_batch = false; |
945 for (LocalStorageInfoList::iterator local_storage_info = | 1036 |
946 local_storage_info_list_.begin(); | 1037 for (ContainerMap::iterator ait = app_data_map_.begin(); |
947 local_storage_info != local_storage_info_list_.end(); | 1038 ait != app_data_map_.end(); ++ait ) { |
948 ++local_storage_info) { | 1039 LocalDataContainer* container = ait->second; |
949 GURL origin(local_storage_info->origin); | 1040 |
950 | 1041 if (container->local_storage_info_list_.empty()) |
951 if (!filter.size() || | 1042 continue; |
952 (CookieTreeOriginNode::TitleForUrl(origin).find(filter) != | 1043 |
953 std::wstring::npos)) { | 1044 if (app && *app != container->app_id()) |
954 CookieTreeOriginNode* origin_node = | 1045 continue; |
955 root->GetOrCreateOriginNode(origin); | 1046 |
956 CookieTreeLocalStoragesNode* local_storages_node = | 1047 if (!begin_batch) { |
957 origin_node->GetOrCreateLocalStoragesNode(); | 1048 NotifyObserverBeginBatch(); |
958 local_storages_node->AddLocalStorageNode( | 1049 begin_batch = true; |
959 new CookieTreeLocalStorageNode(local_storage_info)); | 1050 } |
960 } | 1051 |
961 } | 1052 CookieTreeAppNode* app_node = |
962 NotifyObserverTreeNodeChanged(root); | 1053 root->GetOrCreateAppNode(container->app_name(), container->app_id()); |
963 NotifyObserverEndBatch(); | 1054 |
964 } | 1055 for (LocalStorageInfoList::iterator local_storage_info = |
965 | 1056 container->local_storage_info_list_.begin(); |
966 void CookiesTreeModel::OnSessionStorageModelInfoLoaded( | 1057 local_storage_info != container->local_storage_info_list_.end(); |
967 const LocalStorageInfoList& session_storage_info) { | 1058 ++local_storage_info) { |
968 session_storage_info_list_ = session_storage_info; | 1059 GURL origin(local_storage_info->origin); |
969 PopulateSessionStorageInfoWithFilter(std::wstring()); | 1060 |
1061 if (!filter.size() || | |
1062 (CookieTreeOriginNode::TitleForUrl(origin).find(filter) != | |
1063 std::wstring::npos)) { | |
1064 CookieTreeOriginNode* origin_node = | |
1065 app_node->GetOrCreateOriginNode(origin); | |
1066 CookieTreeLocalStoragesNode* local_storages_node = | |
1067 origin_node->GetOrCreateLocalStoragesNode(); | |
1068 local_storages_node->AddLocalStorageNode( | |
1069 new CookieTreeLocalStorageNode(local_storage_info)); | |
1070 } | |
1071 } | |
1072 } | |
1073 if (begin_batch) { | |
1074 NotifyObserverTreeNodeChanged(root); | |
1075 NotifyObserverEndBatch(); | |
1076 } | |
970 } | 1077 } |
971 | 1078 |
972 void CookiesTreeModel::PopulateSessionStorageInfoWithFilter( | 1079 void CookiesTreeModel::PopulateSessionStorageInfoWithFilter( |
973 const std::wstring& filter) { | 1080 string16* app, |
974 if (session_storage_info_list_.empty()) | 1081 const std::wstring& filter) { |
975 return; | 1082 CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot()); |
976 CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot()); | 1083 bool begin_batch = false; |
977 NotifyObserverBeginBatch(); | 1084 |
978 for (LocalStorageInfoList::iterator session_storage_info = | 1085 for (ContainerMap::iterator ait = app_data_map_.begin(); |
979 session_storage_info_list_.begin(); | 1086 ait != app_data_map_.end(); ++ait ) { |
980 session_storage_info != session_storage_info_list_.end(); | 1087 LocalDataContainer* container = ait->second; |
981 ++session_storage_info) { | 1088 |
982 GURL origin(session_storage_info->origin); | 1089 if (container->session_storage_info_list_.empty()) |
983 | 1090 continue; |
984 if (!filter.size() || | 1091 |
985 (CookieTreeOriginNode::TitleForUrl(origin).find(filter) != | 1092 if (app && *app != container->app_id()) |
986 std::wstring::npos)) { | 1093 continue; |
987 CookieTreeOriginNode* origin_node = | 1094 |
988 root->GetOrCreateOriginNode(origin); | 1095 if (!begin_batch) { |
989 CookieTreeSessionStoragesNode* session_storages_node = | 1096 NotifyObserverBeginBatch(); |
990 origin_node->GetOrCreateSessionStoragesNode(); | 1097 begin_batch = true; |
991 session_storages_node->AddSessionStorageNode( | 1098 } |
992 new CookieTreeSessionStorageNode(session_storage_info)); | 1099 |
993 } | 1100 CookieTreeAppNode* app_node = |
994 } | 1101 root->GetOrCreateAppNode(container->app_name(), container->app_id()); |
995 NotifyObserverTreeNodeChanged(root); | 1102 |
996 NotifyObserverEndBatch(); | 1103 for (LocalStorageInfoList::iterator session_storage_info = |
997 } | 1104 container->session_storage_info_list_.begin(); |
998 | 1105 session_storage_info != container->session_storage_info_list_.end(); |
999 void CookiesTreeModel::OnIndexedDBModelInfoLoaded( | 1106 ++session_storage_info) { |
1000 const IndexedDBInfoList& indexed_db_info) { | 1107 GURL origin(session_storage_info->origin); |
1001 indexed_db_info_list_ = indexed_db_info; | 1108 |
1002 PopulateIndexedDBInfoWithFilter(std::wstring()); | 1109 if (!filter.size() || |
1110 (CookieTreeOriginNode::TitleForUrl(origin).find(filter) != | |
1111 std::wstring::npos)) { | |
1112 CookieTreeOriginNode* origin_node = | |
1113 app_node->GetOrCreateOriginNode(origin); | |
1114 CookieTreeSessionStoragesNode* session_storages_node = | |
1115 origin_node->GetOrCreateSessionStoragesNode(); | |
1116 session_storages_node->AddSessionStorageNode( | |
1117 new CookieTreeSessionStorageNode(session_storage_info)); | |
1118 } | |
1119 } | |
1120 } | |
1121 if (begin_batch) { | |
1122 NotifyObserverTreeNodeChanged(root); | |
1123 NotifyObserverEndBatch(); | |
1124 } | |
1003 } | 1125 } |
1004 | 1126 |
1005 void CookiesTreeModel::PopulateIndexedDBInfoWithFilter( | 1127 void CookiesTreeModel::PopulateIndexedDBInfoWithFilter( |
1006 const std::wstring& filter) { | 1128 string16* app, |
1007 if (indexed_db_info_list_.empty()) | 1129 const std::wstring& filter) { |
1008 return; | 1130 |
1009 CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot()); | 1131 CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot()); |
1010 NotifyObserverBeginBatch(); | 1132 bool begin_batch = false; |
1011 for (IndexedDBInfoList::iterator indexed_db_info = | 1133 |
1012 indexed_db_info_list_.begin(); | 1134 for (ContainerMap::iterator ait = app_data_map_.begin(); |
1013 indexed_db_info != indexed_db_info_list_.end(); | 1135 ait != app_data_map_.end(); ++ait ) { |
1014 ++indexed_db_info) { | 1136 LocalDataContainer* container = ait->second; |
1015 const GURL& origin = indexed_db_info->origin; | 1137 |
1016 | 1138 if (container->indexed_db_info_list_.empty()) |
1017 if (!filter.size() || | 1139 continue; |
1018 (CookieTreeOriginNode::TitleForUrl(origin).find(filter) != | 1140 |
1019 std::wstring::npos)) { | 1141 if (app && *app != container->app_id()) |
1020 CookieTreeOriginNode* origin_node = | 1142 continue; |
1021 root->GetOrCreateOriginNode(origin); | 1143 |
1022 CookieTreeIndexedDBsNode* indexed_dbs_node = | 1144 if (!begin_batch) { |
1023 origin_node->GetOrCreateIndexedDBsNode(); | 1145 NotifyObserverBeginBatch(); |
1024 indexed_dbs_node->AddIndexedDBNode( | 1146 begin_batch = true; |
1025 new CookieTreeIndexedDBNode(indexed_db_info)); | 1147 } |
1026 } | 1148 |
1027 } | 1149 CookieTreeAppNode* app_node = |
1028 NotifyObserverTreeNodeChanged(root); | 1150 root->GetOrCreateAppNode(container->app_name(), container->app_id()); |
1029 NotifyObserverEndBatch(); | 1151 |
1030 } | 1152 for (IndexedDBInfoList::iterator indexed_db_info = |
1031 | 1153 container->indexed_db_info_list_.begin(); |
1032 void CookiesTreeModel::OnFileSystemModelInfoLoaded( | 1154 indexed_db_info != container->indexed_db_info_list_.end(); |
1033 const FileSystemInfoList& file_system_info) { | 1155 ++indexed_db_info) { |
1034 file_system_info_list_ = file_system_info; | 1156 const GURL& origin = indexed_db_info->origin; |
1035 PopulateFileSystemInfoWithFilter(std::wstring()); | 1157 |
1158 if (!filter.size() || | |
1159 (CookieTreeOriginNode::TitleForUrl(origin).find(filter) != | |
1160 std::wstring::npos)) { | |
1161 CookieTreeOriginNode* origin_node = | |
1162 app_node->GetOrCreateOriginNode(origin); | |
1163 CookieTreeIndexedDBsNode* indexed_dbs_node = | |
1164 origin_node->GetOrCreateIndexedDBsNode(); | |
1165 indexed_dbs_node->AddIndexedDBNode( | |
1166 new CookieTreeIndexedDBNode(indexed_db_info)); | |
1167 } | |
1168 } | |
1169 } | |
1170 if (begin_batch) { | |
1171 NotifyObserverTreeNodeChanged(root); | |
1172 NotifyObserverEndBatch(); | |
1173 } | |
1174 } | |
1175 | |
1176 void CookiesTreeModel::PopulateServerBoundCertInfoWithFilter( | |
1177 string16* app, | |
1178 const std::wstring& filter) { | |
1179 CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot()); | |
1180 bool begin_batch = false; | |
1181 | |
1182 for (ContainerMap::iterator ait = app_data_map_.begin(); | |
1183 ait != app_data_map_.end(); ++ait ) { | |
1184 LocalDataContainer* container = ait->second; | |
1185 | |
1186 if (container->server_bound_cert_list_.empty()) | |
1187 continue; | |
1188 | |
1189 if (app && *app != container->app_id()) | |
1190 continue; | |
1191 | |
1192 if (!begin_batch) { | |
1193 NotifyObserverBeginBatch(); | |
1194 begin_batch = true; | |
1195 } | |
1196 | |
1197 CookieTreeAppNode* app_node = | |
1198 root->GetOrCreateAppNode(container->app_name(), container->app_id()); | |
1199 | |
1200 for (ServerBoundCertList::iterator cert_info = | |
1201 container->server_bound_cert_list_.begin(); | |
1202 cert_info != container->server_bound_cert_list_.end(); | |
1203 ++cert_info) { | |
1204 GURL origin(cert_info->server_identifier()); | |
1205 if (!origin.is_valid()) { | |
1206 // Domain Bound Cert. Make a valid URL to satisfy the | |
1207 // CookieTreeRootNode::GetOrCreateOriginNode interface. | |
1208 origin = GURL(std::string(chrome::kHttpsScheme) + | |
1209 content::kStandardSchemeSeparator + | |
1210 cert_info->server_identifier() + "/"); | |
1211 } | |
1212 std::wstring title = CookieTreeOriginNode::TitleForUrl(origin); | |
1213 | |
1214 if (!filter.size() || title.find(filter) != std::wstring::npos) { | |
1215 CookieTreeOriginNode* origin_node = | |
1216 app_node->GetOrCreateOriginNode(origin); | |
1217 CookieTreeServerBoundCertsNode* server_bound_certs_node = | |
1218 origin_node->GetOrCreateServerBoundCertsNode(); | |
1219 server_bound_certs_node->AddServerBoundCertNode( | |
1220 new CookieTreeServerBoundCertNode(cert_info)); | |
1221 } | |
1222 } | |
1223 } | |
1224 if (begin_batch) { | |
1225 NotifyObserverTreeNodeChanged(root); | |
1226 NotifyObserverEndBatch(); | |
1227 } | |
1036 } | 1228 } |
1037 | 1229 |
1038 void CookiesTreeModel::PopulateFileSystemInfoWithFilter( | 1230 void CookiesTreeModel::PopulateFileSystemInfoWithFilter( |
1039 const std::wstring& filter) { | 1231 string16* app, |
1040 if (file_system_info_list_.empty()) | 1232 const std::wstring& filter) { |
1041 return; | 1233 CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot()); |
1042 CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot()); | 1234 bool begin_batch = false; |
1043 NotifyObserverBeginBatch(); | 1235 |
1044 for (FileSystemInfoList::iterator file_system_info = | 1236 for (ContainerMap::iterator ait = app_data_map_.begin(); |
1045 file_system_info_list_.begin(); | 1237 ait != app_data_map_.end(); ++ait ) { |
1046 file_system_info != file_system_info_list_.end(); | 1238 LocalDataContainer* container = ait->second; |
1047 ++file_system_info) { | 1239 |
1048 GURL origin(file_system_info->origin); | 1240 if (container->file_system_info_list_.empty()) |
1049 | 1241 continue; |
1050 if (!filter.size() || | 1242 |
1051 (CookieTreeOriginNode::TitleForUrl(origin).find(filter) != | 1243 if (app && *app != container->app_id()) |
1052 std::wstring::npos)) { | 1244 continue; |
1053 CookieTreeOriginNode* origin_node = | 1245 |
1054 root->GetOrCreateOriginNode(origin); | 1246 if (!begin_batch) { |
1055 CookieTreeFileSystemsNode* file_systems_node = | 1247 NotifyObserverBeginBatch(); |
1056 origin_node->GetOrCreateFileSystemsNode(); | 1248 begin_batch = true; |
1057 file_systems_node->AddFileSystemNode( | 1249 } |
1058 new CookieTreeFileSystemNode(file_system_info)); | 1250 |
1059 } | 1251 CookieTreeAppNode* app_node = |
1060 } | 1252 root->GetOrCreateAppNode(container->app_name(), container->app_id()); |
1061 NotifyObserverTreeNodeChanged(root); | 1253 |
1062 NotifyObserverEndBatch(); | 1254 for (FileSystemInfoList::iterator file_system_info = |
1063 } | 1255 container->file_system_info_list_.begin(); |
1064 | 1256 file_system_info != container->file_system_info_list_.end(); |
1065 void CookiesTreeModel::OnQuotaModelInfoLoaded( | 1257 ++file_system_info) { |
1066 const QuotaInfoArray& quota_info) { | 1258 GURL origin(file_system_info->origin); |
1067 quota_info_list_ = quota_info; | 1259 |
1068 PopulateQuotaInfoWithFilter(std::wstring()); | 1260 if (!filter.size() || |
1261 (CookieTreeOriginNode::TitleForUrl(origin).find(filter) != | |
1262 std::wstring::npos)) { | |
1263 CookieTreeOriginNode* origin_node = | |
1264 app_node->GetOrCreateOriginNode(origin); | |
1265 CookieTreeFileSystemsNode* file_systems_node = | |
1266 origin_node->GetOrCreateFileSystemsNode(); | |
1267 file_systems_node->AddFileSystemNode( | |
1268 new CookieTreeFileSystemNode(file_system_info)); | |
1269 } | |
1270 } | |
1271 } | |
1272 if (begin_batch) { | |
1273 NotifyObserverTreeNodeChanged(root); | |
1274 NotifyObserverEndBatch(); | |
1275 } | |
1069 } | 1276 } |
1070 | 1277 |
1071 void CookiesTreeModel::PopulateQuotaInfoWithFilter( | 1278 void CookiesTreeModel::PopulateQuotaInfoWithFilter( |
1072 const std::wstring& filter) { | 1279 string16* app, |
1073 if (quota_info_list_.empty()) | 1280 const std::wstring& filter) { |
1074 return; | 1281 CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot()); |
1075 CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot()); | 1282 bool begin_batch = false; |
1076 NotifyObserverBeginBatch(); | 1283 |
1077 for (QuotaInfoArray::iterator quota_info = quota_info_list_.begin(); | 1284 for (ContainerMap::iterator ait = app_data_map_.begin(); |
1078 quota_info != quota_info_list_.end(); | 1285 ait != app_data_map_.end(); ++ait ) { |
1079 ++quota_info) { | 1286 LocalDataContainer* container = ait->second; |
1080 if (!filter.size() || | 1287 |
1081 (UTF8ToWide(quota_info->host).find(filter) != std::wstring::npos)) { | 1288 if (container->quota_info_list_.empty()) |
1082 CookieTreeOriginNode* origin_node = | 1289 continue; |
1083 root->GetOrCreateOriginNode(GURL("http://" + quota_info->host)); | 1290 |
1084 origin_node->UpdateOrCreateQuotaNode(quota_info); | 1291 if (app && *app != container->app_id()) |
1085 } | 1292 continue; |
1086 } | 1293 |
1087 NotifyObserverTreeNodeChanged(root); | 1294 if (!begin_batch) { |
1088 NotifyObserverEndBatch(); | 1295 NotifyObserverBeginBatch(); |
1089 } | 1296 begin_batch = true; |
1090 | 1297 } |
1091 void CookiesTreeModel::OnServerBoundCertModelInfoLoaded( | 1298 |
1092 const ServerBoundCertList& cert_list) { | 1299 CookieTreeAppNode* app_node = |
1093 server_bound_cert_list_ = cert_list; | 1300 root->GetOrCreateAppNode(container->app_name(), container->app_id()); |
1094 PopulateServerBoundCertInfoWithFilter(std::wstring()); | 1301 |
1095 } | 1302 for (QuotaInfoArray::iterator quota_info = |
1096 | 1303 container->quota_info_list_.begin(); |
1097 void CookiesTreeModel::PopulateServerBoundCertInfoWithFilter( | 1304 quota_info != container->quota_info_list_.end(); |
1098 const std::wstring& filter) { | 1305 ++quota_info) { |
1099 if (server_bound_cert_list_.empty()) | 1306 if (!filter.size() || |
1100 return; | 1307 (UTF8ToWide(quota_info->host).find(filter) != std::wstring::npos)) { |
1101 CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot()); | 1308 CookieTreeOriginNode* origin_node = |
1102 NotifyObserverBeginBatch(); | 1309 app_node->GetOrCreateOriginNode(GURL("http://" + quota_info->host)); |
1103 for (ServerBoundCertList::iterator cert_info = | 1310 origin_node->UpdateOrCreateQuotaNode(quota_info); |
1104 server_bound_cert_list_.begin(); | 1311 } |
1105 cert_info != server_bound_cert_list_.end(); | 1312 } |
1106 ++cert_info) { | 1313 } |
1107 GURL origin(cert_info->server_identifier()); | 1314 if (begin_batch) { |
1108 if (!origin.is_valid()) { | 1315 NotifyObserverTreeNodeChanged(root); |
1109 // Domain Bound Cert. Make a valid URL to satisfy the | 1316 NotifyObserverEndBatch(); |
1110 // CookieTreeRootNode::GetOrCreateOriginNode interface. | 1317 } |
1111 origin = GURL(std::string(chrome::kHttpsScheme) + | |
1112 content::kStandardSchemeSeparator + | |
1113 cert_info->server_identifier() + "/"); | |
1114 } | |
1115 std::wstring title = CookieTreeOriginNode::TitleForUrl(origin); | |
1116 | |
1117 if (!filter.size() || title.find(filter) != std::wstring::npos) { | |
1118 CookieTreeOriginNode* origin_node = | |
1119 root->GetOrCreateOriginNode(origin); | |
1120 CookieTreeServerBoundCertsNode* server_bound_certs_node = | |
1121 origin_node->GetOrCreateServerBoundCertsNode(); | |
1122 server_bound_certs_node->AddServerBoundCertNode( | |
1123 new CookieTreeServerBoundCertNode(cert_info)); | |
1124 } | |
1125 } | |
1126 NotifyObserverTreeNodeChanged(root); | |
1127 NotifyObserverEndBatch(); | |
1128 } | 1318 } |
1129 | 1319 |
1130 void CookiesTreeModel::NotifyObserverBeginBatch() { | 1320 void CookiesTreeModel::NotifyObserverBeginBatch() { |
1131 // Only notify the model once if we're batching in a nested manner. | 1321 // Only notify the model once if we're batching in a nested manner. |
1132 if (batch_update_++ == 0) { | 1322 if (batch_update_++ == 0) { |
1133 FOR_EACH_OBSERVER(Observer, | 1323 FOR_EACH_OBSERVER(Observer, |
1134 cookies_observer_list_, | 1324 cookies_observer_list_, |
1135 TreeModelBeginBatch(this)); | 1325 TreeModelBeginBatch(this)); |
1136 } | 1326 } |
1137 } | 1327 } |
1138 | 1328 |
1139 void CookiesTreeModel::NotifyObserverEndBatch() { | 1329 void CookiesTreeModel::NotifyObserverEndBatch() { |
1140 // Only notify the observers if this is the outermost call to EndBatch() if | 1330 // Only notify the observers if this is the outermost call to EndBatch() if |
1141 // called in a nested manner. | 1331 // called in a nested manner. |
1142 if (--batch_update_ == 0) { | 1332 if (--batch_update_ == 0) { |
1143 FOR_EACH_OBSERVER(Observer, | 1333 FOR_EACH_OBSERVER(Observer, |
1144 cookies_observer_list_, | 1334 cookies_observer_list_, |
1145 TreeModelEndBatch(this)); | 1335 TreeModelEndBatch(this)); |
1146 } | 1336 } |
1147 } | 1337 } |
1338 | |
1339 BrowsingDataCookieHelper* CookiesTreeModel::GetCookieHelper( | |
1340 const string16& app_id) { | |
1341 LocalDataContainer* container = app_data_map_[app_id]; | |
1342 if (container != NULL) { | |
1343 return container->cookie_helper(); | |
1344 } | |
1345 return NULL; | |
1346 } | |
1347 | |
1348 LocalDataContainer* CookiesTreeModel::GetLocalDataContainer( | |
1349 const string16& app_id) { | |
1350 LocalDataContainer* container = app_data_map_[app_id]; | |
1351 return container; | |
1352 } | |
1353 | |
1354 /////////////////////////////////////////////////////////////////////////////// | |
1355 // LocalDataContainer, public: | |
1356 | |
1357 LocalDataContainer::LocalDataContainer( | |
1358 const string16& app_name, | |
1359 const string16& app_id, | |
1360 BrowsingDataCookieHelper* cookie_helper, | |
1361 BrowsingDataDatabaseHelper* database_helper, | |
1362 BrowsingDataLocalStorageHelper* local_storage_helper, | |
1363 BrowsingDataLocalStorageHelper* session_storage_helper, | |
1364 BrowsingDataAppCacheHelper* appcache_helper, | |
1365 BrowsingDataIndexedDBHelper* indexed_db_helper, | |
1366 BrowsingDataFileSystemHelper* file_system_helper, | |
1367 BrowsingDataQuotaHelper* quota_helper, | |
1368 BrowsingDataServerBoundCertHelper* server_bound_cert_helper, | |
1369 bool use_cookie_source) | |
1370 : //app_name_(app_name), | |
markusheintz_
2012/06/13 23:40:39
Uncomment these to lines please.
| |
1371 //app_id_(app_id_), | |
1372 appcache_helper_(appcache_helper), | |
markusheintz_
2012/06/13 23:40:39
s/(app_id_)/(app_id)
| |
1373 cookie_helper_(cookie_helper), | |
1374 database_helper_(database_helper), | |
1375 local_storage_helper_(local_storage_helper), | |
1376 session_storage_helper_(session_storage_helper), | |
1377 indexed_db_helper_(indexed_db_helper), | |
1378 file_system_helper_(file_system_helper), | |
1379 quota_helper_(quota_helper), | |
1380 server_bound_cert_helper_(server_bound_cert_helper), | |
1381 delegate_(NULL), | |
markusheintz_
2012/06/13 23:40:39
Please indent.
| |
1382 //use_cookie_source_(use_cookie_source), | |
markusheintz_
2012/06/13 23:40:39
Same as above. Please remove or uncomment.
| |
1383 ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)) { | |
1384 app_name_ = app_name; | |
markusheintz_
2012/06/13 23:40:39
I think it is preferred to initialize these two fi
| |
1385 app_id_ = app_id; | |
1386 | |
1387 } | |
1388 | |
1389 LocalDataContainer::~LocalDataContainer() {} | |
1390 | |
1391 void LocalDataContainer::Init(CookiesTreeModelDelegate* d) { | |
markusheintz_
2012/06/13 23:40:39
s/d/delegate
| |
1392 DCHECK(!delegate_); | |
1393 delegate_ = d; | |
1394 | |
1395 DCHECK(cookie_helper_); | |
1396 cookie_helper_->StartFetching( | |
1397 base::Bind(&LocalDataContainer::OnCookiesModelInfoLoaded, | |
1398 weak_ptr_factory_.GetWeakPtr())); | |
1399 DCHECK(database_helper_); | |
1400 database_helper_->StartFetching( | |
1401 base::Bind(&LocalDataContainer::OnDatabaseModelInfoLoaded, | |
1402 weak_ptr_factory_.GetWeakPtr())); | |
1403 DCHECK(local_storage_helper_); | |
1404 local_storage_helper_->StartFetching( | |
1405 base::Bind(&LocalDataContainer::OnLocalStorageModelInfoLoaded, | |
1406 weak_ptr_factory_.GetWeakPtr())); | |
1407 if (session_storage_helper_) { | |
1408 session_storage_helper_->StartFetching( | |
1409 base::Bind(&LocalDataContainer::OnSessionStorageModelInfoLoaded, | |
1410 weak_ptr_factory_.GetWeakPtr())); | |
1411 } | |
1412 | |
1413 // TODO(michaeln): When all of the UI implementations have been updated, make | |
1414 // this a required parameter. | |
1415 if (appcache_helper_) { | |
1416 appcache_helper_->StartFetching( | |
1417 base::Bind(&LocalDataContainer::OnAppCacheModelInfoLoaded, | |
1418 weak_ptr_factory_.GetWeakPtr())); | |
1419 } | |
1420 | |
1421 if (indexed_db_helper_) { | |
1422 indexed_db_helper_->StartFetching( | |
1423 base::Bind(&LocalDataContainer::OnIndexedDBModelInfoLoaded, | |
1424 weak_ptr_factory_.GetWeakPtr())); | |
1425 } | |
1426 | |
1427 if (file_system_helper_) { | |
1428 file_system_helper_->StartFetching( | |
1429 base::Bind(&LocalDataContainer::OnFileSystemModelInfoLoaded, | |
1430 weak_ptr_factory_.GetWeakPtr())); | |
1431 } | |
1432 | |
1433 if (quota_helper_) { | |
1434 quota_helper_->StartFetching( | |
1435 base::Bind(&LocalDataContainer::OnQuotaModelInfoLoaded, | |
1436 weak_ptr_factory_.GetWeakPtr())); | |
1437 } | |
1438 | |
1439 if (server_bound_cert_helper_) { | |
1440 server_bound_cert_helper_->StartFetching( | |
1441 base::Bind(&LocalDataContainer::OnServerBoundCertModelInfoLoaded, | |
1442 weak_ptr_factory_.GetWeakPtr())); | |
1443 } | |
1444 } | |
1445 | |
1446 void LocalDataContainer::OnAppCacheModelInfoLoaded() { | |
1447 using appcache::AppCacheInfo; | |
1448 using appcache::AppCacheInfoCollection; | |
1449 using appcache::AppCacheInfoVector; | |
1450 typedef std::map<GURL, AppCacheInfoVector> InfoByOrigin; | |
1451 | |
1452 scoped_refptr<AppCacheInfoCollection> appcache_info = | |
1453 appcache_helper_->info_collection(); | |
1454 if (!appcache_info || appcache_info->infos_by_origin.empty()) | |
1455 return; | |
1456 | |
1457 for (InfoByOrigin::const_iterator origin = | |
1458 appcache_info->infos_by_origin.begin(); | |
1459 origin != appcache_info->infos_by_origin.end(); ++origin) { | |
1460 std::list<AppCacheInfo>& info_list = appcache_info_[origin->first]; | |
1461 info_list.insert( | |
1462 info_list.begin(), origin->second.begin(), origin->second.end()); | |
1463 } | |
1464 | |
1465 delegate_->PopulateAppCacheInfoWithFilter(&app_name_, std::wstring()); | |
1466 } | |
1467 | |
1468 void LocalDataContainer::OnCookiesModelInfoLoaded( | |
1469 const net::CookieList& cookie_list) { | |
1470 cookie_list_.insert(cookie_list_.begin(), | |
1471 cookie_list.begin(), | |
1472 cookie_list.end()); | |
1473 DCHECK(delegate_); | |
1474 delegate_->PopulateCookieInfoWithFilter(&app_id_, std::wstring()); | |
1475 } | |
1476 | |
1477 void LocalDataContainer::OnDatabaseModelInfoLoaded( | |
1478 const DatabaseInfoList& database_info) { | |
1479 database_info_list_ = database_info; | |
1480 DCHECK(delegate_); | |
1481 delegate_->PopulateDatabaseInfoWithFilter(&app_id_, std::wstring()); | |
1482 } | |
1483 | |
1484 void LocalDataContainer::OnLocalStorageModelInfoLoaded( | |
1485 const LocalStorageInfoList& local_storage_info) { | |
1486 local_storage_info_list_ = local_storage_info; | |
1487 DCHECK(delegate_); | |
1488 delegate_->PopulateLocalStorageInfoWithFilter(&app_id_, std::wstring()); | |
1489 } | |
1490 | |
1491 void LocalDataContainer::OnSessionStorageModelInfoLoaded( | |
1492 const LocalStorageInfoList& session_storage_info) { | |
1493 session_storage_info_list_ = session_storage_info; | |
1494 DCHECK(delegate_); | |
1495 delegate_->PopulateSessionStorageInfoWithFilter(&app_id_, std::wstring()); | |
1496 } | |
1497 | |
1498 void LocalDataContainer::OnIndexedDBModelInfoLoaded( | |
1499 const IndexedDBInfoList& indexed_db_info) { | |
1500 indexed_db_info_list_ = indexed_db_info; | |
1501 DCHECK(delegate_); | |
1502 delegate_->PopulateIndexedDBInfoWithFilter(&app_id_, std::wstring()); | |
1503 } | |
1504 void LocalDataContainer::OnFileSystemModelInfoLoaded( | |
1505 const FileSystemInfoList& file_system_info) { | |
1506 file_system_info_list_ = file_system_info; | |
1507 DCHECK(delegate_); | |
1508 delegate_->PopulateFileSystemInfoWithFilter(&app_id_, std::wstring()); | |
1509 } | |
1510 | |
1511 void LocalDataContainer::OnQuotaModelInfoLoaded( | |
1512 const QuotaInfoArray& quota_info) { | |
1513 quota_info_list_ = quota_info; | |
1514 DCHECK(delegate_); | |
1515 delegate_->PopulateQuotaInfoWithFilter(&app_id_, std::wstring()); | |
1516 } | |
1517 | |
1518 void LocalDataContainer::OnServerBoundCertModelInfoLoaded( | |
1519 const ServerBoundCertList& cert_list) { | |
1520 server_bound_cert_list_ = cert_list; | |
1521 DCHECK(delegate_); | |
1522 delegate_->PopulateServerBoundCertInfoWithFilter(&app_id_, std::wstring()); | |
1523 } | |
OLD | NEW |