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 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
61 // model, and tell CookieMonster to delete the cookies. We can keep the | 61 // model, and tell CookieMonster to delete the cookies. We can keep the |
62 // vector storing the cookies in-tact and not delete from there (that would | 62 // vector storing the cookies in-tact and not delete from there (that would |
63 // invalidate our pointers), and the fact that it contains semi out-of-date | 63 // invalidate our pointers), and the fact that it contains semi out-of-date |
64 // data is not problematic as we don't re-build the model based on that. | 64 // data is not problematic as we don't re-build the model based on that. |
65 GetModel()->cookie_monster_->DeleteCanonicalCookie(*cookie_); | 65 GetModel()->cookie_monster_->DeleteCanonicalCookie(*cookie_); |
66 } | 66 } |
67 | 67 |
68 CookieTreeNode::DetailedInfo CookieTreeCookieNode::GetDetailedInfo() const { | 68 CookieTreeNode::DetailedInfo CookieTreeCookieNode::GetDetailedInfo() const { |
69 return DetailedInfo(parent()->parent()->GetTitle(), | 69 return DetailedInfo(parent()->parent()->GetTitle(), |
70 DetailedInfo::TYPE_COOKIE, | 70 DetailedInfo::TYPE_COOKIE, |
71 cookie_, NULL, NULL, NULL, NULL, NULL, NULL, NULL); | 71 cookie_, NULL, NULL, NULL, NULL, NULL, NULL); |
72 } | 72 } |
73 | 73 |
74 namespace { | 74 namespace { |
75 // comparison functor, for use in CookieTreeRootNode | 75 // comparison functor, for use in CookieTreeRootNode |
76 class OriginNodeComparator { | 76 class OriginNodeComparator { |
77 public: | 77 public: |
78 bool operator() (const CookieTreeNode* lhs, | 78 bool operator() (const CookieTreeNode* lhs, |
79 const CookieTreeNode* rhs) { | 79 const CookieTreeNode* rhs) { |
80 // We want to order by registry controlled domain, so we would get | 80 // We want to order by registry controlled domain, so we would get |
81 // google.com, ad.google.com, www.google.com, | 81 // google.com, ad.google.com, www.google.com, |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
141 | 141 |
142 void CookieTreeAppCacheNode::DeleteStoredObjects() { | 142 void CookieTreeAppCacheNode::DeleteStoredObjects() { |
143 DCHECK(GetModel()->appcache_helper_); | 143 DCHECK(GetModel()->appcache_helper_); |
144 GetModel()->appcache_helper_->DeleteAppCacheGroup( | 144 GetModel()->appcache_helper_->DeleteAppCacheGroup( |
145 appcache_info_->manifest_url); | 145 appcache_info_->manifest_url); |
146 } | 146 } |
147 | 147 |
148 CookieTreeNode::DetailedInfo CookieTreeAppCacheNode::GetDetailedInfo() const { | 148 CookieTreeNode::DetailedInfo CookieTreeAppCacheNode::GetDetailedInfo() const { |
149 return DetailedInfo(parent()->parent()->GetTitle(), | 149 return DetailedInfo(parent()->parent()->GetTitle(), |
150 DetailedInfo::TYPE_APPCACHE, | 150 DetailedInfo::TYPE_APPCACHE, |
151 NULL, NULL, NULL, NULL, appcache_info_, NULL, NULL, NULL); | 151 NULL, NULL, NULL, NULL, appcache_info_, NULL, NULL); |
152 } | 152 } |
153 | 153 |
154 /////////////////////////////////////////////////////////////////////////////// | 154 /////////////////////////////////////////////////////////////////////////////// |
155 // CookieTreeDatabaseNode, public: | 155 // CookieTreeDatabaseNode, public: |
156 | 156 |
157 CookieTreeDatabaseNode::CookieTreeDatabaseNode( | 157 CookieTreeDatabaseNode::CookieTreeDatabaseNode( |
158 BrowsingDataDatabaseHelper::DatabaseInfo* database_info) | 158 BrowsingDataDatabaseHelper::DatabaseInfo* database_info) |
159 : CookieTreeNode(database_info->database_name.empty() ? | 159 : CookieTreeNode(database_info->database_name.empty() ? |
160 l10n_util::GetStringUTF16(IDS_COOKIES_WEB_DATABASE_UNNAMED_NAME) : | 160 l10n_util::GetStringUTF16(IDS_COOKIES_WEB_DATABASE_UNNAMED_NAME) : |
161 UTF8ToUTF16(database_info->database_name)), | 161 UTF8ToUTF16(database_info->database_name)), |
162 database_info_(database_info) { | 162 database_info_(database_info) { |
163 } | 163 } |
164 | 164 |
165 CookieTreeDatabaseNode::~CookieTreeDatabaseNode() {} | 165 CookieTreeDatabaseNode::~CookieTreeDatabaseNode() {} |
166 | 166 |
167 void CookieTreeDatabaseNode::DeleteStoredObjects() { | 167 void CookieTreeDatabaseNode::DeleteStoredObjects() { |
168 GetModel()->database_helper_->DeleteDatabase( | 168 GetModel()->database_helper_->DeleteDatabase( |
169 database_info_->origin_identifier, database_info_->database_name); | 169 database_info_->origin_identifier, database_info_->database_name); |
170 } | 170 } |
171 | 171 |
172 CookieTreeNode::DetailedInfo CookieTreeDatabaseNode::GetDetailedInfo() const { | 172 CookieTreeNode::DetailedInfo CookieTreeDatabaseNode::GetDetailedInfo() const { |
173 return DetailedInfo(parent()->parent()->GetTitle(), | 173 return DetailedInfo(parent()->parent()->GetTitle(), |
174 DetailedInfo::TYPE_DATABASE, | 174 DetailedInfo::TYPE_DATABASE, |
175 NULL, database_info_, NULL, NULL, NULL, NULL, NULL, NULL); | 175 NULL, database_info_, NULL, NULL, NULL, NULL, NULL); |
176 } | 176 } |
177 | 177 |
178 /////////////////////////////////////////////////////////////////////////////// | 178 /////////////////////////////////////////////////////////////////////////////// |
179 // CookieTreeLocalStorageNode, public: | 179 // CookieTreeLocalStorageNode, public: |
180 | 180 |
181 CookieTreeLocalStorageNode::CookieTreeLocalStorageNode( | 181 CookieTreeLocalStorageNode::CookieTreeLocalStorageNode( |
182 BrowsingDataLocalStorageHelper::LocalStorageInfo* local_storage_info) | 182 BrowsingDataLocalStorageHelper::LocalStorageInfo* local_storage_info) |
183 : CookieTreeNode(UTF8ToUTF16( | 183 : CookieTreeNode(UTF8ToUTF16( |
184 local_storage_info->origin.empty() ? | 184 local_storage_info->origin.empty() ? |
185 local_storage_info->database_identifier : | 185 local_storage_info->database_identifier : |
186 local_storage_info->origin)), | 186 local_storage_info->origin)), |
187 local_storage_info_(local_storage_info) { | 187 local_storage_info_(local_storage_info) { |
188 } | 188 } |
189 | 189 |
190 CookieTreeLocalStorageNode::~CookieTreeLocalStorageNode() {} | 190 CookieTreeLocalStorageNode::~CookieTreeLocalStorageNode() {} |
191 | 191 |
192 void CookieTreeLocalStorageNode::DeleteStoredObjects() { | 192 void CookieTreeLocalStorageNode::DeleteStoredObjects() { |
193 GetModel()->local_storage_helper_->DeleteLocalStorageFile( | 193 GetModel()->local_storage_helper_->DeleteLocalStorageFile( |
194 local_storage_info_->file_path); | 194 local_storage_info_->file_path); |
195 } | 195 } |
196 | 196 |
197 CookieTreeNode::DetailedInfo | 197 CookieTreeNode::DetailedInfo |
198 CookieTreeLocalStorageNode::GetDetailedInfo() const { | 198 CookieTreeLocalStorageNode::GetDetailedInfo() const { |
199 return DetailedInfo(parent()->parent()->GetTitle(), | 199 return DetailedInfo(parent()->parent()->GetTitle(), |
200 DetailedInfo::TYPE_LOCAL_STORAGE, | 200 DetailedInfo::TYPE_LOCAL_STORAGE, |
201 NULL, NULL, local_storage_info_, NULL, NULL, NULL, NULL, | 201 NULL, NULL, local_storage_info_, NULL, NULL, NULL, NULL); |
202 NULL); | |
203 } | 202 } |
204 | 203 |
205 /////////////////////////////////////////////////////////////////////////////// | 204 /////////////////////////////////////////////////////////////////////////////// |
206 // CookieTreeSessionStorageNode, public: | 205 // CookieTreeSessionStorageNode, public: |
207 | 206 |
208 CookieTreeSessionStorageNode::CookieTreeSessionStorageNode( | 207 CookieTreeSessionStorageNode::CookieTreeSessionStorageNode( |
209 BrowsingDataLocalStorageHelper::LocalStorageInfo* session_storage_info) | 208 BrowsingDataLocalStorageHelper::LocalStorageInfo* session_storage_info) |
210 : CookieTreeNode(UTF8ToUTF16( | 209 : CookieTreeNode(UTF8ToUTF16( |
211 session_storage_info->origin.empty() ? | 210 session_storage_info->origin.empty() ? |
212 session_storage_info->database_identifier : | 211 session_storage_info->database_identifier : |
213 session_storage_info->origin)), | 212 session_storage_info->origin)), |
214 session_storage_info_(session_storage_info) { | 213 session_storage_info_(session_storage_info) { |
215 } | 214 } |
216 | 215 |
217 CookieTreeSessionStorageNode::~CookieTreeSessionStorageNode() {} | 216 CookieTreeSessionStorageNode::~CookieTreeSessionStorageNode() {} |
218 | 217 |
219 CookieTreeNode::DetailedInfo | 218 CookieTreeNode::DetailedInfo |
220 CookieTreeSessionStorageNode::GetDetailedInfo() const { | 219 CookieTreeSessionStorageNode::GetDetailedInfo() const { |
221 return DetailedInfo(parent()->parent()->GetTitle(), | 220 return DetailedInfo(parent()->parent()->GetTitle(), |
222 DetailedInfo::TYPE_SESSION_STORAGE, | 221 DetailedInfo::TYPE_SESSION_STORAGE, |
223 NULL, NULL, NULL, session_storage_info_, NULL, NULL, | 222 NULL, NULL, NULL, session_storage_info_, NULL, NULL, |
224 NULL, NULL); | 223 NULL); |
225 } | 224 } |
226 | 225 |
227 /////////////////////////////////////////////////////////////////////////////// | 226 /////////////////////////////////////////////////////////////////////////////// |
228 // CookieTreeIndexedDBNode, public: | 227 // CookieTreeIndexedDBNode, public: |
229 | 228 |
230 CookieTreeIndexedDBNode::CookieTreeIndexedDBNode( | 229 CookieTreeIndexedDBNode::CookieTreeIndexedDBNode( |
231 BrowsingDataIndexedDBHelper::IndexedDBInfo* indexed_db_info) | 230 BrowsingDataIndexedDBHelper::IndexedDBInfo* indexed_db_info) |
232 : CookieTreeNode(UTF8ToUTF16( | 231 : CookieTreeNode(UTF8ToUTF16( |
233 indexed_db_info->origin.empty() ? | 232 indexed_db_info->origin.empty() ? |
234 indexed_db_info->database_identifier : | 233 indexed_db_info->database_identifier : |
235 indexed_db_info->origin)), | 234 indexed_db_info->origin)), |
236 indexed_db_info_(indexed_db_info) { | 235 indexed_db_info_(indexed_db_info) { |
237 } | 236 } |
238 | 237 |
239 CookieTreeIndexedDBNode::~CookieTreeIndexedDBNode() {} | 238 CookieTreeIndexedDBNode::~CookieTreeIndexedDBNode() {} |
240 | 239 |
241 void CookieTreeIndexedDBNode::DeleteStoredObjects() { | 240 void CookieTreeIndexedDBNode::DeleteStoredObjects() { |
242 GetModel()->indexed_db_helper_->DeleteIndexedDBFile( | 241 GetModel()->indexed_db_helper_->DeleteIndexedDBFile( |
243 indexed_db_info_->file_path); | 242 indexed_db_info_->file_path); |
244 } | 243 } |
245 | 244 |
246 CookieTreeNode::DetailedInfo CookieTreeIndexedDBNode::GetDetailedInfo() const { | 245 CookieTreeNode::DetailedInfo CookieTreeIndexedDBNode::GetDetailedInfo() const { |
247 return DetailedInfo(parent()->parent()->GetTitle(), | 246 return DetailedInfo(parent()->parent()->GetTitle(), |
248 DetailedInfo::TYPE_INDEXED_DB, | 247 DetailedInfo::TYPE_INDEXED_DB, |
249 NULL, NULL, NULL, NULL, NULL, indexed_db_info_, NULL, | 248 NULL, NULL, NULL, NULL, NULL, indexed_db_info_, NULL); |
250 NULL); | |
251 } | 249 } |
252 | 250 |
253 /////////////////////////////////////////////////////////////////////////////// | 251 /////////////////////////////////////////////////////////////////////////////// |
254 // CookieTreeFileSystemNode, public: | 252 // CookieTreeFileSystemNode, public: |
255 | 253 |
256 CookieTreeFileSystemNode::CookieTreeFileSystemNode( | 254 CookieTreeFileSystemNode::CookieTreeFileSystemNode( |
257 BrowsingDataFileSystemHelper::FileSystemInfo* file_system_info) | 255 BrowsingDataFileSystemHelper::FileSystemInfo* file_system_info) |
258 : CookieTreeNode(UTF8ToUTF16( | 256 : CookieTreeNode(UTF8ToUTF16( |
259 file_system_info->origin.spec())), | 257 file_system_info->origin.spec())), |
260 file_system_info_(file_system_info) { | 258 file_system_info_(file_system_info) { |
261 } | 259 } |
262 | 260 |
263 CookieTreeFileSystemNode::~CookieTreeFileSystemNode() {} | 261 CookieTreeFileSystemNode::~CookieTreeFileSystemNode() {} |
264 | 262 |
265 void CookieTreeFileSystemNode::DeleteStoredObjects() { | 263 void CookieTreeFileSystemNode::DeleteStoredObjects() { |
266 GetModel()->file_system_helper_->DeleteFileSystemOrigin( | 264 GetModel()->file_system_helper_->DeleteFileSystemOrigin( |
267 file_system_info_->origin); | 265 file_system_info_->origin); |
268 } | 266 } |
269 | 267 |
270 CookieTreeNode::DetailedInfo CookieTreeFileSystemNode::GetDetailedInfo() const { | 268 CookieTreeNode::DetailedInfo CookieTreeFileSystemNode::GetDetailedInfo() const { |
271 return DetailedInfo(parent()->parent()->GetTitle(), | 269 return DetailedInfo(parent()->parent()->GetTitle(), |
272 DetailedInfo::TYPE_FILE_SYSTEM, | 270 DetailedInfo::TYPE_FILE_SYSTEM, |
273 NULL, NULL, NULL, NULL, NULL, NULL, file_system_info_, | 271 NULL, NULL, NULL, NULL, NULL, NULL, file_system_info_); |
274 NULL); | |
275 } | |
276 | |
277 /////////////////////////////////////////////////////////////////////////////// | |
278 // CookieTreeQuotaNode, public: | |
279 | |
280 CookieTreeQuotaNode::CookieTreeQuotaNode( | |
281 BrowsingDataQuotaHelper::QuotaInfo* quota_info) | |
282 : CookieTreeNode(UTF8ToUTF16(quota_info->host)), | |
283 quota_info_(quota_info) { | |
284 } | |
285 | |
286 CookieTreeQuotaNode::~CookieTreeQuotaNode() {} | |
287 | |
288 void CookieTreeQuotaNode::DeleteStoredObjects() { | |
289 GetModel()->quota_helper_->DeleteQuotaHost(quota_info_->host); | |
290 } | |
291 | |
292 CookieTreeNode::DetailedInfo CookieTreeQuotaNode::GetDetailedInfo() const { | |
293 return DetailedInfo(parent()->parent()->GetTitle(), | |
294 DetailedInfo::TYPE_QUOTA, | |
295 NULL, NULL, NULL, NULL, NULL, NULL, NULL, quota_info_); | |
296 } | 272 } |
297 | 273 |
298 /////////////////////////////////////////////////////////////////////////////// | 274 /////////////////////////////////////////////////////////////////////////////// |
299 // CookieTreeRootNode, public: | 275 // CookieTreeRootNode, public: |
300 | 276 |
301 CookieTreeRootNode::CookieTreeRootNode(CookiesTreeModel* model) | 277 CookieTreeRootNode::CookieTreeRootNode(CookiesTreeModel* model) |
302 : model_(model) { | 278 : model_(model) { |
303 } | 279 } |
304 | 280 |
305 CookieTreeRootNode::~CookieTreeRootNode() {} | 281 CookieTreeRootNode::~CookieTreeRootNode() {} |
(...skipping 21 matching lines...) Expand all Loading... |
327 return retval; | 303 return retval; |
328 } | 304 } |
329 | 305 |
330 CookiesTreeModel* CookieTreeRootNode::GetModel() const { | 306 CookiesTreeModel* CookieTreeRootNode::GetModel() const { |
331 return model_; | 307 return model_; |
332 } | 308 } |
333 | 309 |
334 CookieTreeNode::DetailedInfo CookieTreeRootNode::GetDetailedInfo() const { | 310 CookieTreeNode::DetailedInfo CookieTreeRootNode::GetDetailedInfo() const { |
335 return DetailedInfo(string16(), | 311 return DetailedInfo(string16(), |
336 DetailedInfo::TYPE_ROOT, | 312 DetailedInfo::TYPE_ROOT, |
337 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); | 313 NULL, NULL, NULL, NULL, NULL, NULL, NULL); |
338 } | 314 } |
339 | 315 |
340 /////////////////////////////////////////////////////////////////////////////// | 316 /////////////////////////////////////////////////////////////////////////////// |
341 // CookieTreeOriginNode, public: | 317 // CookieTreeOriginNode, public: |
342 | 318 |
343 // static | 319 // static |
344 std::wstring CookieTreeOriginNode::TitleForUrl( | 320 std::wstring CookieTreeOriginNode::TitleForUrl( |
345 const GURL& url) { | 321 const GURL& url) { |
346 return UTF8ToWide(url.SchemeIsFile() ? kFileOriginNodeName : url.host()); | 322 return UTF8ToWide(url.SchemeIsFile() ? kFileOriginNodeName : url.host()); |
347 } | 323 } |
348 | 324 |
349 CookieTreeOriginNode::CookieTreeOriginNode(const GURL& url) | 325 CookieTreeOriginNode::CookieTreeOriginNode(const GURL& url) |
350 : CookieTreeNode(WideToUTF16Hack(TitleForUrl(url))), | 326 : CookieTreeNode(WideToUTF16Hack(TitleForUrl(url))), |
351 cookies_child_(NULL), | 327 cookies_child_(NULL), |
352 databases_child_(NULL), | 328 databases_child_(NULL), |
353 local_storages_child_(NULL), | 329 local_storages_child_(NULL), |
354 session_storages_child_(NULL), | 330 session_storages_child_(NULL), |
355 appcaches_child_(NULL), | 331 appcaches_child_(NULL), |
356 indexed_dbs_child_(NULL), | 332 indexed_dbs_child_(NULL), |
357 file_systems_child_(NULL), | 333 file_systems_child_(NULL), |
358 quota_child_(NULL), | |
359 url_(url) {} | 334 url_(url) {} |
360 | 335 |
361 CookieTreeOriginNode::~CookieTreeOriginNode() {} | 336 CookieTreeOriginNode::~CookieTreeOriginNode() {} |
362 | 337 |
363 CookieTreeNode::DetailedInfo CookieTreeOriginNode::GetDetailedInfo() const { | 338 CookieTreeNode::DetailedInfo CookieTreeOriginNode::GetDetailedInfo() const { |
364 return DetailedInfo(GetTitle(), | 339 return DetailedInfo(GetTitle(), |
365 DetailedInfo::TYPE_ORIGIN, | 340 DetailedInfo::TYPE_ORIGIN, |
366 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); | 341 NULL, NULL, NULL, NULL, NULL, NULL, NULL); |
367 } | 342 } |
368 | 343 |
369 CookieTreeCookiesNode* CookieTreeOriginNode::GetOrCreateCookiesNode() { | 344 CookieTreeCookiesNode* CookieTreeOriginNode::GetOrCreateCookiesNode() { |
370 if (cookies_child_) | 345 if (cookies_child_) |
371 return cookies_child_; | 346 return cookies_child_; |
372 cookies_child_ = new CookieTreeCookiesNode; | 347 cookies_child_ = new CookieTreeCookiesNode; |
373 AddChildSortedByTitle(cookies_child_); | 348 AddChildSortedByTitle(cookies_child_); |
374 return cookies_child_; | 349 return cookies_child_; |
375 } | 350 } |
376 | 351 |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
417 } | 392 } |
418 | 393 |
419 CookieTreeFileSystemsNode* CookieTreeOriginNode::GetOrCreateFileSystemsNode() { | 394 CookieTreeFileSystemsNode* CookieTreeOriginNode::GetOrCreateFileSystemsNode() { |
420 if (file_systems_child_) | 395 if (file_systems_child_) |
421 return file_systems_child_; | 396 return file_systems_child_; |
422 file_systems_child_ = new CookieTreeFileSystemsNode; | 397 file_systems_child_ = new CookieTreeFileSystemsNode; |
423 AddChildSortedByTitle(file_systems_child_); | 398 AddChildSortedByTitle(file_systems_child_); |
424 return file_systems_child_; | 399 return file_systems_child_; |
425 } | 400 } |
426 | 401 |
427 CookieTreeQuotaNode* CookieTreeOriginNode::UpdateOrCreateQuotaNode( | |
428 BrowsingDataQuotaHelper::QuotaInfo* quota_info) { | |
429 if (quota_child_) | |
430 return quota_child_; | |
431 quota_child_ = new CookieTreeQuotaNode(quota_info); | |
432 AddChildSortedByTitle(quota_child_); | |
433 return quota_child_; | |
434 } | |
435 | |
436 void CookieTreeOriginNode::CreateContentException( | 402 void CookieTreeOriginNode::CreateContentException( |
437 HostContentSettingsMap* content_settings, ContentSetting setting) const { | 403 HostContentSettingsMap* content_settings, ContentSetting setting) const { |
438 if (CanCreateContentException()) { | 404 if (CanCreateContentException()) { |
439 content_settings->AddExceptionForURL(url_, | 405 content_settings->AddExceptionForURL(url_, |
440 url_, | 406 url_, |
441 CONTENT_SETTINGS_TYPE_COOKIES, | 407 CONTENT_SETTINGS_TYPE_COOKIES, |
442 "", | 408 "", |
443 setting); | 409 setting); |
444 } | 410 } |
445 } | 411 } |
446 | 412 |
447 bool CookieTreeOriginNode::CanCreateContentException() const { | 413 bool CookieTreeOriginNode::CanCreateContentException() const { |
448 return !url_.SchemeIsFile(); | 414 return !url_.SchemeIsFile(); |
449 } | 415 } |
450 | 416 |
451 /////////////////////////////////////////////////////////////////////////////// | 417 /////////////////////////////////////////////////////////////////////////////// |
452 // CookieTreeCookiesNode, public: | 418 // CookieTreeCookiesNode, public: |
453 | 419 |
454 CookieTreeCookiesNode::CookieTreeCookiesNode() | 420 CookieTreeCookiesNode::CookieTreeCookiesNode() |
455 : CookieTreeNode(l10n_util::GetStringUTF16(IDS_COOKIES_COOKIES)) { | 421 : CookieTreeNode(l10n_util::GetStringUTF16(IDS_COOKIES_COOKIES)) { |
456 } | 422 } |
457 | 423 |
458 CookieTreeCookiesNode::~CookieTreeCookiesNode() { | 424 CookieTreeCookiesNode::~CookieTreeCookiesNode() { |
459 } | 425 } |
460 | 426 |
461 CookieTreeNode::DetailedInfo CookieTreeCookiesNode::GetDetailedInfo() const { | 427 CookieTreeNode::DetailedInfo CookieTreeCookiesNode::GetDetailedInfo() const { |
462 return DetailedInfo(parent()->GetTitle(), | 428 return DetailedInfo(parent()->GetTitle(), |
463 DetailedInfo::TYPE_COOKIES, | 429 DetailedInfo::TYPE_COOKIES, |
464 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); | 430 NULL, NULL, NULL, NULL, NULL, NULL, NULL); |
465 } | 431 } |
466 | 432 |
467 /////////////////////////////////////////////////////////////////////////////// | 433 /////////////////////////////////////////////////////////////////////////////// |
468 // CookieTreeAppCachesNode, public: | 434 // CookieTreeAppCachesNode, public: |
469 | 435 |
470 CookieTreeAppCachesNode::CookieTreeAppCachesNode() | 436 CookieTreeAppCachesNode::CookieTreeAppCachesNode() |
471 : CookieTreeNode(l10n_util::GetStringUTF16( | 437 : CookieTreeNode(l10n_util::GetStringUTF16( |
472 IDS_COOKIES_APPLICATION_CACHES)) { | 438 IDS_COOKIES_APPLICATION_CACHES)) { |
473 } | 439 } |
474 | 440 |
475 CookieTreeAppCachesNode::~CookieTreeAppCachesNode() {} | 441 CookieTreeAppCachesNode::~CookieTreeAppCachesNode() {} |
476 | 442 |
477 CookieTreeNode::DetailedInfo CookieTreeAppCachesNode::GetDetailedInfo() const { | 443 CookieTreeNode::DetailedInfo CookieTreeAppCachesNode::GetDetailedInfo() const { |
478 return DetailedInfo(parent()->GetTitle(), | 444 return DetailedInfo(parent()->GetTitle(), |
479 DetailedInfo::TYPE_APPCACHES, | 445 DetailedInfo::TYPE_APPCACHES, |
480 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); | 446 NULL, NULL, NULL, NULL, NULL, NULL, NULL); |
481 } | 447 } |
482 | 448 |
483 /////////////////////////////////////////////////////////////////////////////// | 449 /////////////////////////////////////////////////////////////////////////////// |
484 // CookieTreeDatabasesNode, public: | 450 // CookieTreeDatabasesNode, public: |
485 | 451 |
486 CookieTreeDatabasesNode::CookieTreeDatabasesNode() | 452 CookieTreeDatabasesNode::CookieTreeDatabasesNode() |
487 : CookieTreeNode(l10n_util::GetStringUTF16(IDS_COOKIES_WEB_DATABASES)) { | 453 : CookieTreeNode(l10n_util::GetStringUTF16(IDS_COOKIES_WEB_DATABASES)) { |
488 } | 454 } |
489 | 455 |
490 CookieTreeDatabasesNode::~CookieTreeDatabasesNode() {} | 456 CookieTreeDatabasesNode::~CookieTreeDatabasesNode() {} |
491 | 457 |
492 CookieTreeNode::DetailedInfo CookieTreeDatabasesNode::GetDetailedInfo() const { | 458 CookieTreeNode::DetailedInfo CookieTreeDatabasesNode::GetDetailedInfo() const { |
493 return DetailedInfo(parent()->GetTitle(), | 459 return DetailedInfo(parent()->GetTitle(), |
494 DetailedInfo::TYPE_DATABASES, | 460 DetailedInfo::TYPE_DATABASES, |
495 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); | 461 NULL, NULL, NULL, NULL, NULL, NULL, NULL); |
496 } | 462 } |
497 | 463 |
498 /////////////////////////////////////////////////////////////////////////////// | 464 /////////////////////////////////////////////////////////////////////////////// |
499 // CookieTreeLocalStoragesNode, public: | 465 // CookieTreeLocalStoragesNode, public: |
500 | 466 |
501 CookieTreeLocalStoragesNode::CookieTreeLocalStoragesNode() | 467 CookieTreeLocalStoragesNode::CookieTreeLocalStoragesNode() |
502 : CookieTreeNode(l10n_util::GetStringUTF16(IDS_COOKIES_LOCAL_STORAGE)) { | 468 : CookieTreeNode(l10n_util::GetStringUTF16(IDS_COOKIES_LOCAL_STORAGE)) { |
503 } | 469 } |
504 | 470 |
505 CookieTreeLocalStoragesNode::~CookieTreeLocalStoragesNode() {} | 471 CookieTreeLocalStoragesNode::~CookieTreeLocalStoragesNode() {} |
506 | 472 |
507 CookieTreeNode::DetailedInfo | 473 CookieTreeNode::DetailedInfo |
508 CookieTreeLocalStoragesNode::GetDetailedInfo() const { | 474 CookieTreeLocalStoragesNode::GetDetailedInfo() const { |
509 return DetailedInfo(parent()->GetTitle(), | 475 return DetailedInfo(parent()->GetTitle(), |
510 DetailedInfo::TYPE_LOCAL_STORAGES, | 476 DetailedInfo::TYPE_LOCAL_STORAGES, |
511 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); | 477 NULL, NULL, NULL, NULL, NULL, NULL, NULL); |
512 } | 478 } |
513 | 479 |
514 /////////////////////////////////////////////////////////////////////////////// | 480 /////////////////////////////////////////////////////////////////////////////// |
515 // CookieTreeSessionStoragesNode, public: | 481 // CookieTreeSessionStoragesNode, public: |
516 | 482 |
517 CookieTreeSessionStoragesNode::CookieTreeSessionStoragesNode() | 483 CookieTreeSessionStoragesNode::CookieTreeSessionStoragesNode() |
518 : CookieTreeNode(l10n_util::GetStringUTF16(IDS_COOKIES_SESSION_STORAGE)) { | 484 : CookieTreeNode(l10n_util::GetStringUTF16(IDS_COOKIES_SESSION_STORAGE)) { |
519 } | 485 } |
520 | 486 |
521 CookieTreeSessionStoragesNode::~CookieTreeSessionStoragesNode() {} | 487 CookieTreeSessionStoragesNode::~CookieTreeSessionStoragesNode() {} |
522 | 488 |
523 CookieTreeNode::DetailedInfo | 489 CookieTreeNode::DetailedInfo |
524 CookieTreeSessionStoragesNode::GetDetailedInfo() const { | 490 CookieTreeSessionStoragesNode::GetDetailedInfo() const { |
525 return DetailedInfo(parent()->GetTitle(), | 491 return DetailedInfo(parent()->GetTitle(), |
526 DetailedInfo::TYPE_SESSION_STORAGES, | 492 DetailedInfo::TYPE_SESSION_STORAGES, |
527 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); | 493 NULL, NULL, NULL, NULL, NULL, NULL, NULL); |
528 } | 494 } |
529 | 495 |
530 /////////////////////////////////////////////////////////////////////////////// | 496 /////////////////////////////////////////////////////////////////////////////// |
531 // CookieTreeIndexedDBsNode, public: | 497 // CookieTreeIndexedDBsNode, public: |
532 | 498 |
533 CookieTreeIndexedDBsNode::CookieTreeIndexedDBsNode() | 499 CookieTreeIndexedDBsNode::CookieTreeIndexedDBsNode() |
534 : CookieTreeNode(l10n_util::GetStringUTF16(IDS_COOKIES_INDEXED_DBS)) { | 500 : CookieTreeNode(l10n_util::GetStringUTF16(IDS_COOKIES_INDEXED_DBS)) { |
535 } | 501 } |
536 | 502 |
537 CookieTreeIndexedDBsNode::~CookieTreeIndexedDBsNode() {} | 503 CookieTreeIndexedDBsNode::~CookieTreeIndexedDBsNode() {} |
538 | 504 |
539 CookieTreeNode::DetailedInfo | 505 CookieTreeNode::DetailedInfo |
540 CookieTreeIndexedDBsNode::GetDetailedInfo() const { | 506 CookieTreeIndexedDBsNode::GetDetailedInfo() const { |
541 return DetailedInfo(parent()->GetTitle(), | 507 return DetailedInfo(parent()->GetTitle(), |
542 DetailedInfo::TYPE_INDEXED_DBS, | 508 DetailedInfo::TYPE_INDEXED_DBS, |
543 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); | 509 NULL, NULL, NULL, NULL, NULL, NULL, NULL); |
544 } | 510 } |
545 | 511 |
546 /////////////////////////////////////////////////////////////////////////////// | 512 /////////////////////////////////////////////////////////////////////////////// |
547 // CookieTreeFileSystemsNode, public: | 513 // CookieTreeFileSystemsNode, public: |
548 | 514 |
549 CookieTreeFileSystemsNode::CookieTreeFileSystemsNode() | 515 CookieTreeFileSystemsNode::CookieTreeFileSystemsNode() |
550 : CookieTreeNode(l10n_util::GetStringUTF16(IDS_COOKIES_FILE_SYSTEMS)) { | 516 : CookieTreeNode(l10n_util::GetStringUTF16(IDS_COOKIES_FILE_SYSTEMS)) { |
551 } | 517 } |
552 | 518 |
553 CookieTreeFileSystemsNode::~CookieTreeFileSystemsNode() {} | 519 CookieTreeFileSystemsNode::~CookieTreeFileSystemsNode() {} |
554 | 520 |
555 CookieTreeNode::DetailedInfo | 521 CookieTreeNode::DetailedInfo |
556 CookieTreeFileSystemsNode::GetDetailedInfo() const { | 522 CookieTreeFileSystemsNode::GetDetailedInfo() const { |
557 return DetailedInfo(parent()->GetTitle(), | 523 return DetailedInfo(parent()->GetTitle(), |
558 DetailedInfo::TYPE_FILE_SYSTEMS, | 524 DetailedInfo::TYPE_FILE_SYSTEMS, |
559 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); | 525 NULL, NULL, NULL, NULL, NULL, NULL, NULL); |
560 } | 526 } |
561 | 527 |
562 /////////////////////////////////////////////////////////////////////////////// | 528 /////////////////////////////////////////////////////////////////////////////// |
563 // CookieTreeNode, protected | 529 // CookieTreeNode, protected |
564 | 530 |
565 bool CookieTreeNode::NodeTitleComparator::operator() ( | 531 bool CookieTreeNode::NodeTitleComparator::operator() ( |
566 const CookieTreeNode* lhs, const CookieTreeNode* rhs) { | 532 const CookieTreeNode* lhs, const CookieTreeNode* rhs) { |
567 const CookieTreeNode* left = | 533 const CookieTreeNode* left = |
568 static_cast<const CookieTreeNode*>(lhs); | 534 static_cast<const CookieTreeNode*>(lhs); |
569 const CookieTreeNode* right = | 535 const CookieTreeNode* right = |
(...skipping 15 matching lines...) Expand all Loading... |
585 // CookiesTreeModel, public: | 551 // CookiesTreeModel, public: |
586 | 552 |
587 CookiesTreeModel::CookiesTreeModel( | 553 CookiesTreeModel::CookiesTreeModel( |
588 net::CookieMonster* cookie_monster, | 554 net::CookieMonster* cookie_monster, |
589 BrowsingDataDatabaseHelper* database_helper, | 555 BrowsingDataDatabaseHelper* database_helper, |
590 BrowsingDataLocalStorageHelper* local_storage_helper, | 556 BrowsingDataLocalStorageHelper* local_storage_helper, |
591 BrowsingDataLocalStorageHelper* session_storage_helper, | 557 BrowsingDataLocalStorageHelper* session_storage_helper, |
592 BrowsingDataAppCacheHelper* appcache_helper, | 558 BrowsingDataAppCacheHelper* appcache_helper, |
593 BrowsingDataIndexedDBHelper* indexed_db_helper, | 559 BrowsingDataIndexedDBHelper* indexed_db_helper, |
594 BrowsingDataFileSystemHelper* file_system_helper, | 560 BrowsingDataFileSystemHelper* file_system_helper, |
595 BrowsingDataQuotaHelper* quota_helper, | |
596 bool use_cookie_source) | 561 bool use_cookie_source) |
597 : ALLOW_THIS_IN_INITIALIZER_LIST(ui::TreeNodeModel<CookieTreeNode>( | 562 : ALLOW_THIS_IN_INITIALIZER_LIST(ui::TreeNodeModel<CookieTreeNode>( |
598 new CookieTreeRootNode(this))), | 563 new CookieTreeRootNode(this))), |
599 cookie_monster_(cookie_monster), | 564 cookie_monster_(cookie_monster), |
600 appcache_helper_(appcache_helper), | 565 appcache_helper_(appcache_helper), |
601 database_helper_(database_helper), | 566 database_helper_(database_helper), |
602 local_storage_helper_(local_storage_helper), | 567 local_storage_helper_(local_storage_helper), |
603 session_storage_helper_(session_storage_helper), | 568 session_storage_helper_(session_storage_helper), |
604 indexed_db_helper_(indexed_db_helper), | 569 indexed_db_helper_(indexed_db_helper), |
605 file_system_helper_(file_system_helper), | 570 file_system_helper_(file_system_helper), |
606 quota_helper_(quota_helper), | |
607 batch_update_(0), | 571 batch_update_(0), |
608 use_cookie_source_(use_cookie_source) { | 572 use_cookie_source_(use_cookie_source) { |
609 LoadCookies(); | 573 LoadCookies(); |
610 DCHECK(database_helper_); | 574 DCHECK(database_helper_); |
611 database_helper_->StartFetching(NewCallback( | 575 database_helper_->StartFetching(NewCallback( |
612 this, &CookiesTreeModel::OnDatabaseModelInfoLoaded)); | 576 this, &CookiesTreeModel::OnDatabaseModelInfoLoaded)); |
613 DCHECK(local_storage_helper_); | 577 DCHECK(local_storage_helper_); |
614 local_storage_helper_->StartFetching(NewCallback( | 578 local_storage_helper_->StartFetching(NewCallback( |
615 this, &CookiesTreeModel::OnLocalStorageModelInfoLoaded)); | 579 this, &CookiesTreeModel::OnLocalStorageModelInfoLoaded)); |
616 if (session_storage_helper_) { | 580 if (session_storage_helper_) { |
(...skipping 10 matching lines...) Expand all Loading... |
627 | 591 |
628 if (indexed_db_helper_) { | 592 if (indexed_db_helper_) { |
629 indexed_db_helper_->StartFetching(NewCallback( | 593 indexed_db_helper_->StartFetching(NewCallback( |
630 this, &CookiesTreeModel::OnIndexedDBModelInfoLoaded)); | 594 this, &CookiesTreeModel::OnIndexedDBModelInfoLoaded)); |
631 } | 595 } |
632 | 596 |
633 if (file_system_helper_) { | 597 if (file_system_helper_) { |
634 file_system_helper_->StartFetching(NewCallback( | 598 file_system_helper_->StartFetching(NewCallback( |
635 this, &CookiesTreeModel::OnFileSystemModelInfoLoaded)); | 599 this, &CookiesTreeModel::OnFileSystemModelInfoLoaded)); |
636 } | 600 } |
637 | |
638 if (quota_helper_) { | |
639 quota_helper_->StartFetching(NewCallback( | |
640 this, &CookiesTreeModel::OnQuotaModelInfoLoaded)); | |
641 } | |
642 } | 601 } |
643 | 602 |
644 CookiesTreeModel::~CookiesTreeModel() { | 603 CookiesTreeModel::~CookiesTreeModel() { |
645 database_helper_->CancelNotification(); | 604 database_helper_->CancelNotification(); |
646 local_storage_helper_->CancelNotification(); | 605 local_storage_helper_->CancelNotification(); |
647 if (session_storage_helper_) | 606 if (session_storage_helper_) |
648 session_storage_helper_->CancelNotification(); | 607 session_storage_helper_->CancelNotification(); |
649 if (appcache_helper_) | 608 if (appcache_helper_) |
650 appcache_helper_->CancelNotification(); | 609 appcache_helper_->CancelNotification(); |
651 if (indexed_db_helper_) | 610 if (indexed_db_helper_) |
652 indexed_db_helper_->CancelNotification(); | 611 indexed_db_helper_->CancelNotification(); |
653 if (file_system_helper_) | 612 if (file_system_helper_) |
654 file_system_helper_->CancelNotification(); | 613 file_system_helper_->CancelNotification(); |
655 if (quota_helper_) | |
656 quota_helper_->CancelNotification(); | |
657 } | 614 } |
658 | 615 |
659 /////////////////////////////////////////////////////////////////////////////// | 616 /////////////////////////////////////////////////////////////////////////////// |
660 // CookiesTreeModel, TreeModel methods (public): | 617 // CookiesTreeModel, TreeModel methods (public): |
661 | 618 |
662 // TreeModel methods: | 619 // TreeModel methods: |
663 // Returns the set of icons for the nodes in the tree. You only need override | 620 // Returns the set of icons for the nodes in the tree. You only need override |
664 // this if you don't want to use the default folder icons. | 621 // this if you don't want to use the default folder icons. |
665 void CookiesTreeModel::GetIcons(std::vector<SkBitmap>* icons) { | 622 void CookiesTreeModel::GetIcons(std::vector<SkBitmap>* icons) { |
666 icons->push_back(*ResourceBundle::GetSharedInstance().GetBitmapNamed( | 623 icons->push_back(*ResourceBundle::GetSharedInstance().GetBitmapNamed( |
(...skipping 19 matching lines...) Expand all Loading... |
686 case CookieTreeNode::DetailedInfo::TYPE_LOCAL_STORAGE: | 643 case CookieTreeNode::DetailedInfo::TYPE_LOCAL_STORAGE: |
687 return DATABASE; // close enough | 644 return DATABASE; // close enough |
688 case CookieTreeNode::DetailedInfo::TYPE_SESSION_STORAGE: | 645 case CookieTreeNode::DetailedInfo::TYPE_SESSION_STORAGE: |
689 return DATABASE; // ditto | 646 return DATABASE; // ditto |
690 case CookieTreeNode::DetailedInfo::TYPE_APPCACHE: | 647 case CookieTreeNode::DetailedInfo::TYPE_APPCACHE: |
691 return DATABASE; // ditto | 648 return DATABASE; // ditto |
692 case CookieTreeNode::DetailedInfo::TYPE_INDEXED_DB: | 649 case CookieTreeNode::DetailedInfo::TYPE_INDEXED_DB: |
693 return DATABASE; // ditto | 650 return DATABASE; // ditto |
694 case CookieTreeNode::DetailedInfo::TYPE_FILE_SYSTEM: | 651 case CookieTreeNode::DetailedInfo::TYPE_FILE_SYSTEM: |
695 return DATABASE; // ditto | 652 return DATABASE; // ditto |
696 case CookieTreeNode::DetailedInfo::TYPE_QUOTA: | |
697 return -1; | |
698 default: | 653 default: |
699 break; | 654 break; |
700 } | 655 } |
701 return -1; | 656 return -1; |
702 } | 657 } |
703 | 658 |
704 void CookiesTreeModel::LoadCookies() { | 659 void CookiesTreeModel::LoadCookies() { |
705 LoadCookiesWithFilter(std::wstring()); | 660 LoadCookiesWithFilter(std::wstring()); |
706 } | 661 } |
707 | 662 |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
764 NotifyObserverBeginBatch(); | 719 NotifyObserverBeginBatch(); |
765 for (int i = num_children - 1; i >= 0; --i) | 720 for (int i = num_children - 1; i >= 0; --i) |
766 delete Remove(root, root->GetChild(i)); | 721 delete Remove(root, root->GetChild(i)); |
767 LoadCookiesWithFilter(filter); | 722 LoadCookiesWithFilter(filter); |
768 PopulateDatabaseInfoWithFilter(filter); | 723 PopulateDatabaseInfoWithFilter(filter); |
769 PopulateLocalStorageInfoWithFilter(filter); | 724 PopulateLocalStorageInfoWithFilter(filter); |
770 PopulateSessionStorageInfoWithFilter(filter); | 725 PopulateSessionStorageInfoWithFilter(filter); |
771 PopulateAppCacheInfoWithFilter(filter); | 726 PopulateAppCacheInfoWithFilter(filter); |
772 PopulateIndexedDBInfoWithFilter(filter); | 727 PopulateIndexedDBInfoWithFilter(filter); |
773 PopulateFileSystemInfoWithFilter(filter); | 728 PopulateFileSystemInfoWithFilter(filter); |
774 PopulateQuotaInfoWithFilter(filter); | |
775 NotifyObserverTreeNodeChanged(root); | 729 NotifyObserverTreeNodeChanged(root); |
776 NotifyObserverEndBatch(); | 730 NotifyObserverEndBatch(); |
777 } | 731 } |
778 | 732 |
779 void CookiesTreeModel::AddCookiesTreeObserver(Observer* observer) { | 733 void CookiesTreeModel::AddCookiesTreeObserver(Observer* observer) { |
780 cookies_observer_list_.AddObserver(observer); | 734 cookies_observer_list_.AddObserver(observer); |
781 // Call super so that TreeNodeModel can notify, too. | 735 // Call super so that TreeNodeModel can notify, too. |
782 ui::TreeNodeModel<CookieTreeNode>::AddObserver(observer); | 736 ui::TreeNodeModel<CookieTreeNode>::AddObserver(observer); |
783 } | 737 } |
784 | 738 |
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
983 CookieTreeFileSystemsNode* file_systems_node = | 937 CookieTreeFileSystemsNode* file_systems_node = |
984 origin_node->GetOrCreateFileSystemsNode(); | 938 origin_node->GetOrCreateFileSystemsNode(); |
985 file_systems_node->AddFileSystemNode( | 939 file_systems_node->AddFileSystemNode( |
986 new CookieTreeFileSystemNode(&(*file_system_info))); | 940 new CookieTreeFileSystemNode(&(*file_system_info))); |
987 } | 941 } |
988 } | 942 } |
989 NotifyObserverTreeNodeChanged(root); | 943 NotifyObserverTreeNodeChanged(root); |
990 NotifyObserverEndBatch(); | 944 NotifyObserverEndBatch(); |
991 } | 945 } |
992 | 946 |
993 void CookiesTreeModel::OnQuotaModelInfoLoaded( | |
994 const QuotaInfoArray& quota_info) { | |
995 quota_info_list_ = quota_info; | |
996 PopulateQuotaInfoWithFilter(std::wstring()); | |
997 } | |
998 | |
999 void CookiesTreeModel::PopulateQuotaInfoWithFilter( | |
1000 const std::wstring& filter) { | |
1001 if (quota_info_list_.empty()) | |
1002 return; | |
1003 CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot()); | |
1004 NotifyObserverBeginBatch(); | |
1005 for (QuotaInfoArray::iterator quota_info = quota_info_list_.begin(); | |
1006 quota_info != quota_info_list_.end(); | |
1007 ++quota_info) { | |
1008 if (!filter.size() || | |
1009 (UTF8ToWide(quota_info->host).find(filter) != std::wstring::npos)) { | |
1010 CookieTreeOriginNode* origin_node = | |
1011 root->GetOrCreateOriginNode(GURL("http://" + quota_info->host)); | |
1012 origin_node->UpdateOrCreateQuotaNode(&*quota_info); | |
1013 } | |
1014 } | |
1015 NotifyObserverTreeNodeChanged(root); | |
1016 NotifyObserverEndBatch(); | |
1017 } | |
1018 | |
1019 void CookiesTreeModel::NotifyObserverBeginBatch() { | 947 void CookiesTreeModel::NotifyObserverBeginBatch() { |
1020 // Only notify the model once if we're batching in a nested manner. | 948 // Only notify the model once if we're batching in a nested manner. |
1021 if (batch_update_++ == 0) { | 949 if (batch_update_++ == 0) { |
1022 FOR_EACH_OBSERVER(Observer, | 950 FOR_EACH_OBSERVER(Observer, |
1023 cookies_observer_list_, | 951 cookies_observer_list_, |
1024 TreeModelBeginBatch(this)); | 952 TreeModelBeginBatch(this)); |
1025 } | 953 } |
1026 } | 954 } |
1027 | 955 |
1028 void CookiesTreeModel::NotifyObserverEndBatch() { | 956 void CookiesTreeModel::NotifyObserverEndBatch() { |
1029 // Only notify the observers if this is the outermost call to EndBatch() if | 957 // Only notify the observers if this is the outermost call to EndBatch() if |
1030 // called in a nested manner. | 958 // called in a nested manner. |
1031 if (--batch_update_ == 0) { | 959 if (--batch_update_ == 0) { |
1032 FOR_EACH_OBSERVER(Observer, | 960 FOR_EACH_OBSERVER(Observer, |
1033 cookies_observer_list_, | 961 cookies_observer_list_, |
1034 TreeModelEndBatch(this)); | 962 TreeModelEndBatch(this)); |
1035 } | 963 } |
1036 } | 964 } |
OLD | NEW |