| Index: content/browser/renderer_host/pepper/pepper_file_io_host.h
|
| diff --git a/content/renderer/pepper/pepper_file_io_host.h b/content/browser/renderer_host/pepper/pepper_file_io_host.h
|
| similarity index 67%
|
| rename from content/renderer/pepper/pepper_file_io_host.h
|
| rename to content/browser/renderer_host/pepper/pepper_file_io_host.h
|
| index 95f1d7253aed741721b9958d28dbdeb9ce901000..9f65b74371642f6784900f3bf786834d312ffda4 100644
|
| --- a/content/renderer/pepper/pepper_file_io_host.h
|
| +++ b/content/browser/renderer_host/pepper/pepper_file_io_host.h
|
| @@ -1,4 +1,4 @@
|
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| +// Copyright 2013 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.
|
|
|
| @@ -11,7 +11,7 @@
|
| #include "base/callback_forward.h"
|
| #include "base/memory/weak_ptr.h"
|
| #include "base/platform_file.h"
|
| -#include "content/public/renderer/renderer_ppapi_host.h"
|
| +#include "content/browser/renderer_host/pepper/browser_ppapi_host_impl.h"
|
| #include "ipc/ipc_listener.h"
|
| #include "ipc/ipc_platform_file.h"
|
| #include "ppapi/c/pp_file_info.h"
|
| @@ -20,6 +20,8 @@
|
| #include "ppapi/host/resource_host.h"
|
| #include "ppapi/shared_impl/file_io_state_manager.h"
|
| #include "url/gurl.h"
|
| +#include "webkit/browser/fileapi/file_system_context.h"
|
| +#include "webkit/browser/fileapi/file_system_operation_runner.h"
|
| #include "webkit/common/quota/quota_types.h"
|
|
|
| using ppapi::host::ReplyMessageContext;
|
| @@ -28,13 +30,12 @@ namespace content {
|
| class QuotaFileIO;
|
|
|
| class PepperFileIOHost : public ppapi::host::ResourceHost,
|
| - public base::SupportsWeakPtr<PepperFileIOHost>,
|
| - public IPC::Listener {
|
| + public base::SupportsWeakPtr<PepperFileIOHost> {
|
| public:
|
| typedef base::Callback<void (base::PlatformFileError)>
|
| NotifyCloseFileCallback;
|
|
|
| - PepperFileIOHost(RendererPpapiHost* host,
|
| + PepperFileIOHost(BrowserPpapiHostImpl* host,
|
| PP_Instance instance,
|
| PP_Resource resource);
|
| virtual ~PepperFileIOHost();
|
| @@ -44,14 +45,13 @@ class PepperFileIOHost : public ppapi::host::ResourceHost,
|
| const IPC::Message& msg,
|
| ppapi::host::HostMessageContext* context) OVERRIDE;
|
|
|
| + struct UIThreadStuff {
|
| + UIThreadStuff();
|
| + ~UIThreadStuff();
|
| + base::ProcessId resolved_render_process_id;
|
| + scoped_refptr<fileapi::FileSystemContext> file_system_context;
|
| + };
|
| private:
|
| - // IPC::Listener implementation.
|
| - virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
|
| -
|
| - void OnAsyncFileOpened(
|
| - base::PlatformFileError error_code,
|
| - IPC::PlatformFileForTransit file_for_transit);
|
| -
|
| int32_t OnHostMsgOpen(ppapi::host::HostMessageContext* context,
|
| PP_Resource file_ref_resource,
|
| int32_t open_flags);
|
| @@ -65,10 +65,13 @@ class PepperFileIOHost : public ppapi::host::ResourceHost,
|
| int64_t length);
|
| int32_t OnHostMsgClose(ppapi::host::HostMessageContext* context);
|
| int32_t OnHostMsgFlush(ppapi::host::HostMessageContext* context);
|
| - // Private API.
|
| int32_t OnHostMsgRequestOSFileHandle(
|
| ppapi::host::HostMessageContext* context);
|
|
|
| + void GotPluginAllowedToCallRequestOSFileHandle(
|
| + ppapi::host::ReplyMessageContext reply_context,
|
| + bool plugin_allowed);
|
| +
|
| // Callback handlers. These mostly convert the PlatformFileError to the
|
| // PP_Error code and send back the reply. Note that the argument
|
| // ReplyMessageContext is copied so that we have a closure containing all
|
| @@ -77,24 +80,40 @@ class PepperFileIOHost : public ppapi::host::ResourceHost,
|
| base::PlatformFileError error_code);
|
| void ExecutePlatformOpenFileCallback(ReplyMessageContext reply_context,
|
| base::PlatformFileError error_code,
|
| - base::PassPlatformFile file);
|
| - void ExecutePlatformOpenFileSystemURLCallback(
|
| - ReplyMessageContext reply_context,
|
| - base::PlatformFileError error_code,
|
| - base::PassPlatformFile file,
|
| - quota::QuotaLimitType quota_policy,
|
| - const NotifyCloseFileCallback& callback);
|
| - void ExecutePlatformQueryCallback(ReplyMessageContext reply_context,
|
| - base::PlatformFileError error_code,
|
| - const base::PlatformFileInfo& file_info);
|
| - void ExecutePlatformReadCallback(ReplyMessageContext reply_context,
|
| - base::PlatformFileError error_code,
|
| - const char* data, int bytes_read);
|
| + base::PassPlatformFile file,
|
| + bool unused_created);
|
| void ExecutePlatformWriteCallback(ReplyMessageContext reply_context,
|
| base::PlatformFileError error_code,
|
| int bytes_written);
|
|
|
| - RendererPpapiHost* renderer_ppapi_host_;
|
| + void GotUIThreadStuffForInternalFileSystems(
|
| + ReplyMessageContext reply_context,
|
| + int platform_file_flags,
|
| + UIThreadStuff ui_thread_stuff);
|
| + void DidOpenInternalFile(
|
| + ReplyMessageContext reply_context,
|
| + base::PlatformFileError result,
|
| + base::PlatformFile file,
|
| + const base::Closure& on_close_callback);
|
| + void GotResolvedRenderProcessId(
|
| + ReplyMessageContext reply_context,
|
| + base::FilePath path,
|
| + int platform_file_flags,
|
| + base::ProcessId resolved_render_process_id);
|
| +
|
| + void DidCloseFile(base::PlatformFileError error);
|
| +
|
| + // Adds file_ to |reply_context| with the specified |open_flags|.
|
| + bool AddFileToReplyContext(
|
| + int32_t open_flags,
|
| + ppapi::host::ReplyMessageContext* reply_context) const;
|
| +
|
| + BrowserPpapiHostImpl* browser_ppapi_host_;
|
| +
|
| + RenderProcessHost* render_process_host_;
|
| + int render_process_id_;
|
| + base::ProcessId resolved_render_process_id_;
|
| +
|
| base::PlatformFile file_;
|
|
|
| // The file system type specified in the Open() call. This will be
|
| @@ -103,14 +122,14 @@ class PepperFileIOHost : public ppapi::host::ResourceHost,
|
| PP_FileSystemType file_system_type_;
|
|
|
| // Valid only for PP_FILESYSTEMTYPE_LOCAL{PERSISTENT,TEMPORARY}.
|
| - GURL file_system_url_;
|
| + scoped_refptr<fileapi::FileSystemContext> file_system_context_;
|
| + scoped_ptr<fileapi::FileSystemOperationRunner> file_system_operation_runner_;
|
| + fileapi::FileSystemURL file_system_url_;
|
| + base::Closure on_close_callback_;
|
|
|
| // Used to check if we can pass file handle to plugins.
|
| quota::QuotaLimitType quota_policy_;
|
|
|
| - // Callback function for notifying when the file handle is closed.
|
| - NotifyCloseFileCallback notify_close_file_callback_;
|
| -
|
| // Pointer to a QuotaFileIO instance, which is valid only while a file
|
| // of type PP_FILESYSTEMTYPE_LOCAL{PERSISTENT,TEMPORARY} is opened.
|
| scoped_ptr<QuotaFileIO> quota_file_io_;
|
| @@ -119,10 +138,7 @@ class PepperFileIOHost : public ppapi::host::ResourceHost,
|
|
|
| ppapi::FileIOStateManager state_manager_;
|
|
|
| - int routing_id_;
|
| -
|
| - base::Callback<void(base::PlatformFileError, base::PassPlatformFile)>
|
| - pending_open_callback_;
|
| + scoped_refptr<base::MessageLoopProxy> file_message_loop_;
|
|
|
| base::WeakPtrFactory<PepperFileIOHost> weak_factory_;
|
|
|
|
|