| Index: chrome/browser/file_system/file_system_dispatcher_host.cc
|
| diff --git a/chrome/browser/file_system/file_system_dispatcher_host.cc b/chrome/browser/file_system/file_system_dispatcher_host.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..496a623cf07dd0cad65340f4649f49225a0bd05a
|
| --- /dev/null
|
| +++ b/chrome/browser/file_system/file_system_dispatcher_host.cc
|
| @@ -0,0 +1,81 @@
|
| +// 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/file_system/file_system_dispatcher_host.h"
|
| +
|
| +#include "base/thread.h"
|
| +#include "base/utf_string_conversions.h"
|
| +#include "chrome/browser/browser_process.h"
|
| +#include "chrome/browser/chrome_thread.h"
|
| +#include "chrome/browser/host_content_settings_map.h"
|
| +#include "chrome/browser/renderer_host/browser_render_process_host.h"
|
| +#include "chrome/common/render_messages.h"
|
| +#include "googleurl/src/gurl.h"
|
| +
|
| +FileSystemDispatcherHost::FileSystemDispatcherHost(
|
| + IPC::Message::Sender* sender,
|
| + HostContentSettingsMap* host_content_settings_map)
|
| + : message_sender_(sender),
|
| + process_handle_(0),
|
| + shutdown_(false),
|
| + host_content_settings_map_(host_content_settings_map) {
|
| + DCHECK(message_sender_);
|
| +}
|
| +
|
| +void FileSystemDispatcherHost::Init(base::ProcessHandle process_handle) {
|
| + DCHECK(ChromeThread::CurrentlyOn(ChromeThread::IO));
|
| + DCHECK(!shutdown_);
|
| + DCHECK(!process_handle_);
|
| + DCHECK(process_handle);
|
| + process_handle_ = process_handle;
|
| +}
|
| +
|
| +void FileSystemDispatcherHost::Shutdown() {
|
| + message_sender_ = NULL;
|
| + shutdown_ = true;
|
| +}
|
| +
|
| +bool FileSystemDispatcherHost::OnMessageReceived(
|
| + const IPC::Message& message, bool* message_was_ok) {
|
| + DCHECK(!shutdown_);
|
| + *message_was_ok = true;
|
| + bool handled = true;
|
| + IPC_BEGIN_MESSAGE_MAP_EX(FileSystemDispatcherHost, message, *message_was_ok)
|
| + IPC_MESSAGE_HANDLER(ViewHostMsg_OpenFileSystemRequest, OnOpenFileSystem)
|
| + // TODO(kinuko): add more.
|
| + IPC_MESSAGE_UNHANDLED(handled = false)
|
| + IPC_END_MESSAGE_MAP_EX()
|
| + return handled;
|
| +}
|
| +
|
| +void FileSystemDispatcherHost::OnOpenFileSystem(
|
| + const ViewHostMsg_OpenFileSystemRequest_Params& params) {
|
| + string16 name;
|
| + string16 root_path;
|
| +
|
| + // TODO(kinuko): not implemented yet.
|
| +
|
| + Send(new ViewMsg_OpenFileSystemRequest_Complete(
|
| + params.routing_id,
|
| + params.request_id,
|
| + false,
|
| + name, root_path));
|
| +}
|
| +
|
| +void FileSystemDispatcherHost::Send(IPC::Message* message) {
|
| + if (!ChromeThread::CurrentlyOn(ChromeThread::IO)) {
|
| + if (!ChromeThread::PostTask(
|
| + ChromeThread::IO, FROM_HERE,
|
| + NewRunnableMethod(this,
|
| + &FileSystemDispatcherHost::Send,
|
| + message)))
|
| + delete message;
|
| + return;
|
| + }
|
| +
|
| + if (!shutdown_ && message_sender_)
|
| + message_sender_->Send(message);
|
| + else
|
| + delete message;
|
| +}
|
|
|