| Index: content/browser/renderer_host/pepper/pepper_renderer_connection.cc
|
| diff --git a/content/browser/renderer_host/pepper/pepper_renderer_connection.cc b/content/browser/renderer_host/pepper/pepper_renderer_connection.cc
|
| index a5b95ceb223e40e975efee08bed58b0d2cb84e6b..821b79867690d63567e5f2bf1ba9750284ff5e7c 100644
|
| --- a/content/browser/renderer_host/pepper/pepper_renderer_connection.cc
|
| +++ b/content/browser/renderer_host/pepper/pepper_renderer_connection.cc
|
| @@ -4,6 +4,7 @@
|
|
|
| #include "content/browser/renderer_host/pepper/pepper_renderer_connection.h"
|
|
|
| +#include "base/debug/stack_trace.h"
|
| #include "content/browser/browser_child_process_host_impl.h"
|
| #include "content/browser/ppapi_plugin_process_host.h"
|
| #include "content/browser/renderer_host/pepper/browser_ppapi_host_impl.h"
|
| @@ -16,7 +17,9 @@
|
| #include "ppapi/host/resource_host.h"
|
| #include "ppapi/proxy/ppapi_message_utils.h"
|
| #include "ppapi/proxy/ppapi_messages.h"
|
| +#include "ppapi/proxy/ppapi_message_utils.h"
|
| #include "ppapi/proxy/resource_message_params.h"
|
| +#include "ppapi/shared_impl/file_ref_detailed_info.h"
|
|
|
| namespace content {
|
|
|
| @@ -76,6 +79,8 @@ bool PepperRendererConnection::OnMessageReceived(const IPC::Message& msg,
|
| OnMsgCreateResourceHostFromHost)
|
| IPC_MESSAGE_HANDLER(PpapiHostMsg_FileRef_GetInfoForRenderer,
|
| OnMsgFileRefGetInfoForRenderer)
|
| + IPC_MESSAGE_HANDLER(PpapiHostMsg_FileRef_SyncGetInfoForRenderer,
|
| + OnMsgFileRefSyncGetInfoForRenderer)
|
| IPC_MESSAGE_HANDLER(ViewHostMsg_DidCreateInProcessInstance,
|
| OnMsgDidCreateInProcessInstance)
|
| IPC_MESSAGE_HANDLER(ViewHostMsg_DidDeleteInProcessInstance,
|
| @@ -132,12 +137,16 @@ void PepperRendererConnection::OnMsgFileRefGetInfoForRenderer(
|
| int child_process_id,
|
| int32_t sequence,
|
| const std::vector<PP_Resource>& resources) {
|
| - std::vector<PP_Resource> out_resources;
|
| - std::vector<PP_FileSystemType> fs_types;
|
| - std::vector<std::string> file_system_url_specs;
|
| - std::vector<base::FilePath> external_paths;
|
| + std::vector<ppapi::FileRef_DetailedInfo> infos;
|
|
|
| BrowserPpapiHostImpl* host = GetHostForChildProcess(child_process_id);
|
| +
|
| + // If the message is being sent from an in-process plugin, we own the
|
| + // BrowserPpapiHost.
|
| + if (!host && child_process_id == 0) {
|
| + host = in_process_host_.get();
|
| + }
|
| +
|
| if (host) {
|
| for (size_t i = 0; i < resources.size(); ++i) {
|
| ppapi::host::ResourceHost* resource_host =
|
| @@ -145,20 +154,49 @@ void PepperRendererConnection::OnMsgFileRefGetInfoForRenderer(
|
| if (resource_host && resource_host->IsFileRefHost()) {
|
| PepperFileRefHost* file_ref_host =
|
| static_cast<PepperFileRefHost*>(resource_host);
|
| - out_resources.push_back(resources[i]);
|
| - fs_types.push_back(file_ref_host->GetFileSystemType());
|
| - file_system_url_specs.push_back(file_ref_host->GetFileSystemURLSpec());
|
| - external_paths.push_back(file_ref_host->GetExternalPath());
|
| + ppapi::FileRef_DetailedInfo info;
|
| + info.resource = resources[i];
|
| + info.file_system_type = file_ref_host->GetFileSystemType();
|
| + info.file_system_url_spec = file_ref_host->GetFileSystemURLSpec();
|
| + info.external_path = file_ref_host->GetExternalPath();
|
| + infos.push_back(info);
|
| }
|
| }
|
| }
|
| Send(new PpapiHostMsg_FileRef_GetInfoForRendererReply(
|
| routing_id,
|
| sequence,
|
| - out_resources,
|
| - fs_types,
|
| - file_system_url_specs,
|
| - external_paths));
|
| + infos));
|
| +}
|
| +
|
| +void PepperRendererConnection::OnMsgFileRefSyncGetInfoForRenderer(
|
| + int child_process_id,
|
| + const std::vector<PP_Resource>& resources,
|
| + std::vector<ppapi::FileRef_DetailedInfo>* out_infos) {
|
| + BrowserPpapiHostImpl* host = GetHostForChildProcess(child_process_id);
|
| +
|
| + // If the message is being sent from an in-process plugin, we own the
|
| + // BrowserPpapiHost.
|
| + if (!host && child_process_id == 0) {
|
| + host = in_process_host_.get();
|
| + }
|
| +
|
| + if (host) {
|
| + for (size_t i = 0; i < resources.size(); ++i) {
|
| + ppapi::host::ResourceHost* resource_host =
|
| + host->GetPpapiHost()->GetResourceHost(resources[i]);
|
| + if (resource_host && resource_host->IsFileRefHost()) {
|
| + PepperFileRefHost* file_ref_host =
|
| + static_cast<PepperFileRefHost*>(resource_host);
|
| + ppapi::FileRef_DetailedInfo info;
|
| + info.resource = resources[i];
|
| + info.file_system_type = file_ref_host->GetFileSystemType();
|
| + info.file_system_url_spec = file_ref_host->GetFileSystemURLSpec();
|
| + info.external_path = file_ref_host->GetExternalPath();
|
| + out_infos->push_back(info);
|
| + }
|
| + }
|
| + }
|
| }
|
|
|
| void PepperRendererConnection::OnMsgDidCreateInProcessInstance(
|
|
|