summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorengedy@chromium.org <engedy@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-06-11 18:03:47 +0000
committerengedy@chromium.org <engedy@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-06-11 18:03:47 +0000
commitec49c186a3af9c47133998d33f0c8e589aaf9b8c (patch)
tree8ff54ed66a272c002e9751e2b7f7352fe50fe60b
parent14a5e715aefc862d7c0633c35fd5d2689736445a (diff)
downloadchromium_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.cc14
-rw-r--r--chrome/browser/browsing_data/browsing_data_remover.h7
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.