| 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..10093207086d2bc0d1095ce1afb8c08c12e296a9 100644
|
| --- a/content/browser/shared_worker/shared_worker_host.cc
|
| +++ b/content/browser/shared_worker/shared_worker_host.cc
|
| @@ -98,12 +98,14 @@ 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()))
|
| +bool SharedWorkerHost::FilterConnectionMessage(
|
| + int route_id,
|
| + int sent_message_port_id,
|
| + SharedWorkerMessageFilter* incoming_filter) {
|
| + if (!IsAvailable() || !HasFilter(incoming_filter, route_id))
|
| return false;
|
|
|
| - RelayMessage(message, filter);
|
| + Connect(route_id, sent_message_port_id, incoming_filter);
|
| return true;
|
| }
|
|
|
| @@ -222,42 +224,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_)
|
| @@ -311,6 +277,26 @@ bool SharedWorkerHost::HasFilter(SharedWorkerMessageFilter* filter,
|
| return false;
|
| }
|
|
|
| +void SharedWorkerHost::Connect(int route_id,
|
| + int sent_message_port_id,
|
| + SharedWorkerMessageFilter* incoming_filter) {
|
| + DCHECK(IsAvailable());
|
| + DCHECK(HasFilter(incoming_filter, route_id));
|
| + DCHECK(container_render_filter_);
|
| +
|
| + 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::SetMessagePortID(SharedWorkerMessageFilter* filter,
|
| int route_id,
|
| int message_port_id) {
|
|
|