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

Unified Diff: chrome/browser/io_thread.h

Issue 8477004: Have content/ create and destroy its own threads. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Temporary - look at browser_list, browser_main_loop, content/p/b/browser_shutdown 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/io_thread.h
diff --git a/chrome/browser/io_thread.h b/chrome/browser/io_thread.h
index b8be74b5faed773757a252136f9d8e8fc4a3e84d..88078328b65b7757d855546b2a8b1b2fea8a89b0 100644
--- a/chrome/browser/io_thread.h
+++ b/chrome/browser/io_thread.h
@@ -9,13 +9,24 @@
#include <string>
#include "base/basictypes.h"
+#include "base/compiler_specific.h"
+#include "base/memory/ref_counted.h"
#include "base/memory/scoped_ptr.h"
#include "base/memory/weak_ptr.h"
#include "chrome/browser/net/ssl_config_service_manager.h"
#include "chrome/browser/prefs/pref_member.h"
-#include "content/browser/browser_process_sub_thread.h"
#include "net/base/network_change_notifier.h"
+// TODO(joi): Remove these in a follow-up change and IWYU in files
+// that were getting them directly or indirectly from here.
+#include "base/memory/ref_counted.h"
+#include "base/memory/scoped_ptr.h"
+#include "base/message_loop.h"
+#include "base/message_loop_proxy.h"
+#include "base/synchronization/lock.h"
+#include "base/threading/thread.h"
+
+class BrowserProcessImpl;
class ChromeNetLog;
class ExtensionEventRouterForwarder;
class MediaInternals;
@@ -43,7 +54,10 @@ class URLRequestContextGetter;
class URLSecurityManager;
} // namespace net
-class IOThread : public content::BrowserProcessSubThread {
+// Contains state associated with, initialized and cleaned up on, and
+// primarily used on, the IO thread. Also acts as a convenience
+// accessor to the Thread object for the IO thread.
+class IOThread : public MessageLoop::DestructionObserver {
public:
struct Globals {
Globals();
@@ -109,29 +123,44 @@ class IOThread : public content::BrowserProcessSubThread {
// called on the IO thread.
void ClearHostCache();
- protected:
- virtual void Init() OVERRIDE;
- virtual void CleanUp() OVERRIDE;
+ // Convenience method similar to base::Thread, giving access to the
+ // actual IO thread.
+ // TODO(joi): Remove this in follow-up changes.
+ MessageLoop* message_loop() const;
private:
+ // For InitializeGlobalState/TearDownGlobalState.
+ friend class BrowserProcessImpl;
+
// Provide SystemURLRequestContextGetter with access to
// InitSystemRequestContext().
friend class SystemURLRequestContextGetter;
- static void RegisterPrefs(PrefService* local_state);
-
- net::HttpAuthHandlerFactory* CreateDefaultAuthHandlerFactory(
- net::HostResolver* resolver);
+ // This is posted as the very first task to the IO thread. This is
+ // the responsibility of BrowserProcessImpl.
+ void InitializeGlobalState();
+ // Global state must be initialized on the IO thread, then this
+ // method must be invoked on the UI thread.
void InitSystemRequestContext();
// Lazy initialization of system request context for
- // SystemURLRequestContextGetter. To be called on IO thread.
+ // SystemURLRequestContextGetter. To be called on IO thread only
+ // after global state has been initialized on the IO thread, and
+ // SystemRequestContext state has been initialized on the UI thread.
void InitSystemRequestContextOnIOThread();
+ static void RegisterPrefs(PrefService* local_state);
+
+ net::HttpAuthHandlerFactory* CreateDefaultAuthHandlerFactory(
+ net::HostResolver* resolver);
+
// Returns an SSLConfigService instance.
net::SSLConfigService* GetSSLConfigService();
+ // MessageLoop::DestructionObserver implementation.
+ virtual void WillDestroyCurrentMessageLoop() OVERRIDE;
+
// The NetLog is owned by the browser process, to allow logging from other
// threads during shutdown, but is used most frequently on the IOThread.
ChromeNetLog* net_log_;

Powered by Google App Engine
This is Rietveld 408576698