| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/browsing_data_remover.h" | 5 #include "chrome/browser/browsing_data_remover.h" |
| 6 | 6 |
| 7 #include <map> | 7 #include <map> |
| 8 #include <set> | 8 #include <set> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 51 #include "net/base/origin_bound_cert_service.h" | 51 #include "net/base/origin_bound_cert_service.h" |
| 52 #include "net/base/origin_bound_cert_store.h" | 52 #include "net/base/origin_bound_cert_store.h" |
| 53 #include "net/base/transport_security_state.h" | 53 #include "net/base/transport_security_state.h" |
| 54 #include "net/disk_cache/disk_cache.h" | 54 #include "net/disk_cache/disk_cache.h" |
| 55 #include "net/http/http_cache.h" | 55 #include "net/http/http_cache.h" |
| 56 #include "net/url_request/url_request_context.h" | 56 #include "net/url_request/url_request_context.h" |
| 57 #include "net/url_request/url_request_context_getter.h" | 57 #include "net/url_request/url_request_context_getter.h" |
| 58 #include "webkit/quota/quota_manager.h" | 58 #include "webkit/quota/quota_manager.h" |
| 59 #include "webkit/quota/quota_types.h" | 59 #include "webkit/quota/quota_types.h" |
| 60 | 60 |
| 61 using content::BrowserContext; |
| 61 using content::BrowserThread; | 62 using content::BrowserThread; |
| 62 using content::DownloadManager; | 63 using content::DownloadManager; |
| 63 using content::UserMetricsAction; | 64 using content::UserMetricsAction; |
| 64 | 65 |
| 65 bool BrowsingDataRemover::removing_ = false; | 66 bool BrowsingDataRemover::removing_ = false; |
| 66 | 67 |
| 67 BrowsingDataRemover::NotificationDetails::NotificationDetails() | 68 BrowsingDataRemover::NotificationDetails::NotificationDetails() |
| 68 : removal_begin(base::Time()), | 69 : removal_begin(base::Time()), |
| 69 removal_mask(-1) { | 70 removal_mask(-1) { |
| 70 } | 71 } |
| (...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 276 base::Bind(&BrowsingDataRemover::ClearOriginBoundCertsOnIOThread, | 277 base::Bind(&BrowsingDataRemover::ClearOriginBoundCertsOnIOThread, |
| 277 base::Unretained(this), base::Unretained(rq_context))); | 278 base::Unretained(this), base::Unretained(rq_context))); |
| 278 } | 279 } |
| 279 } | 280 } |
| 280 | 281 |
| 281 if (remove_mask & REMOVE_LOCAL_STORAGE) { | 282 if (remove_mask & REMOVE_LOCAL_STORAGE) { |
| 282 // Remove data such as local databases, STS state, etc. These only can | 283 // Remove data such as local databases, STS state, etc. These only can |
| 283 // be removed if a WEBKIT thread exists, so check that first: | 284 // be removed if a WEBKIT thread exists, so check that first: |
| 284 if (BrowserThread::IsMessageLoopValid(BrowserThread::WEBKIT_DEPRECATED)) { | 285 if (BrowserThread::IsMessageLoopValid(BrowserThread::WEBKIT_DEPRECATED)) { |
| 285 // We assume the end time is now. | 286 // We assume the end time is now. |
| 286 profile_->GetWebKitContext()->DeleteDataModifiedSince(delete_begin_); | 287 BrowserContext::GetWebKitContext(profile_)-> |
| 288 DeleteDataModifiedSince(delete_begin_); |
| 287 } | 289 } |
| 288 } | 290 } |
| 289 | 291 |
| 290 if (remove_mask & REMOVE_INDEXEDDB || remove_mask & REMOVE_WEBSQL || | 292 if (remove_mask & REMOVE_INDEXEDDB || remove_mask & REMOVE_WEBSQL || |
| 291 remove_mask & REMOVE_APPCACHE || remove_mask & REMOVE_FILE_SYSTEMS) { | 293 remove_mask & REMOVE_APPCACHE || remove_mask & REMOVE_FILE_SYSTEMS) { |
| 292 quota_manager_ = profile_->GetQuotaManager(); | 294 if (!quota_manager_) |
| 293 if (quota_manager_) { | 295 quota_manager_ = content::BrowserContext::GetQuotaManager(profile_); |
| 294 waiting_for_clear_quota_managed_data_ = true; | 296 waiting_for_clear_quota_managed_data_ = true; |
| 295 BrowserThread::PostTask( | 297 BrowserThread::PostTask( |
| 296 BrowserThread::IO, FROM_HERE, | 298 BrowserThread::IO, FROM_HERE, |
| 297 base::Bind(&BrowsingDataRemover::ClearQuotaManagedDataOnIOThread, | 299 base::Bind(&BrowsingDataRemover::ClearQuotaManagedDataOnIOThread, |
| 298 base::Unretained(this))); | 300 base::Unretained(this))); |
| 299 } | |
| 300 } | 301 } |
| 301 | 302 |
| 302 if (remove_mask & REMOVE_PLUGIN_DATA) { | 303 if (remove_mask & REMOVE_PLUGIN_DATA) { |
| 303 content::RecordAction(UserMetricsAction("ClearBrowsingData_LSOData")); | 304 content::RecordAction(UserMetricsAction("ClearBrowsingData_LSOData")); |
| 304 | 305 |
| 305 waiting_for_clear_plugin_data_ = true; | 306 waiting_for_clear_plugin_data_ = true; |
| 306 if (!plugin_data_remover_.get()) { | 307 if (!plugin_data_remover_.get()) { |
| 307 plugin_data_remover_.reset( | 308 plugin_data_remover_.reset( |
| 308 content::PluginDataRemover::Create(profile_->GetResourceContext())); | 309 content::PluginDataRemover::Create(profile_->GetResourceContext())); |
| 309 } | 310 } |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 375 | 376 |
| 376 void BrowsingDataRemover::RemoveObserver(Observer* observer) { | 377 void BrowsingDataRemover::RemoveObserver(Observer* observer) { |
| 377 observer_list_.RemoveObserver(observer); | 378 observer_list_.RemoveObserver(observer); |
| 378 } | 379 } |
| 379 | 380 |
| 380 void BrowsingDataRemover::OnHistoryDeletionDone() { | 381 void BrowsingDataRemover::OnHistoryDeletionDone() { |
| 381 waiting_for_clear_history_ = false; | 382 waiting_for_clear_history_ = false; |
| 382 NotifyAndDeleteIfDone(); | 383 NotifyAndDeleteIfDone(); |
| 383 } | 384 } |
| 384 | 385 |
| 386 void BrowsingDataRemover::OverrideQuotaManagerForTesting( |
| 387 quota::QuotaManager* quota_manager) { |
| 388 quota_manager_ = quota_manager; |
| 389 } |
| 390 |
| 385 base::Time BrowsingDataRemover::CalculateBeginDeleteTime( | 391 base::Time BrowsingDataRemover::CalculateBeginDeleteTime( |
| 386 TimePeriod time_period) { | 392 TimePeriod time_period) { |
| 387 base::TimeDelta diff; | 393 base::TimeDelta diff; |
| 388 base::Time delete_begin_time = base::Time::Now(); | 394 base::Time delete_begin_time = base::Time::Now(); |
| 389 switch (time_period) { | 395 switch (time_period) { |
| 390 case LAST_HOUR: | 396 case LAST_HOUR: |
| 391 diff = base::TimeDelta::FromHours(1); | 397 diff = base::TimeDelta::FromHours(1); |
| 392 break; | 398 break; |
| 393 case LAST_DAY: | 399 case LAST_DAY: |
| 394 diff = base::TimeDelta::FromHours(24); | 400 diff = base::TimeDelta::FromHours(24); |
| (...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 559 // the user-specified timeframe, and deal with the resulting set in | 565 // the user-specified timeframe, and deal with the resulting set in |
| 560 // OnGotQuotaManagedOrigins(). | 566 // OnGotQuotaManagedOrigins(). |
| 561 quota_managed_origins_to_delete_count_ = 0; | 567 quota_managed_origins_to_delete_count_ = 0; |
| 562 quota_managed_storage_types_to_delete_count_ = 2; | 568 quota_managed_storage_types_to_delete_count_ = 2; |
| 563 | 569 |
| 564 if (delete_begin_ == base::Time()) { | 570 if (delete_begin_ == base::Time()) { |
| 565 // If we're deleting since the beginning of time, ask the QuotaManager for | 571 // If we're deleting since the beginning of time, ask the QuotaManager for |
| 566 // all origins with persistent quota modified within the user-specified | 572 // all origins with persistent quota modified within the user-specified |
| 567 // timeframe, and deal with the resulting set in | 573 // timeframe, and deal with the resulting set in |
| 568 // OnGotPersistentQuotaManagedOrigins. | 574 // OnGotPersistentQuotaManagedOrigins. |
| 569 profile_->GetQuotaManager()->GetOriginsModifiedSince( | 575 quota_manager_->GetOriginsModifiedSince( |
| 570 quota::kStorageTypePersistent, delete_begin_, | 576 quota::kStorageTypePersistent, delete_begin_, |
| 571 base::Bind(&BrowsingDataRemover::OnGotQuotaManagedOrigins, | 577 base::Bind(&BrowsingDataRemover::OnGotQuotaManagedOrigins, |
| 572 base::Unretained(this))); | 578 base::Unretained(this))); |
| 573 } else { | 579 } else { |
| 574 // Otherwise, we don't need to deal with persistent storage. | 580 // Otherwise, we don't need to deal with persistent storage. |
| 575 --quota_managed_storage_types_to_delete_count_; | 581 --quota_managed_storage_types_to_delete_count_; |
| 576 } | 582 } |
| 577 | 583 |
| 578 // Do the same for temporary quota, regardless, passing the resulting set into | 584 // Do the same for temporary quota, regardless, passing the resulting set into |
| 579 // OnGotTemporaryQuotaManagedOrigins. | 585 // OnGotTemporaryQuotaManagedOrigins. |
| 580 profile_->GetQuotaManager()->GetOriginsModifiedSince( | 586 quota_manager_->GetOriginsModifiedSince( |
| 581 quota::kStorageTypeTemporary, delete_begin_, | 587 quota::kStorageTypeTemporary, delete_begin_, |
| 582 base::Bind(&BrowsingDataRemover::OnGotQuotaManagedOrigins, | 588 base::Bind(&BrowsingDataRemover::OnGotQuotaManagedOrigins, |
| 583 base::Unretained(this))); | 589 base::Unretained(this))); |
| 584 } | 590 } |
| 585 | 591 |
| 586 void BrowsingDataRemover::OnGotQuotaManagedOrigins( | 592 void BrowsingDataRemover::OnGotQuotaManagedOrigins( |
| 587 const std::set<GURL>& origins, quota::StorageType type) { | 593 const std::set<GURL>& origins, quota::StorageType type) { |
| 588 DCHECK_GT(quota_managed_storage_types_to_delete_count_, 0); | 594 DCHECK_GT(quota_managed_storage_types_to_delete_count_, 0); |
| 589 // Walk through the origins passed in, delete quota of |type| from each that | 595 // Walk through the origins passed in, delete quota of |type| from each that |
| 590 // isn't protected. | 596 // isn't protected. |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 678 BrowserThread::UI, FROM_HERE, | 684 BrowserThread::UI, FROM_HERE, |
| 679 base::Bind(&BrowsingDataRemover::OnClearedOriginBoundCerts, | 685 base::Bind(&BrowsingDataRemover::OnClearedOriginBoundCerts, |
| 680 base::Unretained(this))); | 686 base::Unretained(this))); |
| 681 } | 687 } |
| 682 | 688 |
| 683 void BrowsingDataRemover::OnClearedOriginBoundCerts() { | 689 void BrowsingDataRemover::OnClearedOriginBoundCerts() { |
| 684 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 690 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 685 waiting_for_clear_origin_bound_certs_ = false; | 691 waiting_for_clear_origin_bound_certs_ = false; |
| 686 NotifyAndDeleteIfDone(); | 692 NotifyAndDeleteIfDone(); |
| 687 } | 693 } |
| OLD | NEW |