Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1616)

Unified Diff: content/renderer/pepper/pepper_file_io_host.cc

Issue 13032002: Add RequestOSFileHandle as a private PPAPI (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: fix test Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/renderer/pepper/pepper_file_io_host.h ('k') | content/renderer/pepper/renderer_ppapi_host_impl.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/pepper/pepper_file_io_host.cc
diff --git a/content/renderer/pepper/pepper_file_io_host.cc b/content/renderer/pepper/pepper_file_io_host.cc
index d0fb617c54b5a363db8dc467af64da0128b320d7..b96edf509826d4d4d202f2ba8dd1a70495666792 100644
--- a/content/renderer/pepper/pepper_file_io_host.cc
+++ b/content/renderer/pepper/pepper_file_io_host.cc
@@ -6,7 +6,10 @@
#include "base/bind.h"
#include "base/callback_helpers.h"
+#include "base/command_line.h"
#include "base/files/file_util_proxy.h"
+#include "content/public/common/content_client.h"
+#include "content/public/renderer/content_renderer_client.h"
#include "ppapi/c/pp_errors.h"
#include "ppapi/host/dispatch_host_message.h"
#include "ppapi/host/ppapi_host.h"
@@ -147,6 +150,8 @@ int32_t PepperFileIOHost::OnResourceMessageReceived(
OnHostMsgWillSetLength)
PPAPI_DISPATCH_HOST_RESOURCE_CALL_0(PpapiHostMsg_FileIO_GetOSFileDescriptor,
OnHostMsgGetOSFileDescriptor)
+ PPAPI_DISPATCH_HOST_RESOURCE_CALL_0(PpapiHostMsg_FileIO_RequestOSFileHandle,
+ OnHostMsgRequestOSFileHandle)
IPC_END_MESSAGE_MAP()
return PP_ERROR_FAILED;
}
@@ -446,22 +451,48 @@ int32_t PepperFileIOHost::OnHostMsgWillSetLength(
return PP_OK_COMPLETIONPENDING;
}
+int32_t PepperFileIOHost::OnHostMsgRequestOSFileHandle(
+ ppapi::host::HostMessageContext* context) {
+ if (!is_running_in_process_ &&
+ !GetContentClient()->renderer()->IsRequestOSFileHandleAllowedForURL(
+ file_system_url_))
+ return PP_ERROR_FAILED;
+
+ // TODO(hamaji): Should fail if quota is not unlimited.
+ // http://crbug.com/224123
+
+ RendererPpapiHost* renderer_ppapi_host =
+ RendererPpapiHost::GetForPPInstance(pp_instance());
+
+ IPC::PlatformFileForTransit file =
+ renderer_ppapi_host->ShareHandleWithRemote(file_, false);
+ if (file == IPC::InvalidPlatformFileForTransit())
+ return PP_ERROR_FAILED;
+ ppapi::host::ReplyMessageContext reply_context =
+ context->MakeReplyMessageContext();
+ reply_context.params.AppendHandle(ppapi::proxy::SerializedHandle(
+ ppapi::proxy::SerializedHandle::FILE, file));
bsy 2013/04/01 17:17:44 is the file opened with GENERIC_EXEC on windows?
+ host()->SendReply(reply_context,
+ PpapiPluginMsg_FileIO_RequestOSFileHandleReply());
+ return PP_OK_COMPLETIONPENDING;
+}
+
int32_t PepperFileIOHost::OnHostMsgGetOSFileDescriptor(
ppapi::host::HostMessageContext* context) {
if (!is_running_in_process_)
return PP_ERROR_FAILED;
+
int32_t fd =
#if defined(OS_POSIX)
- file_;
+ file_;
#elif defined(OS_WIN)
- reinterpret_cast<uintptr_t>(file_);
+ reinterpret_cast<uintptr_t>(file_);
#else
- -1; // Platform not supported.
+ -1;
#endif
- // TODO(victorhsieh): Pass the file handle in the reply params once this works
- // in-process.
+
host()->SendReply(context->MakeReplyMessageContext(),
- PpapiPluginMsg_FileIO_GetOSFileDescriptorReply(fd));
+ PpapiPluginMsg_FileIO_GetOSFileDescriptorReply(fd));
return PP_OK_COMPLETIONPENDING;
}
@@ -569,4 +600,3 @@ void PepperFileIOHost::ExecutePlatformWillWriteCallback(
}
} // namespace content
-
« no previous file with comments | « content/renderer/pepper/pepper_file_io_host.h ('k') | content/renderer/pepper/renderer_ppapi_host_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698