Index: chrome/browser/profiles/off_the_record_profile_impl.cc |
diff --git a/chrome/browser/profiles/off_the_record_profile_impl.cc b/chrome/browser/profiles/off_the_record_profile_impl.cc |
index 75d42a62520d1dfa419c5cc24a9833f88e5261a2..df018419ad1a6e4adf650c6bbb796381d6ae65c9 100644 |
--- a/chrome/browser/profiles/off_the_record_profile_impl.cc |
+++ b/chrome/browser/profiles/off_the_record_profile_impl.cc |
@@ -452,8 +452,16 @@ chrome_browser_net::Predictor* OffTheRecordProfileImpl::GetNetworkPredictor() { |
return NULL; |
} |
-void OffTheRecordProfileImpl::ClearNetworkingHistorySince(base::Time time) { |
- // No need to do anything here, our transport security state is read-only. |
+void OffTheRecordProfileImpl::ClearNetworkingHistorySince( |
+ base::Time time, |
+ const base::Closure& completion) { |
+ // Nothing to do here, our transport security state is read-only. |
+ // Still, fire the callback to indicate we have finished, otherwise the |
+ // BrowsingDataRemover will never be destroyed and the dialog will never be |
+ // closed. We must do this asynchronously in order to avoid reentrancy issues. |
+ if (!completion.is_null()) { |
+ BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, completion); |
+ } |
} |
GURL OffTheRecordProfileImpl::GetHomePage() { |