| Index: chrome/browser/worker_host/worker_message_filter.cc
|
| ===================================================================
|
| --- chrome/browser/worker_host/worker_message_filter.cc (revision 0)
|
| +++ chrome/browser/worker_host/worker_message_filter.cc (revision 0)
|
| @@ -0,0 +1,116 @@
|
| +// Copyright (c) 2010 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "chrome/browser/worker_host/worker_message_filter.h"
|
| +
|
| +#include "chrome/browser/net/chrome_url_request_context.h"
|
| +#include "chrome/browser/worker_host/message_port_service.h"
|
| +#include "chrome/browser/worker_host/worker_service.h"
|
| +#include "chrome/common/net/url_request_context_getter.h"
|
| +#include "chrome/common/render_messages.h"
|
| +#include "chrome/common/render_messages_params.h"
|
| +#include "chrome/common/worker_messages.h"
|
| +
|
| +WorkerMessageFilter::WorkerMessageFilter(
|
| + int render_process_id,
|
| + URLRequestContextGetter* request_context,
|
| + ResourceDispatcherHost* resource_dispatcher_host,
|
| + CallbackWithReturnValue<int>::Type* next_routing_id)
|
| + : render_process_id_(render_process_id),
|
| + request_context_(request_context),
|
| + resource_dispatcher_host_(resource_dispatcher_host),
|
| + next_routing_id_(next_routing_id) {
|
| +}
|
| +
|
| +WorkerMessageFilter::~WorkerMessageFilter() {
|
| +}
|
| +
|
| +void WorkerMessageFilter::OnChannelClosing() {
|
| + BrowserMessageFilter::OnChannelClosing();
|
| +
|
| + MessagePortService::GetInstance()->OnWorkerMessageFilterClosing(this);
|
| + WorkerService::GetInstance()->OnWorkerMessageFilterClosing(this);
|
| +}
|
| +
|
| +bool WorkerMessageFilter::OnMessageReceived(const IPC::Message& message,
|
| + bool* message_was_ok) {
|
| + bool handled = true;
|
| + IPC_BEGIN_MESSAGE_MAP_EX(WorkerMessageFilter, message, *message_was_ok)
|
| + // Worker messages.
|
| + // Only sent from renderer for now, until we have nested workers.
|
| + IPC_MESSAGE_HANDLER(ViewHostMsg_CreateWorker, OnCreateWorker)
|
| + // Only sent from renderer for now, until we have nested workers.
|
| + IPC_MESSAGE_HANDLER(ViewHostMsg_LookupSharedWorker, OnLookupSharedWorker)
|
| + IPC_MESSAGE_HANDLER(ViewHostMsg_CancelCreateDedicatedWorker,
|
| + OnCancelCreateDedicatedWorker)
|
| + IPC_MESSAGE_HANDLER(ViewHostMsg_ForwardToWorker, OnForwardToWorker)
|
| + // Only sent from renderer.
|
| + IPC_MESSAGE_HANDLER(ViewHostMsg_DocumentDetached, OnDocumentDetached)
|
| + // Message Port related messages.
|
| + IPC_MESSAGE_HANDLER(WorkerProcessHostMsg_CreateMessagePort,
|
| + OnCreateMessagePort)
|
| + IPC_MESSAGE_FORWARD(WorkerProcessHostMsg_DestroyMessagePort,
|
| + MessagePortService::GetInstance(),
|
| + MessagePortService::Destroy)
|
| + IPC_MESSAGE_FORWARD(WorkerProcessHostMsg_Entangle,
|
| + MessagePortService::GetInstance(),
|
| + MessagePortService::Entangle)
|
| + IPC_MESSAGE_FORWARD(WorkerProcessHostMsg_PostMessage,
|
| + MessagePortService::GetInstance(),
|
| + MessagePortService::PostMessage)
|
| + IPC_MESSAGE_FORWARD(WorkerProcessHostMsg_QueueMessages,
|
| + MessagePortService::GetInstance(),
|
| + MessagePortService::QueueMessages)
|
| + IPC_MESSAGE_FORWARD(WorkerProcessHostMsg_SendQueuedMessages,
|
| + MessagePortService::GetInstance(),
|
| + MessagePortService::SendQueuedMessages)
|
| + IPC_MESSAGE_UNHANDLED(handled = false)
|
| + IPC_END_MESSAGE_MAP_EX()
|
| +
|
| + return handled;
|
| +}
|
| +
|
| +int WorkerMessageFilter::GetNextRoutingID() {
|
| + return next_routing_id_->Run();
|
| +}
|
| +
|
| +void WorkerMessageFilter::OnCreateWorker(
|
| + const ViewHostMsg_CreateWorker_Params& params,
|
| + int* route_id) {
|
| + *route_id = params.route_id != MSG_ROUTING_NONE ?
|
| + params.route_id : next_routing_id_->Run();
|
| + WorkerService::GetInstance()->CreateWorker(
|
| + params, *route_id, this, request_context_);
|
| +}
|
| +
|
| +void WorkerMessageFilter::OnLookupSharedWorker(
|
| + const ViewHostMsg_CreateWorker_Params& params,
|
| + bool* exists,
|
| + int* route_id,
|
| + bool* url_error) {
|
| + *route_id = next_routing_id_->Run();
|
| +
|
| + bool off_the_record = static_cast<ChromeURLRequestContext*>(
|
| + request_context_->GetURLRequestContext())->is_off_the_record();
|
| + WorkerService::GetInstance()->LookupSharedWorker(
|
| + params, *route_id, this, off_the_record, exists, url_error);
|
| +}
|
| +
|
| +void WorkerMessageFilter::OnCancelCreateDedicatedWorker(int route_id) {
|
| + WorkerService::GetInstance()->CancelCreateDedicatedWorker(route_id, this);
|
| +}
|
| +
|
| +void WorkerMessageFilter::OnForwardToWorker(const IPC::Message& message) {
|
| + WorkerService::GetInstance()->ForwardToWorker(message, this);
|
| +}
|
| +
|
| +void WorkerMessageFilter::OnDocumentDetached(unsigned long long document_id) {
|
| + WorkerService::GetInstance()->DocumentDetached(document_id, this);
|
| +}
|
| +
|
| +void WorkerMessageFilter::OnCreateMessagePort(int *route_id,
|
| + int* message_port_id) {
|
| + *route_id = next_routing_id_->Run();
|
| + MessagePortService::GetInstance()->Create(*route_id, this, message_port_id);
|
| +}
|
|
|
| Property changes on: chrome\browser\worker_host\worker_message_filter.cc
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|