summaryrefslogtreecommitdiffstats
path: root/chrome/browser/browser_process_impl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/browser_process_impl.cc')
-rw-r--r--chrome/browser/browser_process_impl.cc8
1 files changed, 8 insertions, 0 deletions
diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc
index eac76f2..01e0d30 100644
--- a/chrome/browser/browser_process_impl.cc
+++ b/chrome/browser/browser_process_impl.cc
@@ -49,6 +49,7 @@
#include "chrome/browser/metrics/thread_watcher.h"
#include "chrome/browser/net/chrome_net_log.h"
#include "chrome/browser/net/crl_set_fetcher.h"
+#include "chrome/browser/net/sdch_dictionary_fetcher.h"
#include "chrome/browser/notifications/notification_ui_manager.h"
#include "chrome/browser/plugins/chrome_plugin_service_filter.h"
#include "chrome/browser/plugins/plugin_finder.h"
@@ -217,6 +218,13 @@ BrowserProcessImpl::~BrowserProcessImpl() {
void BrowserProcessImpl::StartTearDown() {
TRACE_EVENT0("shutdown", "BrowserProcessImpl::StartTearDown");
+ // We need to shutdown the SdchDictionaryFetcher as it regularly holds
+ // a pointer to a URLFetcher, and that URLFetcher (upon destruction) will do
+ // a PostDelayedTask onto the IO thread. This shutdown call will both discard
+ // any pending URLFetchers, and avoid creating any more.
+ BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
+ base::Bind(&SdchDictionaryFetcher::Shutdown));
+
// We need to destroy the MetricsServicesManager, IntranetRedirectDetector,
// PromoResourceService, and SafeBrowsing ClientSideDetectionService (owned by
// the SafeBrowsingService) before the io_thread_ gets destroyed, since their