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_) |