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

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: Fix official build, avoid DCHECK in official Linux/ChromeOS builds. 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
« no previous file with comments | « no previous file | chrome/browser/browser_process_impl.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/browser_process_impl.h
diff --git a/chrome/browser/browser_process_impl.h b/chrome/browser/browser_process_impl.h
index 46d4d52d1c6e96447206e307d082bd69680be25c..2227ab00aa99eac10a3a044c3f478eacab8e4ab4 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"
@@ -29,6 +30,7 @@ class BrowserOnlineStateObserver;
class ChromeNetLog;
class ChromeResourceDispatcherHostDelegate;
class CommandLine;
+class ChromeFrameFriendOfBrowserProcessImpl; // TODO(joi): Remove
class RemoteDebuggingServer;
class TabCloseableStateWatcher;
@@ -44,6 +46,19 @@ class BrowserProcessImpl : public BrowserProcess,
explicit BrowserProcessImpl(const CommandLine& command_line);
virtual ~BrowserProcessImpl();
+ // Some of our startup is interleaved with thread creation, driven
+ // by these functions.
+ void PreStartThread(content::BrowserThread::ID identifier);
+ void PostStartThread(content::BrowserThread::ID identifier);
+
+ // Most cleanup is done by these 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
@@ -117,20 +132,18 @@ class BrowserProcessImpl : public BrowserProcess,
virtual CRLSetFetcher* crl_set_fetcher() OVERRIDE;
private:
+ // TODO(joi): Remove. Temporary hack to get at CreateIOThreadState.
+ friend class ChromeFrameFriendOfBrowserProcessImpl;
+
+ // Must be called right before the IO thread is started.
+ void CreateIOThreadState();
+
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();
@@ -161,29 +174,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_;
@@ -270,7 +265,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_;
« no previous file with comments | « no previous file | chrome/browser/browser_process_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698