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