Chromium Code Reviews| Index: content/browser/shared_worker/shared_worker_host.cc |
| diff --git a/content/browser/shared_worker/shared_worker_host.cc b/content/browser/shared_worker/shared_worker_host.cc |
| index ceecae238b5a3884b098271572b22b94abb11951..33c0473a22a20297e2c11d4d8ab74b2c01993ca5 100644 |
| --- a/content/browser/shared_worker/shared_worker_host.cc |
| +++ b/content/browser/shared_worker/shared_worker_host.cc |
| @@ -98,13 +98,9 @@ void SharedWorkerHost::Start(bool pause_on_start) { |
| info.filter()->Send(new ViewMsg_WorkerCreated(info.route_id())); |
| } |
| -bool SharedWorkerHost::FilterMessage(const IPC::Message& message, |
| - SharedWorkerMessageFilter* filter) { |
| - if (!IsAvailable() || !HasFilter(filter, message.routing_id())) |
| - return false; |
| - |
| - RelayMessage(message, filter); |
| - return true; |
| +bool SharedWorkerHost::CanHandleMessage(int route_id, |
| + SharedWorkerMessageFilter* filter) { |
| + return IsAvailable() && HasFilter(filter, route_id); |
| } |
| void SharedWorkerHost::FilterShutdown(SharedWorkerMessageFilter* filter) { |
| @@ -118,6 +114,26 @@ void SharedWorkerHost::FilterShutdown(SharedWorkerMessageFilter* filter) { |
| } |
| } |
| +void SharedWorkerHost::Connect(int route_id, |
| + int sent_message_port_id, |
| + SharedWorkerMessageFilter* incoming_filter) { |
| + if (!instance_) |
|
horo
2017/01/05 03:54:13
nit: DCHECK(instance_);
nhiroki
2017/01/05 04:11:40
I'll make a separate CL to replace all such if-sta
dcheng
2017/01/05 06:19:18
Why is it OK to DCHECK instance_?
nhiroki
2017/01/05 07:54:33
|instance_| is set at the ctor of SharedWorkerHost
|
| + return; |
| + |
| + DCHECK(container_render_filter_); |
|
dcheng
2017/01/05 06:19:18
Ditto: why is this OK to DCHECK? These messages ar
nhiroki
2017/01/05 07:54:33
Because this filter is set at the ctor and the hos
|
| + int new_routing_id = container_render_filter_->GetNextRoutingID(); |
| + MessagePortService::GetInstance()->UpdateMessagePort( |
| + sent_message_port_id, |
| + container_render_filter_->message_port_message_filter(), new_routing_id); |
| + SetMessagePortID(incoming_filter, route_id, sent_message_port_id); |
| + Send(new WorkerMsg_Connect(worker_route_id_, sent_message_port_id, |
| + new_routing_id)); |
| + |
| + // Send any queued messages for the sent port. |
| + MessagePortService::GetInstance()->SendQueuedMessagesIfPossible( |
| + sent_message_port_id); |
| +} |
| + |
| void SharedWorkerHost::DocumentDetached(SharedWorkerMessageFilter* filter, |
| unsigned long long document_id) { |
| if (!instance_) |
| @@ -222,42 +238,6 @@ void SharedWorkerHost::AllowIndexedDB(const GURL& url, |
| url, name, instance_->resource_context(), GetRenderFrameIDsForWorker()); |
| } |
| -void SharedWorkerHost::RelayMessage( |
| - const IPC::Message& message, |
| - SharedWorkerMessageFilter* incoming_filter) { |
| - if (!instance_) |
| - return; |
| - if (message.type() == WorkerMsg_Connect::ID) { |
| - // Crack the SharedWorker Connect message to setup routing for the port. |
| - WorkerMsg_Connect::Param param; |
| - if (!WorkerMsg_Connect::Read(&message, ¶m)) |
| - return; |
| - int sent_message_port_id = std::get<0>(param); |
| - int new_routing_id = std::get<1>(param); |
| - |
| - DCHECK(container_render_filter_); |
| - new_routing_id = container_render_filter_->GetNextRoutingID(); |
| - MessagePortService::GetInstance()->UpdateMessagePort( |
| - sent_message_port_id, |
| - container_render_filter_->message_port_message_filter(), |
| - new_routing_id); |
| - SetMessagePortID( |
| - incoming_filter, message.routing_id(), sent_message_port_id); |
| - // Resend the message with the new routing id. |
| - Send(new WorkerMsg_Connect( |
| - worker_route_id_, sent_message_port_id, new_routing_id)); |
| - |
| - // Send any queued messages for the sent port. |
| - MessagePortService::GetInstance()->SendQueuedMessagesIfPossible( |
| - sent_message_port_id); |
| - } else { |
| - IPC::Message* new_message = new IPC::Message(message); |
| - new_message->set_routing_id(worker_route_id_); |
| - Send(new_message); |
| - return; |
| - } |
| -} |
| - |
| void SharedWorkerHost::TerminateWorker() { |
| termination_message_sent_ = true; |
| if (!closed_) |