Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4611)

Unified Diff: chrome/browser/browser_process_impl.h

Issue 8477004: Have content/ create and destroy its own threads. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: With this patchset, Chrome runs and exits normally on Linux. Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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_;

Powered by Google App Engine
This is Rietveld 408576698