Index: chrome/browser/browser_child_process_host.h |
=================================================================== |
--- chrome/browser/browser_child_process_host.h (revision 69229) |
+++ chrome/browser/browser_child_process_host.h (working copy) |
@@ -9,17 +9,19 @@ |
#include <list> |
#include "chrome/browser/child_process_launcher.h" |
-#include "chrome/browser/renderer_host/resource_dispatcher_host.h" |
+#include "chrome/browser/renderer_host/resource_message_filter.h" |
#include "chrome/common/child_process_host.h" |
+#include "chrome/common/child_process_info.h" |
+class ResourceDispatcherHost; |
// Plugins/workers and other child processes that live on the IO thread should |
// derive from this class. |
// |
// [Browser]RenderProcessHost is the main exception that doesn't derive from |
// this class. That project lives on the UI thread. |
-class BrowserChildProcessHost : public ResourceDispatcherHost::Receiver, |
- public ChildProcessHost, |
+class BrowserChildProcessHost : public ChildProcessHost, |
+ public ChildProcessInfo, |
public ChildProcessLauncher::Client { |
public: |
virtual ~BrowserChildProcessHost(); |
@@ -34,9 +36,6 @@ |
// Terminates all child processes and deletes each ChildProcessHost instance. |
static void TerminateAll(); |
- // ResourceDispatcherHost::Receiver implementation: |
- virtual bool Send(IPC::Message* msg); |
- |
// The Iterator class allows iteration through either all child processes, or |
// ones of a specific type, depending on which constructor is used. Note that |
// this should be done from the IO thread and that the iterator should not be |
@@ -45,7 +44,7 @@ |
class Iterator { |
public: |
Iterator(); |
- explicit Iterator(ProcessType type); |
+ explicit Iterator(ChildProcessInfo::ProcessType type); |
BrowserChildProcessHost* operator->() { return *iterator_; } |
BrowserChildProcessHost* operator*() { return *iterator_; } |
BrowserChildProcessHost* operator++(); |
@@ -53,16 +52,27 @@ |
private: |
bool all_; |
- ProcessType type_; |
+ ChildProcessInfo::ProcessType type_; |
std::list<BrowserChildProcessHost*>::iterator iterator_; |
}; |
protected: |
- // The resource_dispatcher_host may be NULL to indicate none is needed for |
+ // |resource_dispatcher_host| may be NULL to indicate none is needed for |
// this process type. |
- BrowserChildProcessHost(ProcessType type, |
- ResourceDispatcherHost* resource_dispatcher_host); |
+ // |url_request_context_getter| allows derived classes to override the |
+ // URLRequestContext. |
+ BrowserChildProcessHost( |
+ ChildProcessInfo::ProcessType type, |
+ ResourceDispatcherHost* resource_dispatcher_host, |
+ ResourceMessageFilter::URLRequestContextOverride* |
+ url_request_context_override); |
+ // A convenient constructor for those classes that want to use the default |
+ // URLRequestContext. |
+ BrowserChildProcessHost( |
+ ChildProcessInfo::ProcessType type, |
+ ResourceDispatcherHost* resource_dispatcher_host); |
+ |
// Derived classes call this to launch the child process asynchronously. |
void Launch( |
#if defined(OS_WIN) |
@@ -73,7 +83,7 @@ |
#endif |
CommandLine* cmd_line); |
- // Returns the handle of the child process. This must be called only after |
+ // Returns the handle of the child process. This can be called only after |
// OnProcessLaunched is called or it will be invalid and may crash. |
base::ProcessHandle GetChildProcessHandle() const; |
@@ -100,13 +110,16 @@ |
// Overrides from ChildProcessHost |
virtual void OnChildDied(); |
- virtual bool InterceptMessageFromChild(const IPC::Message& msg); |
+ virtual void ShutdownStarted(); |
virtual void Notify(NotificationType type); |
// Extends the base class implementation and removes this host from |
// the host list. Calls ChildProcessHost::ForceShutdown |
virtual void ForceShutdown(); |
private: |
+ void Initialize(ResourceMessageFilter::URLRequestContextOverride* |
+ url_request_context_override); |
+ |
// By using an internal class as the ChildProcessLauncher::Client, we can |
// intercept OnProcessLaunched and do our own processing before |
// calling the subclass' implementation. |