Index: chrome/browser/browsing_data/browsing_data_remover.cc |
diff --git a/chrome/browser/browsing_data/browsing_data_remover.cc b/chrome/browser/browsing_data/browsing_data_remover.cc |
index f723a3f0176f5f7727077d8e6ce0bfced886e8ef..7362ec76a4ce66ad9674b7872d819a6fd32e69a5 100644 |
--- a/chrome/browser/browsing_data/browsing_data_remover.cc |
+++ b/chrome/browser/browsing_data/browsing_data_remover.cc |
@@ -147,6 +147,7 @@ BrowsingDataRemover::BrowsingDataRemover(Profile* profile, |
waiting_for_clear_quota_managed_data_(false), |
waiting_for_clear_content_licenses_(false), |
waiting_for_clear_form_(false), |
+ waiting_for_clear_profile_io_data_(false), |
remove_mask_(0), |
remove_origin_(GURL()), |
origin_set_mask_(0) { |
@@ -492,9 +493,11 @@ void BrowsingDataRemover::RemoveImpl(int remove_mask, |
// Also delete cached network related data (like TransportSecurityState, |
// HttpServerProperties data). |
- profile_->ClearNetworkingHistorySince(delete_begin_); |
- |
- NotifyAndDeleteIfDone(); |
+ waiting_for_clear_profile_io_data_ = true; |
+ profile_->ClearNetworkingHistorySince( |
+ delete_begin_, |
+ base::Bind(&BrowsingDataRemover::ClearedProfileIOData, |
+ base::Unretained(this))); |
} |
void BrowsingDataRemover::AddObserver(Observer* observer) { |
@@ -555,7 +558,8 @@ bool BrowsingDataRemover::AllDone() { |
!waiting_for_clear_plugin_data_ && |
!waiting_for_clear_quota_managed_data_ && |
!waiting_for_clear_content_licenses_ && |
- !waiting_for_clear_form_; |
+ !waiting_for_clear_form_ && |
+ !waiting_for_clear_profile_io_data_; |
} |
void BrowsingDataRemover::Observe(int type, |
@@ -974,3 +978,10 @@ void BrowsingDataRemover::OnClearedFormData() { |
waiting_for_clear_form_ = false; |
NotifyAndDeleteIfDone(); |
} |
+ |
+void BrowsingDataRemover::ClearedProfileIOData() { |
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
+ waiting_for_clear_profile_io_data_ = false; |
+ NotifyAndDeleteIfDone(); |
+} |
+ |