Index: chrome/browser/browser_child_process_host.cc |
=================================================================== |
--- chrome/browser/browser_child_process_host.cc (revision 69229) |
+++ chrome/browser/browser_child_process_host.cc (working copy) |
@@ -61,19 +61,43 @@ |
BrowserChildProcessHost::BrowserChildProcessHost( |
- ProcessType type, ResourceDispatcherHost* resource_dispatcher_host) |
- : Receiver(type, -1), |
+ ChildProcessInfo::ProcessType type, |
+ ResourceDispatcherHost* resource_dispatcher_host, |
+ ResourceMessageFilter::URLRequestContextOverride* |
+ url_request_context_override) |
+ : ChildProcessInfo(type, -1), |
ALLOW_THIS_IN_INITIALIZER_LIST(client_(this)), |
resource_dispatcher_host_(resource_dispatcher_host) { |
+ Initialize(url_request_context_override); |
+} |
+ |
+BrowserChildProcessHost::BrowserChildProcessHost( |
+ ChildProcessInfo::ProcessType type, |
+ ResourceDispatcherHost* resource_dispatcher_host) |
+ : ChildProcessInfo(type, -1), |
+ ALLOW_THIS_IN_INITIALIZER_LIST(client_(this)), |
+ resource_dispatcher_host_(resource_dispatcher_host) { |
+ Initialize(NULL); |
+} |
+ |
+void BrowserChildProcessHost::Initialize( |
+ ResourceMessageFilter::URLRequestContextOverride* |
+ url_request_context_override) { |
+ if (resource_dispatcher_host_) { |
+ ResourceMessageFilter* resource_message_filter = new ResourceMessageFilter( |
+ id(), type(), resource_dispatcher_host_); |
+ if (url_request_context_override) { |
+ resource_message_filter->set_url_request_context_override( |
+ url_request_context_override); |
+ } |
+ AddFilter(resource_message_filter); |
+ } |
+ |
g_child_process_list.Get().push_back(this); |
} |
- |
BrowserChildProcessHost::~BrowserChildProcessHost() { |
g_child_process_list.Get().remove(this); |
- |
- if (resource_dispatcher_host_) |
- resource_dispatcher_host_->CancelRequestsForProcess(id()); |
} |
// static |
@@ -127,10 +151,6 @@ |
return child_process_->GetHandle(); |
} |
-bool BrowserChildProcessHost::Send(IPC::Message* msg) { |
- return SendOnChannel(msg); |
-} |
- |
void BrowserChildProcessHost::ForceShutdown() { |
g_child_process_list.Get().remove(this); |
ChildProcessHost::ForceShutdown(); |
@@ -176,22 +196,10 @@ |
ChildProcessHost::OnChildDied(); |
} |
-bool BrowserChildProcessHost::InterceptMessageFromChild( |
- const IPC::Message& msg) { |
- bool msg_is_ok = true; |
- bool handled = false; |
- if (resource_dispatcher_host_) { |
- handled = resource_dispatcher_host_->OnMessageReceived( |
- msg, this, &msg_is_ok); |
- } |
- if (!handled && (msg.type() == PluginProcessHostMsg_ShutdownRequest::ID)) { |
- // Must remove the process from the list now, in case it gets used for a |
- // new instance before our watcher tells us that the process terminated. |
- g_child_process_list.Get().remove(this); |
- } |
- if (!msg_is_ok) |
- base::KillProcess(handle(), ResultCodes::KILLED_BAD_MESSAGE, false); |
- return handled; |
+void BrowserChildProcessHost::ShutdownStarted() { |
+ // Must remove the process from the list now, in case it gets used for a |
+ // new instance before our watcher tells us that the process terminated. |
+ g_child_process_list.Get().remove(this); |
} |
BrowserChildProcessHost::ClientHook::ClientHook(BrowserChildProcessHost* host) |
@@ -214,7 +222,7 @@ |
iterator_ = g_child_process_list.Get().begin(); |
} |
-BrowserChildProcessHost::Iterator::Iterator(ProcessType type) |
+BrowserChildProcessHost::Iterator::Iterator(ChildProcessInfo::ProcessType type) |
: all_(false), type_(type) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)) << |
"ChildProcessInfo::Iterator must be used on the IO thread."; |