| 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); | 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); | 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); | 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); | 201 NULL, NULL, local_storage_info_, NULL, NULL, NULL, NULL); |
| 202 } | 202 } |
| 203 | 203 |
| 204 /////////////////////////////////////////////////////////////////////////////// | 204 /////////////////////////////////////////////////////////////////////////////// |
| 205 // CookieTreeSessionStorageNode, public: | 205 // CookieTreeSessionStorageNode, public: |
| 206 | 206 |
| 207 CookieTreeSessionStorageNode::CookieTreeSessionStorageNode( | 207 CookieTreeSessionStorageNode::CookieTreeSessionStorageNode( |
| 208 BrowsingDataLocalStorageHelper::LocalStorageInfo* session_storage_info) | 208 BrowsingDataLocalStorageHelper::LocalStorageInfo* session_storage_info) |
| 209 : CookieTreeNode(UTF8ToUTF16( | 209 : CookieTreeNode(UTF8ToUTF16( |
| 210 session_storage_info->origin.empty() ? | 210 session_storage_info->origin.empty() ? |
| 211 session_storage_info->database_identifier : | 211 session_storage_info->database_identifier : |
| 212 session_storage_info->origin)), | 212 session_storage_info->origin)), |
| 213 session_storage_info_(session_storage_info) { | 213 session_storage_info_(session_storage_info) { |
| 214 } | 214 } |
| 215 | 215 |
| 216 CookieTreeSessionStorageNode::~CookieTreeSessionStorageNode() {} | 216 CookieTreeSessionStorageNode::~CookieTreeSessionStorageNode() {} |
| 217 | 217 |
| 218 CookieTreeNode::DetailedInfo | 218 CookieTreeNode::DetailedInfo |
| 219 CookieTreeSessionStorageNode::GetDetailedInfo() const { | 219 CookieTreeSessionStorageNode::GetDetailedInfo() const { |
| 220 return DetailedInfo(parent()->parent()->GetTitle(), | 220 return DetailedInfo(parent()->parent()->GetTitle(), |
| 221 DetailedInfo::TYPE_SESSION_STORAGE, | 221 DetailedInfo::TYPE_SESSION_STORAGE, |
| 222 NULL, NULL, NULL, session_storage_info_, NULL, NULL); | 222 NULL, NULL, NULL, session_storage_info_, NULL, NULL, |
| 223 NULL); |
| 223 } | 224 } |
| 224 | 225 |
| 225 /////////////////////////////////////////////////////////////////////////////// | 226 /////////////////////////////////////////////////////////////////////////////// |
| 226 // CookieTreeIndexedDBNode, public: | 227 // CookieTreeIndexedDBNode, public: |
| 227 | 228 |
| 228 CookieTreeIndexedDBNode::CookieTreeIndexedDBNode( | 229 CookieTreeIndexedDBNode::CookieTreeIndexedDBNode( |
| 229 BrowsingDataIndexedDBHelper::IndexedDBInfo* indexed_db_info) | 230 BrowsingDataIndexedDBHelper::IndexedDBInfo* indexed_db_info) |
| 230 : CookieTreeNode(UTF8ToUTF16( | 231 : CookieTreeNode(UTF8ToUTF16( |
| 231 indexed_db_info->origin.empty() ? | 232 indexed_db_info->origin.empty() ? |
| 232 indexed_db_info->database_identifier : | 233 indexed_db_info->database_identifier : |
| 233 indexed_db_info->origin)), | 234 indexed_db_info->origin)), |
| 234 indexed_db_info_(indexed_db_info) { | 235 indexed_db_info_(indexed_db_info) { |
| 235 } | 236 } |
| 236 | 237 |
| 237 CookieTreeIndexedDBNode::~CookieTreeIndexedDBNode() {} | 238 CookieTreeIndexedDBNode::~CookieTreeIndexedDBNode() {} |
| 238 | 239 |
| 239 void CookieTreeIndexedDBNode::DeleteStoredObjects() { | 240 void CookieTreeIndexedDBNode::DeleteStoredObjects() { |
| 240 GetModel()->indexed_db_helper_->DeleteIndexedDBFile( | 241 GetModel()->indexed_db_helper_->DeleteIndexedDBFile( |
| 241 indexed_db_info_->file_path); | 242 indexed_db_info_->file_path); |
| 242 } | 243 } |
| 243 | 244 |
| 244 CookieTreeNode::DetailedInfo CookieTreeIndexedDBNode::GetDetailedInfo() const { | 245 CookieTreeNode::DetailedInfo CookieTreeIndexedDBNode::GetDetailedInfo() const { |
| 245 return DetailedInfo(parent()->parent()->GetTitle(), | 246 return DetailedInfo(parent()->parent()->GetTitle(), |
| 246 DetailedInfo::TYPE_INDEXED_DB, | 247 DetailedInfo::TYPE_INDEXED_DB, |
| 247 NULL, NULL, NULL, NULL, NULL, indexed_db_info_); | 248 NULL, NULL, NULL, NULL, NULL, indexed_db_info_, NULL); |
| 248 } | 249 } |
| 249 | 250 |
| 250 /////////////////////////////////////////////////////////////////////////////// | 251 /////////////////////////////////////////////////////////////////////////////// |
| 252 // CookieTreeFileSystemNode, public: |
| 253 |
| 254 CookieTreeFileSystemNode::CookieTreeFileSystemNode( |
| 255 BrowsingDataFileSystemHelper::FileSystemInfo* file_system_info) |
| 256 : CookieTreeNode(UTF8ToUTF16( |
| 257 file_system_info->origin.spec())), |
| 258 file_system_info_(file_system_info) { |
| 259 } |
| 260 |
| 261 CookieTreeFileSystemNode::~CookieTreeFileSystemNode() {} |
| 262 |
| 263 void CookieTreeFileSystemNode::DeleteStoredObjects() { |
| 264 GetModel()->file_system_helper_->DeleteFileSystemOrigin( |
| 265 file_system_info_->origin); |
| 266 } |
| 267 |
| 268 CookieTreeNode::DetailedInfo CookieTreeFileSystemNode::GetDetailedInfo() const { |
| 269 return DetailedInfo(parent()->parent()->GetTitle(), |
| 270 DetailedInfo::TYPE_FILE_SYSTEM, |
| 271 NULL, NULL, NULL, NULL, NULL, NULL, file_system_info_); |
| 272 } |
| 273 |
| 274 /////////////////////////////////////////////////////////////////////////////// |
| 251 // CookieTreeRootNode, public: | 275 // CookieTreeRootNode, public: |
| 252 | 276 |
| 253 CookieTreeRootNode::CookieTreeRootNode(CookiesTreeModel* model) | 277 CookieTreeRootNode::CookieTreeRootNode(CookiesTreeModel* model) |
| 254 : model_(model) { | 278 : model_(model) { |
| 255 } | 279 } |
| 256 | 280 |
| 257 CookieTreeRootNode::~CookieTreeRootNode() {} | 281 CookieTreeRootNode::~CookieTreeRootNode() {} |
| 258 | 282 |
| 259 CookieTreeOriginNode* CookieTreeRootNode::GetOrCreateOriginNode( | 283 CookieTreeOriginNode* CookieTreeRootNode::GetOrCreateOriginNode( |
| 260 const GURL& url) { | 284 const GURL& url) { |
| (...skipping 18 matching lines...) Expand all Loading... |
| 279 return retval; | 303 return retval; |
| 280 } | 304 } |
| 281 | 305 |
| 282 CookiesTreeModel* CookieTreeRootNode::GetModel() const { | 306 CookiesTreeModel* CookieTreeRootNode::GetModel() const { |
| 283 return model_; | 307 return model_; |
| 284 } | 308 } |
| 285 | 309 |
| 286 CookieTreeNode::DetailedInfo CookieTreeRootNode::GetDetailedInfo() const { | 310 CookieTreeNode::DetailedInfo CookieTreeRootNode::GetDetailedInfo() const { |
| 287 return DetailedInfo(string16(), | 311 return DetailedInfo(string16(), |
| 288 DetailedInfo::TYPE_ROOT, | 312 DetailedInfo::TYPE_ROOT, |
| 289 NULL, NULL, NULL, NULL, NULL, NULL); | 313 NULL, NULL, NULL, NULL, NULL, NULL, NULL); |
| 290 } | 314 } |
| 291 | 315 |
| 292 /////////////////////////////////////////////////////////////////////////////// | 316 /////////////////////////////////////////////////////////////////////////////// |
| 293 // CookieTreeOriginNode, public: | 317 // CookieTreeOriginNode, public: |
| 294 | 318 |
| 295 // static | 319 // static |
| 296 std::wstring CookieTreeOriginNode::TitleForUrl( | 320 std::wstring CookieTreeOriginNode::TitleForUrl( |
| 297 const GURL& url) { | 321 const GURL& url) { |
| 298 return UTF8ToWide(url.SchemeIsFile() ? kFileOriginNodeName : url.host()); | 322 return UTF8ToWide(url.SchemeIsFile() ? kFileOriginNodeName : url.host()); |
| 299 } | 323 } |
| 300 | 324 |
| 301 CookieTreeOriginNode::CookieTreeOriginNode(const GURL& url) | 325 CookieTreeOriginNode::CookieTreeOriginNode(const GURL& url) |
| 302 : CookieTreeNode(WideToUTF16Hack(TitleForUrl(url))), | 326 : CookieTreeNode(WideToUTF16Hack(TitleForUrl(url))), |
| 303 cookies_child_(NULL), | 327 cookies_child_(NULL), |
| 304 databases_child_(NULL), | 328 databases_child_(NULL), |
| 305 local_storages_child_(NULL), | 329 local_storages_child_(NULL), |
| 306 session_storages_child_(NULL), | 330 session_storages_child_(NULL), |
| 307 appcaches_child_(NULL), | 331 appcaches_child_(NULL), |
| 308 indexed_dbs_child_(NULL), | 332 indexed_dbs_child_(NULL), |
| 333 file_systems_child_(NULL), |
| 309 url_(url) {} | 334 url_(url) {} |
| 310 | 335 |
| 311 CookieTreeOriginNode::~CookieTreeOriginNode() {} | 336 CookieTreeOriginNode::~CookieTreeOriginNode() {} |
| 312 | 337 |
| 313 CookieTreeNode::DetailedInfo CookieTreeOriginNode::GetDetailedInfo() const { | 338 CookieTreeNode::DetailedInfo CookieTreeOriginNode::GetDetailedInfo() const { |
| 314 return DetailedInfo(GetTitle(), | 339 return DetailedInfo(GetTitle(), |
| 315 DetailedInfo::TYPE_ORIGIN, | 340 DetailedInfo::TYPE_ORIGIN, |
| 316 NULL, NULL, NULL, NULL, NULL, NULL); | 341 NULL, NULL, NULL, NULL, NULL, NULL, NULL); |
| 317 } | 342 } |
| 318 | 343 |
| 319 CookieTreeCookiesNode* CookieTreeOriginNode::GetOrCreateCookiesNode() { | 344 CookieTreeCookiesNode* CookieTreeOriginNode::GetOrCreateCookiesNode() { |
| 320 if (cookies_child_) | 345 if (cookies_child_) |
| 321 return cookies_child_; | 346 return cookies_child_; |
| 322 cookies_child_ = new CookieTreeCookiesNode; | 347 cookies_child_ = new CookieTreeCookiesNode; |
| 323 AddChildSortedByTitle(cookies_child_); | 348 AddChildSortedByTitle(cookies_child_); |
| 324 return cookies_child_; | 349 return cookies_child_; |
| 325 } | 350 } |
| 326 | 351 |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 359 } | 384 } |
| 360 | 385 |
| 361 CookieTreeIndexedDBsNode* CookieTreeOriginNode::GetOrCreateIndexedDBsNode() { | 386 CookieTreeIndexedDBsNode* CookieTreeOriginNode::GetOrCreateIndexedDBsNode() { |
| 362 if (indexed_dbs_child_) | 387 if (indexed_dbs_child_) |
| 363 return indexed_dbs_child_; | 388 return indexed_dbs_child_; |
| 364 indexed_dbs_child_ = new CookieTreeIndexedDBsNode; | 389 indexed_dbs_child_ = new CookieTreeIndexedDBsNode; |
| 365 AddChildSortedByTitle(indexed_dbs_child_); | 390 AddChildSortedByTitle(indexed_dbs_child_); |
| 366 return indexed_dbs_child_; | 391 return indexed_dbs_child_; |
| 367 } | 392 } |
| 368 | 393 |
| 394 CookieTreeFileSystemsNode* CookieTreeOriginNode::GetOrCreateFileSystemsNode() { |
| 395 if (file_systems_child_) |
| 396 return file_systems_child_; |
| 397 file_systems_child_ = new CookieTreeFileSystemsNode; |
| 398 AddChildSortedByTitle(file_systems_child_); |
| 399 return file_systems_child_; |
| 400 } |
| 401 |
| 369 void CookieTreeOriginNode::CreateContentException( | 402 void CookieTreeOriginNode::CreateContentException( |
| 370 HostContentSettingsMap* content_settings, ContentSetting setting) const { | 403 HostContentSettingsMap* content_settings, ContentSetting setting) const { |
| 371 if (CanCreateContentException()) { | 404 if (CanCreateContentException()) { |
| 372 content_settings->AddExceptionForURL(url_, | 405 content_settings->AddExceptionForURL(url_, |
| 373 CONTENT_SETTINGS_TYPE_COOKIES, | 406 CONTENT_SETTINGS_TYPE_COOKIES, |
| 374 "", | 407 "", |
| 375 setting); | 408 setting); |
| 376 } | 409 } |
| 377 } | 410 } |
| 378 | 411 |
| 379 bool CookieTreeOriginNode::CanCreateContentException() const { | 412 bool CookieTreeOriginNode::CanCreateContentException() const { |
| 380 return !url_.SchemeIsFile(); | 413 return !url_.SchemeIsFile(); |
| 381 } | 414 } |
| 382 | 415 |
| 383 /////////////////////////////////////////////////////////////////////////////// | 416 /////////////////////////////////////////////////////////////////////////////// |
| 384 // CookieTreeCookiesNode, public: | 417 // CookieTreeCookiesNode, public: |
| 385 | 418 |
| 386 CookieTreeCookiesNode::CookieTreeCookiesNode() | 419 CookieTreeCookiesNode::CookieTreeCookiesNode() |
| 387 : CookieTreeNode(l10n_util::GetStringUTF16(IDS_COOKIES_COOKIES)) { | 420 : CookieTreeNode(l10n_util::GetStringUTF16(IDS_COOKIES_COOKIES)) { |
| 388 } | 421 } |
| 389 | 422 |
| 390 CookieTreeCookiesNode::~CookieTreeCookiesNode() { | 423 CookieTreeCookiesNode::~CookieTreeCookiesNode() { |
| 391 } | 424 } |
| 392 | 425 |
| 393 CookieTreeNode::DetailedInfo CookieTreeCookiesNode::GetDetailedInfo() const { | 426 CookieTreeNode::DetailedInfo CookieTreeCookiesNode::GetDetailedInfo() const { |
| 394 return DetailedInfo(parent()->GetTitle(), | 427 return DetailedInfo(parent()->GetTitle(), |
| 395 DetailedInfo::TYPE_COOKIES, | 428 DetailedInfo::TYPE_COOKIES, |
| 396 NULL, NULL, NULL, NULL, NULL, NULL); | 429 NULL, NULL, NULL, NULL, NULL, NULL, NULL); |
| 397 } | 430 } |
| 398 | 431 |
| 399 /////////////////////////////////////////////////////////////////////////////// | 432 /////////////////////////////////////////////////////////////////////////////// |
| 400 // CookieTreeAppCachesNode, public: | 433 // CookieTreeAppCachesNode, public: |
| 401 | 434 |
| 402 CookieTreeAppCachesNode::CookieTreeAppCachesNode() | 435 CookieTreeAppCachesNode::CookieTreeAppCachesNode() |
| 403 : CookieTreeNode(l10n_util::GetStringUTF16( | 436 : CookieTreeNode(l10n_util::GetStringUTF16( |
| 404 IDS_COOKIES_APPLICATION_CACHES)) { | 437 IDS_COOKIES_APPLICATION_CACHES)) { |
| 405 } | 438 } |
| 406 | 439 |
| 407 CookieTreeAppCachesNode::~CookieTreeAppCachesNode() {} | 440 CookieTreeAppCachesNode::~CookieTreeAppCachesNode() {} |
| 408 | 441 |
| 409 CookieTreeNode::DetailedInfo CookieTreeAppCachesNode::GetDetailedInfo() const { | 442 CookieTreeNode::DetailedInfo CookieTreeAppCachesNode::GetDetailedInfo() const { |
| 410 return DetailedInfo(parent()->GetTitle(), | 443 return DetailedInfo(parent()->GetTitle(), |
| 411 DetailedInfo::TYPE_APPCACHES, | 444 DetailedInfo::TYPE_APPCACHES, |
| 412 NULL, NULL, NULL, NULL, NULL, NULL); | 445 NULL, NULL, NULL, NULL, NULL, NULL, NULL); |
| 413 } | 446 } |
| 414 | 447 |
| 415 /////////////////////////////////////////////////////////////////////////////// | 448 /////////////////////////////////////////////////////////////////////////////// |
| 416 // CookieTreeDatabasesNode, public: | 449 // CookieTreeDatabasesNode, public: |
| 417 | 450 |
| 418 CookieTreeDatabasesNode::CookieTreeDatabasesNode() | 451 CookieTreeDatabasesNode::CookieTreeDatabasesNode() |
| 419 : CookieTreeNode(l10n_util::GetStringUTF16(IDS_COOKIES_WEB_DATABASES)) { | 452 : CookieTreeNode(l10n_util::GetStringUTF16(IDS_COOKIES_WEB_DATABASES)) { |
| 420 } | 453 } |
| 421 | 454 |
| 422 CookieTreeDatabasesNode::~CookieTreeDatabasesNode() {} | 455 CookieTreeDatabasesNode::~CookieTreeDatabasesNode() {} |
| 423 | 456 |
| 424 CookieTreeNode::DetailedInfo CookieTreeDatabasesNode::GetDetailedInfo() const { | 457 CookieTreeNode::DetailedInfo CookieTreeDatabasesNode::GetDetailedInfo() const { |
| 425 return DetailedInfo(parent()->GetTitle(), | 458 return DetailedInfo(parent()->GetTitle(), |
| 426 DetailedInfo::TYPE_DATABASES, | 459 DetailedInfo::TYPE_DATABASES, |
| 427 NULL, NULL, NULL, NULL, NULL, NULL); | 460 NULL, NULL, NULL, NULL, NULL, NULL, NULL); |
| 428 } | 461 } |
| 429 | 462 |
| 430 /////////////////////////////////////////////////////////////////////////////// | 463 /////////////////////////////////////////////////////////////////////////////// |
| 431 // CookieTreeLocalStoragesNode, public: | 464 // CookieTreeLocalStoragesNode, public: |
| 432 | 465 |
| 433 CookieTreeLocalStoragesNode::CookieTreeLocalStoragesNode() | 466 CookieTreeLocalStoragesNode::CookieTreeLocalStoragesNode() |
| 434 : CookieTreeNode(l10n_util::GetStringUTF16(IDS_COOKIES_LOCAL_STORAGE)) { | 467 : CookieTreeNode(l10n_util::GetStringUTF16(IDS_COOKIES_LOCAL_STORAGE)) { |
| 435 } | 468 } |
| 436 | 469 |
| 437 CookieTreeLocalStoragesNode::~CookieTreeLocalStoragesNode() {} | 470 CookieTreeLocalStoragesNode::~CookieTreeLocalStoragesNode() {} |
| 438 | 471 |
| 439 CookieTreeNode::DetailedInfo | 472 CookieTreeNode::DetailedInfo |
| 440 CookieTreeLocalStoragesNode::GetDetailedInfo() const { | 473 CookieTreeLocalStoragesNode::GetDetailedInfo() const { |
| 441 return DetailedInfo(parent()->GetTitle(), | 474 return DetailedInfo(parent()->GetTitle(), |
| 442 DetailedInfo::TYPE_LOCAL_STORAGES, | 475 DetailedInfo::TYPE_LOCAL_STORAGES, |
| 443 NULL, NULL, NULL, NULL, NULL, NULL); | 476 NULL, NULL, NULL, NULL, NULL, NULL, NULL); |
| 444 } | 477 } |
| 445 | 478 |
| 446 /////////////////////////////////////////////////////////////////////////////// | 479 /////////////////////////////////////////////////////////////////////////////// |
| 447 // CookieTreeSessionStoragesNode, public: | 480 // CookieTreeSessionStoragesNode, public: |
| 448 | 481 |
| 449 CookieTreeSessionStoragesNode::CookieTreeSessionStoragesNode() | 482 CookieTreeSessionStoragesNode::CookieTreeSessionStoragesNode() |
| 450 : CookieTreeNode(l10n_util::GetStringUTF16(IDS_COOKIES_SESSION_STORAGE)) { | 483 : CookieTreeNode(l10n_util::GetStringUTF16(IDS_COOKIES_SESSION_STORAGE)) { |
| 451 } | 484 } |
| 452 | 485 |
| 453 CookieTreeSessionStoragesNode::~CookieTreeSessionStoragesNode() {} | 486 CookieTreeSessionStoragesNode::~CookieTreeSessionStoragesNode() {} |
| 454 | 487 |
| 455 CookieTreeNode::DetailedInfo | 488 CookieTreeNode::DetailedInfo |
| 456 CookieTreeSessionStoragesNode::GetDetailedInfo() const { | 489 CookieTreeSessionStoragesNode::GetDetailedInfo() const { |
| 457 return DetailedInfo(parent()->GetTitle(), | 490 return DetailedInfo(parent()->GetTitle(), |
| 458 DetailedInfo::TYPE_SESSION_STORAGES, | 491 DetailedInfo::TYPE_SESSION_STORAGES, |
| 459 NULL, NULL, NULL, NULL, NULL, NULL); | 492 NULL, NULL, NULL, NULL, NULL, NULL, NULL); |
| 460 } | 493 } |
| 461 | 494 |
| 462 /////////////////////////////////////////////////////////////////////////////// | 495 /////////////////////////////////////////////////////////////////////////////// |
| 463 // CookieTreeIndexedDBsNode, public: | 496 // CookieTreeIndexedDBsNode, public: |
| 464 | 497 |
| 465 CookieTreeIndexedDBsNode::CookieTreeIndexedDBsNode() | 498 CookieTreeIndexedDBsNode::CookieTreeIndexedDBsNode() |
| 466 : CookieTreeNode(l10n_util::GetStringUTF16(IDS_COOKIES_INDEXED_DBS)) { | 499 : CookieTreeNode(l10n_util::GetStringUTF16(IDS_COOKIES_INDEXED_DBS)) { |
| 467 } | 500 } |
| 468 | 501 |
| 469 CookieTreeIndexedDBsNode::~CookieTreeIndexedDBsNode() {} | 502 CookieTreeIndexedDBsNode::~CookieTreeIndexedDBsNode() {} |
| 470 | 503 |
| 471 CookieTreeNode::DetailedInfo | 504 CookieTreeNode::DetailedInfo |
| 472 CookieTreeIndexedDBsNode::GetDetailedInfo() const { | 505 CookieTreeIndexedDBsNode::GetDetailedInfo() const { |
| 473 return DetailedInfo(parent()->GetTitle(), | 506 return DetailedInfo(parent()->GetTitle(), |
| 474 DetailedInfo::TYPE_INDEXED_DBS, | 507 DetailedInfo::TYPE_INDEXED_DBS, |
| 475 NULL, NULL, NULL, NULL, NULL, NULL); | 508 NULL, NULL, NULL, NULL, NULL, NULL, NULL); |
| 476 } | 509 } |
| 477 | 510 |
| 478 /////////////////////////////////////////////////////////////////////////////// | 511 /////////////////////////////////////////////////////////////////////////////// |
| 512 // CookieTreeFileSystemsNode, public: |
| 513 |
| 514 CookieTreeFileSystemsNode::CookieTreeFileSystemsNode() |
| 515 : CookieTreeNode(l10n_util::GetStringUTF16(IDS_COOKIES_FILE_SYSTEMS)) { |
| 516 } |
| 517 |
| 518 CookieTreeFileSystemsNode::~CookieTreeFileSystemsNode() {} |
| 519 |
| 520 CookieTreeNode::DetailedInfo |
| 521 CookieTreeFileSystemsNode::GetDetailedInfo() const { |
| 522 return DetailedInfo(parent()->GetTitle(), |
| 523 DetailedInfo::TYPE_FILE_SYSTEMS, |
| 524 NULL, NULL, NULL, NULL, NULL, NULL, NULL); |
| 525 } |
| 526 |
| 527 /////////////////////////////////////////////////////////////////////////////// |
| 479 // CookieTreeNode, protected | 528 // CookieTreeNode, protected |
| 480 | 529 |
| 481 bool CookieTreeNode::NodeTitleComparator::operator() ( | 530 bool CookieTreeNode::NodeTitleComparator::operator() ( |
| 482 const CookieTreeNode* lhs, const CookieTreeNode* rhs) { | 531 const CookieTreeNode* lhs, const CookieTreeNode* rhs) { |
| 483 const CookieTreeNode* left = | 532 const CookieTreeNode* left = |
| 484 static_cast<const CookieTreeNode*>(lhs); | 533 static_cast<const CookieTreeNode*>(lhs); |
| 485 const CookieTreeNode* right = | 534 const CookieTreeNode* right = |
| 486 static_cast<const CookieTreeNode*>(rhs); | 535 static_cast<const CookieTreeNode*>(rhs); |
| 487 return (left->GetTitle() < right->GetTitle()); | 536 return (left->GetTitle() < right->GetTitle()); |
| 488 } | 537 } |
| 489 | 538 |
| 490 void CookieTreeNode::AddChildSortedByTitle(CookieTreeNode* new_child) { | 539 void CookieTreeNode::AddChildSortedByTitle(CookieTreeNode* new_child) { |
| 540 DCHECK(new_child); |
| 491 std::vector<CookieTreeNode*>::iterator iter = | 541 std::vector<CookieTreeNode*>::iterator iter = |
| 492 lower_bound(children().begin(), | 542 lower_bound(children().begin(), |
| 493 children().end(), | 543 children().end(), |
| 494 new_child, | 544 new_child, |
| 495 NodeTitleComparator()); | 545 NodeTitleComparator()); |
| 496 GetModel()->Add(this, new_child, iter - children().begin()); | 546 GetModel()->Add(this, new_child, iter - children().begin()); |
| 497 } | 547 } |
| 498 | 548 |
| 499 /////////////////////////////////////////////////////////////////////////////// | 549 /////////////////////////////////////////////////////////////////////////////// |
| 500 // CookiesTreeModel, public: | 550 // CookiesTreeModel, public: |
| 501 | 551 |
| 502 CookiesTreeModel::CookiesTreeModel( | 552 CookiesTreeModel::CookiesTreeModel( |
| 503 net::CookieMonster* cookie_monster, | 553 net::CookieMonster* cookie_monster, |
| 504 BrowsingDataDatabaseHelper* database_helper, | 554 BrowsingDataDatabaseHelper* database_helper, |
| 505 BrowsingDataLocalStorageHelper* local_storage_helper, | 555 BrowsingDataLocalStorageHelper* local_storage_helper, |
| 506 BrowsingDataLocalStorageHelper* session_storage_helper, | 556 BrowsingDataLocalStorageHelper* session_storage_helper, |
| 507 BrowsingDataAppCacheHelper* appcache_helper, | 557 BrowsingDataAppCacheHelper* appcache_helper, |
| 508 BrowsingDataIndexedDBHelper* indexed_db_helper, | 558 BrowsingDataIndexedDBHelper* indexed_db_helper, |
| 559 BrowsingDataFileSystemHelper* file_system_helper, |
| 509 bool use_cookie_source) | 560 bool use_cookie_source) |
| 510 : ALLOW_THIS_IN_INITIALIZER_LIST(ui::TreeNodeModel<CookieTreeNode>( | 561 : ALLOW_THIS_IN_INITIALIZER_LIST(ui::TreeNodeModel<CookieTreeNode>( |
| 511 new CookieTreeRootNode(this))), | 562 new CookieTreeRootNode(this))), |
| 512 cookie_monster_(cookie_monster), | 563 cookie_monster_(cookie_monster), |
| 513 appcache_helper_(appcache_helper), | 564 appcache_helper_(appcache_helper), |
| 514 database_helper_(database_helper), | 565 database_helper_(database_helper), |
| 515 local_storage_helper_(local_storage_helper), | 566 local_storage_helper_(local_storage_helper), |
| 516 session_storage_helper_(session_storage_helper), | 567 session_storage_helper_(session_storage_helper), |
| 517 indexed_db_helper_(indexed_db_helper), | 568 indexed_db_helper_(indexed_db_helper), |
| 569 file_system_helper_(file_system_helper), |
| 518 batch_update_(0), | 570 batch_update_(0), |
| 519 use_cookie_source_(use_cookie_source) { | 571 use_cookie_source_(use_cookie_source) { |
| 520 LoadCookies(); | 572 LoadCookies(); |
| 521 DCHECK(database_helper_); | 573 DCHECK(database_helper_); |
| 522 database_helper_->StartFetching(NewCallback( | 574 database_helper_->StartFetching(NewCallback( |
| 523 this, &CookiesTreeModel::OnDatabaseModelInfoLoaded)); | 575 this, &CookiesTreeModel::OnDatabaseModelInfoLoaded)); |
| 524 DCHECK(local_storage_helper_); | 576 DCHECK(local_storage_helper_); |
| 525 local_storage_helper_->StartFetching(NewCallback( | 577 local_storage_helper_->StartFetching(NewCallback( |
| 526 this, &CookiesTreeModel::OnLocalStorageModelInfoLoaded)); | 578 this, &CookiesTreeModel::OnLocalStorageModelInfoLoaded)); |
| 527 if (session_storage_helper_) { | 579 if (session_storage_helper_) { |
| 528 session_storage_helper_->StartFetching(NewCallback( | 580 session_storage_helper_->StartFetching(NewCallback( |
| 529 this, &CookiesTreeModel::OnSessionStorageModelInfoLoaded)); | 581 this, &CookiesTreeModel::OnSessionStorageModelInfoLoaded)); |
| 530 } | 582 } |
| 531 | 583 |
| 532 // TODO(michaeln): when all of the ui impls have been updated, | 584 // TODO(michaeln): when all of the ui impls have been updated, |
| 533 // make this a required parameter. | 585 // make this a required parameter. |
| 534 if (appcache_helper_) { | 586 if (appcache_helper_) { |
| 535 appcache_helper_->StartFetching(NewCallback( | 587 appcache_helper_->StartFetching(NewCallback( |
| 536 this, &CookiesTreeModel::OnAppCacheModelInfoLoaded)); | 588 this, &CookiesTreeModel::OnAppCacheModelInfoLoaded)); |
| 537 } | 589 } |
| 538 | 590 |
| 539 if (indexed_db_helper_) { | 591 if (indexed_db_helper_) { |
| 540 indexed_db_helper_->StartFetching(NewCallback( | 592 indexed_db_helper_->StartFetching(NewCallback( |
| 541 this, &CookiesTreeModel::OnIndexedDBModelInfoLoaded)); | 593 this, &CookiesTreeModel::OnIndexedDBModelInfoLoaded)); |
| 542 } | 594 } |
| 595 |
| 596 if (file_system_helper_) { |
| 597 file_system_helper_->StartFetching(NewCallback( |
| 598 this, &CookiesTreeModel::OnFileSystemModelInfoLoaded)); |
| 599 } |
| 543 } | 600 } |
| 544 | 601 |
| 545 CookiesTreeModel::~CookiesTreeModel() { | 602 CookiesTreeModel::~CookiesTreeModel() { |
| 546 database_helper_->CancelNotification(); | 603 database_helper_->CancelNotification(); |
| 547 local_storage_helper_->CancelNotification(); | 604 local_storage_helper_->CancelNotification(); |
| 548 if (session_storage_helper_) | 605 if (session_storage_helper_) |
| 549 session_storage_helper_->CancelNotification(); | 606 session_storage_helper_->CancelNotification(); |
| 550 if (appcache_helper_) | 607 if (appcache_helper_) |
| 551 appcache_helper_->CancelNotification(); | 608 appcache_helper_->CancelNotification(); |
| 552 if (indexed_db_helper_) | 609 if (indexed_db_helper_) |
| 553 indexed_db_helper_->CancelNotification(); | 610 indexed_db_helper_->CancelNotification(); |
| 611 if (file_system_helper_) |
| 612 file_system_helper_->CancelNotification(); |
| 554 } | 613 } |
| 555 | 614 |
| 556 /////////////////////////////////////////////////////////////////////////////// | 615 /////////////////////////////////////////////////////////////////////////////// |
| 557 // CookiesTreeModel, TreeModel methods (public): | 616 // CookiesTreeModel, TreeModel methods (public): |
| 558 | 617 |
| 559 // TreeModel methods: | 618 // TreeModel methods: |
| 560 // Returns the set of icons for the nodes in the tree. You only need override | 619 // Returns the set of icons for the nodes in the tree. You only need override |
| 561 // this if you don't want to use the default folder icons. | 620 // this if you don't want to use the default folder icons. |
| 562 void CookiesTreeModel::GetIcons(std::vector<SkBitmap>* icons) { | 621 void CookiesTreeModel::GetIcons(std::vector<SkBitmap>* icons) { |
| 563 icons->push_back(*ResourceBundle::GetSharedInstance().GetBitmapNamed( | 622 icons->push_back(*ResourceBundle::GetSharedInstance().GetBitmapNamed( |
| (...skipping 17 matching lines...) Expand all Loading... |
| 581 case CookieTreeNode::DetailedInfo::TYPE_DATABASE: | 640 case CookieTreeNode::DetailedInfo::TYPE_DATABASE: |
| 582 return DATABASE; | 641 return DATABASE; |
| 583 case CookieTreeNode::DetailedInfo::TYPE_LOCAL_STORAGE: | 642 case CookieTreeNode::DetailedInfo::TYPE_LOCAL_STORAGE: |
| 584 return DATABASE; // close enough | 643 return DATABASE; // close enough |
| 585 case CookieTreeNode::DetailedInfo::TYPE_SESSION_STORAGE: | 644 case CookieTreeNode::DetailedInfo::TYPE_SESSION_STORAGE: |
| 586 return DATABASE; // ditto | 645 return DATABASE; // ditto |
| 587 case CookieTreeNode::DetailedInfo::TYPE_APPCACHE: | 646 case CookieTreeNode::DetailedInfo::TYPE_APPCACHE: |
| 588 return DATABASE; // ditto | 647 return DATABASE; // ditto |
| 589 case CookieTreeNode::DetailedInfo::TYPE_INDEXED_DB: | 648 case CookieTreeNode::DetailedInfo::TYPE_INDEXED_DB: |
| 590 return DATABASE; // ditto | 649 return DATABASE; // ditto |
| 650 case CookieTreeNode::DetailedInfo::TYPE_FILE_SYSTEM: |
| 651 return DATABASE; // ditto |
| 591 default: | 652 default: |
| 592 break; | 653 break; |
| 593 } | 654 } |
| 594 return -1; | 655 return -1; |
| 595 } | 656 } |
| 596 | 657 |
| 597 void CookiesTreeModel::LoadCookies() { | 658 void CookiesTreeModel::LoadCookies() { |
| 598 LoadCookiesWithFilter(std::wstring()); | 659 LoadCookiesWithFilter(std::wstring()); |
| 599 } | 660 } |
| 600 | 661 |
| (...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 841 CookieTreeIndexedDBsNode* indexed_dbs_node = | 902 CookieTreeIndexedDBsNode* indexed_dbs_node = |
| 842 origin_node->GetOrCreateIndexedDBsNode(); | 903 origin_node->GetOrCreateIndexedDBsNode(); |
| 843 indexed_dbs_node->AddIndexedDBNode( | 904 indexed_dbs_node->AddIndexedDBNode( |
| 844 new CookieTreeIndexedDBNode(&(*indexed_db_info))); | 905 new CookieTreeIndexedDBNode(&(*indexed_db_info))); |
| 845 } | 906 } |
| 846 } | 907 } |
| 847 NotifyObserverTreeNodeChanged(root); | 908 NotifyObserverTreeNodeChanged(root); |
| 848 NotifyObserverEndBatch(); | 909 NotifyObserverEndBatch(); |
| 849 } | 910 } |
| 850 | 911 |
| 912 void CookiesTreeModel::OnFileSystemModelInfoLoaded( |
| 913 const FileSystemInfoList& file_system_info) { |
| 914 file_system_info_list_ = file_system_info; |
| 915 PopulateFileSystemInfoWithFilter(std::wstring()); |
| 916 } |
| 917 |
| 918 void CookiesTreeModel::PopulateFileSystemInfoWithFilter( |
| 919 const std::wstring& filter) { |
| 920 if (file_system_info_list_.empty()) |
| 921 return; |
| 922 CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot()); |
| 923 NotifyObserverBeginBatch(); |
| 924 for (FileSystemInfoList::iterator file_system_info = |
| 925 file_system_info_list_.begin(); |
| 926 file_system_info != file_system_info_list_.end(); |
| 927 ++file_system_info) { |
| 928 GURL origin(file_system_info->origin); |
| 929 |
| 930 if (!filter.size() || |
| 931 (CookieTreeOriginNode::TitleForUrl(origin).find(filter) != |
| 932 std::wstring::npos)) { |
| 933 CookieTreeOriginNode* origin_node = |
| 934 root->GetOrCreateOriginNode(origin); |
| 935 CookieTreeFileSystemsNode* file_systems_node = |
| 936 origin_node->GetOrCreateFileSystemsNode(); |
| 937 file_systems_node->AddFileSystemNode( |
| 938 new CookieTreeFileSystemNode(&(*file_system_info))); |
| 939 } |
| 940 } |
| 941 NotifyObserverTreeNodeChanged(root); |
| 942 NotifyObserverEndBatch(); |
| 943 } |
| 944 |
| 851 void CookiesTreeModel::NotifyObserverBeginBatch() { | 945 void CookiesTreeModel::NotifyObserverBeginBatch() { |
| 852 // Only notify the model once if we're batching in a nested manner. | 946 // Only notify the model once if we're batching in a nested manner. |
| 853 if (batch_update_++ == 0) { | 947 if (batch_update_++ == 0) { |
| 854 FOR_EACH_OBSERVER(Observer, | 948 FOR_EACH_OBSERVER(Observer, |
| 855 cookies_observer_list_, | 949 cookies_observer_list_, |
| 856 TreeModelBeginBatch(this)); | 950 TreeModelBeginBatch(this)); |
| 857 } | 951 } |
| 858 } | 952 } |
| 859 | 953 |
| 860 void CookiesTreeModel::NotifyObserverEndBatch() { | 954 void CookiesTreeModel::NotifyObserverEndBatch() { |
| 861 // Only notify the observers if this is the outermost call to EndBatch() if | 955 // Only notify the observers if this is the outermost call to EndBatch() if |
| 862 // called in a nested manner. | 956 // called in a nested manner. |
| 863 if (--batch_update_ == 0) { | 957 if (--batch_update_ == 0) { |
| 864 FOR_EACH_OBSERVER(Observer, | 958 FOR_EACH_OBSERVER(Observer, |
| 865 cookies_observer_list_, | 959 cookies_observer_list_, |
| 866 TreeModelEndBatch(this)); | 960 TreeModelEndBatch(this)); |
| 867 } | 961 } |
| 868 } | 962 } |
| OLD | NEW |