Index: chrome/browser/browser_process_impl.h |
diff --git a/chrome/browser/browser_process_impl.h b/chrome/browser/browser_process_impl.h |
index 5c0ced3fb9c995001dfaebc3ab5ba7c41f3edf4d..fefb184c93921fd6f991c8fb02c20565680e2955 100644 |
--- a/chrome/browser/browser_process_impl.h |
+++ b/chrome/browser/browser_process_impl.h |
@@ -21,6 +21,7 @@ |
#include "chrome/browser/browser_process.h" |
#include "chrome/browser/prefs/pref_change_registrar.h" |
#include "chrome/browser/prefs/pref_member.h" |
+#include "content/public/browser/browser_thread.h" |
#include "content/public/browser/notification_observer.h" |
#include "content/public/browser/notification_registrar.h" |
#include "ipc/ipc_message.h" |
@@ -47,6 +48,14 @@ class BrowserProcessImpl : public BrowserProcess, |
explicit BrowserProcessImpl(const CommandLine& command_line); |
virtual ~BrowserProcessImpl(); |
+ // Most cleanup is done by these three functions, driven from |
+ // ChromeBrowserMain based on notifications from the content |
+ // framework, rather than in the destructor, so that we can |
+ // interleave cleanup with threads being stopped. |
+ void StartTearDown(); |
+ void PreStopThread(content::BrowserThread::ID identifier); |
+ void PostStopThread(content::BrowserThread::ID identifier); |
+ |
base::Thread* process_launcher_thread(); |
// BrowserProcess methods |
@@ -130,21 +139,16 @@ class BrowserProcessImpl : public BrowserProcess, |
virtual CRLSetFetcher* crl_set_fetcher(); |
+ // Must be invoked before the IO thread is started. |
+ void CreateIOThreadState(); |
+ |
private: |
void CreateResourceDispatcherHost(); |
void CreateMetricsService(); |
- void CreateIOThread(); |
- static void CleanupOnIOThread(); |
- |
- void CreateFileThread(); |
- void CreateDBThread(); |
- void CreateProcessLauncherThread(); |
- void CreateCacheThread(); |
- void CreateGpuThread(); |
void CreateWatchdogThread(); |
#if defined(OS_CHROMEOS) |
- void CreateWebSocketProxyThread(); |
+ void InitializeWebSocketProxyThread(); |
#endif |
void CreateTemplateURLService(); |
void CreateProfileManager(); |
@@ -180,29 +184,11 @@ class BrowserProcessImpl : public BrowserProcess, |
bool created_metrics_service_; |
scoped_ptr<MetricsService> metrics_service_; |
- bool created_io_thread_; |
scoped_ptr<IOThread> io_thread_; |
- bool created_file_thread_; |
- scoped_ptr<base::Thread> file_thread_; |
- |
- bool created_db_thread_; |
- scoped_ptr<base::Thread> db_thread_; |
- |
- bool created_process_launcher_thread_; |
- scoped_ptr<base::Thread> process_launcher_thread_; |
- |
- bool created_cache_thread_; |
- scoped_ptr<base::Thread> cache_thread_; |
- |
bool created_watchdog_thread_; |
scoped_ptr<WatchDogThread> watchdog_thread_; |
-#if defined(OS_CHROMEOS) |
- bool created_web_socket_proxy_thread_; |
- scoped_ptr<base::Thread> web_socket_proxy_thread_; |
-#endif |
- |
bool created_profile_manager_; |
scoped_ptr<ProfileManager> profile_manager_; |
@@ -294,7 +280,7 @@ class BrowserProcessImpl : public BrowserProcess, |
scoped_refptr<MHTMLGenerationManager> mhtml_generation_manager_; |
// Monitors the state of the 'DisablePluginFinder' policy. |
- BooleanPrefMember plugin_finder_disabled_pref_; |
+ scoped_ptr<BooleanPrefMember> plugin_finder_disabled_pref_; |
#if (defined(OS_WIN) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) |
base::RepeatingTimer<BrowserProcessImpl> autoupdate_timer_; |