| Index: content/browser/fileapi/fileapi_message_filter.cc
|
| diff --git a/content/browser/fileapi/fileapi_message_filter.cc b/content/browser/fileapi/fileapi_message_filter.cc
|
| index ef5f248a011c8aa4af49871ba6037ec4d92739c8..1a79ea2d34987be6f1b3e2062097e50c9fe53990 100644
|
| --- a/content/browser/fileapi/fileapi_message_filter.cc
|
| +++ b/content/browser/fileapi/fileapi_message_filter.cc
|
| @@ -38,6 +38,7 @@
|
| #include "webkit/common/blob/blob_data.h"
|
| #include "webkit/common/blob/shareable_file_reference.h"
|
| #include "webkit/common/fileapi/directory_entry.h"
|
| +#include "webkit/common/fileapi/file_system_info.h"
|
| #include "webkit/common/fileapi/file_system_types.h"
|
| #include "webkit/common/fileapi/file_system_util.h"
|
|
|
| @@ -168,6 +169,7 @@ bool FileAPIMessageFilter::OnMessageReceived(
|
| bool handled = true;
|
| IPC_BEGIN_MESSAGE_MAP_EX(FileAPIMessageFilter, message, *message_was_ok)
|
| IPC_MESSAGE_HANDLER(FileSystemHostMsg_Open, OnOpen)
|
| + IPC_MESSAGE_HANDLER(FileSystemHostMsg_ResolveURL, OnResolveURL)
|
| IPC_MESSAGE_HANDLER(FileSystemHostMsg_DeleteFileSystem, OnDeleteFileSystem)
|
| IPC_MESSAGE_HANDLER(FileSystemHostMsg_Move, OnMove)
|
| IPC_MESSAGE_HANDLER(FileSystemHostMsg_Copy, OnCopy)
|
| @@ -250,6 +252,23 @@ void FileAPIMessageFilter::OnOpen(
|
| &FileAPIMessageFilter::DidOpenFileSystem, this, request_id));
|
| }
|
|
|
| +void FileAPIMessageFilter::OnResolveURL(
|
| + int request_id,
|
| + const GURL& filesystem_url) {
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| + FileSystemURL url(context_->CrackURL(filesystem_url));
|
| + if (!ValidateFileSystemURL(request_id, url))
|
| + return;
|
| + if (!security_policy_->CanReadFileSystemFile(process_id_, url)) {
|
| + Send(new FileSystemMsg_DidFail(request_id,
|
| + base::PLATFORM_FILE_ERROR_SECURITY));
|
| + return;
|
| + }
|
| +
|
| + context_->ResolveURL(url, base::Bind(
|
| + &FileAPIMessageFilter::DidResolveURL, this, request_id));
|
| +}
|
| +
|
| void FileAPIMessageFilter::OnDeleteFileSystem(
|
| int request_id,
|
| const GURL& origin_url,
|
| @@ -873,18 +892,35 @@ void FileAPIMessageFilter::DidWrite(int request_id,
|
|
|
| void FileAPIMessageFilter::DidOpenFileSystem(int request_id,
|
| base::PlatformFileError result,
|
| - const std::string& name,
|
| + const std::string& filesystem_name,
|
| const GURL& root) {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| if (result == base::PLATFORM_FILE_OK) {
|
| DCHECK(root.is_valid());
|
| - Send(new FileSystemMsg_DidOpenFileSystem(request_id, name, root));
|
| + Send(new FileSystemMsg_DidOpenFileSystem(
|
| + request_id, filesystem_name, root));
|
| } else {
|
| Send(new FileSystemMsg_DidFail(request_id, result));
|
| }
|
| // For OpenFileSystem we do not create a new operation, so no unregister here.
|
| }
|
|
|
| +void FileAPIMessageFilter::DidResolveURL(int request_id,
|
| + base::PlatformFileError result,
|
| + const fileapi::FileSystemInfo& info,
|
| + const base::FilePath& file_path,
|
| + bool is_directory) {
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| + if (result == base::PLATFORM_FILE_OK) {
|
| + DCHECK(info.root_url.is_valid());
|
| + Send(new FileSystemMsg_DidResolveURL(
|
| + request_id, info, file_path, is_directory));
|
| + } else {
|
| + Send(new FileSystemMsg_DidFail(request_id, result));
|
| + }
|
| + // For ResolveURL we do not create a new operation, so no unregister here.
|
| +}
|
| +
|
| void FileAPIMessageFilter::DidDeleteFileSystem(
|
| int request_id,
|
| base::PlatformFileError result) {
|
|
|