Index: chrome/browser/worker_host/worker_process_host.cc |
diff --git a/chrome/browser/worker_host/worker_process_host.cc b/chrome/browser/worker_host/worker_process_host.cc |
index 35ffd74f4fe42e630603ca134866cc3a100978f6..7fe1c53c9a825d5545c39ef312a3ae2c89c38dfd 100644 |
--- a/chrome/browser/worker_host/worker_process_host.cc |
+++ b/chrome/browser/worker_host/worker_process_host.cc |
@@ -21,6 +21,7 @@ |
#include "chrome/browser/profile.h" |
#include "chrome/browser/renderer_host/blob_dispatcher_host.h" |
#include "chrome/browser/renderer_host/database_dispatcher_host.h" |
+#include "chrome/browser/renderer_host/file_utilities_dispatcher_host.h" |
#include "chrome/browser/renderer_host/render_view_host.h" |
#include "chrome/browser/renderer_host/render_view_host_delegate.h" |
#include "chrome/browser/renderer_host/resource_message_filter.h" |
@@ -33,6 +34,7 @@ |
#include "chrome/common/render_messages_params.h" |
#include "chrome/common/result_codes.h" |
#include "chrome/common/worker_messages.h" |
+#include "net/base/mime_util.h" |
#include "ipc/ipc_switches.h" |
#include "net/base/registry_controlled_domain.h" |
@@ -70,7 +72,9 @@ WorkerProcessHost::WorkerProcessHost( |
new BlobDispatcherHost( |
this->id(), request_context->blob_storage_context()))), |
ALLOW_THIS_IN_INITIALIZER_LIST(file_system_dispatcher_host_( |
- new FileSystemDispatcherHost(this, request_context))) { |
+ new FileSystemDispatcherHost(this, request_context))), |
+ ALLOW_THIS_IN_INITIALIZER_LIST(file_utilities_dispatcher_host_( |
+ new FileUtilitiesDispatcherHost(this, this->id()))) { |
next_route_id_callback_.reset(NewCallbackWithReturnValue( |
WorkerService::GetInstance(), &WorkerService::next_worker_route_id)); |
db_dispatcher_host_ = new DatabaseDispatcherHost( |
@@ -89,6 +93,9 @@ WorkerProcessHost::~WorkerProcessHost() { |
// Shut down the file system dispatcher host. |
file_system_dispatcher_host_->Shutdown(); |
+ // Shut down the file utilities dispatcher host. |
+ file_utilities_dispatcher_host_->Shutdown(); |
+ |
// Let interested observers know we are being deleted. |
NotificationService::current()->Notify( |
NotificationType::WORKER_PROCESS_HOST_SHUTDOWN, |
@@ -249,6 +256,7 @@ void WorkerProcessHost::OnMessageReceived(const IPC::Message& message) { |
db_dispatcher_host_->OnMessageReceived(message, &msg_is_ok) || |
blob_dispatcher_host_->OnMessageReceived(message, &msg_is_ok) || |
file_system_dispatcher_host_->OnMessageReceived(message, &msg_is_ok) || |
+ file_utilities_dispatcher_host_->OnMessageReceived(message, &msg_is_ok) || |
MessagePortDispatcher::GetInstance()->OnMessageReceived( |
message, this, next_route_id_callback_.get(), &msg_is_ok); |
@@ -263,6 +271,12 @@ void WorkerProcessHost::OnMessageReceived(const IPC::Message& message) { |
OnWorkerContextClosed); |
IPC_MESSAGE_HANDLER(ViewHostMsg_ForwardToWorker, |
OnForwardToWorker) |
+ IPC_MESSAGE_HANDLER(ViewHostMsg_GetMimeTypeFromExtension, |
+ OnGetMimeTypeFromExtension) |
+ IPC_MESSAGE_HANDLER(ViewHostMsg_GetMimeTypeFromFile, |
+ OnGetMimeTypeFromFile) |
+ IPC_MESSAGE_HANDLER(ViewHostMsg_GetPreferredExtensionForMimeType, |
+ OnGetPreferredExtensionForMimeType) |
IPC_MESSAGE_UNHANDLED(handled = false) |
IPC_END_MESSAGE_MAP_EX() |
} |
@@ -298,6 +312,7 @@ void WorkerProcessHost::OnMessageReceived(const IPC::Message& message) { |
void WorkerProcessHost::OnProcessLaunched() { |
db_dispatcher_host_->Init(handle()); |
file_system_dispatcher_host_->Init(handle()); |
+ file_utilities_dispatcher_host_->Init(handle()); |
} |
CallbackWithReturnValue<int>::Type* WorkerProcessHost::GetNextRouteIdCallback( |
@@ -487,6 +502,21 @@ void WorkerProcessHost::OnForwardToWorker(const IPC::Message& message) { |
WorkerService::GetInstance()->ForwardMessage(message, this); |
} |
+void WorkerProcessHost::OnGetMimeTypeFromExtension( |
+ const FilePath::StringType& ext, std::string* mime_type) { |
+ net::GetMimeTypeFromExtension(ext, mime_type); |
+} |
+ |
+void WorkerProcessHost::OnGetMimeTypeFromFile( |
+ const FilePath& file_path, std::string* mime_type) { |
+ net::GetMimeTypeFromFile(file_path, mime_type); |
+} |
+ |
+void WorkerProcessHost::OnGetPreferredExtensionForMimeType( |
+ const std::string& mime_type, FilePath::StringType* ext) { |
+ net::GetPreferredExtensionForMimeType(mime_type, ext); |
+} |
+ |
void WorkerProcessHost::DocumentDetached(IPC::Message::Sender* parent, |
unsigned long long document_id) { |
// Walk all instances and remove the document from their document set. |