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..630dda082c25534a7b385ab59efad4bb4df32512 100644 |
--- a/content/browser/renderer_host/pepper/pepper_renderer_connection.cc |
+++ b/content/browser/renderer_host/pepper/pepper_renderer_connection.cc |
@@ -72,8 +72,8 @@ bool PepperRendererConnection::OnMessageReceived(const IPC::Message& msg, |
bool handled = true; |
IPC_BEGIN_MESSAGE_MAP_EX(PepperRendererConnection, msg, *message_was_ok) |
- IPC_MESSAGE_HANDLER(PpapiHostMsg_CreateResourceHostFromHost, |
- OnMsgCreateResourceHostFromHost) |
+ IPC_MESSAGE_HANDLER(PpapiHostMsg_CreateResourceHostsFromHost, |
+ OnMsgCreateResourceHostsFromHost) |
IPC_MESSAGE_HANDLER(PpapiHostMsg_FileRef_GetInfoForRenderer, |
OnMsgFileRefGetInfoForRenderer) |
IPC_MESSAGE_HANDLER(ViewHostMsg_DidCreateInProcessInstance, |
@@ -86,45 +86,48 @@ bool PepperRendererConnection::OnMessageReceived(const IPC::Message& msg, |
return handled; |
} |
-void PepperRendererConnection::OnMsgCreateResourceHostFromHost( |
+void PepperRendererConnection::OnMsgCreateResourceHostsFromHost( |
int routing_id, |
int child_process_id, |
const ppapi::proxy::ResourceMessageCallParams& params, |
PP_Instance instance, |
- const IPC::Message& nested_msg) { |
+ const std::vector<IPC::Message>& nested_msgs) { |
BrowserPpapiHostImpl* host = GetHostForChildProcess(child_process_id); |
- int pending_resource_host_id; |
+ std::vector<int> pending_resource_host_ids(nested_msgs.size(), 0); |
if (!host) { |
DLOG(ERROR) << "Invalid plugin process ID."; |
- pending_resource_host_id = 0; |
} else { |
- // FileRef_CreateExternal is only permitted from the renderer. Because of |
- // this, we handle this message here and not in |
- // content_browser_pepper_host_factory.cc. |
- scoped_ptr<ppapi::host::ResourceHost> resource_host; |
- if (host->IsValidInstance(instance)) { |
- if (nested_msg.type() == PpapiHostMsg_FileRef_CreateExternal::ID) { |
- base::FilePath external_path; |
- if (ppapi::UnpackMessage<PpapiHostMsg_FileRef_CreateExternal>( |
- nested_msg, &external_path)) { |
- resource_host.reset(new PepperFileRefHost( |
- host, instance, params.pp_resource(), external_path)); |
+ for (size_t i = 0; i < nested_msgs.size(); ++i) { |
+ // FileRef_CreateExternal is only permitted from the renderer. Because of |
+ // this, we handle this message here and not in |
+ // content_browser_pepper_host_factory.cc. |
+ scoped_ptr<ppapi::host::ResourceHost> resource_host; |
+ if (host->IsValidInstance(instance)) { |
+ if (nested_msgs[i].type() == PpapiHostMsg_FileRef_CreateExternal::ID) { |
+ base::FilePath external_path; |
+ if (ppapi::UnpackMessage<PpapiHostMsg_FileRef_CreateExternal>( |
+ nested_msgs[i], &external_path)) { |
+ resource_host.reset(new PepperFileRefHost( |
+ host, instance, params.pp_resource(), external_path)); |
+ } |
} |
} |
- } |
- if (!resource_host.get()) { |
- resource_host = host->GetPpapiHost()->CreateResourceHost(params, |
- instance, |
- nested_msg); |
+ if (!resource_host.get()) { |
+ resource_host = host->GetPpapiHost()->CreateResourceHost( |
+ params, instance, nested_msgs[i]); |
+ } |
+ |
+ if (resource_host.get()) { |
+ pending_resource_host_ids[i] = |
+ host->GetPpapiHost()->AddPendingResourceHost(resource_host.Pass()); |
+ } |
} |
- pending_resource_host_id = |
- host->GetPpapiHost()->AddPendingResourceHost(resource_host.Pass()); |
} |
- Send(new PpapiHostMsg_CreateResourceHostFromHostReply( |
- routing_id, params.sequence(), pending_resource_host_id)); |
+ Send(new PpapiHostMsg_CreateResourceHostsFromHostReply( |
+ routing_id, params.sequence(), pending_resource_host_ids)); |
} |
void PepperRendererConnection::OnMsgFileRefGetInfoForRenderer( |