Index: chrome/browser/io_thread.h |
diff --git a/chrome/browser/io_thread.h b/chrome/browser/io_thread.h |
index b8be74b5faed773757a252136f9d8e8fc4a3e84d..41be0c94f118c9604e61b1f2c57af45fb8cf34eb 100644 |
--- a/chrome/browser/io_thread.h |
+++ b/chrome/browser/io_thread.h |
@@ -9,13 +9,26 @@ |
#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 "content/public/browser/browser_thread.h" |
+#include "content/public/browser/browser_thread_delegate.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 +56,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 content::BrowserThreadDelegate { |
public: |
struct Globals { |
Globals(); |
@@ -109,26 +125,37 @@ class IOThread : public content::BrowserProcessSubThread { |
// called on the IO thread. |
void ClearHostCache(); |
- protected: |
+ // 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: |
+ // BrowserThreadDelegate implementation, runs on the IO thread. |
+ // This handles initialization and destruction of state that must |
+ // live on the IO thread. |
virtual void Init() OVERRIDE; |
virtual void CleanUp() OVERRIDE; |
- private: |
// Provide SystemURLRequestContextGetter with access to |
// InitSystemRequestContext(). |
friend class SystemURLRequestContextGetter; |
- static void RegisterPrefs(PrefService* local_state); |
- |
- net::HttpAuthHandlerFactory* CreateDefaultAuthHandlerFactory( |
- net::HostResolver* resolver); |
- |
+ // 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(); |