diff options
author | engedy@chromium.org <engedy@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-06-11 18:03:47 +0000 |
---|---|---|
committer | engedy@chromium.org <engedy@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-06-11 18:03:47 +0000 |
commit | ec49c186a3af9c47133998d33f0c8e589aaf9b8c (patch) | |
tree | 8ff54ed66a272c002e9751e2b7f7352fe50fe60b | |
parent | 14a5e715aefc862d7c0633c35fd5d2689736445a (diff) | |
download | chromium_src-ec49c186a3af9c47133998d33f0c8e589aaf9b8c.zip chromium_src-ec49c186a3af9c47133998d33f0c8e589aaf9b8c.tar.gz chromium_src-ec49c186a3af9c47133998d33f0c8e589aaf9b8c.tar.bz2 |
Do not de-reference Profile on the IO thread in BrowsingDataRemover::ClearNetworkPredictorOnIOThread.
BUG=365030
Review URL: https://codereview.chromium.org/328703002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@276449 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/browsing_data/browsing_data_remover.cc | 14 | ||||
-rw-r--r-- | chrome/browser/browsing_data/browsing_data_remover.h | 7 |
2 files changed, 13 insertions, 8 deletions
diff --git a/chrome/browser/browsing_data/browsing_data_remover.cc b/chrome/browser/browsing_data/browsing_data_remover.cc index da2bb2f..ba48751 100644 --- a/chrome/browser/browsing_data/browsing_data_remover.cc +++ b/chrome/browser/browsing_data/browsing_data_remover.cc @@ -312,7 +312,8 @@ void BrowsingDataRemover::RemoveImpl(int remove_mask, BrowserThread::PostTask( BrowserThread::IO, FROM_HERE, base::Bind(&BrowsingDataRemover::ClearNetworkPredictorOnIOThread, - base::Unretained(this))); + base::Unretained(this), + profile_->GetNetworkPredictor())); } // As part of history deletion we also delete the auto-generated keywords. @@ -864,14 +865,13 @@ void BrowsingDataRemover::OnClearedNetworkPredictor() { NotifyAndDeleteIfDone(); } -void BrowsingDataRemover::ClearNetworkPredictorOnIOThread() { +void BrowsingDataRemover::ClearNetworkPredictorOnIOThread( + chrome_browser_net::Predictor* predictor) { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); + DCHECK(predictor); - chrome_browser_net::Predictor* predictor = profile_->GetNetworkPredictor(); - if (predictor) { - predictor->DiscardInitialNavigationHistory(); - predictor->DiscardAllResults(); - } + predictor->DiscardInitialNavigationHistory(); + predictor->DiscardAllResults(); // Notify the UI thread that we are done. BrowserThread::PostTask( diff --git a/chrome/browser/browsing_data/browsing_data_remover.h b/chrome/browser/browsing_data/browsing_data_remover.h index 3111cb1..66de0011 100644 --- a/chrome/browser/browsing_data/browsing_data_remover.h +++ b/chrome/browser/browsing_data/browsing_data_remover.h @@ -27,6 +27,10 @@ class ExtensionSpecialStoragePolicy; class IOThread; class Profile; +namespace chrome_browser_net { +class Predictor; +} + namespace content { class PluginDataRemover; class StoragePartition; @@ -303,7 +307,8 @@ class BrowsingDataRemover // Invoked on the IO thread to clear speculative data related to hostname // pre-resolution from the network Predictor. - void ClearNetworkPredictorOnIOThread(); + void ClearNetworkPredictorOnIOThread( + chrome_browser_net::Predictor* predictor); // Callback for when network related data in ProfileIOData has been cleared. // Clears the respective waiting flag and invokes NotifyAndDeleteIfDone. |