Index: ppapi/proxy/plugin_resource.cc |
diff --git a/ppapi/proxy/plugin_resource.cc b/ppapi/proxy/plugin_resource.cc |
index f86bc3db9f4fce0e247fa6318f287d5d7f7405e9..1cfc3f10c6e695d3b7f0384fce7b654827b43d93 100644 |
--- a/ppapi/proxy/plugin_resource.cc |
+++ b/ppapi/proxy/plugin_resource.cc |
@@ -30,6 +30,20 @@ PluginResource::~PluginResource() { |
} |
} |
+void PluginResource::OnReplyReceived( |
+ const proxy::ResourceMessageReplyParams& params, |
+ const IPC::Message& msg) { |
+ // Grab the callback for the reply sequence number and run it with |msg|. |
+ CallbackMap::iterator it = callbacks_.find(params.sequence()); |
+ if (it == callbacks_.end()) { |
+ DCHECK(false) << "Callback does not exist for an expected sequence number."; |
+ } else { |
+ scoped_refptr<PluginResourceCallbackBase> callback = it->second; |
+ callbacks_.erase(it); |
+ callback->Run(params, msg); |
+ } |
+} |
+ |
void PluginResource::SendCreateToBrowser(const IPC::Message& msg) { |
DCHECK(!sent_create_to_browser_); |
sent_create_to_browser_ = true; |
@@ -51,29 +65,20 @@ void PluginResource::SendCreateToRenderer(const IPC::Message& msg) { |
void PluginResource::PostToBrowser(const IPC::Message& msg) { |
ResourceMessageCallParams params(pp_resource(), |
next_sequence_number_++); |
- connection_.browser_sender->Send(new PpapiHostMsg_ResourceCall(params, msg)); |
+ SendResourceCall(connection_.browser_sender, params, msg); |
} |
void PluginResource::PostToRenderer(const IPC::Message& msg) { |
ResourceMessageCallParams params(pp_resource(), |
next_sequence_number_++); |
- connection_.renderer_sender->Send(new PpapiHostMsg_ResourceCall(params, msg)); |
+ SendResourceCall(connection_.renderer_sender, params, msg); |
} |
-int32_t PluginResource::CallBrowser(const IPC::Message& msg) { |
- ResourceMessageCallParams params(pp_resource(), |
- next_sequence_number_++); |
- params.set_has_callback(); |
- connection_.browser_sender->Send(new PpapiHostMsg_ResourceCall(params, msg)); |
- return params.sequence(); |
-} |
- |
-int32_t PluginResource::CallRenderer(const IPC::Message& msg) { |
- ResourceMessageCallParams params(pp_resource(), |
- next_sequence_number_++); |
- params.set_has_callback(); |
- connection_.renderer_sender->Send(new PpapiHostMsg_ResourceCall(params, msg)); |
- return params.sequence(); |
+bool PluginResource::SendResourceCall( |
+ IPC::Sender* sender, |
+ const ResourceMessageCallParams& call_params, |
+ const IPC::Message& nested_msg) { |
+ return sender->Send(new PpapiHostMsg_ResourceCall(call_params, nested_msg)); |
} |
int32_t PluginResource::CallBrowserSync(const IPC::Message& msg, |